Siamese Network理解


提起siamese network一般都會引用這兩篇文章: 

《Learning a similarity metric discriminatively, with application to face verification》和《 Hamming Distance Metric Learning》。

本文主要通過論文《Learning a Similarity Metric Discriminatively, with Application to Face Verification》來理解siamese網絡。

介紹

Siamese網絡是一種相似性度量方法,當類別數多,但每個類別的樣本數量少的情況下可用於類別的識別、分類等。傳統的用於區分的分類方法是需要確切的知道每個樣本屬於哪個類,需要針對每個樣本有確切的標簽。而且相對來說標簽的數量是不會太多的。當類別數量過多,每個類別的樣本數量又相對較少的情況下,這些方法就不那么適用了。其實也很好理解,對於整個數據集來說,我們的數據量是有的,但是對於每個類別來說,可以只有幾個樣本,那么用分類算法去做的話,由於每個類別的樣本太少,我們根本訓練不出什么好的結果,所以只能去找個新的方法來對這種數據集進行訓練,從而提出了siamese網絡。siamese網絡從數據中去學習一個相似性度量,用這個學習出來的度量去比較和匹配新的未知類別的樣本。這個方法能被應用於那些類別數多或者整個訓練樣本無法用於之前方法訓練的分類問題。

主要思想

主要思想是通過一個函數將輸入映射到目標空間,在目標空間使用簡單的距離(歐式距離等)進行對比相似度。在訓練階段去最小化來自相同類別的一對樣本的損失函數值,最大化來自不同類別的一堆樣本的損失函數值。給定一組映射函數這里寫圖片描述,其中參數為W,我們的目的就是去找一組參數W。使得當這里寫圖片描述這里寫圖片描述屬於同一個類別的時候,相似性度量這里寫圖片描述是一個較小的值,當這里寫圖片描述這里寫圖片描述屬於不同的類別的時候,相似性度量這里寫圖片描述較大。這個系統是用訓練集中的成對樣本進行訓練。當這里寫圖片描述這里寫圖片描述來自相同類別的時候,最小化損失函數這里寫圖片描述,當這里寫圖片描述這里寫圖片描述來自不同類別的時候,最大化這里寫圖片描述。這里的這里寫圖片描述除了需要可微外不需要任何的前提假設,因為針對成對樣本輸入,這里兩個相同的函數G,擁有一份相同的參數W,即這個結構是對稱的,我們將它叫做siamese architecture。 
在這篇論文中,作者用這個網絡去做面部識別,比較兩幅圖片是不是同一個人,而且這個網絡的一個優勢是可以去區分那些新的沒有經過訓練的類別的樣本。

Siamese也算是降維方法的一種。常見的降維方法有PCA、LDA、Kernel-PCA、MDS、LLE、LB、ISOmap、FA等不做具體介紹。

網絡結構

這里寫圖片描述 
上圖是論文中的網絡結構圖,左右兩邊兩個網絡是完全相同的網絡結構,它們共享相同的權值W,輸入數據為一對圖片(X1,X2,Y),其中Y=0表示X1和X2屬於同一個人的臉,Y=1則表示不為同一個人。即相同對為(X1,X2,0),欺騙對為(X1,X2’,1)針對兩個不同的輸入X1和X2,分別輸出低維空間結果為這里寫圖片描述這里寫圖片描述,它們是由這里寫圖片描述這里寫圖片描述經過網絡映射得到的。然后將得到的這兩個輸出結果使用能量函數這里寫圖片描述進行比較。 
這里寫圖片描述

損失函數定義

我們假設損失函數只和輸入和參數有關,那么我們損失函數的形式為: 
這里寫圖片描述 
其中這里寫圖片描述是第i個樣本,是由一對圖片和一個標簽組成的,其中LG是只計算相同類別對圖片的損失函數,LI是只計算不相同類別對圖片的損失函數。P是訓練的樣本數。通過這樣分開設計,可以達到當我們要最小化損失函數的時候,可以減少相同類別對的能量,增加不相同對的能量。很簡單直觀的方法是實現這個的話,我們只要將LG設計成單調增加,讓LI單調遞減就可以了,但是我們要保證一個前提就是,不相同的圖片對距離肯定要比相同圖片對的距離小,那么就是要滿足: 
這里寫圖片描述 
所以論文中用了一個 
這里寫圖片描述 
作為總的損失函數,可以滿足這個condition1。論文中進行了各種假設的證明已經單調性的證明,這里不再重復。 
最后給出一個精確的對單個樣本的損失函數: 
這里寫圖片描述 
其中 
這里寫圖片描述 
,Q是一個常量。 
這里寫圖片描述
上圖說明了收斂性。

總結思想

其實講了這么多,主要思想就是三點: 
1、輸入不再是單個樣本,而是一對樣本,不再給單個的樣本確切的標簽,而且給定一對樣本是否來自同一個類的標簽,是就是0,不是就是1 
2、設計了兩個一模一樣的網絡,網絡共享權值W,對輸出進行了距離度量,可以說l1、l2等。 
3、針對輸入的樣本對是否來自同一個類別設計了損失函數,損失函數形式有點類似交叉熵損失: 
這里寫圖片描述 
最后使用獲得的損失函數,使用梯度反傳去更新兩個網絡共享的權值W。

優點

這個網絡主要的優點是淡化了標簽,使得網絡具有很好的擴展性,可以對那些沒有訓練過的類別進行分類,這點是優於很多算法的。而且這個算法對一些小數據量的數據集也適用,變相的增加了整個數據集的大小,使得數據量相對較小的數據集也能用深度網絡訓練出不錯的效果。

實驗設計

實驗的時候要注意,輸入數據最好打亂,由於這樣去設計數據集后,相同類的樣本對肯定比不相同的樣本對數量少,在進行訓練的時候最后將兩者的數據量設置成相同數量。

總結

本文解釋的只是最早提出的siamese網絡結構,提出的是一種網絡結構思想,具體的使用的網絡形式完全可以自己定義。包括損失函數,相似度距離的定義等。比如將損失函數的這里寫圖片描述用hige loss代替等。 
《Hamming Distance Metric Learning》這篇論文對siamese進一步改進,提出了一個triple net,主要貢獻是將成對樣本改成了三個樣本,輸入由(X1,X2,Y)變成了(X1,X2,X1’),表示X1和X1’是相同類別的樣本,X1和x2是不同樣本的類別。 
《Learning to Compare Image Patches via Convolutional Neural Networks》這篇論文寫得也很好,將兩個網絡進行合並,輸入的成對標簽直接同時輸入同一個網絡。

代碼

使用tensorflow在mnist上實現的siamese net

參考文獻2的官方code

參考文獻

[1] S. Chopra, R. Hadsell, and Y. LeCun. Learning a similarity metric discriminatively, with application to face verification. In Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on, volume 1, pages 539–546. IEEE, 2005. 
[2] Mohammad Norouzi, David J. Fleet, Ruslan Salakhutdinov, Hamming Distance Metric Learning, Neural Information Processing Systems (NIPS), 2012.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM