학습 개요의 깊이의 기능 상실

깊이 연구에서 손실 함수는 중요한 역할을한다. 오류 예측 모델의 값을 감소 모델은 수렴 상태에 도달되도록, 기능의 손실을 최소화. 따라서, 다른 손실 함수는, 모델의 영향은 중요하다. 다음으로, 자주 사용하는 기능을 작업 손실을 요약합니다 :

  • 이미지 분류 : 크로스 엔트로피
  • 대상 감지 : 초점 손실, L1 / L2 손실 함수, IOU 손실, GIOU, DIOU, CIOU
  • 이미지 인식 : 삼중 손실, 센터 손실, Sphereface, Cosface, Arcface

이미지 분류

크로스 엔트로피

이미지 분류에서 종종 softmax를 + 크로스 엔트로피 손실 함수로 사용되는, 특정 파생 내를 참조 할 수 있습니다 이전의 블로그 .

$$ 크로스 엔트로피 = - \ sum_ I = {1} ^ {N} P (x_i로부터) LN (Q (x_i로부터)) $$

어떤, $ P (x)는 $ 진정한 확률 분포를 나타내고, $ Q (x)의 $가 예측 확률 분포를 나타냅니다. 두 확률 분포의 차이를 줄여 크로스 엔트로피 손실 함수가 가능한 한 실제 달성 확률 분포의 확률 분포를 예측한다.

나중에 제안에 교차 엔트로피의 기초 구글 라벨 스무딩 (부드러운 라벨) . 자세한 내용을 참조하십시오 이 블로그 .

실제로,이 두 가지 문제 중 하나가 뜨거운 실제 확률 함수를 맞는 동안, 진정한 확률의 예측 가능성을 맞게하는 것이 필요하다 :

  1. 쉽게 오버 피팅으로 이어질 모델의 일반화 능력을 보장 할 수 없습니다;
  2. 0 총 확률과 각 카테고리와 다른 카테고리 사이 격려 갭의 확률이 가능한 한 많이 증가하고 경계 기울기로부터 알 수 있으며, 이러한 상황은, 적응 모델 분류 예측에 너무 믿음 발생할 어렵다.

따라서,이를 통해 자신감을 줄이기 위해, 인간의 오류의 영향을 느리게하는 표시 일으켰 동안, $ P (x)는 $ 변화의 필요성 :

$$ P '{(X)} = (1- \ 엡실론) \ 델타 _ {(K, S)} + \ 엡실론 (K)에 $$

특징 $ \ 델타 _ {(K, Y)} $는 디랙 함수이고, U (k)는 균일하게 분포 $ 달러. 간단히 말해, 라벨 y를 줄이고 신뢰는 나머지 범주의 신뢰를 향상시킬 수 있습니다. 따라서, 크로스 엔트로피가된다 :

