《A Discriminative Feature Learning Approach for Deep Face Recognition》論文筆記
1. 論文思想
在這篇文章中尉人臉識別提出了一種損失函式,叫做center loss,在網路中加入該損失函式之後可以使得網路學習每類特徵的中心,懲罰每類的特徵與中心之間的距離。並且該損失函式是可訓練的,並且在CNN中容易優化。那麼,將center loss與softmax相結合會增加CNN網路的魯棒性。
在網路中增加center loss的損失函式的思想便是使得類間距變大,類內部間距變小,從而使得分類邊界更加明瞭,類內部更加凝聚(方差減小)。那麼這篇文章的主要工作就集中在:
(1)提出了新的損失函式center loss,通過實驗證明CNN中加入softmax loss與center loss之後使得網路更加魯棒。
(2)提出的損失函式在CNN網路中是很容易實現的,可以通過SGD直接進行訓練的。
這裡只關心了center loss對於其它人臉的部分就不仔細看了-_-||。。。
2. 實驗嘗試
這裡論文使用MNIST資料集和包含兩層全連線層的網路進行實驗。試驗中將第一個全連線層的輸出設定為2,目的是為了方便進行視覺化觀測。對於一般的多分類模型都是採用softmax作為最後一層,那麼梯度的源頭便是softmax loss。那麼對於softmax loss損失函式一般定義成為如下交叉熵的形式:(為啥是這樣的形式?請參考:平方損失函式與交叉熵損失函式)
其中,
是特徵第一個全連線層輸出的特徵向量,
是batch size的大小,
是softmax分類的數目。那麼使用softmax loss的網路第一個全連線層的輸出進行視覺化得到的結果是
左邊的是訓練集的視覺化結果,右邊是測試集的視覺化結果。可以看到softmax確實是可以將10個類分開,並且具有比較明顯的邊界資訊。但是,每個類的類內方差比較大,類間距也比較小。這就導致了測試集中部分資料的混淆。
2.1 祭出Center Loss
在文章中將Center Loss定義為如下形式:
其中,
代表的是每個類聚類的中心,而且該值應該隨著網路的變換而變化。在進行訓練的時候為了使用batch更新,並且對一些異常的資料,使用
進行調和,該值在
之間。對於每個輸入的特徵向量
進行求導,聚類中心
的更新參照如下梯度,從而得到:
上式中的
是一個條件函式,在條件滿足的時候是1,否則取值為0。那麼接下來的事情就是怎麼將兩個loss結合起來了。文章中使用的是加權相加的形式,使用引數
去調和這兩個loss了
那麼這個演算法的流程就可以描述為:
對於不同的引數
對最後結果的影響可以通過下圖來進行說明:
可以看到引數
越大,center loss所佔的權重越大,則資料就越向中心聚集。