天天看點

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

最近在做華為杯的競賽,涉及小樣本學習,總結一下相關的知識及論文

小樣本學習(Few-shot Learning)在圖像領域的研究現狀

  • 1.introduction
    • 1.1注意力機制
    • 1.2 LSTM(Long short-term memory)
  • 2. 小樣本學習(Few-shot Learning)
    • 2.1基于度量的小樣本學習(Metric Based)(主流方法)
      • 2.1.1孿生網絡(Siamese Network)
      • 2.1.2比對網絡(Match Network)
      • 2.1.3原型網絡(Prototype Network)
      • 2.1.4關系網絡(Relation Network)
    • 2.2基于模型的小樣本學習(Model Based)
      • 2.2.1基于記憶Memory的方法
      • 2.2.2 Meta Network
    • 2.3基于優化的小樣本學習(Optimization Based)

1.introduction

人類具有通過極少量樣本識别一個新物體的能力,如小孩子隻需要書中的個别圖檔,就可以認識什麼是“蘋果”,什麼是“草莓”。研究人員希望機器學習模型在學習了一定類别的大量資料後,對于下遊任務中遇到的新類别,隻需要少量的樣本就能快速學習,實作“小樣本學習”。

傳統的小樣本學習考慮訓練資料與測試資料均來自于同一個域。如果下遊任務中包含了未知域, 則傳統小樣本學習方法效果不理想。這就是這次競賽要解決的問題.

one-short learning : 待解決的問題隻有少量的标注資料,先驗知識很匮乏,遷移學習屬于one-short learning的一種

zero-short learning: 這個種情況下完全沒有标注資料,聚類算法等無監督學習屬于zero-short learning的一種

小樣本學習(Few-shot Learning) 是 元學習(Meta Learning) 在監督學習領域的應用。 Meta Learning,又稱為 learning to learn,在 meta training 階段将資料集分解為不同的 meta task,去學習類别變化的情況下模型的泛化能力,在 meta testing 階段,面對全新的類别,不需要變動已有的模型,就可以完成分類。

形式化來說,few-shot 的訓練集中包含了很多的類别,每個類别中有多個樣本。在訓練階段,會在訓練集中随機抽取 C 個類别,每個類别 K 個樣本(總共 CK 個資料),建構一個 meta-task,作為模型的支撐集(support set)輸入;再從這 C 個類中剩餘的資料中抽取一批(batch)樣本作為模型的預測對象(batch set)。即要求模型從 C*K 個資料中學會如何區分這 C 個類别,這樣的任務被稱為 C-way K-shot 問題。

訓練過程中,每次訓練(episode)都會采樣得到不同 meta-task,是以總體來看,訓練包含了不同的類别組合,這種機制使得模型學會不同 meta-task 中的共性部分,比如如何提取重要特征及比較樣本相似等,忘掉 meta-task 中 task 相關部分。通過這種學習機制學到的模型,在面對新的未見過的 meta-task 時,也能較好地進行分類。

Few-shot Learning 模型大緻可分為三類:Mode Based,Metric Based 和 Optimization Based。

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

1.1注意力機制

視覺注意力機制是人類視覺所特有的大腦信号處理機制。人類視覺通過快速掃描全局圖像,獲得需要重點關注的目标區域,也就是一般所說的注意力焦點,而後對這一區域投入更多注意力資源,以擷取更多所需要關注目标的細節資訊,而抑制其他無用資訊。

這是人類利用有限的注意力資源從大量資訊中快速篩選出高價值資訊的手段,是人類在長期進化中形成的一種生存機制,人類視覺注意力機制極大地提高了視覺資訊處理的效率與準确性。

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

圖1形象化展示了人類在看到一副圖像時是如何高效配置設定有限的注意力資源的,其中紅色區域表明視覺系統更關注的目标,很明顯對于圖1所示的場景,人們會把注意力更多投入到人的臉部,文本的标題以及文章首句等位置。

小樣本學習中的注意力機制從本質上講和人類的選擇性視覺注意力機制類似,核心目标也是從衆多資訊中選擇出對目前任務目标更關鍵的資訊。

注意力機制的基本思想和實作原理

1.2 LSTM(Long short-term memory)

長短期記憶(Long short-term memory, LSTM)是一種特殊的RNN,主要是為了解決長序列訓練過程中的梯度消失和梯度爆炸問題。簡單來說,就是相比普通的RNN,LSTM能夠在更長的序列中有更好的表現。

LSTM結構(圖右)和普通RNN的主要輸入輸出差別如下所示:

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

LSTM基本思想和實作原理

LSTM的内部結構,通過門控狀态來控制傳輸狀态,記住需要長時間記憶的,忘記不重要的資訊;而不像普通的RNN那樣隻能夠僅有一種記憶疊加方式。對很多需要“長期記憶”的任務來說,尤其好用。

但也因為引入了很多内容,導緻參數變多,也使得訓練難度加大了很多。是以很多時候我們往往會使用效果和LSTM相當但參數更少的GRU來建構大訓練量的模型。

2. 小樣本學習(Few-shot Learning)

2.1基于度量的小樣本學習(Metric Based)(主流方法)

Metric Based 方法通過度量 batch 集中的樣本和 support 集中樣本的距離,借助最近鄰的思想完成分類。

2.1.1孿生網絡(Siamese Network)

  1. 孿生 是指網絡結構中的Network_1和Network_2

    這兩個網絡的結構一般是相同的,并且參數是共享的 即參數是一緻的。

    還有一種網絡叫僞孿生網絡 直覺了解就是左右兩邊的網絡結構是不同的。

  2. 在圖中的網絡中 左右兩個網絡的作用是用于提取輸入圖檔的特征。特征提取器

    比如在人臉領域,輸入兩個人的人臉圖檔資訊,兩個網絡分别提取這兩個人臉圖檔中不同部分。

    小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)
  3. 通過使用兩個網絡 提取出來了兩個圖檔的特征 接下來計算特征之間的差距distance。之後傳回網絡的輸出結果 :這兩張圖檔是否屬于同一人。

關于這個網絡結構的損失函數 也可了解為 計算distance的地方設定為:

G w ( P T ) = G w ( X 1 , X 2 ) Gw(PT) = Gw(X1,X2) Gw(PT)=Gw(X1,X2)

指兩個特征上屬于同一個人的誤差

G w ( P F ) = G w ( X 1 , X 2 ) Gw(PF) = Gw(X1,X2) Gw(PF)=Gw(X1,X2)

指兩個特征上不屬于同一個人的誤差

損失函數

L o s s = G w ( P T ) − G w ( P F ) + α Loss = Gw(PT) - Gw(PF) + α Loss=Gw(PT)−Gw(PF)+α

我們要使損失函數最小,相當于使 G w ( P T ) Gw(PT) Gw(PT) 盡可能的小 可以了解為 這個網絡 識别兩張圖檔屬于 一個人 能力 盡可能的厲害/準确

相當于使 G w ( P F ) Gw(PF) Gw(PF)盡可能的大(因為有負号) 可以了解為 這個網絡 區分/判别兩張圖檔不屬于 一個人 能力 盡可能的厲害/準确

其中 參數 α α α 是為了避免損失函數的值為0 而設定的

因為在損失函數為0 的時候 優化過程中 求導求梯度會出現問題。

總的來說,孿生網絡(Siamese Network)通過有監督的方式訓練孿生網絡來學習,然後重用網絡所提取的特征進行 one/few-shot 學習。

該孿生卷積網絡可以:

  1. 學習到一些通用的圖檔特征,可以預測資料量非常少的新分類
  2. 在資料源上進行随機采樣生成成對的訓練資料,然後使用标準的優化算法進行訓練
  3. 該方法不依賴特定領域知識,隻依賴深度學習
小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

具體的網絡是一個雙路的神經網絡,訓練時,通過組合的方式構造不同的成對樣本,輸入網絡進行訓練,在最上層通過樣本對的距離判斷他們是否屬于同一個類,并産生對應的機率分布。在預測階段,孿生網絡處理測試樣本和支撐集之間每一個樣本對,最終預測結果為支撐集上機率最高的類别。

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

L層,每層n個機關

h 1 , 1 h_{1,1} h1,1​ 表示第一個孿生的層 l l l

h 2 , 1 h_{2,1} h2,1​ 表示第二個孿生的層 l l l

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

前兩層使用ReLU激活函數,其餘的使用sigmoid單元。卷積層的filters尺寸可變,stide固定為1,。為了友善優化濾波器的數量的是16的倍數,然後使用ReLU激活函數,然後選擇性的使用max-pooling,stride為2.

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

 【1】Koch, Gregory, Richard Zemel, and Ruslan Salakhutdinov. “Siamese neural networks for one-shot image recognition.” ICML Deep Learning Workshop. Vol. 2. 2015.

代碼位址

代碼作者對論文的解析

論文解讀

2.1.2比對網絡(Match Network)

相比孿生網絡,比對網絡(Match Network)為支撐集和 Batch 集建構不同的編碼器,最終分類器的輸出是支撐集樣本和 query 之間預測值的權重求和。

提出的架構學習一個網絡,來映射少量的有标簽的 Support Set 樣本和将一個無标簽的樣本映射到它的标簽(預測),同時避免在适應新的類上面進行微調。

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

創新點:

