天天看點

元學習與小樣本學習 | (2) Few-shot Learning 綜述

原文位址

分類非常常見,但如果每個類隻有幾個标注樣本,怎麼辦呢?

筆者所在的阿裡巴巴小蜜北京團隊就面臨這個挑戰。我們打造了一個智能對話開發平台——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(假設總共有N個類别,可能的元任務數有 C N C C_N^C CNC​),作為模型的支撐集(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。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

在圖像領域的研究現狀

早期的 Few-shot Learning 算法研究多集中在圖像領域,如圖 2 所示,Few-shot Learning 模型大緻可分為三類:Model 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 時刻,模型輸入 ( x t , y t − 1 ) (x_t,y_{t-1}) (xt​,yt−1​),也就是在目前時刻預測輸入樣本的類别,并在下一時刻給出真實的 label,并且添加了 external memory 存儲上一次的 x 輸入,這使得下一次輸入後進行反向傳播時,可以讓 y (label) 和 x 建立聯系,使得之後的 x 能夠通過外部記憶擷取相關圖像進行比對來實作更好的預測。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

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 學習。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

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

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

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

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

具體地,它顯式的定義一個基于支撐集 S = { ( x i , y i ) } i = 1 ∣ S ∣ S=\{(x_i,y_i)\}_{i=1}^{|S|} S={(xi​,yi​)}i=1∣S∣​的分類器,對于一個新的資料 x ^ \hat{x} x^,其分類機率由 x ^ \hat{x} x^與支撐集 S 之間的距離度量得出:

元學習與小樣本學習 | (2) Few-shot Learning 綜述

其中 a 是基于距離度量的 attention score:

元學習與小樣本學習 | (2) Few-shot Learning 綜述

進一步,支撐集樣本 embedding 模型 g 能繼續優化,并且支撐集樣本應該可以用來修改測試樣本的 embedding 模型 f。

這個可以通過如下兩個方面來解決,即:1)基于雙向 LSTM 學習訓練集的 embedding,使得每個支撐樣本的 embedding 是其它訓練樣本的函數;2)基于 attention-LSTM 來對測試樣本 embedding,使得每個 Query 樣本的 embedding 是支撐集 embedding 的函數。文章稱其為 FCE (fully-conditional embedding)。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

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

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

元學習與小樣本學習 | (2) Few-shot Learning 綜述

文章采用在 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。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

Optimization Based方法

Ravi 等人 [7] 研究了在少量資料下,基于梯度的優化算法失敗的原因,即無法直接用于 meta learning。

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

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

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

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

具體地,學習基于梯度下降的參數更新算法,采用 LSTM 表達 meta 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 的參數,進而得到預測的類别機率。這兩個過程分别如下圖 中虛線左側和右側。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

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 三檔,每一檔視為一個二分類任務,則産生 233=69 個 task,然後取其中 12 個 task(43)作為測試集,其餘 57 個 task 作為訓練集。
  3. ODIC 資料集來自阿裡巴巴對話工廠平台的線上日志,使用者會向平台送出多種不同的對話任務,和多種不同的意圖,但是每種意圖隻有極少數的标注資料,這形成了一個典型的 Few-shot Learning 任務,該資料集包含 216 個意圖,其中 159 個用于訓練,57 個用于測試。

主要模型

Gao [9] 等人提出文本與圖像的一大差別在于其多樣性和噪音更大,是以提出一種基于混合注意力的原型網絡結構,如下圖所示,首先使用 instance-level 的 attention 從支撐集中選出和 query 更為貼近的執行個體,同時降低噪聲執行個體所帶來的影響。

然後 feature-level 的執行個體能夠衡量特征空間中的哪些次元對分類更為重要,進而為每種不同的關系都生成相适應的距離度量函數,進而使模型能夠有效處理特征稀疏的問題。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

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 使用所有度量函數的線性組合作為任務适應的度量方式。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

在對話工廠平台的研究和應用

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

元學習與小樣本學習 | (2) Few-shot Learning 綜述

如下表所示,之前的工作往往緻力于學習不同的距離度量方式,而忽視了從樣本表示到類表示的模組化。而在自然語言當中,由于每個人的語言習慣不同,同一個類别的不同表述往往有很多種,如果僅僅是簡單加和或取平均來作為類别的表示,這些與分類無關的幹擾資訊就會累加,影響最終的效果。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

是以我們的工作顯式的模組化了從樣本表示到類表示這一能力,在 ODIC 和 ARSC 兩個資料集上,超過了之前的 state-of-the-art 的模型,實驗結果如下表所示。

元學習與小樣本學習 | (2) Few-shot Learning 綜述

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

元學習與小樣本學習 | (2) Few-shot Learning 綜述

總結

本文從對話工廠平台的實際問題出發,對小樣本學習方法進行了系統梳理和研究,給出了 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