孪生网络 Siamese Network
文章目錄
- 孿生網絡的發展
- 孿生網絡
- 定義
- 功能與用途
- 損失函數
孿生網絡的發展
孿生網絡又稱為連體網絡,網絡中的連體是通過共享權值來實現。孿生網絡最早是出現在1993年的論文《Signature Verification using a ‘Siamese’ Time Delay Neural Network》用于美國支票上的簽名驗證,即驗證支票上的簽名與銀行預留簽名是否一致。
孿生網絡是一種監督學習,用于度量學習。
隨后由于硬件的限制網絡技術的發展,幾乎停滯不前。
- 2010年Hinton在ICML上發表了文章《Rectified Linear Units Improve Restricted Boltzmann Machines》,用來做人臉驗證,效果很好。其原理很簡單,將兩個人臉feed進卷積神經網絡,輸出same or different。
- 2015年CVPR的一篇關于圖像相似度計算的文章:《Learning to Compare Image Patches via Convolutional Neural Networks》,本篇文章對經典的算法Siamese Networks 做了改進。
以上算法都是使用孿生網絡來進行圖片相似度的對比。隨后孿生網絡開始慢慢地出現在計算機視覺目標跟蹤領域。
- 2016年ECCV Fully-Convolutional Siamese Networks for Object Tracking
- 2016年ECCV Learning to Track at 100 FPS with Deep Regression Networks
- 2017年CVPR End-to-end representation learning for Correlation Filter based tracking
孿生網絡
孿生網絡最早提出在1993年的下面這篇論文中。
Bromley J, Bentz J W, Bottou L, et al. Signature verification using a “siamese” time delay neural network[J]. International Journal of Pattern Recognition and Artificial Intelligence, 1993, 7(04): 669-688.
定義
簡單來說,Siamese Network就是"連體的神經網絡",神經網絡的"連體"是通過共享權值來實現的,如下圖所示:
左右兩個網絡可以是同一個,也可以是不同網絡,比如一個是CNN,另一個是LSTM,如果左右兩邊權重不共享,此時叫偽孿生網絡。
功能與用途
孿生網絡最早用于驗證支票上的簽名與銀行預留簽名是否一致,后用于對比兩個輸入的相似度,隨后又慢慢應用到目標跟蹤領域。
孿生網絡針對兩個輸入 input1 和 input2,分別進入神經網絡 network1 和network2,通過最后的 loss 計算,可以評價兩個 network 后向量的相似度,即兩個 input 輸入的相似度。
孿生網絡由于權重共享,所以一定程度上限制了 network1 和 network2 的差異不能太大,所以通常用來處理兩個輸入差異不是非常大的問題,比如,對比兩張圖片、兩個句子,兩個詞匯的相似度。對于輸入差異很大的相似度,比如圖片與相應的文字描述,文章標題與文章段落的相似度,這時候就需要使用偽孿生網絡。
所以針對不同的情況,需要選擇合適的網絡結構和對應的損失函數。
損失函數
Siamese network的輸入是兩個經過 network表示后的向量,在新的向量空間中,只要能判斷兩個向量的距離,讓同類的距離越小,一類的距離越大就能達到目標。所以這里的距離可以有很多,比如歐式距離、余弦距離、指數距離都可以。
參考資料:
總結
以上是生活随笔為你收集整理的孪生网络 Siamese Network的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: resnet152训练_Resnet-1
- 下一篇: 集成算法——Adaboost代码