模型層面:Matching Nets (MN),使用注意力機制和存儲記憶來快速學習。

訓練過程:Task 的概念,每個 task 模拟最後的 meta-testing 的任務,然後 switching the task from minibatch to minibatch,即一次訓練幾個任務 (minibatch),重複很多次 (switching)。

該文章也是在不改變網絡模型的前提下能對未知類别生成标簽,其主要創新展現在模組化過程和訓練過程上。對于模組化過程的創新,文章提出了基于 memory 和 attention 的 matching nets,使得可以快速學習。

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

Matching Networks for One Shot Learning論文分析

對于訓練過程的創新,文章基于傳統機器學習的一個原則,即訓練和測試是要在同樣條件下進行的,提出在訓練的時候不斷地讓網絡隻看每一類的少量樣本,這将和測試的過程是一緻的。

創新點:

  1. 基于雙向 LSTM 學習訓練集的 embedding(特征映射),使得每個支撐樣本的 embedding (特征映射)是其它訓練樣本的函數;
  2. 基于 attention-LSTM 來對測試樣本 embedding(特征映射),使得每個 Query 樣本的 embedding 是支撐集 embedding 的函數。文章稱其為 FCE (fully-conditional embedding)。

【2】Oriol Vinyals, Charles Blundell, Tim Lillicrap, Daan Wierstra, et al. Matching networks for one shot learning. In Advances in Neural Information Processing Systems, pages 3630–3638, 2016.

2.1.3原型網絡(Prototype Network)

原型網絡是解決小樣本分類問題的一個比較實用且效果還不錯的方法,它基于這樣的想法:每個類别都存在一個原型表達,該類的原型是 support set 在 embedding 空間中的均值。然後,分類問題變成在 embedding 空間中的最近鄰。

在小樣本分類問題中,最需要解決的一個問題是資料的過拟合,由于資料過少,一般的分類算法會表現出過拟合的現象,進而導緻分類結果與實際結果有較大的誤差。為了減少因資料量過少而導緻的過拟合的影響,可以使用基于度量的元學習方法,而原型網絡便是。在此方法中,需要将樣本投影到一個度量空間,且在這個空間中同類樣本距離較近,異類樣本的距離較遠。

如圖c1、c2、c3 分别是三個類别的均值中心(稱 Prototype),将測試樣本 x 進行 embedding 後(将樣本x投影至這個空間),與這 3 個中心進行距離計算,進而獲得 x 的類别。:

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

那麼,現在有幾個問題:

怎麼将這些樣本投影至一個空間且讓同類樣本間距離較近?

怎麼說明一個類别所在的位置?進而能夠讓未标記的樣本計算與類别的距離

首先,先來說明第一個問題,即如何投影。論文中提到了一個帶參數的嵌入函數,這個函數可以了解為投影的過程,表示樣本的特征向量,函數值表示投影到那個空間後的值,這個嵌入函數是一個神經網絡,參數是需要學習的,可以認為參數決定了樣本間的位置,是以需要學習到一個較好的值,讓同類别樣本間距離較近。

想法說完了,再來說具體實作。首先說明一下訓練資料,論文中實驗的資料分為支援集和查詢集:

支援集:即訓練集,在本論文中由一些已标記的樣本組成,比如有N個類,每個類中有M個樣本,則為N-way–M-shot。

查詢集:即測試集,在本論文中由一些已标記的樣本和部分未标記的樣本組成,同理測試時要根據訓練時來,如訓練時為N-way–M-shot,則測試時也要為N-way–M-shot。

論文中認為一個類由這個類所有樣本在投影空間裡的平均值決定,是以,類k的原型為:

c k = 1 ∣ S k ∣ ∑ ( x i , y i ) ∈ S k f ϕ ( x i ) c_{k}=\frac{1}{|S_{k}|}\sum_{(x_{i},y_{i})\in S_{k}}f_{\phi }(x_{i}) ck​=∣Sk​∣1​∑(xi​,yi​)∈Sk​​fϕ​(xi​)

原型網絡的原理較為簡單,但是有一點小問題就是,對于兩個或多個樣本的相似度,用距離較近來度量是否合理。對于某一些資料集來說可能有用,但是對于一般的圖檔,效果可能就不那麼好了。是以,兩個樣本或者圖檔間相似性的度量方法是下一步可以改進的地方。

Prototypical Networks for Few-shot Learning論文詳解1

Prototypical Networks for Few-shot Learning論文詳解2

Prototypical Networks for Few-shot Learning論文詳解3

Prototypical Networks for Few-shot Learning論文詳解4

Prototypical Networks for Few-shot Learning文章代碼

【3】Snell, Jake, Kevin Swersky, and Richard Zemel. “Prototypical networks for few-shot learning.” Advances in Neural Information Processing Systems. 2017.

