大數據

少樣本學習(Few-shot Learning)最新進展

作者:耿瑞瑩 李永彬 黎檳華
單位:雲小蜜Conversational AI團隊

分類問題非常常見,但如果每個類只有幾個標註樣本,怎麼辦呢?筆者所在的阿里巴巴小蜜北京團隊就面臨這個挑戰。我們打造了一個智能對話開發平臺--Dialog Studio,以賦能第三方開發者來開發各自業務場景中的任務型對話,其中一個重要功能就是對意圖進行分類。大量平臺用戶在創建一個新對話任務時,並沒有大量標註數據,每個意圖往往只有幾個或十幾個樣本。面對這類問題,有一個專門的機器學習分支——few-shot learning來進行研究和解決。過去一年,我們對few-shot learning進行了系統的梳理和研究,將few-shot learning和capsule network融合,提出了induction network,在文本分類上做到了新的state-of-the-art。創新總是基於對已有成果的梳理和思考,這篇綜述算是一個小結,寫出來和大家一起分享,一起討論。

本文首先介紹few-shot learning的定義;由於最近幾年few-shot learning在圖像領域的進展領先於在自然語言處理領域,所以第二部分結合其在圖像處理領域的研究進展,詳細介紹few-shot learning的三類典型方法及每種方法的代表性模型;接下來介紹在自然語言處理領域的研究進展以及我們對metric-based的方法進行系統總結後提出的few-shot learning framework。

問題定義

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

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

fsl-1.png

Few-shot Learning 在圖像領域的研究現狀

早期的Few-shot Learning算法的研究多集中在圖像領域,如圖所示,few-shot learning 模型大致可分為三類: Mode Based,Metric Based 和Optimization Based。其中Model Based方法旨在通過模型結構的設計快速在少量樣本上更新參數,直接建立輸入x和預測值P的映射函數;Metric Based方法通過度量batch集中的樣本和support 集中樣本的距離,藉助最近鄰的思想完成分類;Optimization Based方法認為普通的梯度下降方法難以在few-shot場景下擬合,因此通過調整優化方法來完成小樣本分類的任務。

fsl-2.png

Model Based方法

Santoro等人[3]提出使用記憶增強的方法來解決few-shot learning任務。基於記憶的神經網絡方法早在2001年被證明可以用於meta-learning。他們通過權重更新來調節bias,並且通過學習將表達快速緩存到記憶中來調節輸出。然而,利用循環神經網絡的內部記憶單元無法擴展到需要對大量新信息進行編碼的新任務上。因此,需要讓存儲在記憶中的表達既要穩定又要是元素粒度訪問的,前者是說當需要時就能可靠地訪問,後者是說可選擇性地訪問相關的信息;另外,參數數量不能被內存的大小束縛。神經圖靈機(NTMs)和記憶網絡就符合這種必要條件。

文章基於神經網絡圖靈機(NTMs)的思想,因為NTMs能通過外部存儲(external memory)進行短時記憶,並能通過緩慢權值更新來進行長時記憶,NTMs可以學習將表達存入記憶的策略,並如何用這些表達來進行預測。由此,文章方法可以快速準確地預測那些只出現過一次的數據。文章基於LSTM等RNN的模型,將數據看成序列來訓練,在測試時輸入新的類的樣本進行分類。具體地,在t時刻,模型輸入(x_t,y_(t-1) ),也就是在當前時刻預測輸入樣本的類別,並在下一時刻給出真實的label,並且添加了external memory存儲上一次的x輸入,這使得下一次輸入後進行反向傳播時,可以讓y (label)和x建立聯繫,使得之後的x能夠通過外部記憶獲取相關圖像進行比對來實現更好的預測。

fsl-3.png

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

Metric Based 方法

如果在few-shot learning的任務中去訓練普通的基於cross-entropy的神經網絡分類器,那麼幾乎肯定是會過擬合,因為神經網絡分類器中有數以萬計的參數需要優化,相反,很多非參數化的方法(最近鄰、K-近鄰、Kmeans)是不需要優化參數的,因此可以在meta-learning的框架下構造一種可以端到端訓練的few-shot分類器。該方法是對樣本間距離分佈進行建模,使得同類樣本靠近,異類樣本遠離。下面介紹相關的方法。

如圖所示,孿生網絡(Siamese Network)[4]通過有監督的方式訓練孿生網絡來學習,然後重用網絡所提取的特徵進行one/few-shot學習。具體的網絡是一個雙路的神經網絡,訓練時,通過組合的方式構造不同的成對樣本,輸入網絡進行訓練,在最上層通過樣本對的距離判斷他們是否屬於同一個類,併產生對應的概率分佈。在預測階段,孿生網絡處理測試樣本和支撐集之間每一個樣本對,最終預測結果為支撐集上概率最高的類別。

fsl-4.png

