天天看點

Siamese Neural Networks for One-shot Image Recognition (孿生神經網絡用于 One-Shot 圖像識别)1. 摘要2. 介紹3. 方法3. 用于圖像驗證的孿生網絡4. 有趣的一點5. 其他6. 論文連結

目錄

  • 1. 摘要
  • 2. 介紹
  • 3. 方法
  • 3. 用于圖像驗證的孿生網絡
  • 4. 有趣的一點
  • 5. 其他
  • 6. 論文連結

1. 摘要

機器學習應用中學習好的特征的計算開銷是非常大的,而且在某些情況下(few-shot learning,可用資料很少)是非常困難的。一個典型的例子就是 one-shot learning,其中必須在隻給出每個類的一個樣本的情況下,對剩餘樣本做出正确的預測。本文學習一個孿生神經網絡(Siamese Neural Networks),它用它獨特的結構自發地對輸入的相似性排序。一旦網絡學習好了之後,我們就可以利用強有力的辨識功能将我們的預測能力不僅推廣泛化到新的資料(新資料的類包含于訓練資料中的類),而且可以推廣泛化到來自于未知分布的新的類。

(1)新的類;(2)每個類的訓練樣本隻有一個;(3)學習一個網絡映射輸入空間到新的空間,比較相似度;

這三個特征滿足 few-shot learning,meta-learning 的基本特征,而且可以看成屬于 meta-learning 中的度量學習 (metric learning)。

(few-shot learning 和 meta-learning 的概述可以參考連結:https://blog.csdn.net/weixin_37589575/article/details/92801610)

2. 介紹

人類具有快速獲得和識别新模式的能力。特别的,人類在受到刺激的時候可以快速了解新的概念同時可以在未來的識别任務中識别這些概念中的變化。現在的 ML(machine learning) 方法雖然在很多領域取得了成功,但是當被強迫在隻有很少的監督資訊的情況下做出預測時表現往往會崩塌。我們希望可以在不經過重新訓練的情況下,可以很好的推廣泛化到新的類别。重新訓練可能費時費力,而且在某些場景下根本就無法重新訓練。本文的關注點在 one-shot classification 問題上,即僅在每個可能的類别給出一個執行個體的情況下,對剩餘樣本進行分類。

One-shot learning 的一種解決方法是開發特定領域相關的特征或者推斷過程,它們在目标任務(也是一種特定任務)上具有很好的判别性。這種方法雖然可以在特定領域上取得很好的效果,但是魯棒性較差,無法用于其他類型的任務。本文對輸入假設做了限制(更少的輸入假設),而是讓模型自動擷取能夠在少樣本任務上成功推廣歸納的特征。

3. 方法

總體而言,我們通過一個有監督的、基于度量的、孿生網絡結構的方法學習圖像的表示,然後将這個網絡複用于 one-shot learning(無需重新訓練)。

由于本文主要關注于圖檔 one-shot leanring 任務,是以使用了 Siamese Convolutional Neural Networks(孿生卷積神經網絡),特點:

  1. 能夠學習對于來自未知分布的新類(每個新類隻有一個樣本)預測有用的通用的圖檔特征。
  2. 在由源資料成對采樣的訓練樣本上可以使用标準的優化技術很容易地訓練。
  3. 不依賴于特定領域的知識,而是使用深度學習技術提供了一種有競争力的方法。

為了網絡可以進行 one-shot classification,我們先學習一個網絡可以區分圖像對中的類别辨別,這是一個标準的驗證任務。并且我們假設如果網絡在驗證任務上表現良好,那麼這個網絡就可以推廣到 one-shot classification 上。這個驗證模型根據輸入對屬于相同類和不同類的機率學習如何識别輸入對。學習好的模型可以用于評估新的圖檔,其中每個新的類恰好隻有一個圖檔示例。測試模型的時候,測試樣本也是成對出現的,然後根據驗證網絡中最高得分對授予最高的機率。

簡單的說:訓練的時候是驗證的模式,成對的輸入,然後判斷是否屬于同一類。測試的時候也是類似的成對的輸入,這樣成對的輸入有很多對,每一對有一個得分,得分就對應于這成對輸入屬于同一類的機率。得分越高,機率越高。

例如:5-way 1-shot 任務中,每個類别有一個 support 樣本(5 * 1 = 5,總共 5 個樣本),然後對于每一個 query 樣本,和前面 5 個 support 樣本做驗證比較,最高得分的 support 樣本屬于的類就是我們預測的類别。(術語定義參考前面連接配接的部落格)

3. 用于圖像驗證的孿生網絡

孿生網絡最早用于解決簽名驗證問題(将簽名驗證看為一個圖像比對問題)。孿生網絡(Siamese Networks)包含一對網絡,接收兩個輸入,最後通過一個頂層的能量函數(Energy Function)連接配接起來。

Siamese Neural Networks for One-shot Image Recognition (孿生神經網絡用于 One-Shot 圖像識别)1. 摘要2. 介紹3. 方法3. 用于圖像驗證的孿生網絡4. 有趣的一點5. 其他6. 論文連結

這個能量函數計算來自兩個輸入映射到新空間的某種相似度。兩個網絡的參數是綁定的(共享的)。權重綁定可以保證兩個極其相似的圖檔不會被映射到空間中特别遠的地方。另外還有一點就是兩個網絡相同,是以對于輸入對的順序來說,同一對不同的順序的輸入至少在 Embedding 這一步是完全沒有影響的,如果能量函數也是關于兩個輸入(一般是)對稱的,那麼整個網絡都是對稱的。

簡單的說,這兩個孿生網絡其實就是 Embedding 函數,将輸入從輸入空間映射到 Embedding 空間,而這個能量函數就是用來在新的 Embedding 空間裡面計算兩個 Embedding 的相似度,然後做出驗證。

在《Learning a Similarity Metric Discriminatively, with Application to Face Verification》的部落格中提到兩種方法在網絡結構上很相似,論文也提到了這一點,并且給出了一個主要不同,《Learning a Similarity Metric Discriminatively, with Application to Face Verification》使用了一個對比能量函數,而本文使用了一個兩個映射之後的特征向量 h 1 h_{1} h1​ 和 h 2 h_{2} h2​ 權重的 L 1 L_{1} L1​ 距離,後面接一個 sigmoid 激活函數,将其映射到 0 到 1 之間,是以使用交叉熵作為損失函數。

L ( x 1 ( i ) , x 2 ( i ) ) = y ( x 1 ( i ) , x 2 ( i ) ) log ⁡ p ( x 1 ( i ) , x 2 ( i ) ) + ( 1 − y ( x 1 ( i ) , x 2 ( i ) ) ) log ⁡ ( 1 − p ( x 1 ( i ) , x 2 ( i ) ) ) + λ T ∣ w ∣ 2 \mathcal{L}\left(x_{1}^{(i)}, x_{2}^{(i)}\right)=\mathbf{y}\left(x_{1}^{(i)}, x_{2}^{(i)}\right) \log \mathbf{p}\left(x_{1}^{(i)}, x_{2}^{(i)}\right)+\left(1-\mathbf{y}\left(x_{1}^{(i)}, x_{2}^{(i)}\right)\right) \log \left(1-\mathbf{p}\left(x_{1}^{(i)}, x_{2}^{(i)}\right)\right)+\boldsymbol{\lambda}^{T}|\mathbf{w}|^{2} L(x1(i)​,x2(i)​)=y(x1(i)​,x2(i)​)logp(x1(i)​,x2(i)​)+(1−y(x1(i)​,x2(i)​))log(1−p(x1(i)​,x2(i)​))+λT∣w∣2

其中 y y y 是 label 标記,如果屬于同一類,則 y = 1 y = 1 y=1,否 y = 0 y = 0 y=0。 λ T ∣ w ∣ 2 \boldsymbol{\lambda}^{T}|\mathbf{w}|^{2} λT∣w∣2 是正則化項。

另外我們在對比一下和後面的 matching network 以及 prototypical network,後面的兩種網絡不再是孿生的結構(其實孿生本質就是一個網絡),而是一個網絡去 embed support set 中的樣本,而且訓練的方式也不再是驗證任務的方式,而是和測試一樣的分類任務。這種訓練方式的也更好。進一步後面的網絡開始引入元學習的概念以及任務的概念。

4. 有趣的一點

這篇論文我覺得很有趣的一個地方是實驗 Section 4.4,在 Omniglot 上做驗證任務,然後在 MNIST 上面做測試。在 few-shot 和 meta-learning 的綜述中提到:https://blog.csdn.net/weixin_37589575/article/details/92801610):

解決 few-shot learning 的方法主流的有兩種:

  1. 資料增強和正則化
  2. Meta-learning(元學習)

方法 1 和方法 2 之間有個明顯的差異就是 meta-learning 需要建構一些 meta-training task。由于 meta-testing 的類别要和 meta-training 完全不同,是以如果我們隻有 MNIST 資料集,沒法使用 meat-learning 來解決 MNIST 上的 10-way few-shot learning 問題,但是方法 1 可以。不過我們可以使用 meta-learning 解決 MNIST 上的 N-way (N < 6) 的 few-shot learning 問題。

但是那麼如果我們非要解決 MNIST 上的 10-way few-shot learning 問題怎麼辦呢,可以在另外一個資料集,例如 Omniglot ,上面進行 meta-training,然後學到的先驗知識用來解決這個問題。

我們發現在 Omniglot 上學到的先驗知識确實可以幫助在 MNIST 資料集上進行又快又好的學習。實驗結果比最近鄰算法好很多。

5. 其他

實驗,相關工作,結論,具體的 CNN 模型結構以及訓練政策等請參考原論文。原論文中還有兩段簡要介紹了 CNN 的基本特性 。

6. 論文連結

《Siamese Neural Networks for One-shot Image Recognition》:www.cs.toronto.edu/~gkoch/files/msc-thesis.pdf.

《Learning a Similarity Metric Discriminatively, with Application to Face Verification.》:http://yann.lecun.com/exdb/publis/pdf/chopra-05.pdf.

繼續閱讀