| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 人工智能 -> Meta Learning(元学习) -> 正文阅读 |
|
|
[人工智能]Meta Learning(元学习) |
Few-Shot Learning 基本思想:????????在大规模训练集中训练Siamese network 数据集:
?......
开始训练神经网络????????搭一个卷积神经网络,用来提取特征。这个神经网络有很多卷积层、pool层以及一个Flatten层。输入是一张图片,输出是提取的特征向量,把输入记为x,把输出的特征向量记作f(x)。
?????????准备好训练数据,比如输入是两只老虎,标签是1。把这两张图片输入神经网络,刚才搭建的卷积神经网络记作函数f。卷积神经网络输出提取的特征向量,把第一张图片X1的特征向量记作h1,把第二张图片X2的特征向量记作h2(强调一下,只有一个卷积神经网络,这两个f指的是同一个神经网络)。然后拿h1-h2,得到一个向量,在对这个向量的所有元素,求绝对值记作向量z,表示两个特征向量之间的区别(即z=|h1-h2|)。再用一些全连接层来处理这个z向量,最终输出一个标量。最后用Sigmoid激活函数,得到的输出是一个介于0到1之间的实数,这个输出就可以衡量两个图片之间的相似度。如果两张图片是同一个类别,那么输出应该接近1,如果两张图片不同,那么输出应该接近0。之前我们已经准备好了标签,这两张图片都是老虎,所以标签是1。希望神经网络的输出接近标签,把标签与预测之间的差别作为损失函数。
????????有了损失函数,就可以用反向传播来计算梯度,然后用梯度下降来更新模型参数。模型主要有两个部分,一个是卷积神经网络f(用来从图片提取特征),另一部分就是这些全连接层(用来预测相似度)。训练的过程就是更新这两部分的参数,做反向传播,梯度从损失函数传回到向量z以及全连接层的参数。有了损失函数,关于全连阶层的梯度就可以更新全连阶层的参数了。然后梯度进一步从向量z传播到卷积神经网络f,用计算出的梯度来更新卷积层的参数,这样就完成了一轮训练。
????????做训练的时候,要准备同样数量的正样本和负样本。负样本的意思是这两张图片是不同的事物,负样本的标签设置为0,希望神经网络的预测接近0,意思是这两张图片不同,还是用同样的方法做反向传播,然后更新卷积层和全连接层的参数。
?????????训练好模型之后,可以拿它来做One-Shot Prediction,这个例子里的Support set是six-way one- shot 一共有六个类别,每个类别只有一张图片。注意一下,这六个类别都不在训练集里,这就是future learn的困难之处。现在来了一个Query(知道它一定属于support六个类别中的一个),判断它属于哪一个?。具体做法就是逐一对比Query与Support的图片,Siamese network会输出一个介于0到1之间的值。有了所有这些相似度,查找相似度最高的发现,Query与松鼠的相似度最高,所以判断Query是松鼠。
?未完待续.......
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 4:21:58- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |