1. 程式人生 > >《A Discriminative Feature Learning Approach for Deep Face Recognition》論文筆記

《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損失函式一般定義成為如下交叉熵的形式:(為啥是這樣的形式?請參考:平方損失函式與交叉熵損失函式
L

s = i = 1 m
l o g e W y i T x i + b y i j = 1 n e W j T x i + b y i L_{s}=-\sum_{i=1}^{m}log\frac{e^{W_{y_{i}}^{T}x_{i}+b_{y_{i}}}}{\sum_{j=1}^{n} e^{W_{j}^{T}x_{i}+b_{y_{i}}}}
其中, x i x_i 是特徵第一個全連線層輸出的特徵向量, m m 是batch size的大小, n n 是softmax分類的數目。那麼使用softmax loss的網路第一個全連線層的輸出進行視覺化得到的結果是
在這裡插入圖片描述
左邊的是訓練集的視覺化結果,右邊是測試集的視覺化結果。可以看到softmax確實是可以將10個類分開,並且具有比較明顯的邊界資訊。但是,每個類的類內方差比較大,類間距也比較小。這就導致了測試集中部分資料的混淆。

2.1 祭出Center Loss

在文章中將Center Loss定義為如下形式:
L c = 1 2 i = 1 m x i c y i 2 2 L_c=\frac{1}{2} \sum_{i=1}^{m}||x_i – c_{y_{i}}||_{2}^{2}
其中, c y i c_{y_{i}} 代表的是每個類聚類的中心,而且該值應該隨著網路的變換而變化。在進行訓練的時候為了使用batch更新,並且對一些異常的資料,使用 α \alpha 進行調和,該值在 [ 0 , 1 ] [0,1] 之間。對於每個輸入的特徵向量 x i x_i 進行求導,聚類中心 c y i c_{y_{i}} 的更新參照如下梯度,從而得到:
在這裡插入圖片描述
上式中的 δ ( c o n d i t i o n ) \delta (condition) 是一個條件函式,在條件滿足的時候是1,否則取值為0。那麼接下來的事情就是怎麼將兩個loss結合起來了。文章中使用的是加權相加的形式,使用引數 λ \lambda 去調和這兩個loss了
在這裡插入圖片描述
那麼這個演算法的流程就可以描述為:
在這裡插入圖片描述
對於不同的引數 λ \lambda 對最後結果的影響可以通過下圖來進行說明:
在這裡插入圖片描述
可以看到引數 λ \lambda 越大,center loss所佔的權重越大,則資料就越向中心聚集。