摘要
自然語言處理任務,如問答、機器翻譯、閱讀理解和摘要,通常通過在特定任務的數據集上進行監督學習來解決。我們展示了語言模型在訓練于一個包含數百萬網頁的新數據集——WebText——時,可以無需任何顯式監督就開始學習這些任務。當模型以文檔加問題為條件時,生成的答案在CoQA數據集上達到55的F1分數——這匹配甚至超過了4個基線系統中的3個表現,且沒有使用超過127,000個訓練樣本。語言模型的容量對零樣本任務遷移的成功至關重要,且隨著容量增加,性能在多個任務上呈對數線性提升。我們最大的模型GPT-2擁有15億參數的Transformer結構,在零樣本設置下,在8個測試的語言建模數據集中有7個達到最先進水平,但仍未完全擬合WebText。模型生成的示例反映了這些改進,包含連貫的文本段落。這些發現表明,基于自然出現的示范,構建能自動學習執行任務的語言處理系統是一個有希望的發展方向。
1. 引言
機器學習系統現在通過結合大規模數據集、高容量模型和監督學習,能夠在其訓練的任務上表現卓越(Krizhevsky等,2012;Sutskever等,2014;Amodei等,2016)。然而,這些系統相對脆弱,對數據分布的細微變化(Recht等,2018)和任務規范的調整(Kirkpatrick等,2017)非常敏感。當前系統更像是狹隘的專家,而非具備廣泛能力的通用智能。我們希望朝著能執行多種任務的更通用系統邁進——最終無需為每個任務手動創建和標注訓練數據集。
構建機器學習系統的主流方法是收集一組演示期望行為的訓練樣本,訓練系統模仿這些行為,然后在獨立且同分布(IID)的保留樣本上測試其性能。此方法對打造狹隘專家非常有效。但圖像說明模型(Lake等,2017)、閱讀理解系統(Jia & Liang,2017)以及圖像分類器(Alcorn等,2018)在面對多樣輸入時的表現不穩定,凸顯了此方法的局限。
我們懷疑單任務訓練且僅用單一領域數據是當前系統泛化能力不足的主要原因。要取得更穩健的系統進展,可能需要在更廣泛的領域和任務上訓練并衡量性能。最近已有多個基準被提出,如GLUE(Wang等,2018)和decaNLP(McCann等,2018),以開始研究這一方向。
多任務學習(Caruana,1997)是提升整體性能的有前景的框架,但在自然語言處理領域的多任務訓練仍處于初期階段。近期工作報告了適度的性能提升(Yogatama等,2019),而迄今為止最雄心勃勃的兩項工作僅在10和17組(數據集,目標)對上進行訓練(McCann等,2018;Bowman等,2018)。從元學習角度看,每一對(數據集,目標)都是從數據集和目標的分布中采樣的一個訓練樣本。當前機器學習系統需要數百甚至數千個樣本來歸納出良好泛化的函數。這表明多任務訓練也可能需要大量有效的訓練對,才能發揮其潛力。用現有技術依靠暴力擴展數據集和目標設計顯然困難重重。這促使我們探索更多適合多任務學習的方案。
當前在語言任務上表現最佳的系統,采用預訓練加監督微調的組合。這一路徑歷史悠久,呈現出更靈活的遷移趨勢。最初是學習詞向量并將其作為任務專用架構的輸入(Mikolov等,2013;Collobert等,2011),隨后轉向遷移循環網絡的上下文表示(Dai & Le,2015;Peters等,2018),而近期工作表明任務專用架構已不再必需,僅轉移多個自注意力層即可(Radford等,2018;Devlin等,2018)。
這些方法仍然需要通過監督訓練來完成任務。當只有極少或沒有監督數據時,另一類工作展示了語言模型在執行特定任務上的潛力,比如常識推理(Schwartz 等,2017)和情感分析(Radford 等,2017)。
在本文中,我們將這兩條研究路線結合起來,繼續推動更加通用的遷移方法的發展。我們證明了語言模型可以在零樣本設置下執行下游任務——無需任何參數或架構的修改。我們通過展示語言模型在零樣本設置下執行多種任務的能力,表明該方法具有潛力。根據具體任務,我們取得了有前景的、具競爭力的甚至最先進的結果。
2. 方法
我們方法的核心是語言建模。語言建模通常被定義為對一組樣本 (x?, x?, …, x?) 的無監督分布估計,每個樣本由長度可變的符號序列 (s?, s?, …, s?) 組成。由于語言具有自然的順序性,通常會將符號的聯合概率分解為條件概率的乘積(Jelinek & Mercer, 1980)(Bengio 等,2003):
p ( x ) = ∏ i = 1 n p ( s n ∣ s 1 , . . . , s n ? 1 ) ( 1 ) p ( x ) = \prod _ { i = 1 } ^ { n } p ( s _ { n } | s _ { 1 } , . . . , s _ { n - 1 } )\quad(1) p(x)=i=1∏n?p(sn?∣s1?,...,sn?1?)(1)
這種方法不僅使得從分布 p(x) 中進行采樣和估計成為可行,同時也可以估計形式為 p ( s n ? k , . . . , s n ∣ s 1 , . . . , s n ? k ? 1 ) p ( s _ { n - k } , . . . , s _ { n } | s _ { 1 } , . . . , s _ { n - k - 1 } ) p(sn?k?,...,sn?∣s1?,...,sn?k?1?)的條件概率。近年來,能夠計算這些條件概率的模型表達能力有了顯著提升,例如自注意力架構——Transformer(Vaswani 等,2017)。
學習執行單個任務可以用概率框架表示為估計條件分布 p ( o u t p u t ∣ i n p u t ) p ( o u t p u t | i n p u t ) p(output∣input)。 由于一個通用系統應能執行多種不同任務,即使輸入相同,它也應不僅基于輸入,還基于需要執行的任務進行條件建模,也就是建模 p ( o u t p u t ∣ i n p u t , t a s k ) p ( o u t p u t | i n p u t , t a s k ) p(output∣input,task)。這在多任務學習和元學習框架中有多種形式的實現。任務條件通常在架構層面實現,如 Kaiser 等(2017)提出的任務特定編碼器和解碼器,或者在算法層面實現,如 MAML(Finn 等,2017)的內外循環優化框架。但正如 McCann 等(2018)所示,語言提供了一種靈活的方式,將任務、輸入和輸出都表示為符號序列。例如,一個翻譯訓練樣本可以寫成序列(translate to french, english text, french text);同樣,一個閱讀理解訓練樣本可以寫成(answer the question, document, question, answer)。McCann 等(2018)展示了可以訓練一個單一模型 MQAN,基于這類格式推斷并執行多種不同任務。
從原則上講,語言建模也能夠學習 McCann 等(2018)中描述的任務,而無需明確監督哪些符號是需要預測的輸出。因為監督目標和無監督目標相同,只是監督目標僅在序列的子集上評估,所以無監督目標的全局最小值同時也是監督目標的全局最小值。在這種略顯“玩具化”的設置下,Sutskever 等(2015)中對密度估計作為訓練目標的擔憂得以規避。問題變成我們是否能夠在實踐中優化無監督目標直至收斂。初步實驗確認,足夠大的語言模型能夠在這種玩具式多任務學習設置下進行學習,但學習速度遠慢于明確監督的方法。
盡管從上述良構的設置到“真實語言環境”的復雜性有很大差距,Weston(2016)在對話場景中提出了直接從自然語言中學習的必要性,并展示了一個概念驗證——通過預測教師輸出實現無獎勵信號的問答任務學習。雖然對話方法很有吸引力,我們擔心它過于限制性。互聯網包含大量被動可用的信息,無需交互通信。我們的推測是,擁有足夠容量的語言模型會開始學習推斷和執行自然語言序列中展示的任務,以更好地預測它們,無論這些信息的獲取方式如何。如果語言模型能夠做到這一點,它實際上就是在進行無監督的多任務學習。我們通過分析語言模型在零樣本設置下對各種任務的表現來檢驗這一點。
2.1. 訓練數據集
之前的大多數工作都在單一領域的文本上訓練語言模型,比如新聞文章(Jozefowicz 等,2016)、維基百科(Merity 等,2016)或小說書籍(Kiros 等,2015)。我們的方法則激勵構建盡可能大且多樣化的數據集,以收集在盡可能多樣化的領域和上下文中自然語言形式的任務演示。
一個有前景的多樣且幾乎無限制的文本來源是網絡爬取的數據,如 Common Crawl。盡管這些數據量比現有語言模型訓練集大幾個數量級,但它們存在顯著的數據質量問題。Trinh & Le(2018)在其常識推理工作中使用了 Common Crawl,但指出其中有大量“內容大部分難以理解”的文檔。我們在最初用 Common Crawl 進行實驗時也觀察到了類似的問題。Trinh & Le(2018)取得的最佳結果是基于對 Common Crawl 的一個小規模子集,該子集僅包含與他們目標數據集——Winograd Schema Challenge 最相似的文檔。雖然這是提高特定任務性能的務實做法,但我們希望避免事先對要執行的任務做出假設。
相反,我們創建了一個新的網絡爬取數據集,重點強調文檔質量。為此,我們只爬取經過人工篩選/過濾的網頁。對整個網絡進行人工過濾代價極高,因此作為起點,我們爬取了社交媒體平臺 Reddit 上所有獲得至少 3 點 karma 的外鏈。這可以看作是一個啟發式指標,用以判斷其他用戶是否覺得該鏈接有趣、有教育意義或僅僅是好笑。
得到的數據集名為 WebText,包含了這 4500 萬鏈接中的文本部分。為了從 HTML 響應中提取文本,我們結合使用了 Dragnet(Peters & Lecocq, 2013)和 Newspaper 1 內容提取器。本文中所有的結果均基于 WebText 的初步版本,該版本不包含 2017 年 12 月之后創建的鏈接,經過去重和一些基于啟發式的清理后,包含略超過 800 萬篇文檔,總計約 40 GB 文本。我們從 WebText 中移除了所有維基百科文檔,因為維基百科是其他數據集的常見數據源,可能導致訓練數據與測試評估任務存在重疊,進而使分析變得復雜。
2.2 輸入表示
通用語言模型(LM)應該能夠計算(并生成)任意字符串的概率。當前的大規模語言模型包括預處理步驟,如小寫化、分詞以及處理未登錄詞,這些步驟限制了模型可處理字符串的空間。雖然將 Unicode 字符串作為 UTF-8 字節序列處理能夠優雅地滿足這一需求(如 Gillick 等人(2015)的工作所示),但目前基于字節的語言模型在大型數據集(例如 One Billion Word Benchmark,Al-Rfou 等,2018)上的表現不如基于單詞的模型。我們在嘗試在 WebText 上訓練標準字節級語言模型時也觀察到了類似的性能差距。
字節對編碼(Byte Pair Encoding,BPE)(Sennrich 等,2015)是一種介于字符級和單詞級語言模型之間的實用折中方案,它有效地在高頻符號序列使用單詞級輸入,低頻符號序列使用字符級輸入。盡管名字叫“字節對編碼”,但現有參考實現通常是在 Unicode 碼點上操作,而非字節序列。這些實現要求包含全部 Unicode 符號空間才能建模所有 Unicode 字符串,導致基礎詞匯表超過 13 萬個符號,再加上多符號詞元,這個詞匯表規模過大,遠超通常使用的 32,000 到 64,000 的 BPE 詞匯表大小。相比之下,字節級的 BPE 僅需要基礎詞匯大小為 256。
然而,直接將 BPE 應用于字節序列會因為 BPE 使用貪心的基于頻率的啟發式方法構建詞匯而導致子最優的合并結果。我們觀察到 BPE 會生成許多單詞的不同版本,比如“dog”,會出現“dog”、“dog!”、“dog?” 等多種變體,導致有限的詞匯槽和模型容量分配不理想。為避免這種情況,我們阻止 BPE 在不同字符類別之間合并任何字節序列,對空格除外,這顯著提升了壓縮效率,同時只帶來極少的詞匯切分碎片化。
這種輸入表示方式允許我們結合單詞級語言模型的經驗優勢和字節級方法的通用性。由于我們的方法可以為任何 Unicode 字符串分配概率,這使得我們能夠在任何數據集上評估語言模型,無論其預處理、分詞或詞匯大小如何。
2.3 模型
我們使用基于 Transformer(Vaswani 等,2017)的架構來構建語言模型。該模型大體遵循 OpenAI GPT 模型(Radford 等,2018)的設計細節,但做了一些修改。層歸一化(Layer Normalization)(Ba 等,2016)被移到了每個子模塊的輸入端,類似于預激活殘差網絡(He 等,2016);此外,在最后一個自注意力(self-attention)模塊之后還增加了一個額外的層歸一化。初始化方式也做了調整,以考慮隨著模型深度增長殘差路徑上的累積效應。具體來說,我們在初始化時,將殘差層的權重按 1 / N 1 / \sqrt { N } 1/N?的比例縮放,其中N是殘差層的數量。詞匯表擴展到了50,257個詞元。我們還將上下文長度從512個詞元增加到了1024個,同時使用了更大的批量大小512。
3. 實驗
我們訓練并基準測試了四個大致以對數均勻間隔劃分大小的語言模型。架構概要見表2。最小的模型相當于原始的GPT,第二小的模型則相當于BERT(Devlin 等,2018)中最大的模型。我們最大的模型,稱為GPT-2,其參數數量比GPT多了一個數量級以上。每個模型的學習率都是針對WebText中5%的保留樣本手動調優以達到最佳困惑度(perplexity)。所有模型對WebText仍然存在欠擬合,且增加訓練時間尚未顯著改善保留樣本上的困惑度。
3.1 語言建模
作為零樣本任務遷移的初步步驟,我們關注WebText訓練的語言模型在其主任務——語言建模上的零樣本領域遷移表現。由于我們的模型在字節級別操作,不依賴任何有損的預處理或分詞方法,因此可以在任意語言模型基準上進行評估。語言建模數據集的結果通常以一個量化指標報告,該指標是對每個規范預測單位(通常是字符、字節或單詞)負對數概率的平均值做指數變換得到的困惑度。我們通過計算WebText語言模型對數據集的對數概率并除以規范單位數來評估同一指標。對于許多數據集,WebText語言模型會面臨較大分布外(out-of-distribution)的挑戰,因為它們需要預測經過高度標準化的文本、分詞偽影(如斷開的標點符號和縮寫形式)、打亂的句子,甚至字符串 <UNK>
,這在WebText中極為罕見——40億字節中僅出現26次。我們在表3中報告了主要結果,使用了可逆的去分詞器(de-tokenizers),以盡可能去除這些分詞或預處理的偽影。由于這些去分詞器是可逆的,我們仍然能夠計算數據集的對數概率,同時它們也可以被看作是一種簡單的領域自適應方法。使用這些去分詞器,GPT-2的困惑度提升了2.5到5個百分點。
溫馨提示:
閱讀全文請訪問"AI深語解構" Language Models are Unsupervised Multitask Learners :語言模型是無監督的多任務學習者