參考博客:網絡
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會變得很大。
這樣修改的緣由:角度距離比餘弦距離在對角度的影響更加直接