參考

Raúl Gómez

,本系列將所有以距離度量作為學習目標的損失函式歸為Ranking loss

孿生神經網路(Siamese Network)與Contrastive Loss

Siamese Network,簡單來說就是將兩個相同或相似的子網路結合在一起,每個子網路接收一個輸入,輸出相應的特徵向量。子網路完全相同時,可以只用一個網路來實現,輸入一個batch然後手動構造pair,稱之為Siamese Network;子網路不同的話,就要單獨實現每一個網路,稱之為pseudo-Siamese Network。

Ranking loss系列(一)Contrastive Loss

Siamese的作用是比較輸入的相似性。例如,在LeCun的論文

Signature Verification using a ‘Siamese’ Time Delay Neural Network

中,將兩個簽名分別輸入網路,得到兩個特徵向量,然後計算特徵向量間的餘弦距離,從而衡量簽名間的相似程度。

那麼如何訓練網路,使得同類樣本的特徵向量距離小,異類樣本的特徵向量距離大呢?

答案是構造genuine pair和forgery pair。對於同類樣本組成的genuine pair,特徵向量的距離target是cosine=1。0;對於異類樣本組成的forgery pair,距離target是cosine=-1。0。以上都是Signature Verification論文中的做法,實際上,距離度量也可以使用歐式距離等方式。

Contrastive Loss

除了對target進行擬合,孿生網路更一般地是採用Contrastive Loss處理成對的資料。

比較經典的Contrastive Loss形式來自於LeCun的文章:

Dimensionality Reduction by Learning an Invariant Mapping

L\left(W, Y, \vec{X}_{1}, \vec{X}_{2}\right)=(1-Y) \frac{1}{2}\left(D_{W}\right)^{2}+(Y) \frac{1}{2}\left\{\max \left(0, m-D_{W}\right)\right\}^{2}

式中,

D_W

表示輸入pair得到的特徵向量間歐式距離;輸入pair屬於同一類時

Y=0

,不同類時

Y=1

公式的意義就是:

對於positive pair,輸出特徵向量間距離要儘量小;對於negative pair,輸出特徵向量間距離要儘量大,但若

D_W(negative) > m

,則不處理這種easy negative pair。

損失函式影象如下:

Ranking loss系列(一)Contrastive Loss

在論文中,給瞭如下形象化的彈簧理解:

圖中,相對於中心藍點,實心點代表同類點,空心點代表異類點。對於實心點,彈簧想要收縮,從而將同類點距離拉近;對於空心點,margin之外的不受影響,margin之內的,彈簧想要伸長,從而將圈內的點排斥到邊界上去。

Ranking loss系列(一)Contrastive Loss

參考

【損失函式合集】Contrastive Loss 和 Triplet Loss - BBuf的文章

Siamese network 孿生神經網路——一個簡單神奇的結構 - mountain blue的文章