2.1.4關系網絡(Relation Network)

關系網絡其實就是引入注意力機制,通過對embedding(特征映射)後的特征計算注意力,利用注意力得分進行分析。是以

前面幾個網絡結構在最終的距離度量上都使用了固定的度量方式,如 cosine,歐式距離等,這種模型結構下所有的學習過程都發生在樣本的 embedding 階段。

而 Relation Network 認為度量方式也是網絡中非常重要的一環,需要對其進行模組化,是以該網絡不滿足單一且固定的距離度量方式,而是訓練一個網絡來學習(例如 CNN)距離的度量方式,在 loss 方面也有所改變,考慮到 relation network 更多的關注 relation score,更像一種回歸,而非 0/1 分類,是以使用了 MSE 取代了 cross-entropy。

K-shot:對每個訓練類的所有樣本的Embedding子產品輸出進行逐元素求和,這個合并的類級特征映射與上面的查詢圖像特征映射相結合。

Objective function:使用均方誤差MSE作為損失函數,将關系分數rij回歸到ground truth:比對的相似性為1,不比對的相似性為0。

Zero-shot:每個訓練類中使用語義嵌入向量代替one shot資料集作為支援集。模型結構中除了用于查詢集的嵌入子產品f1,還使用了第二個異構子產品f2用于處理語義嵌入向量。

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

 Embedding利用4個卷積塊實作。每個卷積塊包含64個filter大小為33,使用batch normalization和ReLU激活函數。前兩個block包含22的max pooling操作,後兩個block不需要。目的是需要在關系子產品中為進一步的卷積層提供輸出特征映射。

 Relation子產品由兩個卷積塊和兩個全連接配接層組成,每一個卷積塊是64個filter大小為33,使用batch normalization,ReLU激活函數,22的max pooling。最後一個max pooling層輸出大小在Omniglot中為64,在miniImageNet中為6433=576。這兩個全連接配接層分别是8和1。所有全連接配接層的激活函數為ReLU,除了最後一層全連接配接層是Sigmoid(目的是生成合理的關系分數範圍)。

 Few-shot:Adam學習率設定為10-3,每100,000個情景後折半,端到端訓練,沒有額外的資料集。

 訓練時的資料是Omniglot,通過對原始資料旋轉90°,180°,270°來增加新類,選擇1200類并通過旋轉作為訓練集,423類通過旋轉作為測試集。并将大小resize為28*28。

Learning to compare: Relation network for few-shot learning.論文詳解

Learning to compare: Relation network for few-shot learning.開源代碼

【4】Sung, Flood, et al. “Learning to compare: Relation network for few-shot learning.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018.

2.2基于模型的小樣本學習(Model Based)

Model Based 方法旨在通過模型結構的設計快速在少量樣本上更新參數,直接建立輸入 x 和預測值 P 的映射函數

2.2.1基于記憶Memory的方法

通過在神經網絡上添加Memory來實作。Santoro等提出在網絡的輸入把上一次訓練的y label也作為輸入,并且添加了external memory存儲上一次訓練x的輸入,這使得下一次輸入後進行反向傳播時,可以讓y label和x建立聯系,使得之後的x能夠通過外部記憶擷取相關圖像進行比對來實作更好的預測。

小樣本學習(Few-shot Learning)在圖像領域的研究現狀1.introduction2. 小樣本學習(Few-shot Learning)

One-shot Learning with Memory-Augmented Neural Networks論文詳解

【5] Santoro, Adam, Bartunov, Sergey, Botvinick, Matthew, Wierstra, Daan, and Lillicrap, Timothy. Meta-learning with memory-augmented neural networks. In Proceedings of The 33rd International Conference on Machine Learning, pp. 1842–1850, 2016.

Meta-Learning論文筆記:Meta Network

【6】Munkhdalai T, Yu H. Meta Networks. arXiv preprint arXiv:1703.00837, 2017.

以Meta-Learning with memory-augmented neural networks這篇文章為例,我們看一下他的網絡結構:

2.2.2 Meta Network

2.3基于優化的小樣本學習(Optimization Based)

Optimization Based 方法認為普通的梯度下降方法難以在 few-shot 場景下拟合,是以通過調整優化方法來完成小樣本分類的任務。

Optimization as a model for few-shot learning論文詳解

[7] Ravi, Sachin, and Hugo Larochelle. “Optimization as a model for few-shot learning.” (2016).

Model-agnostic meta-learning for fast adaptation of deep networks論文詳解

[8] Finn, Chelsea, Pieter Abbeel, and Sergey Levine. “Model-agnostic meta-learning for fast adaptation of deep networks.” Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017.

繼續閱讀