大模型論文:Language Models are Unsupervised Multitask Learners(GPT2)
文章地址:https://storage.prod.researchhub.com/uploads/papers/2020/06/01/language-models.pdf
摘要
自然語言處理任務,例如問答、機器翻譯、閱讀理解和摘要,通常是通過對特定任務的數據集進行監督學習來實現的。我們展示了,語言模型在沒有任何顯式監督的情況下,僅通過訓練一個名為 WebText 的包含數百萬網頁的新數據集,就開始學會這些任務。
當模型以“文檔 + 問題”的形式進行輸入時,生成的回答在 CoQA 數據集上達到了 55 的 F1 分數 —— 這一成績相當于或超過了四個基線系統中的三個的表現,而無需使用 127,000 多個訓練樣本。
語言模型的容量對于實現零樣本任務遷移(zero-shot task transfer)至關重要,增加模型容量會以對數線性方式提升各種任務的表現。我們最大的模型 GPT-2 是一個具有 15 億參數的 Transformer,它在 8 個語言建模數據集中的 7 個上,在零樣本設置下達到了最先進的表現,但仍未完全擬合 WebText 數據。
該模型生成的樣本文本體現了這些改進,并且內容連貫、段落清晰。這些發現表明,構建能從自然演示中學習完成任務的語言處理系統,是一個非常有前景的方向。
模型背景
1、背景和挑戰:
當前的機器學習系統通過大量數據、強大的模型和監督學習,能夠高效地完成某些特定任務。然而,這些系統在面對數據分布的變化時表現出不穩定性,難以處理來自不同數據源或新的任務類型的輸入。這些系統通常只能在特定任務中表現良好,缺乏跨任務的泛化能力。
2、現有方法的限制:
為了訓練這些模型,通常的做法是為每個任務手動收集和標注大量數據,然后訓練模型進行任務。雖然這種方法能有效推動“狹義專家”系統的發展,但仍存在許多問題,特別是對于復雜且多樣化的任務,現有方法的表現不盡如人意。例如,標題生成模型、圖像分類系統和閱讀理解系統在面對多樣化的輸入時,往往難以維持穩定和高效的表現。
3、從單一任務到多任務學習的轉變:
為了克服這種局限性,研究人員開始探索多任務學習的方向。多任務學習是通過同時訓練多個任務來提高模型的泛化能力。然而,現有的多任務學習方法仍處于起步階段,通常依賴大量的訓練對,而這對于構建廣泛應用的系統而言仍然困難重重。
4、預訓練與遷移學習的結合:
在自然語言處理領域,結合預訓練和監督微調的方法已經取得了顯著成果。通過在一個大的數據集上進行預訓練,然后在具體任務上進行微調,模型能夠遷移并應用到新的任務中。最近的研究表明,使用自注意力機制的模型(如Transformer)已經能夠取得更高效的遷移效果,無需依賴任務特定的架構。
5、零樣本學習的潛力:
本文的一個重要創新是展示了語言模型能夠在“零樣本”設置下執行多種任務,無需任何額外的監督學習或架構修改。這意味著,通過訓練一個通用的語言模型,可以直接在新的任務中獲得競爭力的表現,甚至在某些任務上達到最先進的水平。
方法介紹
-
一切的基礎在于語言建模。這種建模方式視語言為符號序列,目標是學習這些符號序列的聯合分布,而這種聯合概率可以分解為逐個預測下一個詞的條件概率。Transformer 等架構的出現極大提升了這種預測能力
p ( x ) = ∏ i = 1 n p ( s i ∣ s 1 , … , s i ? 1 ) p(x) = \prod_{i=1}^{n} p(s_i \mid s_1, \dots, s_{i-1}) p(x)=i=1∏n?p(si?∣s1?,…,si?1?) -
傳統任務建模是“給定輸入,預測輸出”,但為了讓模型泛化到多個任務,我們需要“給定輸入+任務類型,預測輸出”。例如:
- 翻譯任務:
(translate to french, english text, french text)
- 閱讀理解任務:
(answer the question, document, question, answer)
這將不同任務統一成語言格式的輸入輸出序列,使得模型通過學習語言結構就能學會任務
- 翻譯任務:
-
本質上,語言建模任務本身就可以隱式包含監督目標。如果目標詞序列中包含任務和輸入信息,模型就可以在沒有顯式監督標簽的前提下學會任務。這是利用語言建模進行任務遷移和泛化的關鍵突破口,作者得出結論:只要模型足夠大(capacity 足夠),它將能夠被動學習自然語言中的任務模式,從而在沒有額外標簽的情況下執行多種任務
-
文章的最終目標是驗證這種基于語言建模的“無監督多任務學習”是否成立——即能否在 zero-shot 的前提下完成各種任務
訓練數據集
-
以往的大多數語言模型訓練工作都基于單一領域的文本,比如新聞文章、維基百科或小說書籍。本文的做法則強調構建盡可能大且多樣化的數據集,以收集來自盡可能多領域和語境下的自然語言任務示例
-
現有的一些數據集存在問題,比如網頁抓取數據 Common Crawl,數據質量問題也非常嚴重,在研究常識推理任務時大量文檔“內容幾乎無法理解”
-
本文構建了一個新的網頁抓取數據集,強調文檔質量。為此,本文僅抓取了經過人工篩選/推薦的網頁。人工全面篩選網頁代價極高,因此采用了 Reddit 作為起點 —— 抓取所有 Reddit 用戶推薦(至少獲得 3 karma)的鏈接。最終的數據集被稱為 WebText,包含了這些 4500 萬個鏈接中提取的文本子集。使用 Dragnet和 Newspaper1 兩種內容抽取器,從 HTML 頁面中提取正文文本。
-
經過去重和啟發式清洗后,最終得到約 800 萬個文檔,共計約 40 GB 文本數據。本文移除了所有維基百科文檔,以避免和常見評估任務中的訓練數據產生重疊。
-
WebText 訓練集中發現的英語到法語和法語到英語翻譯的自然發生的演示示例
輸入表示
‘’一個通用的語言模型應該能夠為任意字符串計算概率(或生成該字符串)‘’
-
當前的大規模語言模型在預處理上通常包括小寫轉換、分詞、詞表外(OOV)標記等,這些步驟限制了模型可處理的字符串范圍,雖然直接將 Unicode 字符串處理為 UTF-8 字節序列在理論上是優雅的,但目前的字節級語言模型在像 One Billion Word Benchmark 這類大規模數據集上性能不如詞級模型。
-
Byte Pair Encoding (BPE) 是一種折中方案,介于字符級與詞級之間。它能將頻繁的符號序列作為整體詞處理,稀有序列則逐字符處理。盡管名字中有“字節”,但主流 BPE 實現實際上是基于 Unicode 碼點而非字節。如果要處理所有 Unicode 字符串,這將導致初始詞匯表超過 13 萬個符號,這遠超 BPE 常用的 32,000 到 64,000 的詞匯規模。而使用字節級 BPE,初始詞匯表只需 256(所有字節)。但如果直接對字節序列應用 BPE,由于其貪心的頻率啟發式策略,會產生很多變體詞,例如:
dog
、dog.
、dog!
、dog?
都會占用不同詞位,造成詞匯空間浪費。 -
為避免這一點,本文禁止 BPE 在不同字符類別之間合并(如字母與標點),但允許空格作為例外。這種做法大大提高了壓縮效率,同時僅帶來極小的詞碎片問題。這種輸入表示方式結合了詞級模型的經驗優勢與字節級模型的通用性。由于該方法能為任意 Unicode 字符串賦予概率,因此我們可以在任何數據集上評估模型,而無需考慮預處理、分詞或詞匯表差異。
-
字節級模型:字節級模型將文本數據轉換為 UTF-8 編碼的字節序列(每個字符由 1~4 個字節組成),并直接對這些字節進行建模,模型的輸入不是“詞”或“字”,而是:
文本:"Hello 你好" 字節序列:[72, 101, 108, 108, 111, 32, 228, 189, 160]
模型結構(Model)
-
本文采用基于 Transformer架構的語言模型。其整體結構大體遵循 OpenAI GPT 模型(GPT1,2018),但進行了如下修改:
- Layer Normalization從原本的子模塊輸出移至輸入端,類似于預激活殘差網絡。
- 在最后一個 自注意力模塊(Self-attention block) 之后加入了一個額外的 LayerNorm。
- 使用了一種改進的初始化方式,以適應深層模型中殘差路徑上的累積效應。具體地,殘差層的初始化權重按 1 N \frac{1}{\sqrt{N}} N?1? 縮放( N N N 是殘差層數)。
- 詞匯表擴展為 50,257 個 token。
- 上下文窗口從 512 tokens 擴展到 1024 tokens。
- 訓練時使用 更大的 batch size:512。
-
WebText 語言模型在多個 NLP 任務上的零樣本表現,隨模型規模增長而變化
總結
1. WebText 的創建思路:
傳統語言模型訓練依賴單一語料,如 Wikipedia,而 WebText 嘗試模擬“真實互聯網語言環境”,利用 Reddit 的社交推薦機制(3 karma 門檻)實現“半自動高質量篩選”。這是一種近似“人類興趣驅動”的篩選方法,避免了模型過擬合某些任務或文本類型。
2. 輸入表示策略的突破:
- 普通模型受限于詞表和預處理方法。
- 字節級模型通用但性能差。
- 他們通過改進的 BPE 變體結合了兩者優勢:兼顧壓縮效率、泛化能力和字符保留完整性,對低資源或多語言任務尤其關鍵。
3. 架構優化重點:
- 殘差連接初始化和 LayerNorm 的調整,提高了模型的穩定性與訓練效率。
- 更大詞表 + 更長上下文窗口,顯著提升理解長文段能力。
- 這些設計讓模型能支持更復雜的任務輸入,如“問答+文檔+答案”等復雜結構。
實驗
-
本文訓練并測試了四個語言模型(LM),規模呈對數均勻分布。所有模型都基于 WebText 數據集訓練,并進行 perplexity 調優模型架構總結如下表所示:
-
最小的模型與原始 GPT 相當,第二小的模型等效于 BERT中的最大模型。最大的模型稱為 GPT-2,其參數數量是 GPT 的十倍以上。每個模型的學習率均通過在 WebText 中 5% 的保留集(held-out sample)上手動調整,以獲得最佳困惑度(perplexity)。所有模型在 WebText 上仍存在欠擬合,且保留集困惑度隨著訓練時間增加尚未達到最優
-
下面對常用的幾個任務進行實驗
困惑度(Perplexity)是語言模型中最常用的評估指標之一,用來衡量模型對語言序列預測的“困惑程度”或“不確定性”。它本質上反映的是模型在預測下一個詞(或字符、字節)時的平均不確定性。數值越低,說明模型越“自信”、越擅長預測;數值越高,說明模型越“困惑”。
1、 語言建模(Language Modeling)
- 首先研究 WebText 語言模型在其主要訓練任務語言建模上的表現。由于模型在字節級上操作,不依賴有損預處理或分詞,可以在任意語言建模基準上直接評估它。評估方式是:計算一個數據集在 WebText LM 下的對數概率,并除以該數據集的單位數量(如字符、字節或單詞)
- 由于許多數據集與 WebText 存在風格差異(如使用標準化文本、分詞、標點斷開、縮寫、句子順序打亂等),模型在這些測試集上通常會面臨分布外預測(out-of-distribution)挑戰。特別地,符號
<UNK>
在 WebText 中極其稀有(在 400 億字節中僅出現 26 次),因此我們使用可逆 de-tokenizer 來移除這些預處理殘留,以實現簡單的領域適應
- WebText 模型在多個數據集和任務間遷移能力強。在 zero-shot 設置下,8 個任務中有 7 個任務上達成當前最優。在 One Billion Word Benchmark上,模型仍顯著落后,主要是因為該數據集較大且預處理極端(如句子級打亂),使得語言的長距離結構信息被破壞。
2、兒童圖書測試(Children’s Book Test, CBT)
-
CBT用于評估語言模型在不同詞類別(如命名實體、名詞、動詞、介詞)上的表現。它是一種自動化 cloze 測試,任務是從 10 個候選項中選擇正確的被遮蓋詞。
-
本文復現了原始論文中的方法,對每個選項和句子剩余部分聯合計算概率,并選出概率最高者。如下圖所示,隨著模型規模增加,準確率穩定上升,接近人類表現。
-
經過分析發現測試集之一《叢林奇談》與 WebText 有重疊,因此報告無重疊的驗證集結果。GPT-2 達到了新的 SOTA 水平:
- 名詞類準確率:93.3%
- 命名實體準確率:89.1%
同時,本文使用 de-tokenizer 移除了 CBT 中的 PTB 風格分詞偽影,以提升質量
3、LAMBADA
-
LAMBADA 數據集用于測試系統建模文本中長距離依賴的能力。任務是預測句子的最后一個詞,而這些句子通常需要至少 50 個詞的上下文信息,才能被人類成功預測。GPT-2 將該任務上的困惑度(perplexity)從 99.8降至 8.6,準確率從 19%提升至 52.66%。但錯誤分析顯示,GPT-2 預測的大多數詞雖然是語法上合理的延續詞,卻不是句子的真實結尾詞。這表明 GPT-2 沒有意識到“所預測詞必須是句末詞”這一隱含規則。通過添加停用詞過濾器,準確率可進一步提升至 63.24%,比之前最優方法還提高了 4%。
-
要點總結:
-
LAMBADA 是一個理解句子整體結構的重要 benchmark。
-
GPT-2 在語言建模指標上(如困惑度)取得了突破性進展,但在“理解任務規則”方面仍有缺陷。
-
加入額外約束(如“必須是句末詞”或過濾停用詞)有助于提升性能。
-
4、Winograd Schema Challenge
- Winograd Schema 挑戰評估系統進行常識推理和歧義消解的能力。任務是基于語境判斷指代詞所指的實體。Trinh(2018)證明了語言模型能通過概率預測實現良好的性能。本文遵循他們的方法,在下圖中用全分與部分分兩種方式可視化性能
- GPT-2 能處理歧義性語言,展現出一定的常識理解能力,但由于樣本數量較少,結論需要謹慎解讀
5、閱讀理解(Reading Comprehension)
- CoQA是一個對話式問答數據集,來自 7 個不同領域,包括自然語言對話中的問題和答案。該任務考察模型是否能理解上下文并回答上下文相關的問題(如 “Why?”)。
- GPT-2 在未進行任何監督訓練的情況下,直接使用貪心解碼,在開發集上取得 55 F1 分數,與 4 個基準系統中的 3 個持平或超越(這些系統使用了 127,000+ 手工標注數據進行訓練)。盡管 GPT-2 的表現令人驚艷,但其答案中仍存在啟發式錯誤,如將回答限制為“文中提到的名字”來回應 who 類問題。即仍存在“檢索式回答”偏好,說明它更擅長識別已有信息,而非深度推理
6、文本摘要(Summarization)
-
本文在 CNN/Daily Mail 數據集上測試 GPT-2 的摘要能力。通過在文章后添加提示 “TL;DR:” 并用 Top-k 隨機采樣(k=2)生成 100 個 token,總結為前三個句子。
-
生成的摘要結構合理,但存在細節混亂或偏向文章結尾的問題。例如將事故車數量或標志位置搞錯。ROUGE-1/2/L 分數略優于“隨機選三句”方法,但低于經典摘要系統。若移除 “TL;DR:” 提示,則分數下降 6.4,說明 GPT-2 確實能“理解任務提示”。
-
這說明GPT-2 具有一定抽象性與結構化摘要能力,添加任務提示(prompt)可顯著提升表現,說明模型學會了**“提示控制行為”**
7、翻譯(Translation)
-
我們測試 GPT-2 是否學會了翻譯任務。通過提供訓練格式為:
english sentence = french sentence
并以類似 prompt 形式開始預測,GPT-2 可在 WMT-14 英法測試集上取得:
- 英→法:5 BLEU(略低于簡單詞典替換方法)
- 法→英:11.5 BLEU(顯著優于多種無監督基線)
但仍遠低于當前最優系統(33.5 BLEU,Artetxe et al., 2019)。這令人驚訝,因為 WebText 明確過濾了非英語網頁。
經檢測,僅有 10MB 法語數據進入 WebText,比常規法語訓練語料小 500 倍。
-
總結:
- GPT-2 展現出初步翻譯能力,盡管訓練時幾乎沒見過目標語言。
- 借助 prompt,模型能“理解”任務需求。
- 強大的英文語言建模能力可以部分遷移到翻譯任務。
8、問答(Question Answering)
-
為了評估 GPT-2 能否“記住”或“檢索”知識,本文使用 Natural Questions數據集作為測試。GPT-2 僅正確回答 4.1% 的問題,但這已比簡單基線(如返回最多見回答)高出 5.3 倍。最小模型準確率甚至不超過 1%。在 GPT-2 最有信心的前 1% 問題中,準確率達 63.1%,說明其置信度校準良好。但整體表現(4.1%)仍遠不及開放問答系統(30-50%)。
-
總結:
- GPT-2 在未檢索的前提下直接生成答案,是極具挑戰的任務。
- 它的知識“儲存在參數中”,但仍不足以應對大規模事實問答。
- 高置信度預測表現好,提示有望借助置信度進行“選擇性回答”。
9、總結
總結表:GPT-2 在各任務中的表現
任務 | 評估指標 | GPT-2 表現(Zero-shot) | 備注 |
---|---|---|---|
LAMBADA | Perplexity/Acc | 8.6 PPL / 52.7% → 63.2% | 加約束顯著提升 |
Winograd | Accuracy | 70.7% | 高于 SOTA,任務樣本少 |
閱讀理解 CoQA | F1 | 55 | 接近或超越多數有監督系統 |
摘要 CNN/DM | ROUGE 1,2,L | 稍優于 random-3 | 有提示時表現顯著更好 |
翻譯 WMT-14 | BLEU | 5(英→法),11.5(法→英) | 英文強大建模能力遷移帶動 |
問答 NQ | Accuracy | 4.1%(全體),63.1%(Top1%) | 記憶能力弱但置信度校準好 |