Siamese Network:孪生网络,更准确的翻译是连体网络。
本次介绍两种训练Siamese Network的方法:
learning Pairwise Similarity Scores
主要思想:每次取两个样本,计算相似度。
- 在大训练集上训练神经网络,首先使用训练集构造正负样本。正样本告诉神经网络什么样本是同一类,负样本告诉样本之间的区别。
具体的,正样本的构造:在训练集中随机抽取图片,在同一类别中在随机抽样一张,并且相似度置为1。
负样本,在训练集中随机抽取图片,排除这一类别,再随机抽样一张,相似度置为0
- 搭建卷积神经网络提取特征
- 训练神经网络,要准备同样数量的正负样本。
注意,两个f是同一个神经网络。最终sigmoid输出越接近1,相似度越高。
- 训练好网络后,做one-shot预测,选相似度最高的
Tripler Loss
- 训练集的准备:每次选出三张图片做训练。首先随机选中一张图片做锚点(anchor),再从锚点的类别中随机抽样一张作为正样本,排除掉该类别,随机抽样得到负样本。
- 将三个样本送入神经网络,提取特征。
- 如下图所示,显然,d+应该小一些,d-应该大一些。定义损失函数:
- 训练好网络后,做one-shot预测,找距离最小的。
总结