Contrastive Loss (對比損失)
孿生神經網路(siamese network)中,其採用的損失函數是contrastive loss,這種損失函數可以有效處理孿生神經網路中的paired data的關係。contrastive loss的運算式如下:
其中 d=||an−bn||2 ,代表兩個樣本特徵的歐氏距離,y為兩個樣本是否匹配的標籤,y=1代表兩個樣本相似或者匹配,y=0則代表不匹配,margin為設定的閾值。
這種損失函數最初來源於Yann LeCun的《Dimensionality Reduction by Learning an Invariant Mapping》,主要是用在降維中,即本來相似的樣本,在經過降維(特徵提取)後,在特徵空間中,兩個樣本仍舊相似;而原本不相似的樣本,在經過降維後,在特徵空間中,兩個樣本仍舊不相似。
觀察上述的contrastive loss的運算式可以發現,這種損失函數可以很好的表達成對樣本的匹配程度,也能夠很好用於訓練提取特徵的模型。當y=1(即樣本相似)時,損失函數只剩下∑yd2,即原本相似的樣本,如果在特徵空間的歐式距離較大,則損失函數(增函數)越大,則說明當前的模型不好。而當y=0時(即樣本不相似)時,損失函數為∑(1−y)max(margin−d,0)2
(減函數),即當樣本不相似時,其特徵空間的歐式距離反而小的話,損失函數值會變大。
這張圖表示的就是損失函數值與樣本特徵的歐式距離之間的關係,其中紅色虛線表示的是相似樣本的損失值(Y=1時),藍色實線表示的不相似樣本的損失值(Y=0時)。這裡的m為閾值,要視具體問題而定,對於不同的目標m的值會有不同的大小。而事實表明Constractive Loss對於多分類的問題經常會在訓練集上過擬合,顯得比較乏力。針對該問題的改進方法有Triplet Loss、四元組損失(Quadruplet loss)、難樣本採樣三元組損失(Triplet loss with batch hard mining, TriHard loss)、邊界挖掘損失(Margin sample mining loss, MSML)