記錄《DEEP METRIC LEARNING USING TRIPLET NETWORK》閱讀筆記
文章總體內容:
作者在前人提出的多個特征提取方法的基礎上提出Triplet network模型,通過比較距離來學習有用的變量(深度學習中擬合出函數),在多個不同的數據集顯示Triplet network比直接計算方法的Siamese network模型效果更好。
Triplet network基本原理:
在Siamese network中,會出現如下的問題,當使用隨機對象的數據集時,一個對象可能被認為與另一個對象相似,但是當我們只想區分一組個體中的兩個對象時,可能被認為與同樣的另一個對象不相似。當選取特征時,並不能夠足夠判斷兩者之間的關系,在面對訓練樣本數量較少的簡單分類問題,可能會產生誤差。 因此,作者提出了Triplet network,利用三個樣本組成一個訓練組,從中獲取擬合函數。
其基本結構如圖1所示:
圖1 Triplet network基本結構圖
Triplet network由3個具有相同前饋網絡(共享參數)組成。 接收到3個樣本時,網絡輸出2個中間值表示與第三個變量之間的歐式距離。3個輸入表示為x,x+和x-,並將網絡的嵌入層表示表示為Net(x)。 簡單來說,triplet是一個三元組,這個三元組是這樣構成的:從訓練數據集中隨機選一個樣本,該樣本稱為Anchor,然后再隨機選取一個和Anchor (記為x)屬於同一類的樣本和不屬於同一類的樣本,這兩個樣本對應的稱為Positive (記為x+)和Negative (記為x-),由此構成一個(Anchor,Positive,Negative)三元組。他們之間的關系用歐氏距離表示,並通過訓練參數使得x向x+靠近,遠離x-,從而實現分類任務。
圖2 triplet示意圖(圖片來自網絡)
Triplet距離與目標函數:
距離采用的計算為歐氏距離,即L-2范式距離,如下所示:
比較器即是對上述該向量進行處理,訓練的loss可規定如下,針對三元組中的每個元素(樣本),訓練一個參數共享的網絡,得到三個元素的特征表達,
分別記為:
通過訓練,讓x+和x特征表達之間的距離盡可能小,而和x-和x的特征表達之間的距離盡可能大,並且要讓x+和x之間的距離,和x-和x之間的距離之間有一個最小的間隔,在本文中使用的間隔為1。即:
其中:
通過d+和d-可以把初始變量歸一化到(0,1)范圍內。
論文創新點:
1. 由於Triplet network模型允許通過比較樣本而不是直接數據標簽進行學習,因此可以將其用作無監督學習模型。
2. 由於Triplet network模型采用三元組作為訓練樣本,在數據量較少的簡單分類任務中表現要准確得多。在多個數據集上取得更優的分類結果。