天天看點

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

編譯 | 王晔

校對 | 青暮

谷歌研究科學家Quoc V. Le近期提出了一個1370億參數語言模型FLAN,探讨了一種提高語言模型zero-shot學習能力的新方法。

研究表明,指令微調(instruction tuning)——在通過指令描述的任務集合上對語言模型進行微調,可以極大地提高未見過的任務的零樣本場景下的性能

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

論文連結:https://arxiv.org/pdf/2109.01652v1.pdf

我們采用一個1370億參數量的預訓練語言模型,通過自然語言指令模闆對60多個NLP任務進行指令微調。我們把這個模型稱為Finetuned LAnguage Net(FLAN),研究人員在未見過的任務類型上對這個指令微調過的模型進行了評估。

結果表明,FLAN極大地提高了其未調整的對應模型的性能,并且在我們評估的25個任務中,有19個任務超過了零樣本設定下參數為1750億的GPT-3。

在ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze上,FLAN甚至以很大的優勢超過了小樣本GPT-3。消融研究顯示,任務數量和模型規模是指令微調成功的關鍵因素。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

圖1:上面:指令微調和FLAN概述。指令微調是在以指令描述的任務集合上對預訓練的語言模型進行微調。在推理中,我們對一個未見過的任務類型進行評估;例如,如果在指令微調期間沒有學習過自然語言推理(NLI)任務,我們可以用NLI任務對模型進行評估。下面:與零樣本 GPT-3 和小樣本GPT-3相比,零樣本FLAN在未見過的任務類型上的表現。

1

引言

規模化的語言模型(LM),如GPT-3,已經被證明可以很好地進行few-shot學習。然而,它們在zero-shot學習方面卻不是很成功。例如,在閱讀了解、回答問題和自然語言推理等任務上,GPT-3在零樣本場景下的學習性能比小樣本差很多。其中一個潛在原因是:如果沒有小樣本的示範,那麼在與預訓練資料的格式不同的訓示上,模型就很難取得良好的表現。

本文中,我們探索了一種簡單的方法來提高大型語言模型的零樣本性能。我們利用了NLP任務可以通過自然語言指令來描述的直覺,比如 "這個電影評論是正面情緒的還是負面的?"或者 "把'你好嗎'翻譯成中文"。

我們采用了一個參數為1370億的預訓練語言模型,并對該模型進行指令微調——對60多個通過自然語言指令表達的NLP任務的集合進行微調。我們把這個模型稱為Finetuned LAnguage Net(FLAN)。

為了評估FLAN在未見過的任務上的零樣本性能,我們将NLP任務根據其任務類型分為幾個群組,并對某個群組進行評估之前,在所有其他群組上對FLAN進行指令微調。

例如,如圖1所示,為了評估FLAN執行自然語言推理的能力,我們先在一系列其他NLP任務上對模型進行指令微調,如常識推理、翻譯和情感分析。由于這種設定確定了FLAN在指令微調中沒有學習過任何自然語言推理任務,是以我們可以再評估其進行零樣本自然語言推理的能力。

評估表明,FLAN極大地提高了基礎1370億參數模型在零樣本場景下的性能。在我們評估的25個任務中的19個任務裡,零樣本場景下的FLAN也優于參數為1750億參數的GPT-3,甚至在一些任務上,如ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze,也明顯優于小樣本GPT-3。在消融實驗中,我們發現在指令微調中增加任務群的數量可以提高未學習任務的性能,而且隻有在有足夠的模型規模時,指令微調的優點才會顯現。

我們的實證結果強調了語言模型執行用自然語言指令描述的任務的能力。更為廣泛的結論是,如圖2所示,通過微調的方式進行監督,來提高語言模型對推理-時間文本互動的反應能力,指令微調結合了預訓練調整和prompting範式中吸引人的特點。

用于加載FLAN的指令微調資料集的源代碼:https://github.com/google-research/flan

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

圖2:比較指令微調與預訓練-調整和prompting的關系。

2

指令微調提高了零樣本學習的效果