相比孿生網絡,匹配網絡(Match Network)[2]為支撐集和Batch集構建不同的編碼器,最終分類器的輸出是支撐集樣本和query之間預測值的加權求和。如圖所示,該文章也是在不改變網絡模型的前提下能對未知類別生成標籤,其主要創新體現在建模過程和訓練過程上。對於建模過程的創新,文章提出了基於memory和attention的matching nets,使得可以快速學習。對於訓練過程的創新,文章基於傳統機器學習的一個原則,即訓練和測試是要在同樣條件下進行的,提出在訓練的時候不斷地讓網絡只看每一類的少量樣本,這將和測試的過程是一致的。

fsl-5.png

原型網絡(Prototype Network)[5]基於這樣的想法:每個類別都存在一個原型表達,該類的原型是support set在embedding空間中的均值。然後,分類問題變成在embedding空間中的最近鄰。如圖6所示,c1、c2、c3分別是三個類別的均值中心(稱Prototype),將測試樣本x進行embedding後,與這3箇中心進行距離計算,從而獲得x的類別。

fsl-6.png

文章採用在Bregman散度下的指數族分佈的混合密度估計,文章在訓練時採用相對測試時更多的類別數,即訓練時每個episodes採用20個類(20 way),而測試對在5個類(5 way)中進行,其效果相對訓練時也採用5 way的提升了2.5個百分點。

前面介紹的幾個網絡結構在最終的距離度量上都使用了固定的度量方式,如cosine,歐式距離等,這種模型結構下所有的學習過程都發生在樣本的embedding階段。而Relation Network[6]認為度量方式也是網絡中非常重要的一環,需要對其進行建模,所以該網絡不滿足單一且固定的距離度量方式,而是訓練一個網絡來學習(例如CNN)距離的度量方式,在loss方面也有所改變,考慮到relation network更多的關注relation score,更像一種迴歸,而非0/1分類,所以使用了MSE取代了cross-entropy。

fsl-7.png

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的參數,進而得到預測的類別概率。這兩個過程分別如下圖中虛線左側和右側。

fsl-8.png

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

Finn[8]提出的方法使得可以在小量樣本上,用少量的迭代步驟就可以獲得較好的泛化性能,而且模型是容易fine-tine的。而且這個方法無需關心模型的形式,也不需要為meta learning增加新的參數,直接用梯度下降來訓練learner。文章的核心思想是學習模型的初始化參數使得在一步或幾步迭代後在新任務上的精度最大化。它學的不是模型參數的更新函數或是規則,它不侷限於參數的規模和模型架構(比如用RNN或siamese)。它本質上也是學習一個好的特徵使得可以適合很多任務(包括分類、迴歸、增強學習),並通過fine-tune來獲得好的效果。文章提出的方法,可以學習任意標準模型的參數,並讓該模型能快速適配。他們認為,一些中間表達更加適合遷移,比如神經網絡的內部特徵。因此面向泛化性的表達是有益的。因為我們會基於梯度下降策略在新的任務上進行finetune,所以目標是學習這樣一個模型,它能對新的任務從之前任務上快速地進行梯度下降,而不會過擬合。事實上,是要找到一些對任務變化敏感的參數,使得當改變梯度方向,小的參數改動也會產生較大的loss。

Few-shot Learning 在自然語言處理領域的研究現狀

早期的few-shot learning算法的研究主要集中在小樣本圖像識別的任務上,以MiniImage和Omnigraffle兩個數據集為代表。近年來在自然語言處理領域也開始出現few-shot learning的數據集和模型,相比於圖像,文本的語義中包含更多的變化和噪聲,我們將在本節從數據集和模型兩個方面介紹few-shot learning在自然語言處理領域的進展,以及我們團隊基於對話工廠平臺所做的探索。

數據集

  1. FewRel[11]數據集由Han等人在EMNLP 2018提出,是一個小樣本關係分類數據集,包含64種關係用於訓練,16種關係用於驗證和20種關係用於測試,每種關係下包含700個樣本。
  2. ARSC數據集由Yu 等人[10]在NAACL 2018提出,取自亞馬遜多領域情感分類數據,該數據集包含23種亞馬遜商品的評論數據,對於每一種商品,構建三個二分類任務,將其評論按分數分為5、4、 2三檔,每一檔視為一個二分類任務,則產生233=69個task,然後取其中12個task(43)作為測試集,其餘57個task作為訓練集。
  3. ODIC數據集來自阿里巴巴對話工廠平臺的線上日誌,用戶會向平臺提交多種不同的對話任務,和多種不同的意圖,但是每種意圖只有極少數的標註數據,這形成了一個典型的few-shot learning任務,該數據集包含216個意圖,其中159個用於訓練,57個用於測試。

主要模型

Gao[9]等人提出文本與圖像的一大區別在於其多樣性和噪音更大,因此提出一種基於混合注意力的原型網絡結構,如圖9所示,首先使用instance-level的attention從支撐集中選出和query更為貼近的實例,同時降低噪聲實例所帶來的影響。然後feature-level的實例能夠衡量特徵空間中的哪些維度對分類更為重要,從而為每種不同的關係都生成相適應的距離度量函數,從而使模型能夠有效處理特徵稀疏的問題。

fsl-9.png

Yu[10]等人指出在圖像領域的few-shot learning任務中,比如Omniglot和miniImage 數據集,所有的數據都是從同一個大的數據集採樣而來,也就是說所有的meta-task都是來自同一個領域,所以相關性是很強的。所以之前的few-shot learning方法只需使用一個meta model即可解決剩餘的few-shot任務。但是在現實場景當中,不同的meta task可能來自完全不同的領域,因此使用單獨的度量方式不足以衡量所有的meta task。
在這種場景下,Yu提出使用多種度量方式融合來解跨領域的few-shot learning問題。在訓練階段,meta learner通過任務聚類選擇和結合多種度量方式來學習目標任務,不同領域的meta task首先通過聚類來劃分,因此同一個簇內的task可以認為是相關的,然後在該簇中訓練一個深度神經網絡作為度量函數,這種機制保證了只有在同一個簇中的task才會共享度量函數。在測試階段,為每個test task使用所有度量函數的線性組合作為任務適應的度量方式。

fsl-10.png

Few-shot Learning 在對話工廠平臺的研究和應用

我們團隊基於目前Metric Based方法,提出了Encoder-Induction-Relation的三級框架,如圖所示,Encoder模塊用於獲取每個樣本的語義表示,可以使用典型的CNN、LSTM、Transformer等結構,Induction模塊用於從支撐集的樣本語義中歸納出類別特徵,Relation模塊用於度量query和類別之間的語義關係,進而完成分類。

fsl-11.png

如表所示,之前的工作往往致力於學習不同的距離度量方式,而忽視了從樣本表示到類表示的建模。而在自然語言當中,由於每個人的語言習慣不同,同一個類別的不同表述往往有很多種,如果僅僅是簡單加和或取平均來作為類別的表示,這些與分類無關的干擾信息就會累加,影響最終的效果,因此我們的工作顯式的建模了從樣本表示到類表示這一能力,在ODIC和ARSC兩個數據集上,超過了之前的state-of-the-art的模型,實驗結果如表所示。

fsl-12.png

此外,我們在ODIC數據集上逐漸增加訓練數據的類別數,如圖,在測試集上得到的效果會逐漸提升,這滿足了平臺級的語言理解所需要的可泛化、可持續學習的需求。

fsl-13.png

總結

本文從對話工廠平臺的實際問題出發,對小樣本學習方法進行了系統梳理和研究,給出了few-shot learning的定義,綜述了其在圖像和NLP領域的研究現狀。針對Metric Based系列方法,我們提出了統一的Encode-Induction-Relation描述框架,介紹了我們團隊在使用few-shot learning解決平臺級自然語言理解所做的工作,即顯式建模從樣本表示到類表示的歸納能力。

參考文獻

[1] Brenden M. Lake, Ruslan Salakhutdinov, Jason Gross, and Joshua B. Tenenbaum. One shot learning of simple visual concepts. In CogSci, 2011.
[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.
[3] Santoro A, Bartunov S, Botvinick M, et al. One-shot learning with memory-augmented neural networks[J]. arXiv preprint arXiv:1605.06065, 2016.
[4] Koch, Gregory, Richard Zemel, and Ruslan Salakhutdinov. "Siamese neural networks for one-shot image recognition." ICML Deep Learning Workshop. Vol. 2. 2015.
[5] Snell, Jake, Kevin Swersky, and Richard Zemel. "Prototypical networks for few-shot learning." Advances in Neural Information Processing Systems. 2017.
[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] Gao, Tianyu, et al. "Hybrid Attention-Based Prototypical Networks for Noisy Few-Shot Relation Classification." (2019).
[10] Yu, Mo, et al. "Diverse few-shot text classification with multiple metrics." arXiv preprint arXiv:1805.07513 (2018).
[11] Han, Xu, et al. "FewRel: A Large-Scale Supervised Few-Shot Relation Classification Dataset with State-of-the-Art Evaluation." arXiv preprint arXiv:1810.10147 (2018).
[12] Munkhdalai, Tsendsuren, and Hong Yu. "Meta networks." Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017.
[13] Geng R, Li B, Li Y, et al. Few-Shot Text Classification with Induction Network[J]. arXiv preprint arXiv:1902.10482, 2019.
[14] blog: https://blog.csdn.net/qq_16234613/article/details/79902085
[15] blog: https://lilianweng.github.io/lil-log/2018/11/30/meta-learning.html#learner-and-meta-learner

Leave a Reply

Your email address will not be published. Required fields are marked *