Siamese網絡(孿生神經網絡)詳解

SiameseFC

  • Siamese網絡(孿生神經網絡)
    • 本文參考文章:
    • Siamese背景
  • Siamese網絡解決的問題
    • 要解決什么問題?
    • 用了什么方法解決?
    • 應用的場景:
  • Siamese的創新
  • Siamese的理論
  • Siamese的損失函數——Contrastive Loss
    • 損失函數的選擇
    • 論文中Contrastive Loss
    • 目前的Contrastive Loss:
  • Siamese的思考
    • Siamese的思想總結
    • Siamese network是雙胞胎連體,整一個三胞胎連體行不行?

Siamese網絡(孿生神經網絡)

本文參考文章:

精讀深度學習論文(25) Siamese Network
詳解Siamese網絡
孿生神經網絡(Siamese Network)詳解
孿生神經網絡(Siamese neural network)
Siamese network 孿生神經網絡–一個簡單神奇的結構

Siamese背景

Siamese和Chinese有點像。Siam是古時候泰國的稱呼,中文譯作暹羅。Siamese也就是“暹羅”人或“泰國”人。Siamese在英語中是“孿生”、“連體”的意思,這是為什么呢?

十九世紀泰國出生了一對連體嬰兒,當時的醫學技術無法使兩人分離出來,于是兩人頑強地生活了一生,1829年被英國商人發現,進入馬戲團,在全世界各地表演,1839年他們訪問美國北卡羅萊那州后來成為“玲玲馬戲團” 的臺柱,最后成為美國公民。1843年4月13日跟英國一對姐妹結婚,恩生了10個小孩,昌生了12個,姐妹吵架時,兄弟就要輪流到每個老婆家住三天。1874年恩因肺病去世,另一位不久也去世,兩人均于63歲離開人間。兩人的肝至今仍保存在費城的馬特博物館內。從此之后“暹羅雙胞胎”(Siamesetwins)就成了連體人的代名詞,也因為這對雙胞胎讓全世界都重視到這項特殊疾病。

簡單來說,Siamese network就是“連體的神經網絡”

Siamese網絡解決的問題

要解決什么問題?

第一類,分類數量較少,每一類的數據量較多,比如ImageNet、VOC等。這種分類問題可以使用神經網絡或者SVM解決,只要事先知道了所有的類。
第二類,分類數量較多(或者說無法確認具體數量),每一類的數據量較少,比如人臉識別、人臉驗證任務。

用了什么方法解決?

解決以上兩個問題,本文提出了以下解決方法:

  1. 提出了一種思路:將輸入映射為一個特征向量,使用兩個向量之間的“距離”(L1 Norm)來表示輸入之間的差異(圖像語義上的差距)。

  2. 基于上述思路設計了Siamese Network。每次需要輸入兩個樣本作為一個樣本對計算損失函數。
    1)用的softmax只需要輸入一個樣本。
    2)FaceNet中的Triplet Loss需要輸入三個樣本。

  3. 提出了Contrastive Loss用于訓練。

應用的場景:

孿生神經網絡用于處理兩個輸入"比較類似"的情況。偽孿生神經網絡適用于處理兩個輸入"有一定差別"的情況。比如,我們要計算兩個句子或者詞匯的語義相似度,使用siamese network比較適合;如果驗證標題與正文的描述是否一致(標題和正文長度差別很大),或者文字是否描述了一幅圖片(一個是圖片,一個是文字),就應該使用pseudo-siamese network。也就是說,要根據具體的應用,判斷應該使用哪一種結構,哪一種Loss。

Siamese的創新

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

Siamese的理論

在這里插入圖片描述
不同輸入X_1, X_2通過統一G_W得到兩個向量G_W(X_1), G_W(X_2),計算兩個向量之間的L1距離獲得E_W。
其中,兩個network是兩個共享權值的網絡,實際上就是兩個完全相同的網絡。孿生神經網絡有兩個輸入(X1 and X2),將兩個輸入feed進入兩個神經網絡(Network1 and Network2),這兩個神經網絡分別將輸入映射到新的空間,形成輸入在新的空間中的表示。通過Loss的計算,評價兩個輸入的相似度。

如果左右兩邊不共享權值,而是兩個不同的神經網絡,叫做pseudo-siamese network,偽孿生神經網絡。對于pseudo-siamese network,兩邊可以是不同的神經網絡(如一個是lstm,一個是cnn),也可以是相同類型的神經網絡。

Siamese的損失函數——Contrastive Loss

損失函數的選擇

