url: https://kpzhang93.github.io/papers/eccv2016.pdf
year: ECCV2016
abstract
對於人臉識別任務來說, 網絡學習到的特征具有判別性是一件很重要的事情. 增加類間距離, 減小類內距離在人臉識別任務中很重要.
那么, 該如何增加類間距離, 減小類內距離呢?
通常, 我們使用 softmax loss 作為分類任務的loss, 但是, 單單依賴使用 softmax 監督學習到的特征只能將不同類別分開, 卻無法約束不同類別之間的距離以及類內距離. 為了達到增加類間距離, 減小類內距離的目的, 就需要額外的監督信號, center loss 就是其中一種.
center loss 包含兩個流程:
- 學習一個類別的深度特征的中心
- 使用該中心約束屬於該類別的特征表示

最常用的CNN執行特征學習和標簽預測,將輸入數據映射到深度特征(最后隱藏層的輸出),然后映射到預測標簽,如上圖所示。最后一個完全連接層就像一個線性分類器,不同類的深層特征通過決策邊界來區分。
center loss design
如何開發一個有效的損失函數來提高深度學習特征的判別力呢?
直觀地說,最小化類內方差同時保持不同類的特征可分離是關鍵。
center loss 形式如下:

\(c_{y_i} \in R^d\) 為第\(y_i\)類的特征表示的中心
center 更新策略

total loss 函數


toy experiment 可視化


超參設置實驗
\(\lambda \quad\) softmax 與 center loss的平衡調節因子
\(\alpha \quad\) center 學習率, 即$ center -= \alpha \times diff$

experiment result

thought
就身邊的哥們用 center loss 的經驗來看, center loss 在用於非人臉識別的任務上, 貌似效果一般或者沒有效果. 可能只有像人臉任務一樣, 類內深度特征分布聚成一簇的情況下, 該 loss 比較有效. 如果分類任務中, 類內特征差異比較大, 可能分為幾個小簇(如年齡預測), 該 loss 可能就沒有啥用處了. 而且 center loss 沒有做特征歸一化, 不同類的特征表示數量級可能不一樣, 導致一個數量級比較大特征即使已經很相似了, 但是其微小的差距也可能比其他的數量級小的特征的不相似時的的數值大.
而且, 學習到的 center 只用於監督訓練, 在預測過程中不包含任何與 center 的比較過程.
就學習 center 這一思想而言, 感覺 cosface 中提到的 large margin cosine loss 中用於學習 feature 與權重之間的 cosine 角度, 比較好的實現這種學習一個 center(以 filter 的權重為 center), 然后讓 center 盡量與 feature 距離近的思想可能更好一點, 即能在訓練時規范 feature 與 center 之間的距離, 又能在預測時候, 通過與 center 比對 cosine 大小來做出預測.