度量学习(Metric Learning),也称距离度量学习(Distance Metric Learning,DML) 属于机器学习的一种。其本质就是类似度的学习,也能够认为距离学习。由于在必定条件下,类似度和距离能够相互转换。好比在空间坐标的两条向量,既能够用余弦类似度的大小,也可使用欧式距离的远近来衡量类似程度。git
通常的度量学习包含如下步骤:github
基于深度学习的度量学习算法中,能够分为两个流派:算法
本文介绍重点是损失改进派,是最近发展迅速,应用普遍的方法。网络
在人脸识别与声纹识别这种度量学习算法中,算法的提升主要体如今损失函数的设计上,损失函数会对整个网络的优化有着导向性的做用。能够看到许多经常使用的损失函数,从传统的softmax loss到cosface, arcface 都有这必定的提升。app
不管是SphereFace、CosineFace仍是ArcFace的损失函数,都是基于Softmax loss来进行修改的。机器学习
Base line | Softmax loss |
各类延伸的算法 | Triplet loss, center loss |
最新算法 | A-Softmax Loss(SphereFace), Cosine Margin Loss, Angular Margin Loss, Arcface |
这就是softmax loss函数,函数
其中W和b就是分类层参数,其实就是最后学习到的分类中心,对应下图就是每种颜色对称轴,各类颜色点的集合就是x=encoder(row),就是分类层前面一层的输出。学习
下面图如何理解呢?倒数第二层输出不该该是不少维吗?测试
形象的理解:当作是一个球体,可是为了可视化方便,把球给压扁了。就成为了二维的图像。(我的理解)优化
如何操做?应该经过降维方法。
这样如何完成分类的?
咱们知道,softmax分类时取的是最大那类(argmax),只要目标那一类大于其余类就能够了。反映在图上,每一个点与各种中心的距离(W与b决定),距离哪一个中心最近就会分红哪一类。
能够发现,Softmax loss作分类能够很好完成任务,可是若是进行类似度比对就会有比较大的问题
L2距离:L2距离越小,向量类似度越高。可能同类的特征向量距离(黄色)比不一样类的特征向量距离(绿色)更大
cos距离:夹角越小,cos距离越大,向量类似度越高。可能同类的特征向量夹角(黄色)比不一样类的特征向量夹角(绿色)更大
总结来讲:
- Softmax训练的深度特征,会把整个超空间或者超球,按照分类个数进行划分,保证类别是可分的,这一点对多分类任务如MNIST和ImageNet很是合适,由于测试类别一定在训练类别中。
- 但Softmax并不要求类内紧凑和类间分离,这一点很是不适合人脸识别任务,由于训练集的1W人数,相对测试集整个世界70亿人类来讲,很是微不足道,而咱们不可能拿到全部人的训练样本,更过度的是,通常咱们还要求训练集和测试集不重叠。
- 因此须要改造Softmax,除了保证可分性外,还要作到特征向量类内尽量紧凑,类间尽量分离。
这种方式只考虑了可否正确分类,却没有考虑类间距离。因此提出了center loss 损失函数。(paper)
center loss 考虑到不只仅是分类要对,并且要求类间有必定的距离。上面的公式中
三元组损失函数,三元组由Anchor, Negative, Positive这三个组成。从上图能够看到,一开始Anchor离Positive比较远,咱们想让Anchor和Positive尽可能的靠近(同类距离),Anchor和Negative尽可能的远离(类间距离)。
表达式左边为同类距离 ,右边为不一样的类之间的距离。使用梯度降低法优化的过程就是让类内距离不断降低,类间距离不断提高,这样损失函数才能不断地缩小。
上面的几个算法都是比较传统老旧的,下面说一下比较新的算法。
前面Softmax loss函数没有考虑类间距离,Center loss函数可使类内变得紧凑,但没有类间可分,而Triplet loss函数比较耗时,就产生了一下新的算法。
L-softmax函数开始就作了比较精细的改动,从softmax 函数log里面的
把其中的cosθ改为了cos(mθ),
m倍θ起到了增长 margin 的效果,让类内距离更加紧凑,同时类间距离变大。m越大类间距离就越大,由于在(0, π)区间cos函数单调递减,m越大 cos(mθ)趋向于0。
A-softmax 是在 L-softmax 函数上作了一个很小的修改,A-softmax 在考虑 margin时添加两个限制条件:将权重W归一化
cosface的loss函数以下:
上式中,s为超球面的半径,m为margin。
对比arcface和cosface这两个函数,发现arcface是直接在角度空间中最大化分类界限,而cosface是在余弦空间中最大化分类界限,这样修改是由于角度距离比余弦距离在对角度的影响更加直接。
分类的决策边界以下:
arcface算法流程以下:
References:
[1] https://blog.csdn.net/jningwei/article/details/80641184
[2] https://blog.csdn.net/u012505617/article/details/89355690