Softmax當然是一種好的選擇,但不一定是最優選擇,即使是在分類問題中。傳統的siamese network使用Contrastive Loss。損失函數還有更多的選擇,siamese network的初衷是計算兩個輸入的相似度,。左右兩個神經網絡分別將輸入轉換成一個"向量",在新的空間中,通過判斷cosine距離就能得到相似度了。Cosine是一個選擇,exp function也是一種選擇,歐式距離什么的都可以,訓練的目標是讓兩個相似的輸入距離盡可能的小,兩個不同類別的輸入距離盡可能的大。

論文中Contrastive Loss

論文中的損失函數定義如下:
Y代表X_1, X_2是否屬于同一類別。輸入同一類別為0,不屬于同一類別為1。
P代表輸入數據數量。
i表示當前輸入數據下標。
L_G代表兩個輸入數據屬于同一類別時的損失函數(G,genuine)。
L_I代表兩個輸入數據不屬于同一類別的損失函數(I,imposter)。
在這里插入圖片描述
根據我們對兩個向量間舉例的定義,可以得到以下條件:
即不同類別向量間的距離比相同類別向量間距離大。
兩個向量之間距離越小,屬于同一類別的可能性就越大。

目前的Contrastive Loss:

在這里插入圖片描述
其中:
在這里插入圖片描述
代表兩個樣本特征X1和X2 的歐氏距離(二范數)P 表示樣本的特征維數,Y 為兩個樣本是否匹配的標簽,Y=1 代表兩個樣本相似或者匹配,Y=0 則代表不匹配,m 為設定的閾值,N 為樣本個數。

觀察上述的contrastive loss的表達式可以發現,這種損失函數可以很好的表達成對樣本的匹配程度,也能夠很好用于訓練提取特征的模型。

當 Y=1(即樣本相似時),損失函數只剩下
在這里插入圖片描述
即當樣本不相似時,其特征空間的歐式距離反而小的話,損失值會變大,這也正好符號我們的要求。
當 Y=0 (即樣本不相似時),損失函數為
在這里插入圖片描述
即當樣本不相似時,其特征空間的歐式距離反而小的話,損失值會變大,這也正好符號我們的要求。
注意:
這里設置了一個閾值margin,表示我們只考慮不相似特征歐式距離在0~margin之間的,當距離超過margin的,則把其loss看做為0(即不相似的特征離的很遠,其loss應該是很低的;而對于相似的特征反而離的很遠,我們就需要增加其loss,從而不斷更新成對樣本的匹配程度)

Siamese的思考

Siamese的思想總結

其實講了這么多,主要思想就是三點:

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

Siamese network是雙胞胎連體,整一個三胞胎連體行不行?

不好意思,已經有人整過了,叫Triplet network,論文是《Deep metric learning using Triplet network》,輸入是三個,一個正例+兩個負例,或者一個負例+兩個正例,訓練的目標是讓相同類別間的距離盡可能的小,讓不同類別間的距離盡可能的大。Triplet在cifar, mnist的數據集上,效果都是很不錯的,超過了siamese network。四胞胎,五胞胎會不會更屌?。。。。。目前還沒見過。。。
在這里插入圖片描述

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

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

相關文章

Dubbo 源碼分析 - 服務引用

1. 簡介 在上一篇文章中,我詳細的分析了服務導出的原理。本篇文章我們趁熱打鐵,繼續分析服務引用的原理。在 Dubbo 中,我們可以通過兩種方式引用遠程服務。第一種是使用服務直聯的方式引用服務,第二種方式是基于注冊中心進行引用。…

期權價格的上限和下限

期權按照買方權利性質分為:看漲期權和看跌期權 1、首先,看漲期權的上限和下限 看漲期權價格上限為其標的資產價格。 看漲期權是給予買方一個在未來買入標的資產的權利,如果該權利的價格高于標的資產的價格,那么投資者不如直接購買…

一件登錄facebook_我從Facebook的R教學中學到的6件事

一件登錄facebookBetween 2018 to 2019, I worked at Facebook as a data scientist — during that time I was involved in developing and teaching a class for R beginners. This was a two-day course that was taught about once a month to a group of roughly 15–20 …

SiameseFC超詳解

SiameseFC前言論文來源參考文章論文原理解讀首先要知道什么是SOT?(Siamese要做什么)SiameseFC要解決什么問題?SiameseFC用了什么方法解決?SiameseFC網絡效果如何?SiameseFC基本框架結構SiameseFC網絡結構Si…

Python全棧工程師(字符串/序列)

ParisGabriel Python 入門基礎字符串:str用來記錄文本信息字符串的表示方式:在非注釋中凡是用引號括起來的部分都是字符串‘’ 單引號“” 雙引號 三單引""" """ 三雙引有內容代表非空字符串否則是空字符串 區別&#xf…

跨庫數據表的運算

跨庫數據表的運算,一直都是一個說難不算太難,說簡單卻又不是很簡單的、總之是一個麻煩的事。大量的、散布在不同數據庫中的數據表們,明明感覺要把它們合并起來,再來個小小的計算,似乎也就那么回事……但真要做起來&…

FCN全卷積網絡隨筆

參考:四、全卷積網絡FCN詳細講解(超級詳細哦) 這篇文章已經寫的很好了,這里說兩個我考慮的點。 第一個就是:FCN在縮小成heat map,為什么要通過上采樣還原回原圖大小? 我覺得這個的原因是因為&a…

熊貓在線壓縮圖_回歸圖與熊貓和脾氣暴躁

熊貓在線壓縮圖數據可視化 (Data Visualization) I like the plotting facilities that come with Pandas. Yes, there are many other plotting libraries such as Seaborn, Bokeh and Plotly but for most purposes, I am very happy with the simplicity of Pandas plotting…

敏捷數據科學pdf_敏捷數據科學數據科學可以并且應該是敏捷的

敏捷數據科學pdfTL;DR;TL; DR; I have encountered a lot of resistance in the data science community against agile methodology and specifically scrum framework; 在數據科學界,我遇到了許多反對敏捷方法論(特別是Scrum框架)的抵制。 I don’t see it this …

oracle的連接字符串

OracleConnection oCnn new OracleConnection("Data SourceORCL_SERVER;USERM70;PASSWORDmmm;");建立個角色 建立個表空間(角色與表空間同名的) 在方案里就可以建立表,然后就哦了 10g

SiameseRPN詳解

SiameseRPN論文來源論文背景一,簡介二,研究動機三、相關工作論文理論注意:網絡結構:1.Siamese Network2.RPN3.LOSS計算4.Tracking論文的優缺點分析一、Siamese-RPN的貢獻/優點:二、Siamese-RPN的缺點:代碼流…

數據可視化 信息可視化_可視化數據操作數據可視化與紀錄片的共同點

數據可視化 信息可視化Data visualization is a great way to celebrate our favorite pieces of art as well as reveal connections and ideas that were previously invisible. More importantly, it’s a fun way to connect things we love — visualizing data and kicki…

python 圖表_使用Streamlit-Python將動畫圖表添加到儀表板

python 圖表介紹 (Introduction) I have been thinking of trying out Streamlit for a while. So last weekend, I spent some time tinkering with it. If you have never heard of this tool before, it provides a very friendly way to create custom interactive Data we…

Python--day26--復習

轉載于:https://www.cnblogs.com/xudj/p/9953293.html

sockets C#

Microsoft.Net Framework為應用程序訪問Internet提供了分層的、可擴展的以及受管轄的網絡服務,其名字空間System.Net和System.Net.Sockets包含豐富的類可以開發多種網絡應用程序。.Net類采用的分層結構允許應用程序在不同的控制級別上訪問網絡,開發人員可…

667. Beautiful Arrangement II

找規律 1&#xff0c;2&#xff0c;... , n 亂序排列&#xff0c;相鄰數據的絕對差最多有n-1種 比如1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5對應于 1 5 2 4 3 class Solution { public:vector<int> constructArray(int n, int k) {vector<int> re…

SiameseRPN++分析

SiamRPN論文來源論文背景什么是目標跟蹤什么是孿生網絡結構Siamese的局限解決的問題論文分析創新點一&#xff1a;空間感知策略創新點二&#xff1a;ResNet-50深層網絡創新點三&#xff1a;多層特征融合創新點四&#xff1a;深層互相關代碼分析整體代碼簡述&#xff08;1&#…

MySQL:Innodb page clean 線程 (二) :解析

一、數據結構和入口函數 1、數據結構 ● page_cleaner_t&#xff1a;整個Innodb只有一個&#xff0c;包含整個page clean線程相關信息。其中包含了一個page_cleaner_slot_t的指針。變量名含義mutex用于保護整個page_cleaner_t結構體和page_cleaner_slot_t結構體&#xff0c;當…

Lockdown Wheelie項目

“It’s Strava for wheelies,” my lockdown project, combining hyper-local exercise with data analytics to track and guide improvement. Practising wheelies is a great way to stay positive; after all, it’s looking up, moving forward.我的鎖定項目“將Strava運…