進行指令微調是為了提高語言模型對NLP指令的反應能力。我們想通過監督來指引語言模型執行指令描述的任務,使其學會遵循指令,對與未見過的任務也是如此。為了評估模型在未見過的任務上的表現,我們按任務類型将任務進行分組,并将每個任務組單獨進行評估,同時對其餘所有分組進行指令微調。

2.1 任務&模闆

從零建立一個具有大量任務的可行的指令調整資料集需要集中大量資源。是以,我們選擇将現有研究建立的資料集轉化為指令格式。我們将Tensorflow資料集上公開的62個文本資料集,包括語言了解和語言生成任務,彙總成一個集合。圖3展示了我們使用的所有資料集;每個資料集都被歸入十二個任務群組中的一個,每個群組中的資料集都屬于同一任務類型。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

圖3:本文中使用的任務叢集(藍色為NLU任務;茶色為NLG任務)。

我們将任務設定為由基于資料集轉換的一組特定的輸入-輸出對(例如,我們認為RTE和ANLI是獨立的任務,盡管它們的涵義有交叉)。

對于每一項任務,我們都會把它們組成十個不同的用自然語言指令來描述任務的模闆。這十個模闆中的大部分都描述了原始任務,但為了增加多樣性,每個任務中最多包含三個 "反轉任務 "的模闆(例如,對于情感分類,我們包括要求生成負面電影評論的模闆)。

然後,我們在所有任務的集合上對預訓練的語言模型進行指令微調,每個任務中的例子都通過随機選擇的指令模闆進行格式化。圖4展示了一個自然語言推理任務的多個指令模闆。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

圖4:描述一個自然語言推理任務的多個指令模闆。

2.2 評估分割法

我們對FLAN在指令微調中沒有訓練過的任務上的表現很感興趣,是以,對未見過的任務的定義至關重要。

之前的一些工作通過不允許同一資料集出現在訓練中來對未見過的任務進行分類,而我們利用圖3中的任務叢集,使用一個更為保守的定義。

在這項工作中,如果在指令微調期間沒有訓練過T所屬的任何叢集的任務,我們才認為任務T在評估時是合适的。例如,如果任務T是一個文本蘊涵任務,那麼在指令微調資料集中不會出現文本蘊涵任務,我們隻對所有其他叢集的任務進行指令調整。

使用這個定義,為了評估FLAN在跨越c個叢集的任務上的性能,我們執行了c個叢集間分割的指令微調,在指令微調過程中,每種分割都會有不同的叢集。

2.3 有選擇的分類

一個給定任務所期望的輸出空間是幾個給定類别中的一個(如分類)或自由文本(如生成)。由于FLAN是純解碼器語言模型的指令微調版本,它自然可以生成自由文本,是以對于期望輸出為自由文本的任務不需要再做進一步修改。

對于分類任務,先前Brown等人的工作使用了等級分類方法,例如,隻考慮兩個輸出("是 "和 "不是"),将機率較高的一個作為模型的預測。

雖然這個程式在邏輯上是合理的,但它并不完美,因為答案的機率品質可能有一個不理想的分布(例如,大量替代性的 "是 "的表達方式,比如“對”、“正确”,可能降低配置設定給 "是 "的機率品質)。

是以,我們加入了一個選項字尾,即在分類任務的末尾加上OPTIONS标記,以及該任務的輸出類别清單。這使得模型知道在響應分類任務時需要哪些選擇。圖1中的NLI和常識性的例子顯示了選項的使用。

2.4 訓練細節

模型架構和預訓練。在我們的實驗中,我們使用了一個密集的從左到右的、隻有解碼器的1370億參數的Transformer語言模型。這個模型在網絡文檔(包括那些帶有計算機代碼的文檔)、對話資料和維基百科上進行了預訓練,使用SentencePiece庫(Kudo & Richardson, 2018)将其标記為2.81T BPE tokens,詞彙量為32K tokens。大約10%的預訓練資料是非英語的。這個資料集不像GPT-3的訓練集那樣單一,也有對話和代碼的混合物,是以我們預計一開始這個預訓練的語言模型在NLP任務上的零樣本和小樣本性能會略低。是以,我們把這個預訓練的模型稱為基礎語言模型(Base LM)。這個模型以前也曾被用于程式合成。

指令微調程式。FLAN是Base LM的指令微調版本。我們的指令微調管道混合了所有的資料集,并從每個資料集中随機抽取例子。一些資料集有超過1000萬個訓練執行個體(例如翻譯),是以我們将每個資料集的訓練執行個體數量限制在3萬個。其他資料集的訓練例子很少,為了防止這些資料集被邊緣化,我們遵循執行個體-比例混合方案(examples-proportional mixing scheme),混合率最大為3000。我們的微調程式中使用的輸入和目标序列長度分别為1024和256。我們使用打包的方法将多個訓練執行個體合并成一個序列,并用一個特殊的序列末端标記将輸入和目标分開。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

表1: 自然語言推理的結果。對于FLAN,我們既報告了最多10個模闆的平均值(代理沒有prompt工程的預期性能),也報告了在驗證集上性能最高模闆的測試集性能。三角形表示比小樣本GPT-3有改進。上箭頭↑表示隻比零樣本GPT-3有改進。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

表2: 閱讀了解和開放領域問題回答的結果。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

表3: 常識推理和核心推理的結果(準确率機關為%)。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

表4:WMT'14 En/Fr、WMT'16 En/De和En/Ro的翻譯結果(BLEU)。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

圖5:在指令微調中增加額外的任務群,可以提高在留出任務群上的零樣本性能。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

圖6:(A)在不同的模型規模下,指令微調時訓練過任務的性能都得到了改善。(B)指令微調對未見任務性能的影響取決于模型規模。雖然指令調整有助于大型模型對新任務的歸納,但對于小型模型來說,它實際上損害了對未見任務的泛化能力,可能是因為所有的模型能力都被用來學習指令微調任務的集合了。

有了“大資料”,還需“多任務”,谷歌AI大牛Quoc V. Le發現大模型零樣本學習能力的關鍵

表5:FLAN對通過指令微調獲得的連續輸入的反應比Base LM更好。

3

讨論

本文探讨了零樣本場景下一個簡單的問題:指令微調語言模型是否能提高其執行未見任務的能力?我們在FLAN上的實驗表明,指令微調提高了對未微調模型的性能,并在我們評估的大多數任務上超過了零樣本場景下的GPT-3。通過消融研究,我們了解到,未見任務的性能随着指令調諧中使用的任務叢集的數量的增加而提高,而且有趣的是,指令微調的優點隻有在模型規模足夠大時才會出現。此外,FLAN似乎比未修改的基礎模型對指令微調的反應更好,顯示了指令微調的另一優點。

我們研究中的一個局限是:對任務分組時存在一定程度的主觀性(例如,情感分析可以被看作是閱讀了解的一個小子集),因為沒有公認的方法來處理兩個任務之間的相似性。是以,我們根據文獻中公認的分類方法将任務配置設定到群組中,當任務可能屬于多個群組時,我們采取了保守的方法(例如,在評估閱讀了解和常識推理時,将閱讀了解與常識推理排除在指令微調之外)。作為另一個限制,我們使用簡短的指令(通常是一句話)來描述熟知的NLP任務。其他任務可能需要更長或更具體的指令來充分描述,同時還要有涉及執行個體的解釋;我們把這些情況留給未來的研究工作。

本文顯示的結果為未來的研究提出了幾個方向。盡管FLAN在60多個資料集上進行了指令微調,但這些資料集隻覆寫了10個任務群(加上一些雜項任務),考慮到這樣一個模型可以用于所有潛在的任務,是以這個數字相對較小。有可能通過更多的指令微調任務來進一步提高性能,例如,這些任務可以以自監督的方式生成。除了收集更多的任務,探索多語言環境也很有價值,例如,我們可以提出這樣的疑問:在高資源語言的監督資料上的指令調整是否會提高低資源語言的新任務的性能?最後,有監督資料的指令微調模型也有可能被用來改善模型在偏見和公平方面的行為。