各种 loss 学习笔记

时间:2024-04-03 18:56:46


之间已经介绍过几个比较经典的 loss function 啦,这里再补充三个最近看到的 loss function。

Large Margin Cosine Loss

这个 loss function 的提出,基本思想是将损失函数的计算从距离空间转换到角度空间。
欧几里得空间 (距离空间) \rightarrow 余弦空间 (角度空间)

首先复习一下 softmax loss:
Ls=1Ni=1Nlogpi=1Ni=1Nlogefyij=1Cefj L_{s}=\frac{1}{N} \sum_{i=1}^{N}-\log p_{i}=\frac{1}{N} \sum_{i=1}^{N}-\log \frac{e^{f_{y_{i}}}}{\sum_{j=1}^{C} e^{f_{j}}}

  • N:训练样本数;
  • pip_{i}xix_{i} 被正确分类的后验概率;
  • CC 是类别数目;
  • fjf_{j} 表示全连接层的**公式,有 fj=WjTx=Wjxcosθjf_{j}=W_{j}^{T} x=\left\|W_{j}\right\|\|x\| \cos \theta_{j} 。(令偏重 Bj=0B_{j}=0

为了消除径向方向的影响,令 Wj=1\left\|W_{j}\right\|=1x=s\|x\|=s

为了充分提高损失函数的分类能力,引入余弦余量 mm,得到 Large Margin Cosine Loss (LMCL) 定义如下:
Llmc=1Niloges(cos(θyi,i)m)es(cos(θyi,i)m)+jyiescos(θj,i) L_{l m c}=\frac{1}{N} \sum_{i}-\log \frac{e^{s\left(\cos \left(\theta_{y_{i}, i}\right)-m\right)}}{e^{s\left(\cos \left(\theta_{y_{i}, i}\right)-m\right)}+\sum_{j \neq y_{i}} e^{s \cos \left(\theta_{j, i}\right)}}
其中,
W=WWx=xxcos(θj,i)=WjTxi \begin{aligned} W &=\frac{W^{*}}{\left\|W^{*}\right\|} \\ x &=\frac{x^{*}}{\left\|x^{*}\right\|} \\ \cos \left(\theta_{j}, i\right) &=W_{j}^{T} x_{i} \end{aligned}
以二分类问题为例,比较 Softmax loss,Normalized softmax loss (NSL),A-Softmax loss,LMCL四种损失函数的决策边界:

  1. Softmax:W1cos(θ1)=W2cos(θ2)\left\|W_{1}\right\| \cos \left(\theta_{1}\right)=\left\|W_{2}\right\| \cos \left(\theta_{2}\right)
  2. NSL:cos(θ1)=cos(θ2)\cos \left(\theta_{1}\right)=\cos \left(\theta_{2}\right)
  3. A-Softmax:C1:cos(mθ1)cos(θ2)C2:cos(mθ2)cos(θ1)\begin{aligned} C_{1} & : \cos \left(m \theta_{1}\right) \geq \cos \left(\theta_{2}\right) \\ C_{2} & : \cos \left(m \theta_{2}\right) \geq \cos \left(\theta_{1}\right) \end{aligned}
  4. LMCL:C1:cos(θ1)cos(θ2)+mC2:cos(θ2)cos(θ1)+m\begin{array}{l}{C_{1} : \cos \left(\theta_{1}\right) \geq \cos \left(\theta_{2}\right)+m} \\ {C_{2} : \cos \left(\theta_{2}\right) \geq \cos \left(\theta_{1}\right)+m}\end{array}

各种 loss 学习笔记
参考论文链接:https://arxiv.org/abs/1801.09414

Additive Angular Margin Loss

ArcFace 和 CosFace 的基本思想差不多,只不过在添加余弦余量 mm 的方式上略有不同,ArcFace 的loss function 为:
LArc=1Ni=1Nloges(cos(θyi+m))es(cos(θyi+m))+j=1,jyinescosθj L_{Arc}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{s\left(\cos \left(\theta_{y_{i}}+m\right)\right)}}{e^{s\left(\cos \left(\theta_{y_{i}}+m\right)\right)}+\sum_{j=1, j \neq y_{i}}^{n} e^{s \cos \theta_{j}}}

