人臉識別-arcface損失函數

參考博客:網絡

L-margin softmax loss:https://blog.csdn.net/u014380165/article/details/76864572函數

A-softmax loss:https://blog.csdn.net/u011808673/article/details/80491361學習

AM-softmax loss:https://blog.csdn.net/fire_light_/article/details/79602310優化

arcface:https://blog.csdn.net/Fire_Light_/article/details/79602705spa

softmax loss:.net

N是樣本的數量,i表明第i個樣本,j表明第j個類別,fyi表明着第i個樣本所屬的類別的分數3d

fyi是全鏈接層的輸出,表明着每個類別的分數,orm

   每個分數即爲權重W和特徵向量X的內積blog

每一個樣本的softmax值即爲:ci

 

L-softmax loss:

假設一個2分類問題,x屬於類別1,那麼原來的softmax確定是但願:

也就是屬於類別1的機率大於類別2的機率,這個式子和下式是等效的:

large margin softmax就是將上面不等式替換爲:

m是正整數,cos函數在0到π範圍又是單調遞減的,因此cos(mx)要小於cos(x)。經過這種方式定義損失會逼得模型學到類間距離更大的,類內距離更小的特徵。

從幾何的角度看兩種損失的差異:

設置爲cos(mx)後,使得學習到的W參數更加的扁平,能夠加大樣本的類間距離。

Large-Margin Softmax的實驗效果:

 

A-softmax loss

A-softmax loss簡單講就是在large margin softmax loss的基礎上添加了兩個限制條件||W||=1和b=0,使得預測僅取決於W和x之間的角度。

softmax的計算:

能夠寫成

若引入兩個限制條件,

decision boundary變爲,只取決於角度了

 

則損失函數變爲:

在這兩個限制條件的基礎上,做者又添加了和large margin softmax loss同樣的角度參數,使得公式變爲:

 

AM-softmax

在A-softmax的基礎上,修改Cos(mθ)爲一個新函數: 

與ASoftmax中定的的相似,能夠達到減少對應標籤項的機率,增大損失的效果,所以對同一類的聚合更有幫助

而後根據Normface,對f進行歸一化,乘上縮放係數s,最終的損失函數變爲:

 

這樣作的好處在於A-Softmax的倍角計算是要經過倍角公式,反向傳播時不方便求導,而只減m反向傳播時導數不用變化

Asoftmax是用m乘以θ,而AMSoftmax是用cosθ減去m,這是二者的最大不一樣之處:一個是角度距離,一個是餘弦距離。

之因此選擇cosθ-m而不是cos(θ-m),這是由於咱們從網絡中獲得的是W和f的內積,若是要優化cos(θ-m)那麼會涉及到arccos操做,計算量過大。 

arcface

 

分類正確label的值爲,cos函數在(0,1)內是單調遞減的,加上m,會使該值變得更小,從而loss會變得很大。

 

這樣修改的緣由:角度距離比餘弦距離在對角度的影響更加直接

相關文章
相關標籤/搜索