源碼地址: https://github.com/happynear/NormFace
研究了特徵歸一化方法用於增強人臉驗證性能,同時提出了兩種適應于歸一化特徵訓練的兩種策略:基於優化餘弦相似度改進的softmax損失,改進的度量學習方法。
在人臉驗證中,餘弦距離或者L2歸一化的歐式距離通常用來衡量特徵間的相似度,餘弦距離相當於歸一化的兩個向量的內積。但在CNN的訓練中,內積運算通常不進行歸一化,目前還沒嚴格的解釋爲什麼在測試階段計算相似度時特徵需要歸一化。但歸一化之後效果確實變好了,作者的目的是將特徵歸一化的操作嵌入到CNN的訓練中。
但直接的歸一化特徵和最後一層全連接層的權重,然後搭建一個餘弦層,網絡不會收斂,論文找到了解決方法。
**L2 Norm層**
回答了兩個問題:爲什麼損失函數是softmax時需要歸一化特徵,爲什麼直接將softmax損失用於歸一化的特徵網絡不能收斂?
softmax損失傾向於建立徑向的特徵分佈,原因是softmax扮演max算子的soft版本,在MNIST數據庫上使用softmax損失訓練的2維特徵分佈如圖:
Proposition 1.對於將無偏內積相似度作爲度量的softmax損失,使用表示x被分類的類別i的概率,對於任意給定的尺度s>1,如果i=arg maxj(Wjf),則Pi(sf)≥Pi(f)恆成立。
命題1表示softmax損失通常鼓勵分離的好的特徵具有較大的幅度,這是softmax的特徵分佈是徑向的原因。但是使用餘弦距離時通常不需要這個特性。
歸一化層定義
輸入向量x,L2歸一化層輸出歸一化的向量,x可以是特徵向量,也可以是權值矩陣Wi的一列:
後向傳播是,x的梯度爲:
可以認爲是在單位球體上tangent空間的投影。
改進softtmax損失
Proposition 2.假設每一類樣本數量相同,樣本分佈合理,即,每個樣本的特徵與對應類的權值相同。如果將特徵及權值的每一列都歸一化,具有範數l,則softmax損失的最小值爲,其中n是類別數目。
這個邊界表示,如果將特徵及權重歸一化到1,則softmax損失將在比較高的值處徘徊,如果將這兩者歸一化到大於1的值,softmax損失就會繼續下降。實際中是在cosine層之後增加一個scale層,scale層僅有一個可學習的參數s=l2。根據下圖中的損失與l2的關係,可以將l2固定一個值,如20~30,此時具有較小的損失。
這個尺度在訓練中學習更好,具有cosine距離的softmax損失爲:
改進度量學習
將度量學習改變一下,用來做分類任務,同時保持它與歸一化特徵的兼容度。最常用的度量學習方法爲對比損失和三元損失。在歸一化後,改進的softmax損失可以認爲是優化歸一化的歐式距離,
這是由於。
由這個啓發,可以將特徵改爲權值矩陣的一列,將Wi稱爲第i類的‘agent’,對比損失的分類形式爲:
三元損失的分類形式
改進後困難的樣本將具有更大的梯度,文中圖6所示,改進後需要更大的margin使得更多的特徵得到優化。
Proposition3是設置margin的理論指導,改進的對比及三元損失的margin分別爲1,0.8。
實驗結果
相似度閾值選取,先將相似度值直方圖化,作爲特徵,使用SVM分類,獲得相同id及不同id的閾值: