1. 程式人生 > >損失函式改進方法之A-softmax loss

損失函式改進方法之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的對比中還是提高了一些。