用於學習嵌入的暹羅和三胞胎網絡的Pytorch實施。
暹羅和三重態網絡可用於學習從圖像到緊湊的歐幾里得空間的映射,距離對應於相似性的度量[2]。以這種方式訓練的嵌入式可以用作分類或少量學習任務的功能向量。
需要pytorch 0.4,用火炬0.2.1
對於pytorch 0.3兼容性結帳標籤TARCH-0.3.1
我們將在MNIST數據集上訓練嵌入。實驗是在Jupyter筆記本中進行的。
我們將使用MNIST數據集上的不同損失功能進行學習監督功能嵌入。這僅是出於可視化目的,因此我們將使用二維嵌入方式,這在實踐中不是最好的選擇。
對於每個實驗,都使用相同的嵌入網絡(32 CORV 5X5-> PRELU-> MAXPOOL 2X2-> 64 CORV 5X5-> PRELU-> MAXPOOL 2X2-> MAXPOOL 2X2->密集256-> PRELU-> PRELU->密集256-> PRELU-> PRELU-> pRELU->密集2),我們沒有執行任何超參數搜索。
我們添加了一個完全連接的層,其中包括類的數量,並訓練網絡與SoftMax和跨嵌段進行分類。該網絡的準確性約為99%。我們從倒數第二層提取2個維嵌入:
火車集:

測試集:

雖然嵌入看起來可以分開(這是我們訓練它們的目的),但它們沒有良好的度量屬性。作為新課程的描述符,它們可能不是最好的選擇。
現在,我們將訓練一個暹羅網絡,該網絡拍攝一對圖像並訓練嵌入式的網絡,以便如果它們與同一類相同的距離,則將它們之間的距離最小化,並且如果它們代表不同的類別,則大於某些保證金值。我們將最大程度地減少對比度損失函數[1]:

暹羅級班級樣本隨機呈正面和負面對,然後將其饋送到暹羅網絡。
經過20個培訓時期,這裡是我們為培訓設置所獲得的嵌入:

測試集:

學習的嵌入在課堂上要好得多。
我們將訓練一個三胞胎網絡,該網絡採用錨點,正(與錨的同一類別)和負面的示例(不同類別)示例。目的是學習嵌入,以使錨更接近積極的示例,而不是通過某個餘量值來實現負面示例。
資料來源: Schroff,Florian,Dmitry Kalenichenko和James Philbin。面部:統一嵌入面部識別和聚類。 CVPR 2015。
三胞胎損失: 
TripletMnist類為每個可能的錨定一個正面和負面的例子。
經過20個培訓時期,這裡是我們為培訓設置所獲得的嵌入:

測試集:

在課堂上,學到的嵌入並不像暹羅網絡那樣彼此接近,但這不是我們優化它們的目的。我們希望嵌入與其他班級相比,嵌入更接近同一班級的其他嵌入式,我們可以看到培訓將要進入的地方。
暹羅和三胞胎網絡有兩個問題:
為了有效地處理這些問題,我們將像分類一樣為網絡提供標準的迷你批次。損耗函數將負責選擇迷你批量內的硬對和三胞胎。如果我們以每10個類別的16次圖像為網絡餵養網絡,則可以處理高達159*160/2 = 12720對和10*16*15/2*(9*16)= 172800三重態,而先前實現中的80對和53個三重態。
通常,在迷你批次中處理所有可能的對或三重態並不是最好的主意。我們可以找到有關如何在[2]和[3]中選擇三胞胎的一些策略。
我們將像為分類網絡所做的那樣,用迷你批量的網絡餵養網絡。這次,我們將使用一個特殊的批處理攝影器,將在每個類中在每個類中採樣N_Classes和n_samples ,從而導致尺寸N_Classes*n_samples的小批次。
對於每個迷你批次,將使用提供的標籤選擇。
MNIST是一個相當簡單的數據集,隨機選擇對的嵌入已經很好,我們在這裡看不到太多改進。
火車嵌入:

測試嵌入:

就像在線對選擇一樣,我們將提供一個帶有迷你批次的網絡。給定標籤和預測的嵌入,我們可以將一些策略用於三重態選擇:
必須仔細選擇三胞胎選擇的策略。不良的策略可能導致效率低下的訓練,甚至更糟的是建模崩潰(所有嵌入的嵌入最終都具有相同的值)。
這是我們對每對積極對的隨機艱難負面影響所得到的。
培訓集:

測試集:

對時尚人數數據集進行了類似的實驗,在線礦山的優勢稍微可見。只使用了僅使用二維嵌入的網絡體系結構,這可能不夠複雜,無法學習良好的嵌入。具有更高數字類別的更複雜的數據集應從在線採礦中受益更多。

隨機選擇對的暹羅網絡

在線對比損失與負面採礦

帶隨機三胞胎的三胞胎網絡

在線三胞胎損失與負面採礦

[1] Raia Hadsell,Sumit Chopra,Yann Lecun,通過學習不變映射的減少維度,CVPR 2006
[2] Schroff,Florian,Dmitry Kalenichenko和James Philbin。面部:統一嵌入面部識別和聚類。 CVPR 2015
[3]亞歷山大·赫爾曼斯(Alexander Hermans),盧卡斯·拜爾(Lucas Beyer),巴斯蒂安·萊貝(Bastian Leibe),以捍衛2017年人物重新識別的三胞胎損失
[4] Brandon Amos,Bartosz Ludwiczuk,Mahadev Satyanarayanan,OpenFace:帶移動應用程序的通用面部識別庫,2016年
[5] Yi Sun,Xiaogang Wang,Xiaoou Tang,通過聯合身份驗證的深度學習面代表,NIPS 2014