声明只是一个搬运工,搬运大牛的文章,对自己只是做知识的梳理,以备以后查找
1.triplet loss
最初是在FaceNet: A Unified Embedding for Face Recognition and Clustering论文中提出的,可以学到较好的人脸的embedding
; 是深度学习中的一种损失函数,用于训练差异性较小的样本,如人脸等, Feed数据包括锚(Anchor)示例、正(Positive)示例、负(Negative)示例,通过优化锚示例与正示例的距离小于锚示例与负示例的距离,实现样本的相似性计算;
1.1 原理:
输入是一个三元组<a, p, n>
a: anchor
,
p:
positive
, 与 a
是同一类别的样本;
n: negative
, 与 a
是不同类别的样本
公式是:
L=max(d(a,p)−d(a,n)+margin,0)
triplet 存在较多变种,有兴趣的可以找度娘了解
参考: Triplet Loss 损失函数
https://blog.csdn.net/u013082989/article/details/83537370
2. softmax 改进版本
L-softmax,A-softmax以及Am-sorfmax
2.1 L-softmax
作者:AI图哥
来源:CSDN
原文:https://blog.csdn.net/sinat_24143931/article/details/79033462
softmax loss 公式
yj是全连接层第j个元素的输出,n表示训练数据的数量,log函数的括号里面的内容就是softmax
上面这个式子就是W和x的内积,因此可以写成下面这样:
因此Li就变成下式:
那么Large Margin Softmax Loss是什么意思?
假设一个2分类问题,x属于类别1,那么原来的softmax肯定是希望:
也就是属于类别1的概率大于类别2的概率,这个式子和下式是等效的:
那么Large Margin Softmax就是将上面不等式替换成下式:
因为m是正整数,cos函数在0到π范围又是单调递减的,所以cos(mx)要小于cos(x)。m值越大则学习的难度也越大,这也就是最开始Figure2中那几个图代表不同m值的意思。因此通过这种方式定义损失会逼得模型学到类间距离更大的,类内距离更小的特征。
figure4是从几何角度直观地看两种损失的差别,L-softmax loss学习到的参数可以将两类样本的类间距离加大。通过对比可以看到L-softmax loss最后学到的特征之间的分离程度比原来的要明显得多
因此L-softmax loss的思想简单讲就是加大了原来softmax loss的学习难度。借用SVM的思想来理解的话,如果原来的softmax loss是只要支持向量和分类面的距离大于h就算分类效果比较好了,那么L-softmax loss就是需要距离达到mh(m是正整数)才算分类效果比较好了
---------------------
2.2 A-softmax
作者:@Thaurun
转载请注明出处:http://www.cnblogs.com/heguanyou/p/7503025.html
推导和原理请看上面连接,比较详细,我只copy其中与L-softmax
对比内容,非常赞!!
与L-Softmax的区别
A-Softmax与L-Softmax的最大区别在于A-Softmax的权重归一化了,而L-Softmax则没的。A-Softmax权重的归一化导致特征上的点映射到单位超球面上,而L-Softmax则不没有这个限制,这个特性使得两者在几何的解释上是不一样的。如图10所示,如果在训练时两个类别的特征输入在同一个区域时,如下图10所示。A-Softmax只能从角度上分度这两个类别,也就是说它仅从方向上区分类,分类的结果如图11所示;而L-Softmax,不仅可以从角度上区别两个类,还能从权重的模(长度)上区别这两个类,分类的结果如图12所示。在数据集合大小固定的条件下,L-Softmax能有两个方法分类,训练可能没有使得它在角度与长度方向都分离,导致它的精确可能不如A-Softmax。
图10:类别1与类别2映射到特征空间发生了区域的重叠
图11:A-Softmax分类可能的结果
图12:L-Softmax分类可能的结果
2.3 Am-softmax
论文链接:Additive Margin Softmax for Face Verification
AMSoftmax
这就是本文新提出的损失函数了。其变化就在于修改了Cos(mθ)为一个新函数:
与ASoftmax中定的的类似,可以达到减小对应标签项的概率,增大损失的效果,因此对同一类的聚合更有帮助根据Normface,对f进行归一化,乘上缩放系数s,最终的损失函数变为:
这样做的好处在于ASoftmax的倍角计算是要通过倍角公式,反向传播时不方便求导,而只减m反向传播时导数不用变化
---------------------
作者:Fire_Light_
来源:CSDN
原文:https://blog.csdn.net/fire_light_/article/details/79602310
版权声明:本文为博主原创文章,转载请附上博文链接!
内容请参考https://blog.csdn.net/Fire_Light_/article/details/79602310