NormFace: L2 Hypersphere Embedding for Face Verification - 1 - 論文學習


 

To sum up, the Cosine Loss[17], vMFMM[21] and our proposed loss functions optimize both features and weights, while the L2-softmax[24] normalizes the features only and the SphereFace[35] normalizes the weights only.

 

We reduced the number of the feature dimension to 2 and plot 10,000 2-dimensional features from the training set on a plane in Figure 2. From the figure, we find that f2 can be much closer to f1 than to f3 if we use Euclidean distance as the metric. Hence directly using the features for comparison may lead to bad performance.

同時發現對比歐式距離或內積操作,特征向量的角度可能是一個好的度量。當然,以前很多工作都使用過該方法

對於softmax loss來說最常用的相似度度量還是沒有歸一化特征的內積,該度量使用在訓練和測試時有gap

 

假說1:

 

 公式2的意思是i取[1,n]個類別進行計算,得到最后最大值的索引為i,則說明這個特征向量f對應的圖像的類別為i,所以下面的不等式才會成立:

當i == j時該不等式等號成立

 

假說證明:

 這個命題意味着,softmax損失總是鼓勵分離良好的特性具有更大的量級。這是為什么softmax的特征分布總是呈發射狀的原因

但是如圖2所示,我們可能並不需要這個特性:

 同類f2和f3的距離大於不同類f1和f2的距離

 

通過歸一化可以減輕這個特性的影響。因此我們通常會使用兩個特征向量之間的cosine值用來測量兩個樣本的相似度

但是假說1在內積操作后添加偏置bias的情況下不成立。實際上,兩個類的權重向量可以相同,這樣模型將仍能夠通過bias來做決策。我們在MNIST實驗中發現了這樣的例子,他們的分散點如圖3所示:

 我們可以從上面的兩張圖發現一些類的點都集中在0點周圍。這時候進行歸一化,來自這些類的點將會分散在一個單位圓中,與其他類香覆蓋。可見特征歸一化江破壞特定類的區分能力。因此在分類任務中,我們通常在softmax loss前將bias項去掉

 

首先定義二范數為:

 

 然后歸一化層為:

這里的x可以是特征向量f,也可以是權重矩陣Wi中的一列

 

然后損失函數對歸一化層的求導如下:

 

 論文中的證明:

 Softmax的目標是盡可能最大化正確分類的概率,它會忽略掉一些比較難分辨的圖片,也就是低質量的圖片,而優先擬合高質量的圖片。但是我們有時更希望訓練的是一個困難樣本,這樣訓練出來的網絡才會更好

一般高質量圖像提取出來的特征范數||x||2大,低質量圖像提取出來的特征范數||x||2小,因此根據上面的式子可知范數較小的特征會獲得更大的梯度,這樣網絡可能就會花更多的精力去訓練質量不好的數據,這樣網絡的效果會更好,所以進行特征歸一化

因此把特征強行歸一化其實就相當於會使得低范數的圖片變得高范數的圖片,增加更多的網絡注意力

  • 不使用特征歸一化,在高質量圖片集(LFW)上結果更好
  • 使用特征歸一化,在具有很多低質量的圖片集(MegaFace)上結果更好。

 

 

向量x和損失對x求導的值是正交的,所以:

 論文中的證明:

 

 

 

 從圖4的左圖可知||x||2總是在增加:

 

 所以為了阻止x的范數||x||2增加到無窮,向量x需要權重衰減項

 

 有了上面的歸一化層,我們就能夠優化我們的cosine相似度量了:

 

f表示的是特征向量,Wi表示的是在softmax loss層前的內積層權重矩陣的第i 列

但是在歸一化之后,網絡沒能成功收斂。在很多次迭代后損失只降了一點,且收斂到了一個很大的值。之后損失就不降了

這可能是因為歸一化后d(f,Wi)的范圍為[-1,1],然后沒使用歸一化前,即使用內積層和softmax loss的值在(-20,20)和(-80,80)

因為該值范圍過小的原因,可能回導致概率不能很好地接近1,即使是在樣本分離良好的情況下。yi是f的真正標簽值

 

f和其標簽對應類的權值向量Wf的內積為1,而與其他類的權值向量內積都是-1,表示差別很大,然后帶入上面的概率公式得到

 

 在極端情況下,這個值是很小的。當n=10時其值為0.45;但當n=1000時值為0.007,即當需要分類的數量越大,其離概率1這個值越遠,即使數據是很好分類的。即使是在其他類的樣本都在單位超球面的另一側(表示其他類和這個類的差別是很大的),這種情況下得到的概率值離1也很遙遠

因為softmax loss函數求導結果公式為 1-Pyi,因為此時的Pyi總是遠遠小於1,所以即使是在有着分類良好的樣本的情況下,求得的偏導結果(梯度)總是很大,使得網絡不能收斂

 

為了更好地理解這個問題,我們將給出一個邊界證明在最好的情況下softmax loss有多小

假說2(Softmax Loss Bound After Normalization):

假設每個類都有着相同的樣本數;且每個樣本都是好分離的,即每個樣本的特征和他們對應類的權重是相同的,所以Wi == f。這樣如果我們歸一化特征和權重的每一列,將得到一個項(下式的花體L),這樣softmax loss將有一個下界:

 

n表示類別的數量

證明:

 

 

 這個界限意味着,如果我們只是將特征和權重標准化到1,即使不應用正則化,softmax的損失也會被限制在訓練集上的一個非常高的值

為了對這個界有一個直觀的認識,我們還在圖5畫出了作為范數花體L的函數的這個界的曲線:

獲得了這個邊界后,收斂的問題就很清楚了

解決辦法就是將特征和權重列歸一化到一個更大的值范數花體L而不是1,這樣softmax loss就能夠繼續往下降了。我們通過直接添加一個scale 層在cosine層后面來學習。該scale層就只有一個可學習參數:

根據圖5我們可能回固定它到一個足夠大的值,對於不同的類數量,設置為20到30之間的值

但是我們更希望它是一個能夠通過后向傳播自動學習的值

因此最后帶有cosine距離的softmax loss將被定義為

 

 

Metric Learning度量學習

深度度量學習通常喜歡使用成對或三個樣本作為輸入,然后輸出他們之間的距離。在度量學習中歸一化是一個常用策略,對於其損失函數沒有導致什么問題。

但是度量學習比分類難訓練,因為它的輸入對很大,對於成對數據來說可能是O(N2),對於三對數據來說可能是O(N3),N為訓練樣本數。需要采樣和困難樣本挖掘算法,時間花費大且棘手。相反分類中的輸入數據是O(N)的

因此我們打算重構度量學習損失函數去做分類任務,同時保持他們與歸一化特征的兼容性

因為歸一化后softmax loss可以被看作歸一化的歐式距離:

 

 

agent策略

即將某類特征與另一類特征之間的距離計算改成某類特征和另一類特征的總結Wj的距離計算,這樣在訓練的時候就不用進行成對數據或成三對數據的配對了

1)contrastive loss:

從:

 

 變成C-contrastive:

這里的m參數就是設置的margin值,表示當該特征和該W~j不是一類時,他們之間的距離最好是大於m這個邊際值的,這樣它在損失中就不會起作用,因為為0,不會被優化;如果小於他就會對損失其作用

 

2)triplet loss:

從:

 變成C-triplet:

這里的m值也是表示邊際值margin,即表示當i、j為一類,i、k不為一類時,不為一類的距離應該比為一類的距離大m,這樣就不會被優化,表示此時類之間分離良好

這些改后的損失函數是用來做分類的

 

為什么能夠Wj能夠替代特征fj:

Wj表示的是第j類特征的總結,其在論文中稱為agent。如果所有類都能通過邊界很好地分離,則Wj就能很好地對應每個類的特征均值,如圖6左圖所示:

 右邊的圖是比較復雜的情況,就是所有類並不能很好分離,有些樣本相互重疊,這樣agent將會有所偏移。這樣邊際特征(即困難樣本)將會有更大的梯度,這就使得在更新時他們移動得比容易的樣本大

 

但是這個agent策略也會有缺點。即在重構后,如果我們仍然使用與原始版本相同的邊際margin(即式子中的m參數值),一些邊際margin特征可能不會得到優化。如圖7:

 如上圖所示的例子,假設黃色的agent為W0,紅色的agent為W1

  • 左圖:即對於中間的黃點fi,它與非同類W1的距離|| fi - W1 ||2 2(藍線線)是小於設置的邊際值m(margin,即圓圈的直徑)的,這樣他就會被優化,會訓練得越來越接近W0 ; 而灰色的紅點fj與非同類的距離|| fj - W0 ||2 2是大於設置的邊際值m(margin)的,這樣它就不會被優化了。 而原始的版本是和非同類的任意選擇的特征點fk對比,所以距離大概率是小於邊際值的,所以會被優化
  • 右圖:即對於中間的黃點fi,它與非同類W1的距離|| fi - W1 ||2 2(藍線線) 減去 同類W0的距離|| fi - W0 ||2 2(綠線) 的結果是小於設置的邊際值m(margin)的,所以會被優化;而灰色的紅點是大於邊際值的,所以不會被優化

 

所以我們需要更大的邊際margin值使得更多的特征被優化

數學上,該由agent近似引起的誤差由以下命題給出:

假說3:

 f0是A類的特征,fj是B類的特征,Wi是B類的特征總結agent。即兩類特征的距離 減去 一類特征與另一類特征總結agent的距離的平方結果是有一個上界的,上界為一類的特征與該類特征總結agent的距離

即三角不等式:

 

 

 論文中證明:

這個邊界bound為我們設置邊際margin提供了理論指導。我們可以在訓練過程中使用移動平均法實時計算它,並將其顯示出來,以獲得更好的進度感覺。

理論上,該邊界bound通常為0.5到0.6

則對於contrastive loss和triplet loss推薦的邊際值margin分別為1和0.8

注意,設置邊際margin曾經是一項復雜的工作。遵循這些方法,我們不得不暫停訓練,每隔幾個epoch就尋找一個新margin。但是,在應用了歸一化之后,我們不再需要執行這樣的搜索算法。通過歸一化,特征量的大小scale(即參數s)是固定的,這使得確定margin(即參數m)也成為可能。在這種策略中,我們將不會嘗試使用不進行歸一化的C-triplet損失或C-contrastive損失來訓練模型,因為這很困難。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM