人臉識別:Contrastive loss和梯度推到
Contrastive loss 最初源於
Yann LeCun
“Dimensionality Reduction by Learning an Invariant Mapping” CVPR 2016。
該損失函式主要是用於降維中,即本來相似的樣本,在經過降維(特徵提取)後,在特徵空間中,兩個樣本仍舊相似;而原本不相似的樣本,在經過降維後,在特徵空間中,兩個樣本仍舊不相似。同樣,該損失函式也可以很好的表達成對樣本的匹配程度。
Contrastive Loss 定義
在caffe的孿生神經網路(siamese network
)中,其採用的損失函式是contrastive loss,這種損失函式可以有效的處理孿生神經網路中的paired data的關係。contrastive loss的表示式如下:
其中 ,代表兩個樣本特徵和的歐氏距離,Y為兩個樣本是否匹配的標籤,Y=1代表兩個樣本相似或者匹配,Y=0則代表不匹配,m為設定的閾值。
觀察上述的contrastive loss
的表示式可以發現,這種損失函式可以很好的表達成對樣本的匹配程度,也能夠很好用於訓練提取特徵的模型。
-
當Y = 1(即樣本相似時),損失函式只剩下 ,即原本相似的樣本,如果在特徵空間的歐式距離較大,則說明當前的模型不好,因此加大損失。
-
當Y = 0(即樣本不相似時),損失函式為 ,即當樣本不相似時,其特徵空間的歐式距離反而小的話,損失值會變大,這也正好符號我們的要求。
[注意這裡設定了一個閾值margin,表示我們只考慮不相似特徵歐式距離在0~margin之間的,當距離超過margin的,則把其loss看做為0(即不相似的特徵離的很遠,其loss應該是很低的;而對於相似的特徵反而離的很近,我們就需要增加其loss,從而不斷更新成對樣本的匹配程度)]
這張圖表示的就是損失函式值與樣本特徵的歐式距離之間的關係,其中紅色虛線表示的是相似樣本的損失值,藍色實線表示的不相似樣本的損失值。
梯度計算
論文中使用stochastic gradient descent
來不斷更新 ,不斷減小loss,更好表達成對樣本的匹配程度。
(這裡我們先忽略累和操作,後面自己加上即可)
- Y = 1(即樣本相似時),損失函式為 ,此時計算梯度為:
即分別對 X1和X2求偏導,更新梯度 :
Spring Model Analogy 彈簧模型類比
彈簧模型公式:
(F表示兩點間彈簧的作用力,K是彈簧的勁度係數,X為彈簧拉伸或收縮的長度,彈簧靜止狀態時X=0)
論文中將該contrastive loss
損失函式類比於彈簧模型:將成對的樣本特徵,使用該損失函式來表達成對樣本特徵的匹配程度。成對的樣本特徵之間(類比於圖中的一個個點),我們假設這些點之間都有一個彈簧,彈簧靜止時長度為0,點對之間無作用力。①對於樣本相似的特徵,相當於其間的彈簧產生了正位移X(X < m),即彈簧被拉伸了X的長度,此時兩個相似特徵(點)之間存在吸引力。②對於樣本不相似的特徵,相當於其間的彈簧產生的了負位移,即彈簧被壓縮了,此時兩個不相似特徵之間存在排斥力。注意彈簧的特性:當兩點之間彈簧位移超X>m時,此時,彈簧發生形變,此時兩點之間視為沒有吸引力了。具體如下圖所示:
結合上面求梯度的公式也可以很好的理解該損失函式的思想,上面的 和 代表兩點間彈簧的作用力F,對應彈簧的勁度係數, 和 代表彈簧的縮放位移。
上圖顯示了類比的彈簧系統。實心圓表示與中心點相似的點。空心圓圈代表不同的點。彈簧顯示為紅色曲折線。作用在點上的力以藍色箭頭顯示。箭頭的長度近似給出了力的強度。在右側的兩個圖中,x軸是距離,y軸是損失函式的值。(a)中顯示使用僅吸引attractonly
彈簧連線到相似點的點。(b)表示相似點對的損失函式及其梯度。(c)表示該點僅與半徑為m的圓內的不同點連線,僅具有m-repulse-only
排斥彈簧連線到不相似的點。(d)顯示不相似點對相關的損失函式及其梯度。(e)顯示一個點被不同方向的其他點拉動,形成平衡的情況。