小樣本綜述

對於“小樣本”這個詞,不同的文章中定義不同,比如齊國君的綜述[^9]中就將小樣本定義為一個更寬泛的場景,即在標記數據少甚至無標記數據場景下所做的研究工作都歸為在解決小樣本問題。而發表於ACM的一篇綜述[^10]則將小樣本和few-shot劃等號。本文主要借鑒的是齊國君綜述的劃分方法,也方便大體定位Few-Shot在深度學習領域的位置。

一、引言

深度學習方法在很多任務中表現好,多數情況是因為依賴於大量的標記數據,從而將模型訓練到接近人的表現。然而在許多任務中,收集大量標註數據是非常困難的,因此催生瞭很多不使用標註數據來獲得魯棒模型的研究工作,主要包括以下兩個大的思路方向:

  • 無標註數據:無標註數據通常來說獲取容易且數量較多,這些無標註數據的分佈對於一個新的學習任務來說可以起到一定的指引作用。無標註數據主要用在無監督和半監督方法中,至於具體采用哪種方法取決於那些額外的標註數據對於模型訓練是否有明顯的提升。無標註數據幫助模型形成不同任務之間的域間隙(domain gap),這是無監督和半監督中域適應方法(domain adaption)這一大類方法的核心思路。
  • 輔助任務:可以將小數據任務作為一個輔助任務的邊緣信息。也就是說有一個目標任務之後,找到一個相關的、類似的任務來輔助目標任務的訓練。其中包括zero-shot learning(無監督,無標註數據)和few-shot learning(半監督,少量的標記數據)。

1.1 Domain adaptation

在無監督和半監督領域都有應用到Domain adaptation的方法。

  • domain可以理解為場景,比如飛機采集的數據,和衛星采集的數據,就可能為兩個domain。在飛機domain訓練表現良好的模型,直接換到衛星domain裡表現就可能不好。
  • 特征空間可以理解為評測體系,好比我要區分人和樹,那麼特征空間裡的特征隻需要包括是否有五官、是否有四肢之類簡單的特征就足夠區分。如果要區分人和人,僅憑五官和是否有四肢這些簡單特征顯然就不足以區分,也就是說在區分人和樹那個特征空間中,不能完成人和人的分類任務
  • domain和特征空間:從上邊對domain和特征空間的解釋可以分析出,不同的domain會有與其相適應的特征空間,而如果目標任務或者數據來自於不同的domain,就需要domain adaption方法,將source domain和target domain的數據映射到同一個特征空間,於是在特征空間中對source domain訓練的目標函數,就可以遷移到target domain上,提高target domain上的準確率。

人類能夠輕易的適應新的domain並識別熟悉的目標,但是檢測模型在更換domain之後,會有明顯的準確率下降。一些之前的專註於域遷移的深度神經網絡模型主要是無監督域遷移方法(UDA),並且需要大量的目標域數據以及耗費大量時間,然而UDA和其他的無監督方法一樣,隻能處理簡單的分類任務,對於目標檢測等等需要精確的位置信息以及高分辨率信息的復雜任務,無法滿足需求。

而監督域遷移方法(SDA)基於論文[^4]的研究,有限的目標樣本仍然可以在很大程度上反映目標域的特征,比如照片、天氣狀況、外觀等等。然而,僅使用少量目標數據樣本來學習域不變表示非常具有挑戰性,並且檢測器需要細粒度的高分辨率特征來進行可靠的定位和分類。

1.2 無監督方法

無監督方法主要是通過尋求學習到對於數據足夠泛化的表示(representation),來完成各種深度學習任務。比如VAE

這種純粹基於數據的方法,目前隻能處理比較簡單的任務,同時應用面比較窄對環境要求苛刻,主要停留在科研階段。

與純無監督的方法相比,zero-shot learning 通常通過詞嵌入(word embedding)和視覺屬性探討概念之間的語義相關性,並使用它們將知識從源轉移到目標概念。 鑒於一個新的樣本,ZSL可以將其分配給看不見的概念(concept),其語義嵌入最接近樣本的表示。 ZSL是無監督的,因為ZSL沒有使用待識別類的標記樣本訓練模型。

ZSL就是希望我們的模型能夠對其從沒見過的類別進行分類,讓機器具有推理能力,實現真正的智能。其中零次(Zero-shot)是指對於要分類的類別對象,一次也不學習。

假設我們的模型已經能夠識別馬,老虎和熊貓瞭,現在需要該模型也識別斑馬,那麼我們需要告訴模型,怎樣的對象才是斑馬,但是並不能直接讓模型看見斑馬。所以模型需要知道的信息是馬的樣本、老虎的樣本、熊貓的樣本和樣本的標簽,以及關於前三種動物和斑馬的描述。這樣的過程就是語義嵌入或者詞嵌入。

1.3 半監督方法

半監督方法同時使用未標記和有標記的樣本來訓練模型。 該想法在於,無標註的數據提供瞭數據通常情況下在特征空間的分佈信息,並且可以通過探索該分佈來訓練強大的模型。 例如,魯棒模型應該在隨機變換(如平移、旋轉、甚至隨機擾動)下進行穩定和平滑的預測。在這個基礎上加入一些監督信息對模型進行校正,從而實現更好的效果。

Few-Shot learning(FSL)就是半監督方法中比較熱門的一個方向。

二、Few-shot Learning

2.1 問題定義

人類非常擅長通過極少量的樣本識別一個新物體,比如小孩子隻需要書中的一些圖片就可以認識什麼是“斑馬”,什麼是“犀牛”。在人類的快速學習能力的啟發下,研究人員希望機器學習模型在學習瞭一定類別的大量數據後,對於新的類別,隻需要少量的樣本就能快速學習,這就是 Few-shot 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 時,也能較好地進行分類。

下圖展示的是一個 3-way 2-shot 的示例,可以看到 meta training 階段構建瞭一系列 meta-task 來讓模型學習如何根據 support set 預測 batch set 中的樣本的標簽;meta testing 階段的輸入數據的形式與訓練階段一致(3-way 2-shot),但是會在全新的類別上構建 support set 和 batch。

Few-shot Learning(FSL)和Zero-shot Learning(ZSL)類似的一點在於,它同樣將不同的concept,共享嵌入的特征表示(embedding representation)。不同的是,FSL可以從收集的基礎concept開始訓練元模型,之後可以用新添加的樣本(也就是few-shot中的“few”)來更新模型參數。

2.2 few-shot處理分類問題

早期的 Few-shot Learning 算法研究多集中在圖像領域,如下圖所示,Few-shot Learning **模型大致可分為三類:**Mode Based,Metric Based 和 Optimization Based。

其中 Model Based 方法旨在通過模型結構的設計快速在少量樣本上更新參數,直接建立輸入 x 和預測值 P 的映射函數;Metric Based 方法通過度量 batch 集中的樣本和 support 集中樣本的距離,借助最近鄰的思想完成分類;Optimization Based 方法認為普通的梯度下降方法難以在 few-shot 場景下擬合,因此通過調整優化方法來完成小樣本分類的任務。

基於模型的方法

Meta Network [^1] 的快速泛化能力源自其“快速權重”的機制,在訓練過程中產生的梯度被用來作為快速權重的生成。模型包含一個 meta learner 和一個 base learner,meta learner 用於學習 meta task 之間的泛化信息,並使用 memory 機制保存這種信息,base learner 用於快速適應新的 task,並和 meta learner 交互產生預測輸出。

基於距離度量學習(metric learning)的方法

如果模型能夠準確衡量兩個圖像的相似性(距離),那麼它同樣也能區分沒有見過的無標註圖像的距離。

如果在 Few-shot Learning 的任務中去訓練普通的基於 cross-entropy 的神經網絡分類器,那麼幾乎肯定是會過擬合,因為神經網絡分類器中有數以萬計的參數需要優化。

相反,很多非參數化的方法(最近鄰、K-近鄰、Kmeans)是不需要優化參數的,因此可以在 meta-learning 的框架下構造一種可以端到端訓練的 few-shot 分類器。該方法是對樣本間距離分佈進行建模,使得同類樣本靠近,異類樣本遠離。實現方法通常為,在訓練過程中以距離或度量為條件對少數標記實例進行預測。常用的距離度量包括consine距離、歐氏距離、卷積網絡相似模型、ridge regression、圖神經網絡。

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

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

原型網絡(Prototype Network)[^2] 基於這樣的想法:每個類別都存在一個原型表達,該類的原型是 support set 在 embedding 空間中的均值。然後,分類問題變成在 embedding 空間中的最近鄰。

如圖 6 所示,c1、c2、c3 分別是三個類別的均值中心(稱 Prototype),將測試樣本 x 進行 embedding 後,與這 3 個中心進行距離計算,從而獲得 x 的類別。

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

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

Optimization Based方法

Ravi 等人 [^7] 研究瞭在少量數據下,基於梯度的優化算法失敗的原因,即無法直接用於 meta learning。

首先,這些梯度優化算法包括 momentum, adagrad, adadelta, ADAM 等,無法在幾步內完成優化,特別是在非凸的問題上,多種超參的選取無法保證收斂的速度。

其次,不同任務分別隨機初始化會影響任務收斂到好的解上。雖然 finetune 這種遷移學習能緩解這個問題,但當新數據相對原始數據偏差比較大時,遷移學習的性能會大大下降。我們需要一個系統的學習通用初始化,使得訓練從一個好的點開始,它和遷移學習不同的是,它能保證該初始化能讓 finetune 從一個好的點開始。

文章學習的是一個模型參數的更新函數或更新規則。它不是在多輪的 episodes 學習一個單模型,而是在每個 episode 學習特定的模型。

具體地,學習基於梯度下降的參數更新算法,采用 LSTM 表達 meta learner,用其狀態表達目標分類器的參數的更新,最終學會如何在新的分類任務上,對分類器網絡(learner)進行初始化和參數更新。這個優化算法同時考慮一個任務的短時知識和跨多個任務的長時知識。

文章設定目標為通過少量的迭代步驟捕獲優化算法的泛化能力,由此 meta learner 可以訓練讓 learner 在每個任務上收斂到一個好的解。另外,通過捕獲所有任務之前共享的基礎知識,進而更好地初始化 learner。

以訓練 miniImage 數據集為例,訓練過程中,從訓練集(64 個類,每類 600 個樣本)中隨機采樣 5 個類,每個類 5 個樣本,構成支撐集,去學習 learner;然後從訓練集的樣本(采出的 5 個類,每類剩下的樣本)中采樣構成 Batch 集,集合中每類有 15 個樣本,用來獲得 learner 的 loss,去學習 meta leaner。

測試時的流程一樣,從測試集(16 個類,每類 600 個樣本)中隨機采樣 5 個類,每個類 5 個樣本,構成支撐集 Support Set,去學習 learner;然後從測試集剩餘的樣本(采出的 5 個類,每類剩下的樣本)中采樣構成 Batch 集,集合中每類有 15 個樣本,用來獲得 learner 的參數,進而得到預測的類別概率。這兩個過程分別如圖 8 中虛線左側和右側。

meta learner 的目標是在各種不同的學習任務上學出一個模型,使得可以僅用少量的樣本就能解決一些新的學習任務。這種任務的挑戰是模型需要結合之前的經驗和當前新任務的少量樣本信息,並避免在新數據上過擬合。

Finn [^8] 提出的方法使得可以在小量樣本上,用少量的迭代步驟就可以獲得較好的泛化性能,而且模型是容易 fine-tine 的。而且這個方法無需關心模型的形式,也不需要為 meta learning 增加新的參數,直接用梯度下降來訓練 learner。

文章的核心思想是學習模型的初始化參數使得在一步或幾步迭代後在新任務上的精度最大化。它學的不是模型參數的更新函數或是規則,它不局限於參數的規模和模型架構(比如用 RNN 或 siamese)。它本質上也是學習一個好的特征使得可以適合很多任務(包括分類、回歸、增強學習),並通過 fine-tune 來獲得好的效果。

