目的:
用Siamese Network (孪生网络) 解决Few-shot learning (小样本学习)。
Siamese Network并不是Meta Learning最好的方法,
但是通过学习Siamese Network,非常有助于理解其他Meta Learning算法。
这里介绍了两种方法:Siamese Network (孪生网络)、Trplet Loss
Siamese Network孪生网络
1、拿到一个样本量较大的训练集,对数据集进行正负样本分类。
正样本图片之间两两标一,负样本图片之间两两标0。
2、搭建一个卷积神经网络(CNN),用于提取特征。
CNN中有卷积层,池化层,和展平层。
输入是一张图片x,输出是提取的特征向量f(x)。
3、训练神经网络。
- 将两张图片输入同一CNN网络
- 第一张图片提取的向量为
,
- 第二张图片提取的向量为
。
- 两个特征向量之间的区别向量:
- 全连接层处理向量
,得到标量。
- 用Sigmoid激活函数,输出一个0-1之间的实数
正样本:
两张图都是老虎,因此标签为1。
- 损失函数Loss是标签与预测
之间的差值。
- 用反向传播,梯度从损失函数传回至向量z以及全连接层的参数;
- 梯度下降更新模型参数;
- 模型主要有两个部分:一个是卷积神经网络f,从图片提取特征;另一部分是全连接层,用来预测相似度。
- 预测的过程就是对其中的参数进行更新。
梯度进一步传到卷积神经网络f,用计算出的梯度更新卷积层的参数。
负样本:
两张图不同,因此标签为0。
Triplet Loss:
Reference: Facenet:A unified embedding for face recognition and clustering. In CVPR,2015