作者丨耿瑞瑩、李永彬、黎檳華
單位丨阿裡巴巴智慧服務事業部小蜜北京團隊
分類非常常見,但如果每個類只有幾個標註樣本,怎麼辦呢?
筆者所在的阿裡巴巴小蜜北京團隊就面臨這個挑戰。我們打造了一個智慧對話開發平臺——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 時,也能較好地進行分類。
圖 1 展示的是一個 2-way 5-shot 的示例,可以看到 meta training 階段構建了一系列 meta-task 來讓模型學習如何根據 support set 預測 batch set 中的樣本的標簽;meta testing 階段的輸入資料的形式與訓練階段一致(2-way 5-shot),但是會在全新的類別上構建 support set 和 batch。
▲ 圖1:Few-shot Learning示例
在影象領域的研究現狀
早期的 Few-shot Learning 演演算法研究多集中在影象領域,如圖 2 所示,Few-shot Learning 模型大致可分為三類:Mode Based,Metric Based 和 Optimization Based。
▲ 圖2:Few-shot Learning模型分類
其中 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 時刻,模型輸入,也就是在當前時刻預測輸入樣本的類別,併在下一時刻給出真實的 label,並且添加了 external memory 儲存上一次的 x 輸入,這使得下一次輸入後進行反向傳播時,可以讓 y (label) 和 x 建立聯絡,使得之後的 x 能夠透過外部記憶獲取相關影象進行比對來實現更好的預測。
▲ 圖3:Memory Augmented Model
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 分類器。該方法是對樣本間距離分佈進行建模,使得同類樣本靠近,異類樣本遠離。下麵介紹相關的方法。
如圖 4 所示,孿生網路(Siamese Network)[4] 透過有監督的方式訓練孿生網路來學習,然後重用網路所提取的特徵進行 one/few-shot 學習。
▲ 圖4:Siamese Network
具體的網路是一個雙路的神經網路,訓練時,透過組合的方式構造不同的成對樣本,輸入網路進行訓練,在最上層透過樣本對的距離判斷他們是否屬於同一個類,並產生對應的機率分佈。在預測階段,孿生網路處理測試樣本和支撐集之間每一個樣本對,最終預測結果為支撐集上機率最高的類別。
相比孿生網路,匹配網路(Match Network)[2] 為支撐集和 Batch 集構建不同的編碼器,最終分類器的輸出是支撐集樣本和 query 之間預測值的加權求和。
如圖 5 所示,該文章也是在不改變網路模型的前提下能對未知類別生成標簽,其主要創新體現在建模過程和訓練過程上。對於建模過程的創新,文章提出了基於 memory 和 attention 的 matching nets,使得可以快速學習。
對於訓練過程的創新,文章基於傳統機器學習的一個原則,即訓練和測試是要在同樣條件下進行的,提出在訓練的時候不斷地讓網路只看每一類的少量樣本,這將和測試的過程是一致的。
具體地,它顯式的定義一個基於支撐集的分類器,對於一個新的資料,其分類機率由與支撐集 S 之間的距離度量得出:
其中 a 是基於距離度量的 attention score:
進一步,支撐集樣本 embedding 模型 g 能繼續最佳化,並且支撐集樣本應該可以用來修改測試樣本的 embedding 模型 f。
這個可以透過如下兩個方面來解決,即:1)基於雙向 LSTM 學習訓練集的 embedding,使得每個支撐樣本的 embedding 是其它訓練樣本的函式;2)基於 attention-LSTM 來對測試樣本 embedding,使得每個 Query 樣本的 embedding 是支撐集 embedding 的函式。文章稱其為 FCE (fully-conditional embedding)。
▲ 圖5:Match Network
原型網路(Prototype Network)[5] 基於這樣的想法:每個類別都存在一個原型表達,該類的原型是 support set 在 embedding 空間中的均值。然後,分類問題變成在 embedding 空間中的最近鄰。
如圖 6 所示,c1、c2、c3 分別是三個類別的均值中心(稱 Prototype),將測試樣本 x 進行 embedding 後,與這 3 個中心進行距離計算,從而獲得 x 的類別。
▲ 圖6:Prototype Network
文章採用在 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。
▲ 圖7:Relation Networks
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 中虛線左側和右側。
▲ 圖8:Optimization as a model
meta learner 的標的是在各種不同的學習任務上學出一個模型,使得可以僅用少量的樣本就能解決一些新的學習任務。這種任務的挑戰是模型需要結合之前的經驗和當前新任務的少量樣本資訊,並避免在新資料上過擬合。
Finn [8] 提出的方法使得可以在小量樣本上,用少量的迭代步驟就可以獲得較好的泛化效能,而且模型是容易 fine-tine 的。而且這個方法無需關心模型的形式,也不需要為 meta learning 增加新的引數,直接用梯度下降來訓練 learner。
文章的核心思想是學習模型的初始化引數使得在一步或幾步迭代後在新任務上的精度最大化。它學的不是模型引數的更新函式或是規則,它不侷限於引數的規模和模型架構(比如用 RNN 或 siamese)。它本質上也是學習一個好的特徵使得可以適合很多工(包括分類、回歸、增強學習),並透過 fine-tune 來獲得好的效果。
文章提出的方法,可以學習任意標準模型的引數,並讓該模型能快速適配。他們認為,一些中間表達更加適合遷移,比如神經網路的內部特徵。因此面向泛化性的表達是有益的。因為我們會基於梯度下降策略在新的任務上進行 finetune,所以標的是學習這樣一個模型,它能對新的任務從之前任務上快速地進行梯度下降,而不會過擬合。事實上,是要找到一些對任務變化敏感的引數,使得當改變梯度方向,小的引數改動也會產生較大的 loss。
在自然語言處理的研究現狀
早期的 Few-shot Learning 演演算法研究主要集中在小樣本影象識別的任務上,以 MiniImage 和 Omnigraffle 兩個資料集為代表。
近年來,在自然語言處理領域也開始出現 Few-shot Learning 的資料集和模型,相比於影象,文字的語意中包含更多的變化和噪聲,我們將在本節從資料集和模型兩個方面介紹 Few-shot Learning 在自然語言處理領域的進展,以及我們團隊基於對話工廠平臺所做的探索。
資料集
1. FewRel 資料集 [11] 由Han等人在EMNLP 2018提出,是一個小樣本關係分類資料集,包含64種關係用於訓練,16種關係用於驗證和20種關係用於測試,每種關係下包含700個樣本。
2. ARSC 資料集 [10] 由 Yu 等人在 NAACL 2018 提出,取自亞馬遜多領域情感分類資料,該資料集包含 23 種亞馬遜商品的評論資料,對於每一種商品,構建三個二分類任務,將其評論按分數分為 5、4、 2 三檔,每一檔視為一個二分類任務,則產生 23*3=69 個 task,然後取其中 12 個 task(4*3)作為測試集,其餘 57 個 task 作為訓練集。
3. ODIC 資料集來自阿裡巴巴對話工廠平臺的線上日誌,使用者會向平臺提交多種不同的對話任務,和多種不同的意圖,但是每種意圖只有極少數的標註資料,這形成了一個典型的 Few-shot Learning 任務,該資料集包含 216 個意圖,其中 159 個用於訓練,57 個用於測試。
主要模型
Gao [9] 等人提出文字與影象的一大區別在於其多樣性和噪音更大,因此提出一種基於混合註意力的原型網路結構,如圖 9 所示,首先使用 instance-level 的 attention 從支撐集中選出和 query 更為貼近的實體,同時降低噪聲實體所帶來的影響。
然後 feature-level 的實體能夠衡量特徵空間中的哪些維度對分類更為重要,從而為每種不同的關係都生成相適應的距離度量函式,從而使模型能夠有效處理特徵稀疏的問題。
▲ 圖9:基於混合註意力的原型網路
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 使用所有度量函式的線性組合作為任務適應的度量方式。
在對話工廠平臺的研究和應用
我們團隊基於目前 Metric Based 方法,提出了 Encoder-Induction-Relation 的三級框架,如圖 10 所示,Encoder 模組用於獲取每個樣本的語意表示,可以使用典型的 CNN、LSTM、Transformer 等結構,Induction 模組用於從支撐集的樣本語意中歸納出類別特徵,Relation 模組用於度量 query 和類別之間的語意關係,進而完成分類。
▲ 圖10:Encoder-Induction-Relation三級框架
如表 1 所示,之前的工作往往致力於學習不同的距離度量方式,而忽視了從樣本表示到類表示的建模。而在自然語言當中,由於每個人的語言習慣不同,同一個類別的不同表述往往有很多種,如果僅僅是簡單加和或取平均來作為類別的表示,這些與分類無關的幹擾資訊就會累加,影響最終的效果。
因此我們的工作顯式的建模了從樣本表示到類表示這一能力,在 ODIC 和 ARSC 兩個資料集上,超過了之前的 state-of-the-art 的模型,實驗結果如表 2 所示。
▲ 表1:Metric Based方法對比
▲ 表2:ODIC資料集實驗結果
此外,我們在 ODIC 資料集上逐漸增加訓練資料的類別數,如圖 11,在測試集上得到的效果會逐漸提升,這滿足了平臺級的語言理解所需要的可泛化、可持續學習的需求。
▲ 圖11: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] https://blog.csdn.net/qq_16234613/article/details/79902085
[15] https://lilianweng.github.io/lil-log/2018/11/30/meta-learning.html#learner-and-meta-learner