摘要
本文探討了一種簡單的方法來提升語言模型的零樣本學習能力。我們展示了指令微調——即在通過指令描述的數據集集合上對語言模型進行微調——能夠顯著提升模型在未見任務上的零樣本表現。
我們以一個擁有1370億參數的預訓練語言模型為基礎,在60多個通過自然語言指令模板表達的NLP數據集上進行了指令微調。我們對該指令微調模型(命名為FLAN)在未見任務類型上的表現進行了評估。
結果顯示,FLAN顯著提升了原始模型的性能,并在我們評測的25個數據集中,有20個超過了零樣本的1750億參數GPT-3模型。FLAN甚至在ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze等任務上大幅超越了GPT-3的少樣本表現。消融研究表明,微調數據集的數量、模型規模和自然語言指令是指令微調成功的關鍵因素。
1 引言
大規模語言模型(如 GPT-3 (Brown et al., 2020))在少樣本學習方面表現非常出色。然而,它們在零樣本學習上的表現則相對較差。例如,在閱讀理解、問答和自然語言推理等任務中,GPT-3 的零樣本表現遠不如少樣本表現。其中一個可能的原因是,缺少少樣本示例時,模型更難在與預訓練數據格式不相似的提示上取得良好表現。
本文探討了一種簡單的方法以提升大規模語言模型的零樣本性能,從而使其適用范圍更廣。我們的直覺是,NLP 任務可以通過自然語言指令來描述,例如“這條電影評論的情感是正面還是負面?”或“將‘how are you’翻譯成中文”。我們以一個擁有1370億參數的預訓練語言模型為基礎,進行指令微調——即在60多個通過自然語言指令表達的NLP數據集混合上微調該模型。我們將此微調后的模型稱為FLAN(Finetuned Language Net)。
為了評估FLAN在未見任務上的零樣本表現,我們根據任務類型將NLP數據集分成若干簇,并在指令微調時保留其中一簇用于評測。例如,如圖1所示,為了評估FLAN執行自然語言推理的能力,我們在常識推理、翻譯、情感分析等其他NLP任務上對模型進行指令微調。這樣,FLAN在指令微調階段并未接觸任何自然語言推理任務,我們隨后評估其執行零樣本自然語言推理的能力。
評測結果表明,FLAN顯著提升了基礎1370億參數模型的零樣本性能。FLAN的零樣本表現甚至在我們評測的25個數據集中,有20個超過了1750億參數GPT-3的零樣本表現,并且在ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze等任務上大幅超越了GPT-3的少樣本表現。消融實驗發現,指令微調中任務簇數量的增加有助于提升未見任務的表現,而指令微調的效益僅在模型規模足夠大時才會顯現。
指令微調是一種簡單的方法,如圖2所示,它結合了預訓練-微調范式和提示范式的優勢,通過微調的監督提升語言模型對推理時文本交互的響應能力。我們的實驗證明語言模型在純指令驅動的任務上表現出良好的潛力。
用于FLAN指令微調數據集加載的源碼已公開,地址為:https://github.com/google-research/flan
。
2 FLAN:指令微調提升零樣本學習能力
指令微調的動機是提升語言模型對NLP指令的響應能力。其核心思想是通過監督訓練,讓語言模型學習執行通過指令描述的任務,從而使模型能夠遵循指令,即使是面對未見過的任務也能有效完成。為了評估模型在未見任務上的表現,我們將數據集按照任務類型分成多個簇,并在指令微調時保留每個任務簇用于評測,同時在其余簇上進行微調。
2.1 任務與模板
由于從頭創建包含眾多任務的指令微調數據集需要大量資源,我們將研究界已有的數據集轉換為指令格式。我們匯總了TensorFlow Datasets中公開的62個文本數據集,這些數據集涵蓋語言理解和語言生成任務,整合成一個混合數據集。圖3展示了這些數據集——每個數據集被歸類到十二個任務簇中的一個,簇內的數據集均屬于相同任務類型。各數據集的描述、規模和示例見附錄G。
對于每個數據集,我們手工設計了十個獨特的模板,這些模板使用自然語言指令來描述該數據集對應的任務。雖然大多數模板都是描述原始任務,但為了增加多樣性,我們還為每個數據集包含了最多三個“反向任務”的模板(例如,對于情感分類任務,我們會加入要求生成電影評論的模板)。隨后,我們對預訓練語言模型在所有數據集的混合數據上進行指令微調,每個數據集中的示例通過隨機選擇的指令模板進行格式化。圖4展示了一個自然語言推理數據集的多個指令模板示例。
2.2 評估劃分
我們關注 FLAN 在未見過的任務上的表現,因此定義“未見任務”至關重要。與某些先前工作僅通過禁止訓練時出現相同數據集來定義未見任務不同,我們采用更保守的定義,利用圖3中的任務簇。在本工作中,僅當某個數據集 D 所屬的所有任務簇都未在指令微調中出現時,我們才認為該數據集 D 在評估時是未見的。例如,如果 D 是一個蘊含任務,則在指令微調中不包含任何蘊含數據集,而是在所有其他任務簇上進行了指令微調。
因此,為了對 c 個任務簇進行零-shot FLAN 評估,我們會指令微調 c 個模型,每個模型保留一個不同的任務簇用于評估。
2.3 帶選項的分類
某個任務的輸出空間可能是多個類別之一(分類任務)或自由文本(生成任務)。由于 FLAN 是一個僅解碼器的指令微調語言模型,它自然以自由文本形式響應,因此生成任務不需要額外修改。
對于分類任務,先前工作(Brown 等,2020)采用了排序分類方法,例如只考慮兩個輸出(“是”和“否”),選擇概率較高的作為模型預測。雖然這種方法在邏輯上合理,但存在不足,因為答案的概率質量可能被表達答案的多種方式稀釋(例如,“是”有很多不同表達方式,可能導致“是”的概率總和下降)。
因此,我們在分類任務末尾添加一個“OPTIONS”后綴,并附上該任務所有輸出類別列表,讓模型明確知道分類時的選擇范圍。圖1中的自然語言推理和常識推理示例展示了這種選項的用法。
2.4 訓練細節
模型結構與預訓練
實驗中我們使用 LaMDA-PT,這是一個1370億參數的密集左到右解碼器Transformer語言模型(Thoppilan 等,2022)。該模型在網絡文檔(含代碼)、對話數據和維基百科上預訓練,使用 SentencePiece(Kudo & Richardson,2018)進行分詞,詞匯表大小為32k,總計2.49萬億BPE標記。約10%的預訓練數據是非英語。注意,LaMDA-PT 僅進行語言模型預訓練(不同于針對對話微調的 LaMDA)。
指令微調過程
FLAN 是 LaMDA-PT 的指令微調版本。微調過程中,我們將所有數據集混合,并隨機采樣。為了平衡數據集大小差異,我們對每個數據集的訓練示例數限制為3萬,并采用按樣本數比例混合(Raffel 等,2020)且混合率最大為3000。
我們對所有模型進行了3萬步梯度更新,批量大小為8192個token,使用 Adafactor 優化器(Shazeer & Stern,2018),學習率為3e-5。微調時輸入序列長度為1024,目標序列長度為256。我們使用 packing 技術(Raffel 等,2020),將多個訓練樣本拼接成一個序列,并用特殊的EOS標記分隔輸入和目標。指令微調大約花費60小時,在128核的TPUv3上完成。所有評估均基于訓練3萬步的最終檢查點。
3 結果
我們在自然語言推理、閱讀理解、閉卷問答、翻譯、常識推理、指代消解和結構化文本生成等任務上評估 FLAN。按照§2.2所述,我們通過任務簇劃分未見任務,且對每個簇單獨保留用于評估,指令微調時使用剩余簇(即每個評估簇對應一個不同的檢查點)。
對于每個數據集,我們評估所有模板的性能均值,以反映基于典型自然語言指令的期望表現。有些數據集有開發集,可用于手動設計提示(Brown 等,2020),我們也報告使用開發集表現最佳模板在測試集上的結果。
作為對比,我們報告了未經指令微調的 LaMDA-PT 在同樣提示下的零-shot 和 few-shot 結果(LaMDA-PT未經指令微調不適合自然語言指令任務)。該基線直接展示了指令微調的提升效果,結果顯示指令微調顯著提升了 LaMDA-PT 的表現。
我們還展示了 GPT-3 175B(Brown 等,2020)和 GLaM 64B/64E(Du 等,2021)在相關論文中報告的 zero-shot表現。使用最佳開發集模板,FLAN 的 zero-shot 性能在25個數據集中有20個優于 GPT-3 的 zero-shot,且在10個數據集上大幅超過 GPT-3 的 few-shot 性能。在可用的19個數據集上, zero-shot FLAN 在13個數據集上優于零-shot GLaM,在11個數據集上優于 one-shot GLaM。
總體上,指令微調在自然語言表達清晰的任務(如自然語言推理、問答、翻譯、結構化文本生成)上效果顯著,而在直接以語言建模形式呈現的任務(如常識推理和指代消解,即完成不完整句子或段落)上效果較弱,因為指令在這些任務中冗余。自然語言推理、閱讀理解、閉卷問答和翻譯任務的結果總結見圖5,并在下文描述。
自然語言推理(NLI)。在五個NLI數據集上,模型需要判斷在給定前提的情況下假設是否成立,FLAN以較大優勢優于所有基線模型。正如Brown等人(2020)所指出的,GPT-3在NLI上表現不佳的一個可能原因是NLI示例不太可能自然出現在無監督訓練集中,因此這些示例被尷尬地表述為句子的續寫。對于FLAN,我們將NLI表述為更自然的問題“ 是否意味著 ?”,從而實現了更高的性能。
閱讀理解。在閱讀理解任務中,模型需要根據提供的段落回答問題,FLAN在MultiRC(Khashabi等,2018)和OBQA(Mihaylov等,2018)上優于基線。在BoolQ(Clark等,2019a)上,FLAN大幅超過了GPT-3,盡管LaMDA-PT在BoolQ上已經取得了較高的性能。
閉卷問答。閉卷問答要求模型在不訪問包含答案的具體信息的情況下回答關于世界的問題,FLAN在所有四個數據集上均優于GPT-3。與GLaM相比,FLAN在ARC-e和ARC-c(Clark等,2018)上的表現更好,而在NQ(Lee等,2019;Kwiatkowski等,2019)和TQA(Joshi等,2017)上表現略低。
翻譯。與GPT-3類似,LaMDA-PT的訓練數據約90%為英文,包含一些未專門用于訓練機器翻譯的其他語言文本。我們還評估了FLAN在GPT-3論文中涉及的三個數據集上的機器翻譯表現:WMT’14的法語-英語(Bojar等,2014),以及WMT’16的德語-英語和羅馬尼亞語-英語(Bojar等,2016)。與GPT-3相比,FLAN在所有六項評測中均優于零樣本GPT-3,但在大多數情況下低于少樣本GPT-3。與GPT-3類似,FLAN在翻譯成英語方面表現強勁,并且相較于監督翻譯基線表現良好。然而,從英語翻譯成其他語言的表現相對較弱,這也符合預期,因為FLAN使用的是英文sentencepiece tokenizer,并且大部分預訓練數據為英文。
附加任務。盡管在上述任務類別中表現強勁,但指令調優的一大局限是它無法提升許多語言建模任務的性能(例如以句子補全形式構造的常識推理或指代消解任務)。在七個常識推理和指代消解任務(見附錄表2)中,FLAN僅在其中三個任務上優于LaMDA-PT。該負面結果表明,當下游任務與原始語言建模預訓練目標相同時(即指令大多冗余時),指令調優并無用處。最后,我們報告了情感分析、復述檢測和結構到文本任務的結果,以及GPT-3結果不可用的其他數據集,詳見附錄表2和表1。總體而言,零樣本FLAN優于零樣本LaMDA-PT,并且可與少樣本LaMDA-PT相媲美或更好。
溫馨提示:
閱讀全文請訪問"AI深語解構" FLAN:微調語言模型是 Zero-Shot 學習者