CV崗位面試題:孿生隨機(jī)網(wǎng)絡(luò)(Siamese Network)如何解決?

文 | 七月在線
編 | 小七
解析:
簡單來說,Siamese Network就是“連體的神經(jīng)網(wǎng)絡(luò)”,神經(jīng)網(wǎng)絡(luò)的“連體”是通過共享權(quán)值來實(shí)現(xiàn)的,如下圖所示:

大家可能會有疑問:共享權(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)值都一樣。對于Siamese Network,兩邊可以是LSTM或者CNN,都可以。
大家可能還有疑問:如果左右兩邊不共享權(quán)值,而是兩個(gè)不同的神經(jīng)網(wǎng)絡(luò),叫什么呢?
答:Pseudo-Siamese Network,偽孿生神經(jīng)網(wǎng)絡(luò),如下圖所示。對于Pseudo-Siamese Network,兩邊可以是不同的神經(jīng)網(wǎng)絡(luò)(如一個(gè)是LSTM,一個(gè)是CNN),也可以是相同類型的神經(jīng)網(wǎng)絡(luò)。
Yann LeCun養(yǎng)樂村同志在NIPS 1993上發(fā)表了論文《Signature Verification using a ‘Siamese’ Time Delay Neural Network》用于美國支票上的簽名驗(yàn)證,即驗(yàn)證支票上的簽名與銀行預(yù)留簽名是否一致。1993年,Yann LeCun就在用兩個(gè)卷積神經(jīng)網(wǎng)絡(luò)做簽名驗(yàn)證了。
簽名驗(yàn)證隨著SVM等算法的興起,Neural Network被人們遺忘,還好有一些執(zhí)著的人們,堅(jiān)守在了神經(jīng)網(wǎng)絡(luò)研究的陣地。2010年Hinton在ICML上發(fā)表了文章《Rectified Linear Units Improve Restricted Boltzmann Machines》,用來做人臉驗(yàn)證,效果很好。其原理很簡單,將兩個(gè)人臉feed進(jìn)卷積神經(jīng)網(wǎng)絡(luò),輸出same or different。
3. 孿生神經(jīng)網(wǎng)絡(luò)和偽孿生神經(jīng)網(wǎng)絡(luò)分別適用于什么場景呢?
孿生神經(jīng)網(wǎng)絡(luò)用于處理兩個(gè)輸入"比較類似"的情況。偽孿生神經(jīng)網(wǎng)絡(luò)適用于處理兩個(gè)輸入"有一定差別"的情況。比如,我們要計(jì)算兩個(gè)句子或者詞匯的語義相似度,使用siamese network比較適合;如果驗(yàn)證標(biāo)題與正文的描述是否一致(標(biāo)題和正文長度差別很大),或者文字是否描述了一幅圖片(一個(gè)是圖片,一個(gè)是文字),就應(yīng)該使用pseudo-siamese network。也就是說,要根據(jù)具體的應(yīng)用,判斷應(yīng)該使用哪一種結(jié)構(gòu),哪一種Loss函數(shù)。
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),這里簡單說一下cosine和exp在NLP中的區(qū)別。
根據(jù)實(shí)驗(yàn)分析,cosine更適用于詞匯級別的語義相似度度量,而exp更適用于句子級別、段落級別的文本相似性度量。其中的原因可能是cosine僅僅計(jì)算兩個(gè)向量的夾角,exp還能夠保存兩個(gè)向量的長度信息,而句子蘊(yùn)含更多的信息。
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ù)集上效果都是很不錯的,超過了Siamese Network。
6. Siamese network的用途有哪些?
用于非常廣,在NLP和CL領(lǐng)域都有很多應(yīng)用。
1. 前面提到的詞匯的語義相似度分析,QA中question和answer的匹配等NLP領(lǐng)域,簽名/人臉驗(yàn)證等CV領(lǐng)域應(yīng)用。
2. 手寫體識別也可以用Siamese Network。
3. 還有Kaggle上Quora的question pair的比賽,即判斷兩個(gè)提問是不是同一問題,冠軍隊(duì)伍用的就是N多特征+Siamese Network。
4.m在圖像上,基于Siamese網(wǎng)絡(luò)的視覺跟蹤算法也已經(jīng)成為熱點(diǎn)《Fully-convolutional siamesenetworksforobjecttracking》:https://link.springer.com/chapter/10.1007/978-3-319-48881-3_56 。
本周1元秒殺
七月在線價(jià)值千元【SVM與XGBoost】實(shí)戰(zhàn)特訓(xùn)課,本周限時(shí) 1 元秒殺!
點(diǎn)擊鏈接,立即購買-》https://www.julyedu.com/course/getDetail/346&from=sina
推薦系統(tǒng)
1、干貨 | 基于用戶的協(xié)同過濾推薦算法原理和實(shí)現(xiàn)
2、超詳細(xì)丨推薦系統(tǒng)架構(gòu)與算法流程詳解
機(jī)器學(xué)習(xí)
自然語言處理(NLP)
1、AI自動評審論文,CMU這個(gè)工具可行嗎?我們用它評審了下Transformer論文
2、Transformer強(qiáng)勢闖入CV界秒殺CNN,靠的到底是什么"基因"
計(jì)算機(jī)視覺(CV)
1、9個(gè)小技巧讓您的PyTorch模型訓(xùn)練裝上“渦輪增壓”...
GitHub開源項(xiàng)目:
1、火爆GitHub!3.6k Star,中文版可視化神器現(xiàn)身
2、兩次霸榜GitHub!這個(gè)神器不寫代碼也可以完成AI算法訓(xùn)練
3、登頂GitHub大熱項(xiàng)目 | 非監(jiān)督GAN算法U-GAT-IT大幅改進(jìn)圖像轉(zhuǎn)換
每周推薦:
1、本周優(yōu)秀開源項(xiàng)目分享:無腦套用格式、開源模板最高10萬贊
2、本周優(yōu)秀開源項(xiàng)目分享:YOLOv4的Pytorch存儲庫、用pytorch增強(qiáng)圖像數(shù)據(jù)等7大項(xiàng)目
七月在線學(xué)員面經(jīng)分享:
1、 雙非應(yīng)屆生拿下大廠NLP崗40萬offer:面試經(jīng)驗(yàn)與路線圖分享





