用于学习嵌入的暹罗和三胞胎网络的Pytorch实施。
暹罗和三重态网络可用于学习从图像到紧凑的欧几里得空间的映射,距离对应于相似性的度量[2]。以这种方式训练的嵌入式可以用作分类或少量学习任务的功能向量。
需要pytorch 0.4,用火炬0.2.1
对于pytorch 0.3兼容性结帐标签TARCH-0.3.1
我们将在MNIST数据集上训练嵌入。实验是在Jupyter笔记本中进行的。
我们将使用MNIST数据集上的不同损失功能进行学习监督功能嵌入。这仅是出于可视化目的,因此我们将使用二维嵌入方式,这在实践中不是最好的选择。
对于每个实验,都使用相同的嵌入网络(32 CORV 5X5-> PRELU-> MAXPOOL 2X2-> 64 CORV 5X5-> PRELU-> MAXPOOL 2X2-> MAXPOOL 2X2->密集256-> PRELU-> PRELU->密集256-> PRELU-> PRELU-> pRELU->密集2),我们没有执行任何超参数搜索。
我们添加了一个完全连接的层,其中包括类的数量,并训练网络与SoftMax和跨嵌段进行分类。该网络的准确性约为99%。我们从倒数第二层提取2个维嵌入:
火车集:

测试集:

虽然嵌入看起来可以分开(这是我们训练它们的目的),但它们没有良好的度量属性。作为新课程的描述符,它们可能不是最好的选择。
现在,我们将训练一个暹罗网络,该网络拍摄一对图像并训练嵌入式的网络,以便如果它们与同一类相同的距离,则将它们之间的距离最小化,并且如果它们代表不同的类别,则大于某些保证金值。我们将最大程度地减少对比度损失函数[1]:

暹罗级班级样本随机呈正面和负面对,然后将其馈送到暹罗网络。
经过20个培训时期,这里是我们为培训设置所获得的嵌入:

测试集:

学习的嵌入在课堂上要好得多。
我们将训练一个三胞胎网络,该网络采用锚点,正(与锚的同一类别)和负面的示例(不同类别)示例。目的是学习嵌入,以使锚更接近积极的示例,而不是通过某个余量值来实现负面示例。
资料来源: Schroff,Florian,Dmitry Kalenichenko和James Philbin。面部:统一嵌入面部识别和聚类。 CVPR 2015。
三胞胎损失: 
TripletMnist类为每个可能的锚定一个正面和负面的例子。
经过20个培训时期,这里是我们为培训设置所获得的嵌入:

测试集:

在课堂上,学到的嵌入并不像暹罗网络那样彼此接近,但这不是我们优化它们的目的。我们希望嵌入与其他班级相比,嵌入更接近同一班级的其他嵌入式,我们可以看到培训将要进入的地方。
暹罗和三胞胎网络有两个问题:
为了有效地处理这些问题,我们将像分类一样为网络提供标准的迷你批次。损耗函数将负责选择迷你批量内的硬对和三胞胎。如果我们以每10个类别的16次图像为网络喂养网络,则可以处理高达159*160/2 = 12720对和10*16*15/2*(9*16)= 172800三重态,而先前实现中的80对和53个三重态。
通常,在迷你批次中处理所有可能的对或三重态并不是最好的主意。我们可以找到有关如何在[2]和[3]中选择三胞胎的一些策略。
我们将像为分类网络所做的那样,用迷你批量的网络喂养网络。这次,我们将使用一个特殊的批处理摄影器,将在每个类中在每个类中采样N_Classes和n_samples ,从而导致尺寸N_Classes*n_samples的小批次。
对于每个迷你批次,将使用提供的标签选择。
MNIST是一个相当简单的数据集,随机选择对的嵌入已经很好,我们在这里看不到太多改进。
火车嵌入:

测试嵌入:

就像在线对选择一样,我们将提供一个带有迷你批次的网络。给定标签和预测的嵌入,我们可以将一些策略用于三重态选择:
必须仔细选择三胞胎选择的策略。不良的策略可能导致效率低下的训练,甚至更糟的是建模崩溃(所有嵌入的嵌入最终都具有相同的值)。
这是我们对每对积极对的随机艰难负面影响所得到的。
培训集:

测试集:

对时尚人数数据集进行了类似的实验,在线矿山的优势稍微可见。只使用了仅使用二维嵌入的网络体系结构,这可能不够复杂,无法学习良好的嵌入。具有更高数字类别的更复杂的数据集应从在线采矿中受益更多。

随机选择对的暹罗网络

在线对比损失与负面采矿

带随机三胞胎的三胞胎网络

在线三胞胎损失与负面采矿

[1] Raia Hadsell,Sumit Chopra,Yann Lecun,通过学习不变映射的减少维度,CVPR 2006
[2] Schroff,Florian,Dmitry Kalenichenko和James Philbin。面部:统一嵌入面部识别和聚类。 CVPR 2015
[3]亚历山大·赫尔曼斯(Alexander Hermans),卢卡斯·拜尔(Lucas Beyer),巴斯蒂安·莱贝(Bastian Leibe),以捍卫2017年人物重新识别的三胞胎损失
[4] Brandon Amos,Bartosz Ludwiczuk,Mahadev Satyanarayanan,OpenFace:带移动应用程序的通用面部识别库,2016年
[5] Yi Sun,Xiaogang Wang,Xiaoou Tang,通过联合身份验证的深度学习面代表,NIPS 2014