文章提出的方法,可以學習任意標準模型的參數,並讓該模型能快速適配。他們認為,一些中間表達更加適合遷移,比如神經網絡的內部特征。因此面向泛化性的表達是有益的。因為我們會基於梯度下降策略在新的任務上進行 finetune,所以目標是學習這樣一個模型,它能對新的任務從之前任務上快速地進行梯度下降,而不會過擬合。事實上,是要找到一些對任務變化敏感的參數,使得當改變梯度方向,小的參數改動也會產生較大的 loss。

few-shot的baseline范式

2.3 few-shot目標檢測

現代卷積神經網絡 (CNN) 的發展在一般目標檢測 方面取得瞭巨大進步。 深度卷積網絡檢測模型需要大量帶註釋的訓練數據才能使其性能飽和 。在小樣本學習場景中,深度卷積網絡檢測模型會遭受更嚴重的過擬合,而且小樣本檢測和一般目標檢測之間的差距大於小樣本圖像分類中的相應差距 。 如下表所示:

Few-shot Adaptive Faster R-CNN

近兩年few-shot應用到目標檢測任務中的工作有2019年的Few-shot Adaptive Faster R-CNN[^4],這篇工作主要創新點是設計瞭一個特征匹配機制以及強正則化。使用faster-rcnn作為backbone,結合瞭Domain adaption方法,並且由於結合瞭監督信息,相較於UDA方法動輒數萬步的訓練,論文中的Domain adaption方法隻需要數百步的回傳,提升瞭計算速度。所提出的SMFR方法使模型能夠避免從少數目標數據樣本中過度擬合,使得模型訓練更穩定。

這是論文裡的3way-8shot的結果表:

Frustratingly Simple Few-Shot Object Detection

這篇文章同樣利用瞭faster-rcnn作為backbone。采用的是分類中之前常見的先用base數據集訓練模型,然後固定一部分參數再fine-tune的方法。

訓練分為兩步,第一步先在數據集的基礎類上訓練整個物體探測器,例如Faster R-CNN,然後第二步將少量的新類和基礎類組成一個迷你數據集訓練模型,這時候隻需微調探測器的最後一個層,凍結模型的其他參數。 在微調階段,提出瞭一種實例級特征歸一化方法來優化檢測框的分類。

論文中表示他們的方法相比其他的基於meta- learning的方法提升瞭2~20個百分點:

FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding

這是2021年CVPR發表的最新的方法,主要是基於Frustratingly Simple Few-Shot Object Detection這篇論文方法以及思路的延續和改進。在這項工作中觀察並解決瞭基於微調(fine-tune)的方法的本質弱點——不斷將新實例錯誤標記為易混淆的類別,並將小樣本檢測性能提高到新的SOTA。

這篇文章發現在few-shot應用到目標檢測時,模型其實能夠相對比較好的區分新類和背景,影響準確率的往往是相似類之間的誤分類問題。

設計瞭一個CPE loss,借鑒瞭對抗學習的思想,能夠使得特征空間裡不同類之間的分佈離得更遠,其實也是一種度量學習類的方法:

這是第一個在few-shot目標檢測 AP50中實現大於50%準確率的方法

參考文獻

[^1]: Munkhdalai, Tsendsuren, and Hong Yu. "Meta networks." Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017. [^2]: Snell, Jake, Kevin Swersky, and Richard Zemel. "Prototypical networks for few-shot learning." Advances in Neural Information Processing Systems. 2017. [^3]: 《Low-shot learning from imaginary data》 [^4]: Few-shot Adaptive Faster R-CNN [^5]: Siamese neural networks for one-shot image recognition [^6]: 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. [^7]: Ravi, Sachin, and Hugo Larochelle. "Optimization as a model for few-shot learning." (2016). [^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. [^9]: Small Data Challenges in Big Data Era: A Survey of Recent Progress on Unsupervised and Semi-Supervised Methods [^10]: Generalizing from a Few Examples: A Survey on Few-shot Learning

赞(0)