1. 程式人生 > >『深度概念』度量學習中損失函式的學習與深入理解

『深度概念』度量學習中損失函式的學習與深入理解

『深度概念』度量學習中損失函式的學習與深入理解

 

0. 概念簡介

 

度量學習(Metric Learning),也稱距離度量學習(Distance Metric Learning,DML) 屬於機器學習的一種。其本質就是相似度的學習,也可以認為距離學習。因為在一定條件下,相似度和距離可以相互轉換。比如在空間座標的兩條向量,既可以用餘弦相似度的大小,也可以使用歐式距離的遠近來衡量相似程度。

一般的度量學習包含以下步驟:

  1. Encoder編碼模型:用於把原始資料編碼為特徵向量(重點如何訓練模型)
  2. 相似度判別演算法:將一對特徵向量進行相似度比對(重點如何計算相似度,閾值如何設定)

基於深度學習的度量學習演算法中,可以分為兩個流派:

  1. 網路設計派:代表孿生神經網路(Siamese network)
  2. 損失改進派:代表 xx-softmax

本文介紹重點是損失改進派,是最近發展迅速,應用廣泛的方法。

在人臉識別與聲紋識別這種度量學習演算法中,演算法的提高主要體現在損失函式的設計上,損失函式會對整個網路的優化有著導向性的作用。可以看到許多常用的損失函式,從傳統的softmax loss到cosface, arcface 都有這一定的提高。

無論是SphereFace、CosineFace還是ArcFace的損失函式,都是基於Softmax loss來進行修改的。

 

Base line Softmax loss
各種延伸的演算法 Triplet loss, center loss
最新演算法 A-Softmax Loss(SphereFace),  Cosine Margin Loss, Angular Margin Loss, Arcface

1.Softmax loss

 

    

 

這就是softmax loss函式, ​表示全連線層的輸出。在計算Loss下降的過程中,我們讓 ​ 的比重變大,從而使得log() 括號內的數更變大來更接近1,就會 log(1) = 0,整個loss就會下降。

其中W和b就是分類層引數,其實就是最後學習到的分類中心,對應下圖就是每種顏色對稱軸,各種顏色點的集合就是x=encoder(row),就是分類層前面一層的輸出。

下面圖如何理解呢?倒數第二層輸出不應該是很多維嗎?

形象的理解:當做是一個球體,但是為了視覺化方便,把球給壓扁了。就成為了二維的影象。(個人理解)

如何操作?應該通過降維方法。

這樣如何完成分類的?

我們知道,softmax分類時取的是最大那類(argmax),只要目標那一類大於其他類就可以了。反映在圖上,每個點與各類中心的距離(W與b決定),距離哪個中心最近就會分成哪一類。

 

可以發現,Softmax loss做分類可以很好完成任務,但是如果進行相似度比對就會有比較大的問題

(參加[深度概念]·Softmax優缺點解析)

  • L2距離:L2距離越小,向量相似度越高。可能同類的特徵向量距離(黃色)比不同類的特徵向量距離(綠色)更大

  • cos距離:夾角越小,cos距離越大,向量相似度越高。可能同類的特徵向量夾角(黃色)比不同類的特徵向量夾角(綠色)更大

總結來說:

  1. Softmax訓練的深度特徵,會把整個超空間或者超球,按照分類個數進行劃分,保證類別是可分的,這一點對多分類任務如MNIST和ImageNet非常合適,因為測試類別必定在訓練類別中。
  2. 但Softmax並不要求類內緊湊和類間分離,這一點非常不適合人臉識別任務,因為訓練集的1W人數,相對測試集整個世界70億人類來說,非常微不足道,而我們不可能拿到所有人的訓練樣本,更過分的是,一般我們還要求訓練集和測試集不重疊。
  3. 所以需要改造Softmax,除了保證可分性外,還要做到特徵向量類內儘可能緊湊,類間儘可能分離。

 

這種方式只考慮了能否正確分類,卻沒有考慮類間距離。所以提出了center loss 損失函式。(paper)

 

2. Center loss

    

    

center loss 考慮到不僅僅是分類要對,而且要求類間有一定的距離。上面的公式中 ​表示某一類的中心, ​表示每個人臉的特徵值。作者在softmax loss的基礎上加入了 ​,同時使用引數 ​來控制類內距離,整體的損失函式如下:

    

 

3. Triplet Loss

三元組損失函式,三元組由Anchor, Negative, Positive這三個組成。從上圖可以看到,一開始Anchor離Positive比較遠,我們想讓Anchor和Positive儘量的靠近(同類距離),Anchor和Negative儘量的遠離(類間距離)。

    

表示式左邊為同類距離 ,右邊為不同的類之間的距離。使用梯度下降法優化的過程就是讓類內距離不斷下降,類間距離不斷提升,這樣損失函式才能不斷地縮小。

上面的幾個演算法都是比較傳統老舊的,下面說一下比較新的演算法。


 

4. L-softmax

前面Softmax loss函式沒有考慮類間距離,Center loss函式可以使類內變得緊湊,但沒有類間可分,而Triplet loss函式比較耗時,就產生了一下新的演算法。

L-softmax函式開始就做了比較精細的改動,從softmax 函式log裡面的 ​轉化到 ​。L-softmax函式不僅希望類間距離拉的更大,還能夠把類內距離壓縮的更緊湊。

     ​ 

    

把其中的cosθ改成了cos(mθ),

    

m倍θ起到了增加 margin 的效果,讓類內距離更加緊湊,同時類間距離變大。m越大類間距離就越大,因為在(0, π)區間cos函式單調遞減,m越大 cos(mθ)趨向於0。

 

5. SphereFace(A-Softmax)

A-softmax 是在 L-softmax 函式上做了一個很小的修改,A-softmax 在考慮 margin時新增兩個限制條件:將權重W歸一化  ​,b = 0。這使得模型的預測僅取決於 W 和 X 之間的角度。

    

 

6. CosFace

cosface的loss函式如下:

    

上式中,s為超球面的半徑,m為margin。

 

7. ArcFace

對比arcface和cosface這兩個函式,發現arcface是直接在角度空間中最大化分類界限,而cosface是在餘弦空間中最大化分類界限,這樣修改是因為角度距離比餘弦距離在對角度的影響更加直接。  

 

分類的決策邊界如下:

 arcface演算法流程如下:

 


 

References:

 

[1] https://blog.csdn.net/jningwei/article/details/80641184

[2] https://blog.csdn.net/u012505617/article/details/89355690

&n