人臉驗證任務中的目標方程為什麼還要加入分類誤差?

在看DeepID系列文章時(其中在做人臉驗證任務),為什麼在訓練特徵提取模型時,目標方程還要加上分類誤差?


建議看看sphereface第一張圖,了解classification和metric learning的區別和共性。

其實區別就在於metric learning要求更大的margin,而加margin這個任務通過改造softmax也可以實現,沒有必要用專門的metric learning loss。

用metric learning的loss往往需要實現hard mining演算法來採樣困難樣例,否則需要覆蓋的樣本對數太多,基本不可能覆蓋完全。但hard mining這個東西又難搞又要調整參數的,很麻煩,所以這兩年用metric learning方法做face verification很少見了。


先用分類的softmax大致找到每個類的中心,然後再用contrastive loss之類的distance metric learning去約束距離。個人建議去看看center loss那篇論文,會有一個更好的認識。

實際上,現在新的論文都是用softmax的改進直接約束margin了,最早來自於large margin softmax,今年的sphereface是目前這個方向性能最好的做法。


DeepID2 : Deep Learning Face Representation by Joint Identification-Verification的摘要中就指明了雙監督信號各自的作用:

The key challenge of face recognition is to develop effective feature representations for reducing intra-personal variations while enlarging inter-personal differences. In this paper, we show that it can be well solved with deep learning and using both face identification and verification signals as supervision. The Deep IDentification-verification features (DeepID2) are learned with carefully designed deep convolutional networks. The face identification task increases the inter-personal variations by drawing DeepID2 extracted from different identities apart, while the face verification task reduces the intra-personal variations by pulling DeepID2 extracted from the same identity together, both of which are essential to face recognition.

用於人臉驗證的特徵需要滿足兩點:類內差異小,類間差異大。

減小類內差異的監督信號(損失函數)一般可以直接作用於特徵向量上,例如DeepID2中使用的verification signal,還有center loss;而增大類間差異的工作就由分類誤差(cross-entropy loss)來實現。

當然還有triple loss這種完全作用於特徵向量上的損失函數,但是根本上還是增大類間差異並減小類內差異。

參考文獻:

DeepID2: Deep Learning Face Representation by Joint Identification-Verification

CenterLoss: A Discriminative Feature Learning Approach for Deep Face Recognition

FaceNet: A Unified Embedding for Face Recognition and Clustering


為了通過softmax引入更多的負例監督信號,否則在N^2空間中的負pair對太難採樣全


大概是不加分類不好收斂?


推薦閱讀:

tensorflow等框架是如何處理大數據的(數據無法一次性讀入機器內存)?
Facenet即triplet network模型訓練,loss不收斂的問題?
卷積神經網路(CNN)中卷積層與池化層如何進行BP殘差傳遞與參數更新?
訓練集準確率接近100%,驗證集準確率80%但是隨著訓練step增加不增也不降。算是過擬合還是欠擬合?
caffe里的clip gradient是什麼意思?

TAG:人臉識別 | 深度學習DeepLearning |