[18.01] CosFace
大餘弦損失
CosFace: Large Margin Cosine Loss for Deep Face Recognition
人臉辨識的任務早在深度學習開始流行之前,就已經引起了研究人員的興趣。因為這是少數可以在生活中找到大量應用的領域之一,所以該領域一直都是近十幾年來的熱門話題。
定義問題
人臉辨識的問題跟一般分類的問題有所不同:
- 因為人臉實在太像了!
有別於過去在 ImageNet 等資料集上的分類問題,人臉辨識的問題在 於,即使是同一個人的照片,不同的光線、角度、表情、甚至是攝影機的不同,都會導致照片的差異。
一般來說,我們在這個領域中,會討論人臉的兩個特性:
- 類內差異大:同一個人的照片之間的差異通常很大,因為光線、角度、表情、年齡等因素都會影響照片的表現。
- 類間差異小:人臉的基本結構是相似的,都是兩眼、一鼻、一口,所以不同人的照片之間的差異通常很小。
可是我覺得人臉差異很大啊?
- 因為你的大腦已經習慣了區分人臉,所以覺得人臉之間的差異很大。但如果換個種族,例如貓?在只看「臉」的前提下,你能匹配十個以上的「貓臉」嗎?
人臉辨識系統
在一般的人 臉辨識系統中,分為幾個部分:
- 特徵提取器:通常是一個卷積神經網絡,用來將人臉圖片轉換成一個固定長度的特徵向量。
- 度量學習器:用來計算兩個特徵向量之間的距離,在部署階段會捨棄。
在「特徵提取器」的部分比較不用討論,因為這裡會跟著最新的主幹網絡向前推進。
經過特徵提取器後,我們會得到一個特徵向量 ,目前最常見的維度為 512 維,在過去的研究中,512 維的長度理論上足夠表達全世界所有的人臉。
這個向量通常就是在人臉辨識領域中所要討論的「重點」。在過去的研究中,使用 Softmax 損失函數訓練的模型能力有限,對於邊際情況的區分能力不足。
而這正是本論文要解決這個問題。
解決問題
損失函數
在這裡,我們跟著作者一步一步來看看原始的 Softmax 損失函數是怎麼被改進的。
-
Softmax 損失函數:
這裡的 是特徵向量, 是第 張圖片的類別, 是類別的數量, 是批次大小。
其中 通常是一個全連接層的激活函數,可以用 來表示,這裡 是全連接層的權重, 是偏差項。
這裡作者設 ,所以 ,然後我們寫成向量內積的形式:
這裡 是 和 之間的夾角。
到這裡,我們沒有改變任何事情,就是描述一次 Softmax 損失函數的計算過程。
-
Normalized Softmax Loss (NSL):
接著,作者提出了一種稱為 Normalized Softmax Loss (NSL) 的改進方法。
將 使用 L2 正規化,固定為 1;將 固定長度為 ,這樣 。
NSL 透過固定權重向量 和特徵向量 的範數,使得它們在歐幾里得空間的變化被消除,只剩下角度變化。當 和 的範數固定後,損失函數只依賴於角度:
這樣做的好處是,特徵學習主要集中在角度空間,提高了特徵的區分性。
-
Large Margin Cosine Loss (LMCL):
然而,NSL 的特徵區分性還不夠強。為了進一步提高特徵的辨識度,作者引入了餘弦邊界(cosine margin),並將其自然地融入到 Softmax 的餘弦公式中。
考慮二分類情境,假設 是學到的特徵向量和類別 的權重向量之間的夾角。
NSL 透過強制 來實現類別 和 的區分。
為了構建大邊界分類器,我們進一步要求:
其中 是一個固定參數,用來控制餘弦邊界的大小。由於 比 小,這個約束對分類更加嚴格。且從不同類別的角度來看,都必須滿足這個約束。
最後作者正式定義大邊界餘弦損失(Large Margin Cosine Loss, LMCL)為: