作者:耿瑞瑩 李永彬 黎槟華
機關:雲小蜜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。

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場景下拟合,是以通過調整優化方法來完成小樣本分類的任務。
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能夠通過外部記憶擷取相關圖像進行比對來實作更好的預測。
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學習。具體的網絡是一個雙路的神經網絡,訓練時,通過組合的方式構造不同的成對樣本,輸入網絡進行訓練,在最上層通過樣本對的距離判斷他們是否屬于同一個類,并産生對應的機率分布。在預測階段,孿生網絡處理測試樣本和支撐集之間每一個樣本對,最終預測結果為支撐集上機率最高的類别。
文章采用在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。
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的參數,進而得到預測的類别機率。這兩個過程分别如下圖中虛線左側和右側。
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在自然語言處理領域的進展,以及我們團隊基于對話工廠平台所做的探索。
資料集
- FewRel[11]資料集由Han等人在EMNLP 2018提出,是一個小樣本關系分類資料集,包含64種關系用于訓練,16種關系用于驗證和20種關系用于測試,每種關系下包含700個樣本。
- ARSC資料集由Yu 等人[10]在NAACL 2018提出,取自亞馬遜多領域情感分類資料,該資料集包含23種亞馬遜商品的評論資料,對于每一種商品,建構三個二分類任務,将其評論按分數分為5、4、 2三檔,每一檔視為一個二分類任務,則産生233=69個task,然後取其中12個task(43)作為測試集,其餘57個task作為訓練集。
- ODIC資料集來自阿裡巴巴對話工廠平台的線上日志,使用者會向平台送出多種不同的對話任務,和多種不同的意圖,但是每種意圖隻有極少數的标注資料,這形成了一個典型的few-shot learning任務,該資料集包含216個意圖,其中159個用于訓練,57個用于測試。
主要模型
Gao[9]等人提出文本與圖像的一大差別在于其多樣性和噪音更大,是以提出一種基于混合注意力的原型網絡結構,如圖9所示,首先使用instance-level的attention從支撐集中選出和query更為貼近的執行個體,同時降低噪聲執行個體所帶來的影響。然後feature-level的執行個體能夠衡量特征空間中的哪些次元對分類更為重要,進而為每種不同的關系都生成相适應的距離度量函數,進而使模型能夠有效處理特征稀疏的問題。
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使用所有度量函數的線性組合作為任務适應的度量方式。
Few-shot Learning 在對話工廠平台的研究和應用
我們團隊基于目前Metric Based方法,提出了Encoder-Induction-Relation的三級架構,如圖所示,Encoder子產品用于擷取每個樣本的語義表示,可以使用典型的CNN、LSTM、Transformer等結構,Induction子產品用于從支撐集的樣本語義中歸納出類别特征,Relation子產品用于度量query和類别之間的語義關系,進而完成分類。
如表所示,之前的工作往往緻力于學習不同的距離度量方式,而忽視了從樣本表示到類表示的模組化。而在自然語言當中,由于每個人的語言習慣不同,同一個類别的不同表述往往有很多種,如果僅僅是簡單加和或取平均來作為類别的表示,這些與分類無關的幹擾資訊就會累加,影響最終的效果,是以我們的工作顯式的模組化了從樣本表示到類表示這一能力,在ODIC和ARSC兩個資料集上,超過了之前的state-of-the-art的模型,實驗結果如表所示。
此外,我們在ODIC資料集上逐漸增加訓練資料的類别數,如圖,在測試集上得到的效果會逐漸提升,這滿足了平台級的語言了解所需要的可泛化、可持續學習的需求。
總結
本文從對話工廠平台的實際問題出發,對小樣本學習方法進行了系統梳理和研究,給出了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