Siamese network 孿生神經(jīng)網(wǎng)絡(luò)--一個(gè)簡(jiǎn)單神奇的結(jié)構(gòu)

  1. 名字的由來

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

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

image

至于連體雙胞胎是如何同英國(guó)姐妹分別生下了22個(gè)孩子的方法,就靠大家自己腦補(bǔ)了。

簡(jiǎn)單來說,Siamese network就是“連體的神經(jīng)網(wǎng)絡(luò)”,神經(jīng)網(wǎng)絡(luò)的“連體”是通過共享權(quán)值來實(shí)現(xiàn)的,如下圖所示。

image

大家可能會(huì)有疑問:共享權(quán)值是什么意思?左右兩個(gè)神經(jīng)網(wǎng)絡(luò)的權(quán)重一模一樣?

答:是的,在代碼實(shí)現(xiàn)的時(shí)候,甚至可以是同一個(gè)網(wǎng)絡(luò),不用實(shí)現(xiàn)另外一個(gè),因?yàn)闄?quán)值都一樣。對(duì)于siamese network,兩邊可以是lstm或者cnn,都可以。

大家可能還有疑問:如果左右兩邊不共享權(quán)值,而是兩個(gè)不同的神經(jīng)網(wǎng)絡(luò),叫什么呢?

答:pseudo-siamese network,偽孿生神經(jīng)網(wǎng)絡(luò),如下圖所示。對(duì)于pseudo-siamese network,兩邊可以是不同的神經(jīng)網(wǎng)絡(luò)(如一個(gè)是lstm,一個(gè)是cnn),也可以是相同類型的神經(jīng)網(wǎng)絡(luò)。

image

2. 孿生神經(jīng)網(wǎng)絡(luò)的用途是什么?

簡(jiǎn)單來說,衡量?jī)蓚€(gè)輸入的相似程度。孿生神經(jīng)網(wǎng)絡(luò)有兩個(gè)輸入(Input1 and Input2),將兩個(gè)輸入feed進(jìn)入兩個(gè)神經(jīng)網(wǎng)絡(luò)(Network1 and Network2),這兩個(gè)神經(jīng)網(wǎng)絡(luò)分別將輸入映射到新的空間,形成輸入在新的空間中的表示。通過Loss的計(jì)算,評(píng)價(jià)兩個(gè)輸入的相似度。

據(jù)我查到的資料,養(yǎng)樂村同志在NIPS 1993上發(fā)表了論文《Signature Verification using a ‘Siamese’ Time Delay Neural Network》用于美國(guó)支票上的簽名驗(yàn)證,即驗(yàn)證支票上的簽名與銀行預(yù)留簽名是否一致。1993年,養(yǎng)樂村同志就在用兩個(gè)卷積神經(jīng)網(wǎng)絡(luò)做簽名驗(yàn)證了,而我剛出生,作為一個(gè)出生沒幾年的新神經(jīng)網(wǎng)絡(luò),在受我爸媽的訓(xùn)練。

image

隨著SVM等算法的興起,neural network被人們遺忘,還好有一些執(zhí)著的人們,堅(jiān)守在了神經(jīng)網(wǎng)絡(luò)研究的陣地。2010年Hinton在ICML上發(fā)表了文章《Rectified Linear Units Improve Restricted Boltzmann Machines》,用來做人臉驗(yàn)證,效果很好。其原理很簡(jiǎn)單,將兩個(gè)人臉feed進(jìn)卷積神經(jīng)網(wǎng)絡(luò),輸出same or different。

image

啥?Siamese network只能做二分類?

不不不,它能做的事情還有很多很多,后面會(huì)繼續(xù)介紹。

3. 孿生神經(jīng)網(wǎng)絡(luò)和偽孿生神經(jīng)網(wǎng)絡(luò)分別適用于什么場(chǎng)景呢?

