论文笔记:孪生神经网络(Siamese Network)
生活随笔
收集整理的這篇文章主要介紹了
论文笔记:孪生神经网络(Siamese Network)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Siamese Network
原文:《Learning a Similarity Metric Discriminatively, with Application to Face Verification》
1、四個問題
- 用于解決類別很多(或者說不確定),然而訓練樣本的類別數較少的分類任務(比如人臉識別、人臉認證)
- 通常的分類任務中,類別數目固定,且每類下的樣本數也較多(比如ImageNet)
- 提出了一種思路:將輸入映射為一個特征向量,使用兩個向量之間的“距離”(L1 Norm)來表示輸入之間的差異(圖像語義上的差距)。
- 基于上述思路設計了Siamese Network。每次需要輸入兩個樣本作為一個樣本對計算損失函數。
- 常用的softmax只需要輸入一個樣本。
- FaceNet中的Triplet Loss需要輸入三個樣本。
- 提出了Contrastive Loss用于訓練。
- 文中進行了一個衡量兩張人臉的相似度的實驗,使用了多個數據庫,較復雜。
- siamese network現在依然有很多地方使用,可以取得state-of-the-art的效果。
- contrastive loss的訓練樣本的選擇需要注意,論文中都是盡量保證了50%的正樣本對和50%的負樣本對。
2、論文概述
2.1、問題的提出與解決方案
- 分類問題:
- 第一類,分類數量較少,每一類的數據量較多,比如ImageNet、VOC等。這種分類問題可以使用神經網絡或者SVM解決,只要事先知道了所有的類。
- 第二類,分類數量較多(或者說無法確認具體數量),每一類的數據量較少,比如人臉識別、人臉驗證任務。
- 文中提出的解決方案:
- learn a similar metric from data。核心思想是,尋找一個映射函數,能夠將輸入圖像轉換到一個特征空間,每幅圖像對應一個特征向量,通過一些簡單的“距離度量”(比如歐式距離)來表示向量之間的差異,最后通過這個距離來擬合輸入圖像的相似度差異(語義差異)。
2.2、網絡結構概述
- 數學符號描述
- 輸入數據:X1X_1X1?、X2X_2X2?、X2′X_2^{'}X2′?。其中X1X_1X1?和X2X_2X2?屬于同一類,X1X_1X1?和X2′X_2^{'}X2′?屬于不同類。
- 模型:GWG_WGW?。其中WWW表示模型參數,GWG_WGW?的作用就是將輸入數據XXX轉換為一組特征向量。
- 距離(文中稱其為energy function):EWE_WEW?。用于衡量兩個輸入向量轉換為向量之后,兩個向量之間的距離。
- 如果采用L1距離,則公式為:EW(X1,X2)=∥GW(X1)?GW(X2)∥E_W(X_1, X_2)=\| G_W(X_1) - G_W(X_2) \|EW?(X1?,X2?)=∥GW?(X1?)?GW?(X2?)∥。
2.3、Contrastive Loss損失函數
- YYY表示X1X_1X1?、X2X_2X2?是否屬于同一類。為同類,則為0;不同類,則為1。
- PPP表示輸入的總樣本數,iii表示當前樣本的下標。
- LGL_GLG?表示兩個樣本為同類時的損失函數,LIL_ILI?表示兩個樣本未不同類時的損失函數。
- 使用Contrastive Loss的任務主要是設計合適的LGL_GLG?和LIL_ILI?損失函數,當為同類時,使得LGL_GLG?盡可能小;當不同類時,使得LIL_ILI?盡可能大。文中給出的函數如下圖,現在也不常用了,推導步驟略。
- 查找資料看到,caffe中的contrastive loss定義如下:(參考:https://blog.csdn.net/autocyz/article/details/53149760)
L=12N∑n=1Nyd2+(1?y)max(margin?d,0)2L=\frac{1}{2N}\sum_{n=1}^Nyd^2+(1-y)max(margin-d,0)^2 L=2N1?n=1∑N?yd2+(1?y)max(margin?d,0)2
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的论文笔记:孪生神经网络(Siamese Network)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eigen库基本操作
- 下一篇: 论文笔记:MobileNet v1