論文下載:http://openaccess.thecvf.com/content_cvpr_2017/papers/Liu_SphereFace_Deep_Hypersphere_CVPR_2017_paper.pdf
SphereFace: Deep Hypersphere Embedding for Face Recognition
softmax損失僅僅能夠學到分辨性不夠強的特征,除此之外,還有contrastive loss,center loss,triplet loss。
但是它們都在一定程度上存在弊端:
- center loss僅能使得類內緊湊,無法使得類間可分。
- contrastive loss和triplet loss需要pair/triplet 挖掘過程,增加時間的損耗。
- 除此之外,還有一個更關鍵之處:以上的損失函數都使用了歐式距離,而softmax損失學習到的特征有角度上的分布特性。
證明了softmax損失學習到的特征有角度上的分布特性,因此在這種意義上,歐式距離與softmax損失是不兼容的,所以作者認為結合softmax損失和歐式距離效果可能不是最佳的。
一步步修改損失:
1)modified softmax loss
傳統softmax loss損失函數為:
為了簡化計算,把偏置b設置為0,,然后權重和輸入的內積用下面式子表示:
因此為了將損失函數變換成僅受角度影響的公式,需要經過下面的幾個變換:
1》決策邊界
首先softmax loss的決策邊界(decision boundary)為:
(W1 −W2)x + b1 − b2 =0
其中W1、W2表示的是對應的權重矩陣中1、2對應的類的那一行;b1、b2同理;x即整個input輸入的特征向量
這個公式是因為其決策邊界是線性的。
證明:
假設決策邊界是線性的,那么會有:
1.首先在決策邊界上softmax對任意兩類的輸出概率是相等的。即對如上圖的任一邊界上的一點,softmax輸出的概率向量上,該點被判斷為邊界兩側的類的對應分量是相等的
這樣,通過計算可知:
zi = Wi*x + bi = zj = Wj*x + bj (這里Wi和Wj是權重矩陣第i,j行,i、j即邊界兩側的兩個類)
2.邊界是線性的等價於邊界上的任意兩個點X1、X2,他們的線形組合X0=t*X1+s*X2 仍然在決策邊界上,這里t+s=1
根據上面這兩個條件證明:
從softmax的決策邊界上任取兩點X1,X2
由上面的敘述1可知,W1*x+b1=W2*x+b2,即(W1-W2)*x=b2-b1
再任取一點X0 = t*X1 + s*X2,s+t = 1
則softmax對X0的計算得z1 = W1*X0 + b1, z2 = W2*X0 + b2, 下面證明z1=z2:
z1 - z2 = W1*X0 + b1 - (W2*X0 + b2) ,(代入X0 = t*X1 + s*X2)
= t*(W1 - W2)*X1 + s*(W1 - W2)*X2 + (b1 - b2) ,(代入(W1-W2)*x=b2-b1)
= t*(b2-b1) + s*(b2-b1) + (b1-b2)
= 0
所以,z1=z2,即證明X0也在決策邊界上
2》約束條件
然后使用L2正則化處理Wj使得||Wj||=1,L2正則化就是將Wj向量中的每個值都分別除以Wj的模,從而得到新的Wj,新的Wj的模就是1:
說明該方法只歸一化了權重,而沒有歸一化特征向量
這樣根據式子:
可以將softmax loss損失函數變換為只與角度相關的公式:
||x|| (cos(θi) - cos(θj)) = 0
這里的θi是Wi和x之間的角度
通過這樣的損失函數學習,可以使得學習到的特征具有更明顯的角分布,因為決策邊界只與角有關
這樣修改后的損失函數modified softmax loss為:
xi表示第i個訓練樣本,yi為第i個訓練樣本的類別,Wj表示W的第j列,Wyi表示W的第yi列,表示列是因為進行了轉置
2)A-softmax loss(angular softmax)
1》添加定量控制參數m
添加一個定量控制參數m(m>=1)到決策邊界上,這樣類1和類2的決策邊界為:
||x|| (cos(mθ1) - cos(θ2)) = 0, 對於類1來說
和 ||x|| (cos(θ1) - cos(mθ2)) = 0, 對於類2來說
m參數用來定量控制角度邊際
在modified softmax loss,對於一個來自類別1 的可學習特征向量x,θi是該x和Wi之間的角度,可知如果我們希望網絡能夠分類得到該x屬於類別1,那么就需要cos(θ1) > cos(θ2), 因為θi范圍為[0,Π],在這個范圍內cos()函數是遞減的,所以要求(θ1) < (θ2)
所以如果增加一個參數m,變為cos(mθ1) > cos(θ2) , m >= 2 ,那么就希望訓練得到的θ1更小,該類1的決策邊界為cos(mθ1) = cos(θ2);同理cos(θ1) < cos(mθ2),也是希望訓練得到的θ2更小,該類2的決策邊界為cos(θ1) = cos(mθ2)。這樣兩個類的分布中間就會隔着一個比較大的角度邊際,因為各自的角度都要乘以m才能到達邊界
假設所有訓練樣本都正確分類了,那么決策邊界將生成一個角度邊際為(m−1/m+1)θ,即兩個類的類間角度特征距離, θ是表示兩個類的權值W1,W2之間的夾角。證明:
對於類別1,cos(mθ1) = cos(θ2), θ = θ1 + θ2
所以cos(mθ1) = cos(θ - θ1)
所以 mθ1 = θ - θ1
所以 θ1 = (1/m+1) θ
同理,對於類別2,cos(θ1) = cos(mθ2), θ = θ1 + θ2
所以cos(mθ2) = cos(θ - θ2)
所以 mθ2 = θ - θ2
所以 θ2 = (1/m+1) θ
所以最后計算兩個類邊界的角度為 θ - θ1 - θ2 = (m−1/m+1)θ
這樣對於類型1,需要訓練θ1< θ2/m;這樣對於類型2,需要訓練θ2 < θ1/m。這樣肯定是比原始softmax loss的訓練θ1< θ2和θ2 < θ1要難的
現在的損失函數為:
2》 定義新角度函數
為了擺脫這個角度的限制,通過概括一個單調遞減的角度函數ψ(θyi,i)來擴展cos(θyi,i)的定義范圍,在[0,π/m]的范圍中兩個函數是等價的,這樣最終的損失為:
其中將 ψ(θyi,i)函數定義為:
m >= 1是用來控制角度邊際大小的。當m=1時,該損失函數就等價與了modified softmax loss
可見
根據上面的式子畫圖:
可見該函數是單調遞減的
然而, SphereFace 的實現中整合了 Softmax 監督以保證訓練的收斂,並且權重由動態超參數 λ
λ 控制。加入額外的 Softmax 損失,所以ψ(θyi,i)實際上是:
其中 λ是一個額外的超參數,以利於 SphereFace 的訓練。λ在開始時設置為1,000,並且減少到5以使每個類的角度空間更緊湊。這個額外的動態超參數 λ使得 SphereFace 的訓練相對棘手。
3》 該A-softmax loss的屬性
屬性1 :A-Softmax Loss定義了一個大角度間隔的學習方法,m越大這個間隔的角度(m−1/m+1)θ也就越大,相應區域流形的大小(θ1和θ2)就越小,這就導致了訓練的任務也越困難。
定義1:定義mmin, 即當m>mmin時,類內的最大角度特征距離小於類間的最小角度特征距離
屬性2 :在2分類問題中,mmin > 2 + √3
屬性3: 在多分類問題中,mmin >= 3