度量学习中常见的损失函数

1 基于样本对的损失函数

1.1 Contrastive Loss

L = 1 2 N ∑ n = 1 N y d 2 + ( 1 − y ) m a x ( m a r g i n − d , 0 ) 2 L = \frac1{2N}\sum_{n=1}Nyd^2 + (1-y)max(margin -d,0)^2 L=2N1n=1Nyd2+(1y)max(margind,0)2

d = ∣ ∣ a n − b n ∣ ∣ d = ||a_n - b_n|| d=∣∣anbn∣∣, d 代表两个样本特征的欧氏距离,y为两个样本是否匹配的标签,y=1代表两个样本相似或者匹配,y=0则代表不匹配,margin为设定的阈值。

仅考虑到了两个样本之间的距离

1.2 Triplet Loss

triplet:一个三元组,这个三元组是这样构成的:从训练数据集中随机选一个样本,该样本称为Anchor,然后再随机选取一个和Anchor (记为 x a x_a xa)属于同一类的样本和不同类的样本,这两个样本对应的称为Positive (记为 x p x_p xp)和Negative (记为 x n x_n xn),由此构成一个三元组.

针对三元组中的每个元素(样本),训练一个参数共享或者不共享的网络,得到三个元素的特征表达,分别记为: f ( x a ) f(x_a) f(xa) f ( x p ) f(x_p) f(xp) f ( x n ) f(x_n) f(xn)。通过学习,让 x a x_a xa x p x_p xp特征表达之间的距离尽可能小,而 x a x_a xa x n x_n xn的特征表达之间的距离尽可能大,并且要让 x a x_a xa x n x_n xn之间的距离和 x a x_a xa x p x_p xp之间的距离之间有一个最小的间隔

L = ∑ i N [ ∣ ∣ f ( x i a ) − f ( x i p ) ∣ ∣ 2 2 − ∣ ∣ f ( x i a ) − f ( x i n ) ∣ ∣ 2 2 + α ] + L = \sum_i^N[||f(x_i^a) -f(x_i^p) ||_2^2 - ||f(x_i^a) -f(x_i^n) ||_2^2 +\alpha]_+ L=iN[∣∣f(xia)f(xip)22∣∣f(xia)f(xin)22+α]+
所以最终的优化目标是拉近 a, p的距离, 拉远 a, n的距离

  • easy triplets: L = 0 即 d ( a , p ) + m a r g i n < d ( a , n ) d ( a , p ) + m a r g i n <d ( a , n ) d(a,p)+margin<d(a,n)这种情况不需要优化,天然a, p的距离很近, a, n的距离远
  • hard triplets: d ( a , n ) < d ( a , p ) d( a , n ) < d( a , p ) d(a,n)<d(a,p) 即a, p的距离远
  • semi-hard triplets: d ( a , p ) < d ( a , n ) < d ( a , p ) + m a r g i n d(a,p) < d(a,n)<d(a,p) + margin d(a,p)<d(a,n)<d(a,p)+margin, 即a, n的距离靠的很近,但是有一个margin

为了提高计算效率,一般采样满足 semi-hard 的样本

triplet loss 考虑了正负样本之间的关系,增大类内相似度,降低类间相似度,但仅考虑了与一个负样本的关系

1.3N-pair-ms loss

N-pair-ms loss 每次参数更新的时候考虑到了 query 样本与其他多个不同类的负样本之间的关系,让query 与其他所有的类有保持距离,可以加快模型收敛速度

N-pair-ms loss 每个训练样本由N+1 元组组成,即 x, x + x^+ x+,…… x N − 1 x_{N-1} xN1,其中 x + x^+ x+ 是相对于 x 而言的正样本,其余为负样本

具体损失函数
L ( x , x + , x i i = 1 N − 1 ; f ) = l o g ( 1 + ∑ i = 1 N − 1 e x p ( f T f i − f T f + ) ) L(x,x^+,{x_i}^{N-1}_{i=1};f) = log(1+\sum^{N-1}_{i=1}exp(f^Tf_i - f^Tf^+)) L(x,x+,xii=1N1;f)=log(1+i=1N1exp(fTfifTf+))
其中 $ f(.;\theta)$ 是神经网络的embedding kernel, f i f_i fi 表示负样本经过embedding层后的记过,

1.4 Multi-Similarity loss

L M S = 1 m ∑ i = 1 m { 1 α l o g [ 1 + ∑ k ∈ P i e − α ( s i k − λ ) ] + 1 β l o g [ 1 + ∑ k ∈ N i e − β ( s i k − λ ) ] } L_{MS} = \frac1m\sum_{i =1 }^m\{\frac1\alpha log[1+\sum_{k\in P_i}e^{-\alpha(s_{ik} -\lambda)}] +\frac1\beta log[1+\sum_{k\in N_i}e^{-\beta(s_{ik} -\lambda)}]\} LMS=m1i=1m{α1log[1+kPieα(sikλ)]+β1log[1+kNieβ(sikλ)]}

S i k S_{ik} Sik=样本对的余弦相似度, α , β , λ \alpha,\beta,\lambda α,β,λ 为超参数

其中正负样本采样,正样本要满足: S i j + < m a x y k ≠ y i S i k + ϵ S_{ij}^+ < \underset{y_k \neq y_i}{max}S_{ik} + \epsilon Sij+<yk=yimaxSik+ϵ 负样本要满足: S i j − > m a x y k   = y i S i k − ϵ S_{ij}^- > \underset{y_k \ = y_i}{max}S_{ik} - \epsilon Sij>yk =yimaxSikϵ

其中 ϵ \epsilon ϵ 为超参数,认为设定的阈值

1.5 Circle loss

大多数的损失函数,包括triplet loss 和softmax loss损失函数,都是使类间相似性 s n s_n sn和类内相似性 s p s_p sp嵌入到一个相似性对,并且去最小化 s n − s p s_n - s_p snsp 。这样的优化方式是不够灵活的,因为其对每一个单一相似性分数的惩罚强度是相等的。Circle loss提出如果一个相似性得分远离最优的中心,那么其应该被更多的关注(即惩罚)。基于这个目的,circle loss重新加权那些欠优化的相似性得分
L c i r c l e = l o g [ 1 + ∑ j = 1 L e x p ( γ α n j ( s n j − Δ n ) ) e x p ( − γ α p i ( s p i − Δ p ) ) ] L_{circle} = log[1+\sum_{j=1}^Lexp(\gamma\alpha_n^j(s_n^j-\Delta_n))exp(-\gamma\alpha_p^i(s_p^i-\Delta_p))] Lcircle=log[1+j=1Lexp(γαnj(snjΔn))exp(γαpi(spiΔp))]

其中 :$ \alpha_p^i=[O_p - s_p^i]+ $ ,$ \alpha_nj=[s_nj - O_n]+$ , O p = 1 + m O_p = 1 +m Op=1+m , 0 n = − m 0_n = -m 0n=m Δ p = 1 − m \Delta_p = 1-m Δp=1m Δ n = m \Delta_n = m Δn=m

2 基于代理的损失函数

2.1 Proxy NCA loss

这个方法提出的目的是去解决采样的问题。假设 W 代表着训练集中的一小部分数据,在采样时通过选择与 W 中距离最近的一个样本 u 作为代理 ( proxy ),即: p ( u ) = a r g m i n ω ∈ W d ( u , ω ) p(u) = argmin_{\omega \in W} d(u,\omega) p(u)=argminωWd(u,ω)

则 NCA 损失为:
L ( a , u ) = − l o g ( e x p ( − d ( a , p ( u ) ) ) ∑ z ∈ Z e x p ( − d ( a , p ( u ) ) ) ) + \begin{aligned} L(a,u) = &-log(\frac{exp(-d(a,p(u)))}{\sum_{z \in Z}exp(-d(a,p(u)))}) &+ \end{aligned} L(a,u)=log(zZexp(d(a,p(u)))exp(d(a,p(u))))+

2.2 Proxy Anchor loss

Proxy-Anchor Loss为每一个类别赋予了一个proxy,将一个batch的数据和所有的proxy之间求distance,意在拉近每个类别的数据和该类别对应的proxy之间的距离且拉远与其他类别的proxy之间的距离
L ( x ) = 1 ∣ P + ∣ ∑ p ∈ P + l o g ( 1 + ∑ e − α ( s ( x , p ) − δ ) x ∈ X p + ) + 1 ∣ P ∣ ∑ p ∈ P l o g ( 1 + ∑ e α ( s ( x , p ) + δ ) x ∈ X p − ) \begin{aligned} L(x) = & \frac1{|P^+| } \underset{p \in P^+}{\sum}log(1+ \underset{x \in X_p ^+}{\sum e^{-\alpha(s(x,p)-\delta)}}) \\ &+ \frac1{|P|} \underset{p \in P}{\sum}log(1+ \underset{x \in X_p ^-}{\sum e^{\alpha(s(x,p)+\delta)}} ) \end{aligned} L(x)=P+1pP+log(1+xXp+eα(s(x,p)δ))+P1pPlog(1+xXpeα(s(x,p)+δ))