通过一个联合的式子来概括SphereFace(m1m_{1}),ArcFace(m2m_{2}),CosFace(m3m_{3}):
Luni=1Ni=1Nloges(cos(m1θyi+m2)m3)es(cos(m1θyi+m2)m3)+j=1,jyinescosθj L_{uni}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{s\left(\cos \left(m_{1} \theta_{y_{i}}+m_{2}\right)-m_{3}\right)}}{e^{s\left(\cos \left(m_{1} \theta_{y_{i}}+m_{2}\right)-m_{3}\right)}+\sum_{j=1, j \neq y_{i}}^{n} e^{s \cos \theta_{j}}}
几何上的差异可以直观地表示为:
各种 loss 学习笔记

参考论文链接:https://arxiv.org/abs/1801.07698v1

Adaptive Cosine-based Loss

之前讲的 LMCL 有两个关键的超参数 ssmm ,是需要手动进行调参的,而 Adaptive Cosine-based Loss 则是增加了自适应调整这两个参数的部分。
分析:ss 要大一点好,但不能太大;同样,mm 也是大点好,但不能太大。与尺度参数 ss 相比,余弦余量 mm 仅使曲线同相移动,因此 AdaCos 将 mm 从损失函数中消除,只自动调整 ss
最后得到的固定尺度参数 s~f\tilde{s}_{f} 和动态自适应尺度参数 s~d(t)\tilde{s}_{d}^{(t)} 为:
s~f=logBicosπ4=logkyiescosθi,kcosπ42log(C1) \begin{aligned} \tilde{s}_{f}=\frac{\log B_{i}}{\cos \frac{\pi}{4}} &=\frac{\log \sum_{k \neq y_{i}} e^{s \cdot \cos \theta_{i, k}}}{\cos \frac{\pi}{4}} \\ & \approx \sqrt{2} \cdot \log (C-1) \end{aligned}
s~d(t)={2log(C1)t=0logB avg (t)cos(min(π4,θ med (t)))t1 \tilde{s}_{d}^{(t)}=\left\{\begin{array}{ll}{\sqrt{2} \cdot \log (C-1)} & {t=0} \\ {\frac{\log B_{\text { avg }}^{(t)}}{\cos \left(\min \left(\frac{\pi}{4}, \theta_{\text { med }}^{(t)}\right)\right)}} & {t \geq 1}\end{array}\right.
其中,Bavg(t)=1NiN(t)Bi(t)=1NiN(t)kyies~d(t1)cosθi,kB_{\mathrm{avg}}^{(t)}=\frac{1}{N} \sum_{i \in \mathcal{N}^{(t)}} B_{i}^{(t)}=\frac{1}{N} \sum_{i \in \mathcal{N}^{(t)}} \sum_{k \neq y_{i}} e^{\tilde{s}_{d}^{(t-1)} \cdot \cos \theta_{i, k}}
每次一迭代中,动态自适应尺度参数 s~d(t)\tilde{s}_{d}^{(t)} 对分类概率 Pi,j(t)P_{i, j}^{(t)} 的影响都不相同,并且有效地影响了更新网络参数的梯度信息 (L(xi)xi,L(Wj)Wj)(\frac{\partial \mathcal{L}\left(\vec{x}_{i}\right)}{\partial \vec{x}_{i}},\frac{\partial \mathcal{L}\left(\vec{W}_{j}\right)}{\partial \vec{W}_{j}})
Pi,j(t)=es~d(t)cosθi,jk=1Ces~d(t)cosθi,k P_{i, j}^{(t)}=\frac{e^{\tilde{s}_{d}^{(t)} \cdot \cos \theta_{i, j}}}{\sum_{k=1}^{C} e^{\tilde{s}_{d}^{(t)} \cdot \cos \theta_{i, k}}}
L(xi)xi=j=1C(Pi,j(t)1(yi=j))s~d(t)cosθi,jxiL(Wj)Wj=(Pi,j(t)1(yi=j))s~d(t)cosθi,jWj \begin{array}{l}{\frac{\partial \mathcal{L}\left(\vec{x}_{i}\right)}{\partial \vec{x}_{i}}=\sum_{j=1}^{C}\left(P_{i, j}^{(t)}-\mathbb{1}\left(y_{i}=j\right)\right) \cdot \tilde{s}_{d}^{(t)} \frac{\partial \cos \theta_{i, j}}{\partial \vec{x}_{i}}} \\ {\frac{\partial \mathcal{L}\left(\vec{W}_{j}\right)}{\partial \vec{W}_{j}}=\left(P_{i, j}^{(t)}-\mathbb{1}\left(y_{i}=j\right)\right) \cdot \tilde{s}_{d}^{(t)} \frac{\partial \cos \theta_{i, j}}{\partial \vec{W}_{j}}}\end{array}

参考论文链接:https://arxiv.org/abs/1905.00292