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.

?

轉載于:https://www.cnblogs.com/bentuwuying/p/8186364.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281478.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281478.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281478.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HashMap是如何工作的

2019獨角獸企業重金招聘Python工程師標準>>> 1 HashMap在JAVA中的怎么工作的? 基于Hash的原理 2 什么是哈希? 最簡單形式的 hash,是一種在對任何變量/對象的屬性應用任何公式/算法后, 為其分配唯一代碼的方法。 一個真…

英特爾布局5G 提供端到端的解決方案

錯失了移動互聯設備市場的英特爾,想在5G和物聯網上搶得先機。 在英特爾5G行業發展沙龍上,英特爾院士、通信與設備事業部無線標準首席技術專家吳耕表示,全球對5G產業有相當高的期待,下一代網的研發重心就是從以人為本的網向以物為本…

計算機網絡實驗進入實時模式,計算機網絡實驗1 PacketTrace基本使用.doc

計算機網絡實驗1 PacketTrace基本使用太原理工大學現代科技學院計算機通信網絡課程 實驗報告專業班級學 號姓 名指導教師 實驗名稱 同組人專業班級 學號 姓名 成績一、實驗目的掌握Cisco Packet Tracer 軟件的使用方法。二、實驗任務在Cisco Packet Tracer 中用HUB 組建局域網&…

adb不識別設備(手機)的若干情形及解決方法

1.執行adb root 提示adb: unable to connect for root: no devices/emulators found;執行adb devices ,List下無設備 》往往是數據線或USB插口問題,換根數據線或換個USB插口試試 2.執行adb devices List下提示 “592b925b no permissions (verify ud…

如何做到十五分鐘領略PowerBI的DAX精華及框架

有小伙伴問,如何最快速理解整套 DAX 精華體系,例如:15分鐘。這雖然是個不可能完成的任務,但在借助腦圖PPT的強大能力下,還是可以做到的。如果你從沒接觸過 DAX,但未來要學習 DAX,以下視頻值得看…

php html 轉xml,用PHP生成XML文檔(轉義字符)

用PHP生成XML文檔(轉義字符)我正在從PHP腳本生成XML文檔,并且需要轉義XML特殊字符。我知道應該轉義的字符列表; 但是正確的方法是什么?應該使用反斜杠(\)來轉義字符還是正確的方法?有內置的PHP函數可以為我處理此問題嗎&#xff1…

【例題 8-13 UVA - 11093】Just Finish it up

【鏈接】 我是鏈接,點我呀:) 【題意】 在這里輸入題意 【題解】 尺取法。 假設現在取[l..r]這一段。 然后發現累加的和小于0了。 那么方法只能是不走l..l1這一段了 即delta遞減(p[l]-q[l]); 直到delta>0為止。 某個時刻如果發現r1l 或者l1且rn 則合法。 如果發現l大于n了.…

springboot配置允許跨域訪問

2019獨角獸企業重金招聘Python工程師標準>>> 因springboot框架通常用于前后端分離項目,因此需配置后臺允許跨域訪問(具體看注釋),配置類如下,將該類加入工程中即可。 import org.springframework.context.a…

機器視覺傳感器選型,交互作用決定取舍

目前,如何選擇機器視覺傳感器在當代的應用可謂是越來越廣泛,如何選擇機器視覺傳感器是值得我們好好學習的,現在我們就深入了解如何選擇機器視覺傳感器。 相機是機器視覺系統的眼睛,而相機的心臟是圖像傳感器。傳感器的選擇取決于準…

大連交通大學計算機網絡,計算機網絡題庫(大連交通大學)chapter5.doc

計算機網絡題庫(大連交通大學)chapter5Chapter 5 The Link Layer and Local Area Network1.A ( ) protocol is used to move a datagram over an individual link.Aapplication-layerBtransport-layerCnetwork-layerDlink-layer2.The units of data exch…

使用qrcode類制作二維碼

<?phprequire_once ./phpqrcode/phpqrcode.php;/** 地址:http://phpqrcode.sourceforge.net/ 下載qrcode類* param string $url 要生成的鏈接* param bool $local 是否生成本地文件 * param string $logo 中間圖片地址 */ echo qrcode(https://www.cnblogs.co…

《Hadoop大明白》【1】Hadoop的核心組件

為什么80%的碼農都做不了架構師&#xff1f;>>> 本書適用于想對大數據平臺Hadoop有深入了解的程序員朋友&#xff0c;會幫助你以后在應用開發方面趟平一些坑。 1&#xff0c;Hadoop 是一個系列大數據組件構成的應用平臺&#xff0c;可由多個廉價機器搭建集群&#…

計算機專業學教育技術優勢,西南交通大學教育技術學(040110)專業介紹

一、學科概況“教育技術學”是教育學一級學科下的一個二級學科&#xff0c;教育技術學是教育學和計算機信息技術發展下新興的跨專業交叉性學科&#xff0c;也是一個理論與實踐相結合的應用學科。主要研究信息技術特別是計算機網絡技術、多媒體技術與教育技術的有效整合&#xf…

.NET7是如何優化Guid.Equals性能的?

簡介在之前的文章中&#xff0c;我們多次提到 Vector - SIMD 技術&#xff0c;也答應大家在后面分享更多.NET7 中優化的例子&#xff0c;今天就帶來一個使用 SIMD 優化Guid.Equals()方法性能的例子。為什么 Guid 能使用 SIMD 優化&#xff1f;首先就需要介紹一些背景知識&#…

go語言載入json的一個坑

問題簡介 go語言標準庫匯總內置了對 json 文件的處理&#xff0c;非常方便&#xff0c;最近在寫一個應用的時候&#xff0c;需要從 json 文件中載入 配置&#xff0c;由于是 go 新手&#xff0c;忽略一個細節&#xff0c;導致載入內容始終為空 代碼演示 代碼是最好的說明載體 p…

el表達式 if 和 if else 的寫法

javaScript的if else大家都不會陌生&#xff0c;但可能很多小伙伴并不知道在jsp文件里&#xff0c;el表達式的if else是怎么寫的&#xff0c;下面安利給各位小伙伴。 el表達式 if 代碼示例示例1<c:if test"${jsonObject.transportTypeName eq 火車}"><li>…

Effective_STL 學習筆記(二十七) 用 distance 和 advance 把 const_iterator 轉化成 iterator...

并不存在從 const_iterator 到 iterator 之間的隱式轉換 一種安全的、可移植的方法獲取他所對應的 iterator&#xff1a; 1   typedef deque<int> IntDeque;     // 方便的typedef 2   typedef IntDeque::iterator Iter; 3   typedef IntDeque::const_iterato…

分布式唯一Id

支持.Net/.Net Core/.Net Framework&#xff0c;可以部署在Docker, Windows, Linux, Mac。分布式唯一Id&#xff0c;顧名思義&#xff0c;是指在全世界任何一臺計算機上都不會重復的唯一Id。在單機/單服務器/單數據庫的小型應用中&#xff0c;不需要用到這類東西。但在高并發、…

缺氧游戲黑科技計算機,《缺氧》游戲內參數修改圖文詳解

很多玩家都很喜歡缺氧這款游戲&#xff0c;有時候因為一些不可告人的秘密我們需要修改游戲中的內容來達到簡化我們的生存難度&#xff0c;這樣就需要修改游戲的腳本&#xff0c;所幸《缺氧 》對于這個問題很寬容&#xff0c;完全沒有加密地圖的生成腳本&#xff0c;讓我們可以完…

Python 項目實踐三(Web應用程序)第四篇

接著上節繼續學習&#xff0c;本章將建立用戶賬戶 Web應用程序的核心是讓任何用戶都能夠注冊賬戶并能夠使用它&#xff0c;不管用戶身處何方。在本章中&#xff0c;你將創建一些表單&#xff0c;讓用戶能夠添加主題和條目&#xff0c;以及編輯既有的條目。你還將學習Django如何…