加了元学习之后,少样本学习竟然可以变得这么简单!
文 | Rukawa_Y
編 | Sheryc_王蘇,小軼
去年年初 GPT-3 的論文在 arxiv 上出現,論文名為 “Language Models are Few-Shot Learners”,引起一陣轟動。除了前無古人的模型規模外,最抓人眼球的是, GPT-3 能夠不需要 fine-tuning 進一步更新參數,直接解決下游任務。
這種完全依賴語言模型從預訓練過程中習得的推理能力,通過上下文語境(task description)直接解決新任務的方式,叫做語境學習(in-context learning)。然而利用語境學習讓模型學會處理一個新的任務的方法效果往往比不上傳統的微調,預測的結果也有很大的方差,并且如何把多種多樣的任務轉化為語境的模版(Prompt)是很難被設計出來的。
近期,Facebook AI 實驗室所發表的論文 MetalCL: Learning to learn in context ,提出了一種訓練方法MetalCL,通過元學習的方式讓模型更加簡單有效地進行語境學習——不需要在輸入中提供任務描述模板,只需提供訓練樣例和目標輸入。論文作者希望通過在元訓練任務上進行多任務學習,讓模型能夠自動學習到如何通過輸入中的少量訓練樣本重構任務信息,從而省去人工設計模板的麻煩。
論文標題
MetaICL: Learning to Learn In Context
論文鏈接
https://arxiv.org/pdf/2110.15943.pdf
Arxiv訪問慢的小伙伴也可以在 【夕小瑤的賣萌屋】訂閱號后臺回復關鍵詞 【1219】 下載論文PDF~
語境學習的幾種情況
根據GPT-3的論文,語境學習分為 3 種情形,分別是:零樣本學習(Zero-shot Learning)、單樣本學習(One-shot Learning)和少樣本學習(Few-shot Learning)。
零樣本學習(Zero-shot Learning):在模型輸入中只提供任務描述和測試樣例輸入,得到測試樣例輸出;
單樣本學習(One-shot Learning):在模型輸入中提供任務描述、一條訓練樣例和測試樣例輸入,得到測試樣例輸出;
少樣本學習(Few-shot Learning):在模型輸入中提供任務描述、少量訓練樣例和測試樣例輸入,得到測試樣例輸出。
GPT-3 的論文的實驗結果中,表明 GPT-3 這3種情況均取得了一定的效果,這里有不再展開了,有興趣的同學可以看看 GPT-3 的論文。
MetaICL介紹
了解了語境學習之后,相信大家都會被這種通過推理就能學習一個新的任務的,并且無需任何參數更新的學習方式所吸引。然而利用語境學習讓模型學會處理一個新的任務的方法效果往往比不上傳統的微調,預測的結果也有很大的方差,并且如何把多種多樣的任務轉化為語境的模版(Prompt)是很難被設計出來的。基于這些挑戰,也就是如何讓模型在語境學習中所學習到的新的任務效果更好,MetaICL應運而生了。
MetaICL,全稱Meta-training for In-context Learning。其中先對模型進行元訓練(Meta-training),讓模型學會如何根據數據集自動調整語境學習策略,然后再進行語境學習。在Meta-training的過程中,論文的作者使用了數十個不同領域的NLP的任務作為元訓練任務(Meta-training Task)對于模型進行訓練,來提升模型進行少樣本學習的能力。在這一訓練過程中,MetaICL的優點在于不需要在輸入中提供任務描述模板,只需提供訓練樣例和目標輸入:論文作者希望通過在元訓練任務上進行多任務學習的策略,讓模型能夠自動學習到如何通過輸入中的少量訓練樣本重構任務信息,從而省去人工設計模板的麻煩。
MetalCL的具體的訓練過程是:對于每一個元訓練任務,利用K-shot Learning,將元訓練任務中隨機抽取出的任務中的個樣本的和,和第個樣本的連接起來作為一個輸入,輸入到模型中,預測對應的第個樣本的。其中,前個樣本相當于提供了對于任務的描述信息。MetalCL推測的過程也采用了與訓練過程相同的輸入方式來處理預測的樣本:不需要任務描述,只需將該任務的個訓練樣本與目標輸入相拼接即可。
總結一下MetalCL的流程如下:
Meta-training
從準備好的大量的元訓練任務中,隨機抽取出一個任務;
從任務中抽取出個樣例 ;
利用模型最大化概率,loss損失函數為交叉熵。
Interence
對于一個meta-training中沒有見過的任務,獲取個樣例 和預測的輸入 ;
求 ,其中 是輸出 所有可能的結果的集合。
除此之外,論文的作者還借鑒了在少樣本的文本分類任務中的一種噪聲通道[1]的方式,將元訓練過程中的目標函數變換為 。即在噪聲通道模型中,,將定義為,那么目標函數則變換為最大化概率,即最大化概率,對應在推理階段模型則是計算。
實驗結果
論文中作者使用GPT-2 large進行MetalCL訓練,元訓練過程中一共使用了142個元訓練數據集,這142個數據集包含了文本分類、QA、NLI和paraphrase detection等任務。論文作者在實驗過程中對于Meta-training采取了7種設置,對Target采取了5種設置,并且在Meta-training和Target所使用的任務是沒有交集的,具體的設置如下:
HR-LR:從大數據集遷移至小數據集,在meta-training過程中使用HR(High resource)即大于等于10000訓練樣本的數據集,在target的過程中使用LR(Low resource)即小于10000的數據集。
Classification/QA:元訓練與預測使用相似任務,在meta-training過程中使用Classification和QA的數據集,在target的過程中也使用Classification和QA的數據集。
NLI/Paraphrase:元訓練與預測使用不相似任務,在meta-training過程中使用Non-Classification、Non-QA、Non-NLI、Non-Paraphrase的數據集,在target過程中使用Classification、QA、NLI、Paraphrase的數據集。
Meta-train和Target所采取的設置總結如下,見表格:
最終實驗結果里作者將MetaICL和Channel MetalCL同其他baseline做了比較,實驗結果如下:
表格中各個method的意義如下:
0-shot:使用預訓練語言模型直接做零樣本推斷
In-context:使用預訓練語言模型進行few-shot的推斷
PMI 0-shot, PMI In-context:使用PMI[2]方式的零樣本和few-shot的推斷
Channel 0-shot,Channel In-context:使用通道模型的零樣本推斷和使用通道模型的few-shot推斷
Multi-task 0-shot:使用meta-training對于預訓練模型進行訓練然后進行零樣本推斷
Channel Multi-task 0-shot:使用通道模型的Multi-task 0-shot
Oracle:基于任務對于預訓練模型進行fine-tuning
Oracle w/meta-train:對預訓練語言模型進行meta-training,然后再進行fine-tuning
從表格中我們可以得到如下的結論:
對于模型來說,在元訓練/目標任務相似,即不進行任務遷移的情況下:
使用Meta-training訓練模型然后進行0樣本的任務學習(Multi-task 0-shot)的效果比普通的語言模型直接進行語境學習的效果更好,說明Meta-training的確是對于模型是有幫助的。
使用MetalCL訓練的模型,不論是普通的語言模型還是Channel語言模型均取得了不錯的效果,尤其是Channel MetaICL在大部分的實驗設置的情況下的效果是最好的。
在需要進行任務遷移的情況下:
使用MetalCL訓練的模型的效果并沒有收到太大的影響,并且仍然在大部分的實驗設置的情況下的效果是最好的。
而將MetalCL訓練的模型同Fine-tuning的模型比較時:
使用MetaICL的方法有時能夠取得超過直接在目標任務進行Fine-tune的方法,并且Oracle w/meta-train的結果還說明了meta-training對于Fine-tuning也有幫助。
除了上面的結論,作者還將使用MetaICL訓練的GPT-2模型同GPT-J進行了比較,實驗結果如下:
從表格中還可以看出MetalCL訓練的語言模型在許多領域的模型效果基本上跟GPT-J差不多,有些領域甚至要比GPT-J好。
最后論文作者還進行了Ablation study,主要內容分為兩點:
分析了Meta-training中元訓練任務的個數的影響:論文的作者對于HR->LR實驗采取了子采樣,分別從61個任務數據集中抽取了{7, 15, 30}個數據集分別進行訓練,實驗結果如下圖所示,從圖中可以看出,在不同的元訓練任務數目上的實驗,Channel MetaICL的效果始終是最好的;除此之外,整體上元訓練任務越多,MetaICL的性能越好。
分析了Meta-training中元訓練任務的差異的影響:論文的作者對于HR->LR實驗采取了兩種設置,也就是對于61個任務數據集分別采取了兩次采樣,每次采樣的任務數據集的個數為13,其中一次采樣的元訓練任務差異性很大,任務分別有QA,NLI,關系抽取,語義分析等等,另一次采樣的元訓練任務差異性較小,僅僅包含語義分析,主題分類,惡意文本檢測。論文的作者在這兩種設置下分別進行了實驗,實驗結果如下表所示。可以看出使用差異性較大的元訓練任務會帶來更好的結果。
分析了任務描述是否對于MetalCL有幫助:雖然MetaICL不需要任務描述,論文的作者依然試驗了在MetaICL中使用任務描述是否會帶來進一步的性能提升。作者在HR->LR實驗中使用了32個meta-training任務和12個目標任務,這些任務均是提供了人工撰寫的任務描述,可以看出加入任務描述后MetaICL效果有著進一步的提升。
總結
本文介紹了一種MetaICL的訓練方法,通過這種訓練方法可以讓模型通過元訓練更好更簡單地進行語境學習。同時筆者認為MetaICL也算是一種大力出奇跡的方法吧。這其實可以給予我們一些啟發:
對于一個語言模型,不論要使用這個語言模型進行什么樣子的任務,當讓模型盡量多的見識各種各樣的任務之后(這里什么任務能夠對模型提升比較大也是值得繼續去研究的),即使是對于沒見過的任務,不論是零樣本學習還是語境學習,模型均能取得不錯的效果。
MetalCL算是一種基于大規模語言模型的一種訓練方法,對于容量較小的模型,筆者認為MetaICL是否還能起到很好的效果也是值得去探究的。
論文中還提出對于一個語言模型進行了MetalCL之后,再進行Fine-tuning,最終模型的效果是比直接對于模型進行Fine-tuning要好的。在擁有大量不同任務的數據集時,可以考慮在Fine-tuning之前先對模型進行MetalCL訓練,或許可以進一步提升模型效果。
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
?
[1] Noisy channel language model prompting for few-shot text classification.
[2] Surface form competition: Why the highest probability answer isn’t always right.
總結
以上是生活随笔為你收集整理的加了元学习之后,少样本学习竟然可以变得这么简单!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从 0 搭建一个工业级推荐系统
- 下一篇: 6 年大厂面试官,谈谈我对算法岗面试的一