$$ H (p ', Q) = - \ sum_ I = {1} ^ {N} P'(x_i로부터) LN (Q (x_i로부터)) = (1- \ 엡실론) H (P, Q) + \ 엡실론 H (P, U) $$

 


대상 감지

: 최근에, 당신은 참조 할 수 있습니다, 좋은 블로그 게시물이 표적 탐지 손실 함수를 소개하는 것입니다 참조 https://mp.weixin.qq.com/s/ZbryNlV3EnODofKs2d01RA

움직이는 물체를 검출하는 일반적인 손실 함수는 두 부분으로 구분 손실 및 바운딩 박스 회귀 손실로 구성된다. calssification 감량의 목표는 가능한 한 정확한 분류를 만드는 것입니다; 상자 회귀 손실을 경계의 목적은 경기에 GT 상자 가능한 한 예측 프레임을 만드는 것입니다.

초점 손실

종이의 기능의 손실에서 초점 손실 " 조밀 한 개체 인식에 대한 초점 손실 "주로 긍정적이고 부정적인 샘플 사이의 불균형을 해결합니다. 손실 쉽게 예의 값을 감소시킴으로써 간접적 오른쪽 하드 예 감량의 값을 증가시킨다. 초점 손실 개선을위한 크로스 엔트로피 기반으로합니다 :

$$ 초점 손실 = - \ 알파 _T (1 p_t) ^ \ 감마 로그 (p_t) $$

포토 잘못 분할 인 경우 ^ \ 감마 $으로, $ p_t $으로 매우 작을 것이다 $ (1 p_t)의 교차 엔트로피 증가 앞에서 볼 수있는, $ 손실 고통 있도록 (1 p_t)가 $이 확대 한 것이다 거의 영향, 그리고 esay 예 무게를 줄이기 위해 부드러운 매개 변수 $ \ 감마 $을 높일 수 있습니다. 때 = 0 $ $ \ 감마, 크로스 엔트로피에 초점 손실 타락한. 다른 $ \ 감마 $ 들어 미치는 영향도에 도시 된 바와 같이.

 

 L1, L2는 L1 손실 함수를 매끄럽게

L1, L2를 사용하거나 네 좌표 값을 반환하는 L1 손실 함수를 부드럽게. 부드러운 L1 손실 함수는 빠른 R-CNN은 제안했다. 세 가지 손실 함수로서 다음과 같습니다 :

$$ L1 = \ 왼쪽 | X \ 권리 | $$

$$ L2 = X ^ {2} $$

$$ smoothL1 = \ {{} 매트릭스 0.5X ^ 2 \ qquad두면 \ 시작 \ \ 왼쪽 | X \ 오른쪽 | <1 \\ \ 좌측 | X \ 오른쪽 | -0.5 \ qquad 달리 \ {단부 매트릭스} \ 권리 . $$

X 프로그램의 함수의 미분에서 손실 : x의 유도체의 기능 $ L1 $ 손실은 후반 기차에서, x는 학습 속도 변경되지 않은 경우, 안정적인 값을 주변 변동될 손실 기능은 더 높은 수렴하기 어려운, 매우 작고, 일정 정확성. x가 큰 값 X의 기능 유도체의 $ L2 $ 손실은 그 유도체도 매우 큰 훈련의 초기 단계에서 불안정합니다. 완벽 L1을 원활하게하고, 단점을 $ L1의 손실 $ $ $ L2를 피하는.

 일반적으로 네 GT 상자의 좌표 값의 차이를 계산하는 일반적인 목표 검출에서 다음 회귀 손실을 구성하는이 네 손실을 첨가하여 수행 하였다.

그러나, 위의 세 가지 손실 함수를 사용하여, 다음과 같은 결함이있을 것이다 :

  • 타겟 손실 검출 경계 박스 손실을 계산하기위한 시간을 위의 세 종류, 최종 경계 박스 손실을 추가함으로써 포 포인트 독립적 손실을 계산하고 획득이 방법은 네 포인트가 독립적이라는 가정 실제로 어떤 상관 관계가있다;
  • 표시기 실제 평가 프레임 검출 IOU의 사용 두 동등하지이다 검출 손실 상자 복수의 동일한 크기를 가질 수 있지만, IOU는 IOU 손실 도입은 이러한 문제점을 해결하기 위해 광범위하게 변할 수있다

 IOU 손실

차용증 손실 사막보기가 2016 년 제시하고있다 " UnitBox : 고급 개체 탐지 네트워크 ." 논문의 주요 포인트 중 하나입니다 :

  • LN 손실 함수는 네 개의 변수의 좌표가 독립적이라는 가정이다 유클리드 거리를 기반으로하지만, 현실적으로 이러한 일부 관련성을 갖는 변수를 조정.
  • 평가는 IOU를 사용하여 좌표계를 반환하고 네 동등하지 않은 둘 변수를 사용하여 좌표.
  • 값만 IOU없는 동일한 거리를 갖는 블록 유럽.

따라서, 제안 된 IOU 손실, IOU는 손실 함수로 직접 사용 :

$$ Loss_ IOU {} = - LN (IOU) $$

동시에, 사람들이 사용할 수 있습니다 :

$$ Loss_ {}는 IOU 1은 IOU = $$

GIOU

GIOU 손실 스탠포드 손실 함수가 2019 년 제안 " 을 통해 연합 (EU)의 일반화 된 교차 : 경계 상자 회귀에 대한 메트릭 및 손실 ." 위의 IOU 손실, 두 개의 비 중첩 블록에 최적화 될 수 없으며, IOU 손실되지 얼마나 멀리 결국 두 블록에서 반영합니다. 이 문제를 해결하기 위해, 저자는 손실 함수로 GIOU을 언급 :

$$ GIOU IOU- = \ FRAC {C- (A \ bigcup B)} {C} $$

하며, $ C $ 행렬은 두 개의 외부 상자의 최소 영역을 나타낸다. 즉, 첫 번째 두 개의 프레임은 IOU를 수득하고, 상기 영역과 외부 행렬 C, A와 B를 뺀 영역. GIOU 마침내의 가치를 얻을.

 

GIOU에는 다음과 같은 속성이 있습니다 :

  • Giou 예는 거리의 측정치로서 이용 될 수 있고, $ {Loss_ GIOU는} -1- GIOU는 = $
  • GIOU 규모 불변
  • Giou IOU 하한, IOU 당량 $ GIOU (A, B) \ (A, B) $이다. 경우 사각형 A, B와 유사한, $ \ lim_ {A \ 향하는 화살표 B} GIOU (A, B) = IOU (A, B) $
  • 경우 사각형 A, B의 중첩 $ GIOU (A, B) = IOU (A, B) $
  • 사각형 A, B가 교차하지 않는, $ GIOU (A, B) = - 1 $

IOU의의 단점을 극복하면서 전반적으로, GIOU는 IOU의 장점을 제공합니다.

Diou 和 Ciou

DIOU和CIOU是天津大学于2019年提出的《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》。为了解决GIOU收敛慢和提高回归精度,提出DIOU来加速收敛。同时考虑到框回归的3个几何因素(重叠区域,中心点距离,宽高比),基于DIOU,再次提出CIOU,进一步提高收敛速度和回归精度。另外,可以将DIOU结合NMS组成DIOU-NMS,来对预测框进行后处理。

当出现下图的情况(GT框完全包含预测框)时,IOU与GIOU的值相同,此时GIOU会退化成IOU,无法区分其相对位置关系。同时由于严重依赖于IOU项,GIOU会致使收敛慢。

 基于上述问题,作者提出两个问题

 

  1. 直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。
  2. 如何使回归在与目标框有重叠甚至包含时更准确、更快

好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。基于问题一,作者提出了DIoU Loss,相对于GIoU Loss收敛速度更快,该Loss考虑了重叠面积和中心点距离,但没有考虑到长宽比;针对问题二,作者提出了CIoU Loss,其收敛的精度更高,以上三个因素都考虑到了。

 

首先,定义一下基于IOU Loss的损失函数:

$$Loss=1-IOU+R(B,B^{gt})$$

其中,$R(B,B^{gt})$表示预测框与GT框的惩罚项。在IOU Loss中,$R(B,B^{gt})=0$;在GIOU中,$R(B,B^{gt})=\frac{C-A\bigcup B}{C}$。

而在DIOU中,该惩罚项$R(B,B^{GT})=\frac{\rho ^2(b,b^{gt})}{c^2}$,其中$b$和$b^{gt}$表示预测框与GT框的中心点,$\rho ()$表示欧式距离,$c$表示预测框$B$与GT框$B^{gt}$的最小外接矩阵的对角线距离,如下图所示。

因此,$Loss_{DIOU}$定义为:

$$Loss_{GIOU}=1-IOU+\frac{\rho ^2(b,b^{gt})}{c^2}$$

所以,$Loss_{DIOU}$具有如下性质:

  1. DIOU依然具有尺度不变性;
  2. DIOU直接最小化两个框的距离,因此收敛会更快;
  3. 对于目标框包裹预测框的这种情况,DIoU Loss可以收敛的很快,而GIoU Loss此时退化为IoU Loss收敛速度较慢

DIOU同时考虑了重叠面积和中心点之间的距离,但是没有考虑到宽高比。进一步提出了CIOU,同时考虑了这3个因素,在DIOU的惩罚项中加入了$\alpha \upsilon $:

$$R(B,B^{gt})=R_{CIOU}=\frac{\rho ^2(b,b^{gt})}{c^2}+\alpha \upsilon $$

其中,$\alpha $表示trade-off参数,$\upsilon $表示宽高比一致性参数。

$$\upsilon =\frac{4}{\pi ^2}\left ( arctan\frac{w^{gt}}{h^{gt}}-arctan\frac{w}{h} \right )^2$$

$$\alpha =\frac{\upsilon }{(1-IOU)+\upsilon }$$

这里的$\upsilon $为什么会有$\frac{4}{\pi ^2}$呢?这里$arctan$的范围是$[0,\frac{\pi }{2})$。

所以,CIOU的损失函数为:

$$Loss_{CIOU}=1-IOU+\frac{\rho ^2(b,b^{gt})}{c^2}+\alpha \upsilon $$

而在实际操作中,$w^2+h^2$是很小的数字,在后向传播时,容易造成梯度爆炸。通常用1来代替$w^2+h^2$。

另外,提醒一点的是,GIOU、CIOU、DIOU都是衡量方式,在使用时可以代替IOU。但是这里需要考虑的一个问题是,预测框与GT框的匹配规则问题。并不是说anchor一定会去匹配一个不重叠的GT框。类似于SSD中所说,anchor会选择一个重叠最大的GT框进行预测,而这个重叠最大可以使用IOU、GIOU、CIOU、DIOU来进行衡量。

 


图像识别

图像识别问题,包含了行人重识别,人脸识别等问题。此类损失都是通用的,因此放在一起汇总。同样,也看到一篇很好的博客介绍了大量人脸识别的损失函数:https://mp.weixin.qq.com/s/wJ-JNsUv60vXtGIV-mDrTA

Triplet Loss

该Triplet Loss损失函数提出于2015年的《FaceNet: A Unified Embedding for Face Recognition and Clustering》。该损失函数的主要想法是,拉近同一id之间的距离,扩大不同id之间的距离。如下图所示,图中的anchor与positive属于同一id,即$y_{anchor}=y_{positive}$;而anchor与negative属于不同的id,即$y_{anchor} \ne y_{negative}$。通过不断学习后,使得anchor与positive的欧式距离变小,anchor与negative的欧式距离变大。其中,这里的anchor、Positive、negative是图片的d维嵌入向量(embedding)。

 使用数学公式进行表达,triplet loss想达到的效果是:

$$d(x^a_i,x^p_i)+\alpha \leq d(x^a_i,x^n_i)$$

其中,$d()$表示两个向量之间的欧氏距离,$\alpha $表示两个向量之间的margin,防止$d(x^a_i,x^p_i)=d(x^a_i,x^n_i)=0$。因此,可以最小化triplet loss损失函数来达到此目的:

$$triplet\quad loss=[d(x^a_i,x^p_i)-d(x^a_i,x^n_i)+\alpha ]_+$$

在实际中,通常使用在线训练方式,选择P的不同的id,每个id包含K张图片,形成了$batch_size=PK$的mini-batch。从而在这mini-batch种选择hard/easy example构成loss,具体可以参考这篇博客

Center Loss

该Center Loss损失函数提出于《A Discriminative Feature Learning Approach for Deep Face Recognition》。为了提高特征的区分能力,作者提出了center loss损失函数,不仅能缩小类内差异,而且能扩大类间差异。

作者首先在MNIST数据集上进行试验,将隐藏层的最后输出维度改为2,使用softmax+交叉熵作为损失函数,将其结果可视化出来,如下图所示。可以看出,交叉熵可以使每一类分开,数据分布呈射线形,但却不够区分性,即类内差异大。

 

 因此,作者想要在保持数据的可分性前提下,进一步缩小类内之间的差异。为了达到这个目的,提出了center loss损失函数:

$$L_C=\frac{1}{2}\sum_{i=1}^{m}\left \| x_i-c_{y_i} \right \|^2_2$$

其中,$c_{y_i}$表示第$y_i$类的中心。因此,通常将center loss和交叉熵进行结合,构成组合损失函数:

$$L=L_S+\lambda L_C=-\sum_{i=1}^{m}log\frac{e^{W^T_{y_i}x_i+b_{y_i}}}{\sum_{j=1}^{n}e^{W^T_j x_j+b_{y_i}}}+\frac{\lambda }{2}\sum_{i=1}^{m}\left \| x_i-c_{y_i} \right \|^2_2$$

其中,$\lambda $表示center loss的惩罚力度。同样在MNIST中,其结果如下图所示。可以看到随着$\lambda $的增加,约束性更强,每一类会更聚集在类内中心处。

 

在使用Center Loss损失函数时,需要引入两个超参:$\alpha $和$\lambda $。其中,$\lambda $表示center loss的惩罚力度;而$\alpha $控制类内中心点$c_{y_i}$的学习率。类内中心点$c_{y_i}$应该随着特征的不同,会产生变化。一般会在每个mini-batch中更新类内中心点$c_{y_i}$:

$$c^{t+1}_j=c^t_j-\alpha \Delta c^t_j$$

Sphereface

该Sphereface提出于《SphereFace: Deep Hypersphere Embedding for Face Recognition》,其也称A-Softmax损失函数。作者认为,triplet loss需要精心构建三元组,不够灵活;center loss损失函数只是强调了类内的聚合度,对类间的可分性不够重视。因此,作者提出了疑问:基于欧式距离的损失函数是否适合模型学习到具有区分性的特征呢?

首先,重新看一下softmax loss损失函数(即softmax+交叉熵):

$$Loss_i=-log\left ( \frac{e^{W^T_{y_i}x_i+b_{y_i}}}{\sum_{j}e^{W^T_jx_i+b_j}} \right )=-log\left (\frac{e^{||W_{y_i}|| \; ||x_i||cos(\theta _{y_i,i})+b_{y_i}}}{\sum_je^{||W_j|| \; ||x_i||cos(\theta _{j,i})+b_j}}  \right )$$

其中,$\theta _{j,i} \quad (0 \leq \theta _{j,i}\leq \pi )$表示向量$W_j$和$x_i$的夹角。可以看到,损失函数与$||Wj||$,$\theta _{j,i}$和$b_j$有关,令$||Wj||=1$和$b_j=0$,则可以得到modified-softmax损失函数,更加关注角度信息:

$$L_{modified-softmax}=-log\left (\frac{e^{||x_i||cos(\theta _{y_i,i})}}{\sum_je^{||x_i||cos(\theta _{j,i})}}  \right )$$

虽然使用modified-softmax损失函数可以学习到特征具有角度区分性,但这个区分力度仍然不够大。因此,在$\theta _{j,i}$上乘以一个大于1的整数,来提高区分度:

$$L_{ang}=-log\left (\frac{e^{||x_i||cos(m\theta _{y_i,i})}}{e^{||x_i||cos(m\theta _{j,i})}+\sum_{j\neq y_i}e^{||x_i||cos(\theta _{j,i})}}  \right )$$

这样,能扩大类间距离,缩小类内距离。

下图是论文的实验结果,从超球面的角度进行解释,不同的m值的结果。其中,不同颜色的点表示不同的类别。可以看出,使用A-Softmax损失函数,会将学习到的向量特征映射到超球面上,$m=1$表示退化成modified-softmax损失函数,可以看出,每个类别虽然有明显的分布,但区分性不够明显。随着$m$的增大,区分性会越来越大,但也越来越难训练。

 

最后,给出该损失函数的实现方式,请参考这篇博客

Cosface

该Cosface损失函数是由腾讯在2018年《CosFace: Large Margin Cosine Loss for Deep Face Recognition》中提出的。Cosface损失函数,也称Large Margin Cosine Loss(LMCL)。从名字可以看出,通过对cos的间隔最大化,来实现扩大类间距离,缩小类内距离。

从softmax出发(与Sphereface类似),作者发现,为了实现有效的特征学习,$||W_j=1||$是十分有必要的,即对权重进行归一化。同时,在测试阶段,测试用的人脸对的得分通常是根据两个特征向量之间的余弦相似度进行计算的。这表明,$||x||$对得分计算影响不大,因此,在训练阶段将$||x||=s$固定下来(在本论文中,$s=64$):

$$L_{ns}=\frac{1}{N}\sum_{i}-log\frac{e^{s \; cos(\theta _{y_i,i})}}{\sum_{j}e^{s \; cos(\theta _{j,i})}}$$

其中ns表示归一化版本的softmax loss,$\theta _{j,i}$表示$W_j$和$x$之间的角度。为了加大区分性,类似Sphereface一样,引入常数m:

$$L_{lmc}=\frac{1}{N}\sum_{i}-log\frac{e^{s \; (cos(\theta _{y_i,i})-m)}}{e^{s \; (cos(\theta _{y_i,i})-m)}+\sum_{j\neq y_i}e^{s \; cos(\theta _{j,i})}}$$

其中,$W=\frac{W^*}{||W^*||},x=\frac{x^*}{||x^*||},cos(\theta _j,i)=W^T_jx_i$。

下图是作者的解释图。第一个表示正常的sotfmax loss,可以看出两个类别的分类边界具有重叠性,即区分性不强;第二个表示归一化版本的softmax loss,此时边界已经很明显,相互没有重叠,但是区分性不足;第三个表示A-softmax,此时横纵坐标变成了$\theta $,从这个角度解释,使用两条线作为区分边界,作者也提出,该损失函数的缺点是不连续;第四个表示Cosface,在$cos(\theta )$下,使用两条线作为区分边界,特征之间没有交集,随着m值增大,区分性也会越来越明显,但训练难度会加大。

 

 Arcface

该Arcface损失函数提出于《ArcFace: Additive Angular Margin Loss for Deep Face Recognition》。类似于Sphereface和Cosface,Arcface同样需要令$||W||=1,||x||=s$,同时也引入常数m,但与前面两者不同的是,这里的m是对$\theta $进行修改:

$$L_{arcface}=\frac{1}{N}\sum_{i}-log\frac{e^{s \; (cos(\theta _{y_i,i}+m))}}{e^{s \; (cos(\theta _{y_i,i}+m))}+\sum_{j\neq y_i}e^{s \; cos(\theta _{j,i})}}$$

下图是Arcface的计算流程图,首先对$x$与$W$进行标准化,然后进行相乘得到$cos(\theta _{j,i})$,通过$arccos(cos(\theta _{j,i}))$来得到角度$\theta _{j,i}$,加上常数$m$来加大间距得到$\theta _{j,i}+m$,之后计算$cos(\theta _{j,i}+m)$并乘上常数$s$,最后进行常规的softmax loss就行。

 

通过对Sphereface、Cosface和Arcface进行整合,得到了统一的形式:

$$L=\frac{1}{N}\sum_{i}-log\frac{e^{s \; (cos(m_1\theta _{y_i,i}+m_2)-m_3)}}{e^{s \; (cos(m_1\theta _{y_i,i}+m_2)-m_3)}+\sum_{j\neq y_i}e^{s \; cos(\theta _{j,i})}}$$

此时,就可以对该损失函数进行魔改了,作者实验得到,对于部分数据集,$m_1=1,m_2=0.3,m_3=0.2$和$m_1=0.9,m_2=0.4,m_3=0.15$的效果较好。

同时,作者也尝试将Arcface融入Triplet loss中,但效果不太明显。


 

至此,我在工作中常用到的损失函数介绍完成了。后续继续跟进和补充该文章,感谢阅读。 

추천

출처www.cnblogs.com/dengshunge/p/12252820.html