先上結(jié)論:孿生神經(jīng)網(wǎng)絡(luò)用于處理兩個(gè)輸入"比較類似"的情況。偽孿生神經(jīng)網(wǎng)絡(luò)適用于處理兩個(gè)輸入"有一定差別"的情況。比如,我們要計(jì)算兩個(gè)句子或者詞匯的語義相似度,使用siamese network比較適合;如果驗(yàn)證標(biāo)題與正文的描述是否一致(標(biāo)題和正文長(zhǎng)度差別很大),或者文字是否描述了一幅圖片(一個(gè)是圖片,一個(gè)是文字),就應(yīng)該使用pseudo-siamese network。也就是說,要根據(jù)具體的應(yīng)用,判斷應(yīng)該使用哪一種結(jié)構(gòu),哪一種Loss。

4. Siamese network loss function一般用哪一種呢?

Softmax當(dāng)然是一種好的選擇,但不一定是最優(yōu)選擇,即使是在分類問題中。傳統(tǒng)的siamese network使用Contrastive Loss。損失函數(shù)還有更多的選擇,siamese network的初衷是計(jì)算兩個(gè)輸入的相似度,。左右兩個(gè)神經(jīng)網(wǎng)絡(luò)分別將輸入轉(zhuǎn)換成一個(gè)"向量",在新的空間中,通過判斷cosine距離就能得到相似度了。Cosine是一個(gè)選擇,exp function也是一種選擇,歐式距離什么的都可以,訓(xùn)練的目標(biāo)是讓兩個(gè)相似的輸入距離盡可能的小,兩個(gè)不同類別的輸入距離盡可能的大。其他的距離度量沒有太多經(jīng)驗(yàn),這里簡(jiǎn)單說一下cosine和exp在NLP中的區(qū)別。

根據(jù)實(shí)驗(yàn)分析,cosine更適用于詞匯級(jí)別的語義相似度度量,而exp更適用于句子級(jí)別、段落級(jí)別的文本相似性度量。其中的原因可能是cosine僅僅計(jì)算兩個(gè)向量的夾角,exp還能夠保存兩個(gè)向量的長(zhǎng)度信息,而句子蘊(yùn)含更多的信息(當(dāng)然,沒有做實(shí)驗(yàn)驗(yàn)證這個(gè)事情)。

我們?cè)谡撐睦锸褂昧薳xp距離做多分類,解決Fakenewschallenge上標(biāo)題與正文立場(chǎng)是否一致的衡量問題。

5. Siamese network是雙胞胎連體,整一個(gè)三胞胎連體行不行?

不好意思,已經(jīng)有人整過了,叫Triplet network,論文是《Deep metric learning using Triplet network》,輸入是三個(gè),一個(gè)正例+兩個(gè)負(fù)例,或者一個(gè)負(fù)例+兩個(gè)正例,訓(xùn)練的目標(biāo)是讓相同類別間的距離盡可能的小,讓不同類別間的距離盡可能的大。Triplet在cifar, mnist的數(shù)據(jù)集上,效果都是很不錯(cuò)的,超過了siamese network。四胞胎,五胞胎會(huì)不會(huì)更屌?。。。。。目前還沒見過。。。。

image

<figcaption class="Image-caption" style="box-sizing: inherit; margin-top: 16px; font-size: 14px; line-height: 1.5; text-align: center; color: rgb(153, 153, 153);">Triplet network</figcaption>

</figure>

6. Siamese network的用途有哪些?

這個(gè)可以說太多了,nlp&cv領(lǐng)域都有很多應(yīng)用。

  • 前面提到的詞匯的語義相似度分析,QA中question和answer的匹配,簽名/人臉驗(yàn)證。

  • 手寫體識(shí)別也可以用siamese network,網(wǎng)上已有g(shù)ithub代碼。

  • 還有kaggle上Quora的question pair的比賽,即判斷兩個(gè)提問是不是同一問題,冠軍隊(duì)伍用的就是n多特征+Siamese network,知乎團(tuán)隊(duì)也可以拿這個(gè)模型去把玩一下。

  • 在圖像上,基于Siamese網(wǎng)絡(luò)的視覺跟蹤算法也已經(jīng)成為熱點(diǎn)《Fully-convolutional siamese networks for object tracking》。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容