損失函式改進方法之A-softmax loss
深度學習交流QQ群:116270156
論文:SphereFace: Deep Hypersphere Embedding for Face Recognition
論文連結:https://arxiv.org/abs/1704.08063
這篇是CVPR2017的poster,主要提出了A-softmax loss(angular softmax loss)用來改進原來的softmax loss。A-softmax loss簡單講就是在large margin softmax loss的基礎上添加了兩個限制條件||W||=1和b=0,使得預測僅取決於W和x之間的角度。
程式碼地址:https://github.com/wy1iu/sphereface
先來直觀看下A-softmax loss的效果:Figure2。這裡的modified softmax loss指的是在softmax loss的基礎上添加了那兩個限制條件,而A-softmax loss是在large margin softmax loss的基礎上添加了那兩個限制條件。
還是先從softmax loss開始講起。假設一個二分類問題,那麼下面的公式1和2分別表示樣本x屬於類別1和類別2的概率,這個計算的過程就是softmax。這裡的W1和W2都是向量,二者合在一起組成全連線層的引數矩陣W,也就是W=[W1,W2],全連線層的輸出也就是Wx。假設輸出的尺寸是m*n,那麼m就表示batch size,n表示類別數,所以這裡的W1x和W2x就分別是Wx的兩列。偏置b比較簡單就不詳細說了。因此如果p1大於p2,那麼x屬於類別1。
這個時候可以聯想到文章前面提到的一個公式:
文章說這是softmax的decision boundary,怎麼理解呢?其實就是p1=p2的情況,此時W1x+b1=W2x+b2。
公式1和2只是softmax,並不是softmax loss,這兩者是有差別的,一個是概率,一個是損失。softmax loss的公式如下:
公式3的log函式的輸入就是前面公式1和2的p1和p2,只不過不需要分開寫成W1和W2,而是用W就行。這裡yi表示某個類別,j表示所有類別。
公式4是將Li展開來寫,並且引入了角度引數:
為什麼公式4的上下兩個等式是成立的?因為可以將矩陣相乘:
寫成:
非常容易理解吧。
那麼如果引入下面這兩個限制條件呢?
和
那麼公式3(結合公式4和上面兩個限制條件看)就會變成:
那麼為什麼要引入這兩個限制條件呢?原來的decision boundary是這樣的:
如果有上面的兩個限制條件,那麼decision boundary就變成了:
也就是說變成只取決於角度了。
在這兩個限制條件的基礎上,作者又添加了和large margin softmax loss一樣的角度引數,使得公式5變成如下的公式6:
公式6也就是作者文中最終使用的loss公式。因此A-softmax loss可以看成是large margin softmax loss的改進版,也就是在large margin softmax loss的基礎上添加了兩個限制條件。
Figure3表示從幾何角度看A-softmax loss。
後面作者還通過數學公式證明了對於二分類,m的最小值要滿足下面這個不等式:
對於多分類,m的最小值要滿足下面這個不等式:
另外關於實驗結果可以看論文,因為這篇博文主要是介紹這個A-softmax loss,實驗結果就不貼了,不過在和large margin softmax loss,center loss的對比中還是提高了一些。