3 基于分类的损失函数

3.1 Softmax loss

Softmax损失函数,实际上指代的是FC+Softmax+Cross-entropy loss。即对于神经网络提取出的特征,其首先会通过一个全连接层(FC),之后通过Softmax函数进行归一化,然后通过交叉熵损失进行分类
L = 1 N ∑ i L i = 1 N ∑ i − l o g ( e f y i ∑ i e f y i ) L = \frac1N\sum_iL_i = \frac1N\sum_i-log(\frac{e_{f_{yi}}}{\sum_i e_{f_{yi}}}) L=N1iLi=N1ilog(iefyiefyi)
其中 f i f_i fi表示样本 $ i$ 属于 第 $ j $ 个类别的可能性, f y i f_{yi} fyi 表示 $ i $ 属于其真实类别的可能性

f j f_j fj实际上就是上面提到的FC层的输出,其是样本与 x x x FC层权重 的 w w w 内积(等价于余弦相似性)。实际上,我们可以将分类的过程,理解为计算样本与 x x x 权重 w j w_j wj 的余弦相似性,与 x x x 最相似的 w j w_j wj 便对应着 x x x 的类别。在这个层面上,实际上网络的学习过程是学习能够表示每种类别特征的权重 w j w_j wj ,然后对于任意输入样本,通过与 w j w_j wj 进行比对,来完成类别的预测。

3.2 L_Softmax loss

Softmax 无法确保类内的紧凑和类间的疏离 , Large Margin Softmax Loss(简称L-Softmax loss),其主要思想是在标准的Softmax loss中加入了一个角度约束, 强制让对应类别的W和x夹角增加到原来的m倍, 确保不同类别之间的夹角增大,同时类内分布也更加的紧凑 。

假定样本 $ x$ 属于类别 1 ,则要满足 ∣ ∣ w 1 ∣ ∣ ∣ ∣ x ∣ ∣ c o n ( m θ 1 ) > ∣ ∣ w 2 ∣ ∣ ∣ ∣ x ∣ ∣ c o n s ( θ 2 ) , θ 1 ∈ [ 0 , π m ] ||w_1||||x||con(m\theta_1) > ||w_2||||x||cons(\theta_2),\theta_1 \in [0,\frac\pi m] ∣∣w1∣∣∣∣x∣∣con(mθ1)>∣∣w2∣∣∣∣x∣∣cons(θ2),θ1[0,mπ] ,m为整数,cos在区间内单减,则有 ∣ ∣ w 1 ∣ ∣ ∣ ∣ x ∣ ∣ c o n ( θ 1 ) > ∣ ∣ w 2 ∣ ∣ ∣ ∣ x ∣ ∣ c o n s ( m θ 1 ) ||w_1||||x||con(\theta_1) > ||w_2||||x||cons(m\theta_1) ∣∣w1∣∣∣∣x∣∣con(θ1)>∣∣w2∣∣∣∣x∣∣cons(mθ1) ,约束要求变得更加严格了。

具体损失函数如下

L i = − l o g ( e ∣ ∣ W y i ∣ ∣ ∣ ∣ x i ∣ ∣ ψ ( θ y i ) e ∣ ∣ W y i ∣ ∣ ∣ ∣ x i ∣ ∣ ψ ( θ y i ) + ∑ j ≠ y i e ∣ ∣ W y i ∣ ∣ ∣ ∣ x i ∣ ∣ c o n s ( θ y i ) ) L_i = -log(\frac{e^{||W_{y_i}|| ||x_i|| \psi(\theta_{y_i})}}{e^{||W_{y_i}|| ||x_i||\psi(\theta_{y_i})} + \sum_{j \neq y_i} e^{||W_{y_i}|| ||x_i||cons(\theta_{y_i})}}) Li=log(e∣∣Wyi∣∣∣∣xi∣∣ψ(θyi)+j=yie∣∣Wyi∣∣∣∣xi∣∣cons(θyi)e∣∣Wyi∣∣∣∣xi∣∣ψ(θyi))

ψ ( θ ) = ( − 1 ) k c o s ( m θ ) − 2 k , θ ∈ [ k π m , ( k + 1 ) π m ] \psi(\theta) = (-1)^k cos(m\theta) - 2k,\theta \in [\frac{k\pi}m,\frac{(k+1)\pi}m] ψ(θ)=(1)kcos(mθ)2k,θ[m,m(k+1)π]

3.3 A-softmax loss

在 L_Softmax 的基础上添加了两个限制条件 ∣ ∣ W ∣ ∣ = 1 ||W||=1 ∣∣W∣∣=1( 通过 L2 归一化来固定$ ||Wj|| = 1$ )和 b = 0 b=0 b=0 ,使得预测仅取决于W和x之间的角度, 归一化了权值W,让训练更加集中在优化深度特征映射和特征向量角度上,降低样本数量不均衡问题。

L i = − l o g ( e ∣ ∣ x i ∣ ∣ ψ ( θ y i , i ) e ∣ ∣ x i ∣ ∣ ψ ( θ y i , i ) + ∑ j ≠ y i e ∣ ∣ x i ∣ ∣ c o n s ( θ y i , i ) ) L_i = -log(\frac{e^{ ||x_i|| \psi(\theta_{y_i},i)}}{e^{ ||x_i||\psi(\theta_{y_i},i)} + \sum_{j \neq y_i} e^{||x_i||cons(\theta_{y_i},i)}}) Li=log(e∣∣xi∣∣ψ(θyi,i)+j=yie∣∣xi∣∣cons(θyi,i)e∣∣xi∣∣ψ(θyi,i))

ψ ( θ ) = ( − 1 ) k c o s ( m θ ) − 2 k , θ ∈ [ k π m , ( k + 1 ) π m ] \psi(\theta) = (-1)^k cos(m\theta) - 2k,\theta \in [\frac{k\pi}m,\frac{(k+1)\pi}m] ψ(θ)=(1)kcos(mθ)2k,θ[m,m(k+1)π]

m = 1.5 降低训练难度,让模型更快收敛

3.4 Center loss

Center loss 能够直接对样本特征之间的距离进行约束。Center loss 添加的约束是特征与同类别的平均特征的距离要足够小,这要求同类特征要接近它们的中心点。为每个类别学习一个中心,并将每个类别的所有特征向量拉向对应类别中心,联合Softmax一起使用
L = L s + λ L c = − ∑ i = 1 m l o g e W y i T x i + b y i ∑ j = 1 n e W y i T x i + b y i + λ 2 ∑ i = 1 m ∣ ∣ x i − c y i ∣ ∣ 2 2 \begin{aligned} L &= L_s +\lambda L_c \\ &=-\sum_{i=1}^mlog\frac{e^{W^T_{y_i}x_i + b_{y_i}}}{\sum^n_{j=1} e^{W^T_{y_i}x_i + b_{y_i}}} +\frac\lambda2\sum^m_{i=1}||x_i - c_{y_i}||^2_2 \end{aligned} L=Ls+λLc=i=1mlogj=1neWyiTxi+byieWyiTxi+byi+2λi=1m∣∣xicyi22

Center Loss能很好地控制类内距离,但控制类间距离能力不足,并且也无法通过角度进行更精细地学习

3.5 CosFace loss

Cosface主要是通过L2归一化特征和权重向量以消除径向变化,并乘以一个缩放系数,忽略偏置项,增加margin
L = − 1 N ∑ i = 1 N l o g e s ( c o s ( θ y i , i ) − m ) e s ( c o s ( θ y i , i ) − m ) + ∑ j = 1 , j ≠ y i n e s c o s ( θ j , i ) L = -\frac1N\sum^N_{i=1}log\frac{e^{s(cos(\theta_{y_i},i)-m)}}{e^{s(cos(\theta_{y_i},i)-m)} + \sum^n_{j=1,j\neq y_i}e^{scos(\theta_j,i)}} L=N1i=1Nloges(cos(θyi,i)m)+j=1,j=yinescos(θj,i)es(cos(θyi,i)m)

3.6 ArcFace loss

在CosFace的基础上,通过固定 ∣ ∣ x ∣ ∣ = s ||x|| = s ∣∣x∣∣=s 消除了径向方向的变化 , ArcFace 将惩罚项由cosine函数外移到了函数内,在训练稳定的同时更进一步地提升了人脸识别网络的辨别能力

L = − 1 N ∑ i = 1 N l o g e s ( c o s ( θ y i + m ) ) e s ( c o s ( θ y i + m ) ) + ∑ j = 1 , j ≠ y i n e s   c o s ( θ j ) L = -\frac1N\sum^N_{i=1}log\frac{e^{s(cos(\theta_{y_i}+m))}}{e^{s(cos(\theta_{y_i}+m))} + \sum^n_{j=1,j\neq y_i}e^{s\ cos(\theta_j)}} L=N1i=1Nloges(cos(θyi+m))+j=1,j=yines cos(θj)es(cos(θyi+m))

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值