ArcFace層問題分析


Arcface訓練問題分析

1、現象

使用ArcFace 層時,訓練前期准確率一直為0,到后面才逐漸上升;

 

2、分析

從代碼入手

output = (y * phi) + ((1.0 - y) * cosine)

output *= s

y 是one-hot形式的真實label,phi=cos(θ+m),cosine=cosθ,θ即特征向量與權值向量的夾角。則:

(1)     label = 0 -> y=[1, 0] -> output = [s*cos(θ1+m), s*cosθ2]

(2)     label = 1 -> y=[0,1] -> output = [s*cosθ1, s*cos(θ2+m)]

然后經過softmax操作進行概率轉換;

 

初始時,θ1和θ2在高維空間中均接近pi/2,m一般為正數(這里為0.05)。針對softmax的輸出使用CE-loss進行約束,形式如下:

 

則:

(1)   label = 0 ->  損失函數會朝着s*cos(θ1+m) >> s*cosθ2 的方向約束,結合cos函數在[0, pi]上的單調遞減性,則(θ1+m) 應越來越小於 θ2;但是初始時 θ1=θ2=pi/2,則θ1+m 在訓練初期都大於θ2,即訓練初期 s*cos(θ1+m) < s*cosθ2 ,即label = 0 時, prediction =1;

(2)   label = 1時的情況同上

所以訓練初期:label = 0 的樣本都被判為負樣本,label = 1的樣本都被判為正樣本,所以訓練初期acc = 0%。

而隨着訓練的不斷進行,比如對於label = 0時, θ1從pi/2縮小到pi/2 -m 至更小時,則acc開始上升。

 

備注:m值需為正數,它代表着類別在角度空間中的margin。若m為負數,則根據上面的分析可知:訓練初期就有θ1+m<θ2,從而導致對於θ1沒有懲罰作用。(訓練時acc均為100%)


免責聲明!

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



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