智慧交通day04-特定目标车辆追踪02:Siamese网络+单样本学习
1.Siamese網絡
Siamese network就是“連體的神經網絡”,神經網絡的“連體”是通過共享權值來實現的,如下圖所示。共享權值意味著兩邊的網絡權重矩陣一模一樣,甚至可以是同一個網絡。
如果左右兩邊不共享權值,而是兩個不同的神經網絡,叫偽孿生網絡(pseudo-siamese network,偽孿生神經網絡),對于pseudo-siamese network,兩邊可以是不同的神經網絡(如一個是lstm,一個是cnn),也可以是相同類型的神經網絡。
1.1 原理
Siamese網絡衡量兩個輸入的相似程度,輸出是一個[0,1]的浮點數,表示二者的相似程度。孿生神經網絡有兩個輸入(Input1 and Input2),將兩個輸入feed進入兩個神經網絡(Network1 and Network2),這兩個神經網絡分別將輸入映射到新的空間,形成輸入在新的空間中的表示。通過Loss的計算,評價兩個輸入的相似度。
傳統(tǒng)的siamese network使用Contrastive Loss(對比損失函數),如下所示:
- 其中Dw被定義為姐妹孿生網絡的輸出之間的歐氏距離。Dw歐式距離公式如下:
也可以是其他的距離度量方法,比如Cosine距離主要用于詞匯級別的語義相似度度量。
-
其中Gw是其中一個子網絡的輸出。X1和X2是輸入數據對。
-
Y值為1或0。如果模型預測輸入是相似的,那么Y的值為0,否則Y為1。
- max是表示0和m-Dw之間較大值的函數。
- m是大于0的邊際價值(margin value),邊際價值表示超出該邊際價值的不同不會造成損失,因為希望基于實際不相似對網絡進行優(yōu)化。
1.2 用途
孿生神經網絡用于處理兩個輸入“比較類似"的情況。
偽孿生神經網絡適用于處理兩個輸入"有一定差別”的情況。
比如,我們要計算兩個句子或者詞匯的語義相似度,使用siamese network比較適合;如果驗證標題與正文的描述是否一致(標題和正文長度差別很大),或者文字是否描述了一幅圖片(一個是圖片,一個是文字),就應該使用pseudo-siamese network。也就是說,要根據具體的應用,判斷應該使用哪一種結構,哪一種Loss。
- 詞匯的語義相似度分析,QA中question和answer的匹配,簽名/人臉驗證。
- 手寫體識別也可以用siamese network。
- 還有kaggle上Quora的question pair的比賽,即判斷兩個提問是不是同一問題。
- 在圖像上,基于Siamese網絡的視覺跟蹤算法也已經成為熱點。
- 單樣本學習
2.單樣本學習
2.1 原理
傳統(tǒng)的神經網絡試圖學習某一個類別的圖像的表達,而One-Shot Learning 試圖學習不同圖像(可以同一類別或者不同類別) 的區(qū)別。
給定圖片A和圖片B, 將A轉換為一個表達(embedding vector) p, 將B轉換為 一個表達(embedding vector) q
? 如果 A 和 B 屬于同一個類別, 那么我們希望 p 和 q 是相似的
? 如果 A 和 B 不屬于同一個類別, 那么我們希望 p 和 q 是不相似的
? 相似度的度量, 歐幾里得距離:
2.2 意義
減少訓練數據
? 深度學習需要大量的數據, MNIST 為了 10 個類別的區(qū)分, 需要 60,000 張訓練圖像, 平均一個類別需要6000 張訓練圖像
? One-Shot 試圖將一個類別的訓練圖像減少, 極端情況時減小到一張圖片
在新類別的數據出現時, 無需重新訓練
? 傳統(tǒng)的深度神經網絡無法處理沒有出現在訓練集中的類別
? 以員工刷臉打卡為例, 使用傳統(tǒng)深度神經網絡, 每一個新員工入職, 都是一個新的 類別, 需要重新訓練深度神經網絡
? 如果每天都有新員工入職, 每天都要重新訓練網絡, 成本非常高
? One-Shot learning 可以無需重新訓練即可應用于新的類別的數據
總結
以上是生活随笔為你收集整理的智慧交通day04-特定目标车辆追踪02:Siamese网络+单样本学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决loaded more than 1
- 下一篇: ML Backpropagation算法