Language Models are Unsupervised Multitask Learners :語言模型是無監督的多任務學習者

摘要

自然語言處理任務,如問答、機器翻譯、閱讀理解和摘要,通常通過在特定任務的數據集上進行監督學習來解決。我們展示了語言模型在訓練于一個包含數百萬網頁的新數據集——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=1n?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(outputinput)。 由于一個通用系統應能執行多種不同任務,即使輸入相同,它也應不僅基于輸入,還基于需要執行的任務進行條件建模,也就是建模 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(outputinput,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 :語言模型是無監督的多任務學習者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87191.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87191.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87191.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL語句全攻略:從基礎到進階的編程之旅

目錄 一、引言二、SQL 基礎語法2.1 SQL 語句寫法順序2.2 關聯查詢2.3 數據處理常用函數和運算符 三、數據庫和表的基本操作3.1 創建數據庫3.2 使用數據庫3.3 創建表 四、基礎增刪改查操作4.1 插入數據&#xff08;增&#xff09;4.2 查詢數據&#xff08;查&#xff09;4.3 更新…

Kafka的下載安裝

目錄 一、前期準備 1、查看網卡&#xff1a; 2、配置靜態IP 3、設置主機名 4、配置IP與主機名映射 5、關閉防火墻 6、配置免密登錄 二、JDK的安裝 三、Zookeeper的安裝 四、Kafka的安裝 1、Kafka的下載安裝 2、修改配置文件 4、分發文件 5、修改其他節點broker.i…

opencv入門(6) TrackBar調整圖片和鍵盤響應

文章目錄 1 創建trackbar2 使用userdata傳入函數3 鍵盤響應 1 創建trackbar 1.trackbar名稱 2.創建在哪個窗口上 3.拖動trackbar改變的值 4.trackBar的最大值 5.trackbar改變時的回調函數 6. 帶入回調函數的數據&#xff0c;可以不用帶,是一個void指針 createTrackbar(“Value …

QT<33> 修改窗口標題欄背景顏色

前言&#xff1a; 在做項目或者開發QT軟件時&#xff0c;如果想要修改窗口標題欄背景顏色&#xff0c;發現沒有代碼可以直接設置&#xff0c;目前有兩種方法可以設置。 第一種&#xff0c;自定義一個界面類&#xff0c;用QLabelQWidget實現&#xff0c;QLabel當作標題欄。 第…

JavaEE-博客系統項目

項目介紹 準備工作 創建數據表 創建項目 添加依賴 創建對應目錄 除了基本的數據層mapper&#xff0c;業務層service&#xff0c;交互層controller&#xff0c;還創建了公共類的層common&#xff0c;枚舉類層enums&#xff0c;異常類層&#xff0c;和實體類層pojo。 配置項目配…

Java項目:基于SSM框架實現的軟件工程項目管理系統【ssm+B/S架構+源碼+數據庫+畢業論文+開題報告】

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本項目管理系統就是在這樣的大環境下誕生&#xff0c;其可以幫助管理者在短時間內處理完畢龐大的數據信息&am…

[按鍵手機安卓/IOS腳本插件開發] 按鍵插件調試與判斷循環結構輔助工具

實現按鍵插件的核心原理 通過一個table類型的QMPlugin變量實現按鍵精靈調用Lua函數&#xff0c;例如 -- Lua代碼 -- 實現兩數相加求和 function QMPlugin.Add(a, b) return a b end 將以上代碼保存成.lua文件&#xff0c;例如test.lua后&#xff0c;放入按鍵精靈手機助手的p…

提示詞框架(9)--CARE

提示詞框架不止是AI的框架&#xff0c;也可以是我們的思考框架&#xff0c;拆解問題的方法&#xff01;&#xff01;&#xff01; CARE框架是一種用于優化提示詞設計的方法&#xff0c;它幫助用戶更有效地與AI進行交互&#xff0c;特別是在需要獲取特定信息或實現某些任務時。…

uniapp+vue2 input不顯示明文密碼,點擊小眼睛顯示或隱藏密碼

<u-input placeholder"請輸入密碼" prefixIcon"lock" :password"showPassword" v-model"formData.password"prefixIconStyle"font-size: 25px;color: #3C9CFF" border"none"><template slot"suffix…

時間序列的類增量學習:基準與評估

論文地址&#xff1a;https://dl.acm.org/doi/abs/10.1145/3637528.3671581 論文源碼&#xff1a;https://github.com/zqiao11/TSCIL 會議&#xff1a;SIGKDD 2024&#xff08;CCF-A&#xff09; 現實環境本質上是非平穩的&#xff0c;隨著時間推移常會引入新類別。這在時間序…

智能攻擊原理和架構

大家讀完覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; 智能攻擊系統基于**人工智能&#xff08;AI&#xff09;與大語言模型&#xff08;LLM&#xff09;技術**&#xff0c;通過**環境感知→自主決策→動態執行→對抗進化**的閉環架構實現高效網絡入侵。以下…

Beamer-LaTeX學習(教程批注版)【4】

眾所周知&#xff0c;隨著顯示器普及寬屏化&#xff0c;PPT排版需要多列化來充分利用頁面的橫向空間。 這節課我們來學習如何創建列&#xff0c;即在beamer中增加列內容&#xff0c;以及如何對齊列。 1 使用不同的寬度來創建列 在beamer中我們通過在頁面上使用columns環境來創…

通俗理解JVM細節-面試篇

文章目錄 前言JVM概述JVM是什么&#xff1f;解決了什么問題&#xff1f;JVM運行流程JVM 與 JRE&#xff0c;JDK的關系 JVM內存結構JVM區域劃分程序計數器棧堆方法區 類加載機制五個階段加載驗證準備解析初始化總結雙親委派模型 垃圾回收內存管理什么是GC&#xff1f;如何判定誰…

意識邊疆保衛戰:22:47深圳AI-BioFab人機融合危機全息實錄

前言 前些天發現了一個巨牛的人工智能免費學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站 &#x1f9e0;《意識邊疆保衛戰&#xff1a;22&#xff1a;47深圳AI-BioFab人機融合危機全息實錄》 副標題&#xff1a;機械義…

langchain從入門到精通(三十四)——RAG優化策略(十)父文檔檢索器實現拆分和存儲平衡

1. 拆分文檔與檢索的沖突 在 RAG 應用開發中&#xff0c;文檔拆分 和 文檔檢索 通常存在相互沖突的愿望&#xff0c;例如&#xff1a; 我們可能希望擁有小型文檔&#xff0c;以便它們的嵌入可以最準確地反映它們的含義&#xff0c;如果太長&#xff0c;嵌入/向量沒法記錄太多…

Javaweb - 7 xml

XML 是EXtensible Markup Language 的縮寫&#xff0c;翻譯過來就是可擴展標記語言。即&#xff0c;XML 和 HTML 一樣&#xff0c;都是標記語言&#xff0c;也就是說&#xff0c;它們的基本語法都是標簽。 特點&#xff1a; 1. 可擴展&#xff1a;即 XML 是允許自定義格式的。但…

qml實現 裁剪進度條

我們需要實現一個垂直進度條效果&#xff0c;但使用圖片裁剪的方式。具體需求&#xff1a; 1. 圖片位置固定&#xff0c;容器對齊其左邊和下邊&#xff0c;寬度和圖片相同。 2. 容器背景透明&#xff0c;調整裁剪容器的高度&#xff0c;使其有高度進度條的感覺&#xff08;從下…

Dify 工作流全棧解析:從零構建你的 AI 應用流程引擎

AI工作流的導言&#xff1a; 工作流系統&#xff08;Workflow System&#xff09;是 Dify 的核心組成部分&#xff0c;它通過可視化編程界面支持創建復雜的 AI 應用程序。用戶可以將不同的功能塊連接起來&#xff0c;從而設計出用于處理數據、與 AI 模型交互、管理條件以及執行…

上下位機通訊規則

0&#xff1a;事由 最近開發&#xff0c;上位機Qt與下位機通訊的時候發現通訊規則有些不一樣&#xff0c;這里簡單記錄一下 。所有代碼基于元寶生成&#xff0c;屬于偽代碼不保證真實可用&#xff0c;啊但是邏輯是這么個邏輯。 1&#xff1a;底層通訊規則 以STM32向上位機通訊…

創建平衡二叉樹C++

給你一個整數數組 nums &#xff0c;其中元素已經按 升序 排列&#xff0c;請你將其轉換為一棵 平衡 二叉搜索樹。 平衡二叉樹&#xff1a;每個節點的左右子樹高度差不超過1 class Solution { public:TreeNode* dfs(vector<int>& nums, int left, int right){if(l…