文章提出一个从数据中训练得到相似性度量的方法。针对类别较多但每个类别的样本较少的情况,这个方法有用。这个方法的思想是:学习一个能够将输入特征映射到一个目标空间的函数,在这个目标空间中用一个L1范数来度量输入空间的“距离”,通过最小化loss函数以实现最小化同一类和最大化不同类的“距离”。映射的函数不固定,可以根据具体问题来假设映射的函数,本文中使用卷积神经网络来作为映射函数。
与之前的方法不同的是:本文所使用的损失函数是基于能量模型的判别学习框架。将能量函数定义如下:
其中,X1和X2表示一对样本,Gw(x)表示映射函数,能量Ew则表示样本对在映射空间的距离(本文用一范数表示)。这个能量函数应该满足以下条件:
这里X1和X2表示同一类的样本对,而X1和X2‘不是同一类样本对,不同类样本对的能量应当大于同一类的样本对。
定义了能量函数,下面定义训练用 的损失函数loss functions:
这里(Y,X1,X2)表示一个样本对,Y=0或1表示样本对是同一类或不同类,共P个样本对。L函数应该设计成这样:最小化L时,应该降低同类的能量EG,增加异类的能量EI,最简单就是LG单调上升而LI单调下降。
再定义一个H函数,它关于EG和EI是凸的(这不意味这H关于W是否凸)
H函数要符合一个类似condition 1的条件:
这里要证明一个定理:H函数对EG和EI是凸的,且在无穷远处有最小值;若存在一个W符合condition1,最小化H函数则能够找到符合条件的W。证明过程略。
具体定义的Loss函数是:
文章所采用的映射函数Gw是一个6层的卷积神经网络cnn,系统简图如下:
训练过程中,每次把两个样本X1和X2输入网络,网络的输出值为Gw(X1)和Gw(X2),计算得到它们的能量值。样本对有两种情况,一是同类样本对二是异类样本对:
然后求取上诉loss函数的梯度值,一个样本对有两个梯度值,参数W的更新采用两个梯度之和,用随机梯度下降算法SGD来最小化loss函数。
这是学习过后的cnn网络可视化效果图: