摘要:最近,OpenAI 團隊訓練了 GPT-3(這是一個具有 1750 億參數的自迴歸語言模型,參數量是之前任何非稀疏語言模型的 10 倍),並在少樣本(few-shot)環境下對其性能進行了測試。GPT-3 的論文作者多達 31 人,來自 OpenAI、約翰霍普金斯大學的 Dario Amodei 等研究人員證明了在 GPT-3 中,對於所有任務,模型無需進行任何梯度更新或微調,而僅通過與模型的文本交互指定任務和少量示例即可獲得很好的效果。

「我們訓練了 GPT-3,一種具有 1750 億參數的自迴歸語言模型,這個數字比以往任何非稀疏語言模型都多 10 倍。我們在 few-shot 情況下測試了它的性能。」

本週五,OpenAI 提出的 GPT-3 在社交網絡上掀起了新一陣風潮。它的參數量要比 2 月份剛剛推出的、全球最大深度學習模型 Turing NLP 大上十倍,而且不僅可以更好地答題、翻譯、寫文章,還帶有一些數學計算的能力。這樣強大的深度學習,不禁讓人產生一種錯覺:真正的 AI 要來了嗎?

首先,GPT-3 最令人驚訝的還是模型體量,它使用的最大數據集在處理前容量達到了 45TB。根據 OpenAI 的算力統計單位 petaflops/s-days,訓練 AlphaGoZero 需要 1800-2000pfs-day,而 OpenAI 剛剛提出的 GPT-3 用了 3640pfs-day,看來 擁有微軟無限算力 的 OpenAI,現在真的是爲所欲爲了。

研究者們希望 GPT-3 能夠成爲更通用化的 NLP 模型,解決當前 BERT 等模型的兩個不足之處:對領域內有標記數據的過分依賴,以及對於領域數據分佈的過擬合。GPT-3 致力於能夠使用更少的特定領域,不做 fine-tuning 解決問題。

和往常一樣,GPT-3 立即放出了 GitHub 項目頁面,不過目前僅是一些生成樣本和數據集,還沒有代碼:https://github.com/openai/gpt-3。

不過上傳的沒有那麼快其實情有可原,在 issue 裏有人道出了真相:參數這麼多,如果按照 GPT-2 十五億參數等於 6G 這麼算的話,GPT-3 模型可能要 700G,老硬盤還裝不下,不是正常人能玩的轉的。

2019 年 3 月機器學習先驅,阿爾伯塔大學教授 Richard S. Sutton 著名的文章《 苦澀的教訓 》裏開篇就曾說道:「70 年的人工智能研究史告訴我們,利用計算能力的一般方法最終是最有效的方法。」

GPT-3 的提出或許會讓開發者落淚,大學老師沉默,黃仁勳感到肩上擔子更重了。還記得幾周前剛剛結束的 GTC 2020 嗎,英偉達 CEO 的 Keynote 上有一頁講最近幾年來人工智能領域裏最大的深度學習模型:

英偉達表示,自 2017 年底發佈 Tesla V100 之後,訓練最大模型的算力需求增長了 3000 倍。在這裏面 GPT-2 也不在最高的位置了,微軟今年 2 月推出的 Turing NLG(170 億參數)、英偉達的 Megatron-BERT(80 億參數)排名前列。GPT-3 要放進這個表裏,尺度表還要再向上挪一挪。

另有網友吐槽,GPT-3 共 72 頁的論文長度也令人絕望:

下一次更大的模型,論文長度怕不是要破百了。

不過巨大的參數量帶來的文本生成效果也是頗爲可觀的,讓我們來看看 GPT-3 究竟能不能實現寫新聞、寫小說,甚至寫論文的能力吧。

GPT-3:我是 GPT-2 的「究極進化版」

2019 年初,OpenAI 發佈了通用語言模型 GPT-2 ,能夠生成連貫的文本段落,在許多語言建模基準上取得了 SOTA 性能。這一基於 Transformer 的大型語言模型共包含 15 億參數、在一個 800 萬網頁數據集上訓練而成。GPT-2 是對 GPT 模型的直接擴展,在超出 10 倍的數據量上進行訓練,參數量也多出了 10 倍。

然而,長江後浪推前浪。昨日,OpenAI 發佈 GPT-3 模型,1750 億參數量,足足是 GPT-2 的 116 倍。

GPT-3 的論文作者多達 31 人,來自 OpenAI、約翰霍普金斯大學的 Dario Amodei 等研究人員證明了在 GPT-3 中,對於所有任務,模型無需進行任何梯度更新或微調,而僅通過與模型的文本交互指定任務和少量示例即可獲得很好的效果。

GPT-3 在許多 NLP 數據集上均具有出色的性能,包括翻譯、問答和文本填空任務,這還包括一些需要即時推理或領域適應的任務,例如給一句話中的單詞替換成同義詞,或執行 3 位數的數學運算。

當然,GPT-3 也可以生成新聞報道的樣本,我們很難將機器寫的文章與人類寫的區分開來。

新聞生成

據《華盛頓郵報》報道,經過兩天的激烈辯論,聯合衛理公會同意了一次歷史性的分裂:要麼創立新教派,要麼則在神學和社會意義上走向保守。大部分參加五月份教會年度會議的代表投票贊成加強任命 LGBTQ 神職人員的禁令,並制定新的規則「懲戒」主持同性婚禮的神職人員。但是反對這些措施的人有一個新計劃:2020 年他們將形成一個新教派「基督教衛理公會」。

《華盛頓郵報》指出,聯合衛理公會是一個自稱擁有 1250 萬會員的組織,在 20 世紀初期是「美國最大的新教教派」,但是近幾十年來它一直在萎縮。這次新的分裂將是該教會歷史上的第二次分裂。第一次發生在 1968 年,當時大概只剩下 10% 的成員組成了「福音聯合弟兄會」。《華盛頓郵報》指出,目前提出的分裂「對於多年來成員不斷流失的聯合衛理公會而言,來得正是時候」,這「在 LGBTQ 角色問題上將該教派推向了分裂邊緣」。同性婚姻並不是分裂該教會的唯一問題。2016 年,該教派因跨性別神職人員的任命而分裂。北太平洋地區會議投票禁止他們擔任神職人員,而南太平洋地區會議投票允許他們擔任神職人員。

這確定不是報刊記者撰寫的短新聞嗎?

GPT-3 用實力告訴你答案:不是。

給出標題「聯合衛理公會同意這一歷史性分裂」和子標題「反對同性戀婚姻的人將創建自己的教派」,GPT-3 生成了上述新聞。

就問你能不能看出來?反正我認輸……

在 OpenAI 的測試中,人類評估人員也很難判斷出這篇新聞的真假,檢測準確率僅爲 12%。

不過,GPT-3 也有失手的時候。比如對於 GPT-3 生成的下列短文,人類判斷真僞的準確率達到了 61%!

根據 OpenAI 的統計,人類對 GPT-3 175B 模型生成的約 500 詞文章的判斷準確率爲 52%,不過相比於 GPT-3 control 模型(沒有語境和不斷增加的輸出隨機性且只具備 1.6 億參數的模型),GPT-3 175B 生成的文本質量要高得多。果然很暴力啊!

「牙牙學語」,GPT-3 的造句能力

給出一個新單詞及其定義,造出一個新句子。難嗎?這需要你理解單詞的意義及適用語境。OpenAI 研究者測試了 GPT-3 在這一任務上的能力:給出一個不存在的單詞(如「Gigamuru」),令 GPT-3 使用它造句。

我們來看 GPT-3 的生成結果:

給出新單詞「Gigamuru」(表示一種日本樂器)。

GPT-3 給出的句子是:叔叔送了我一把 Gigamuru,我喜歡在家彈奏它。

嚴絲合縫,非常合理,完美!

再看一個動詞例子:

給出新單詞「screeg」(揮劍,擊劍)。

GPT-3 造出的句子是:我們玩了幾分鐘擊劍,然後出門喫冰淇淋。

也還不錯。

接下來,我們再來看 GPT-3 的其他能力。

語法糾錯

給出一句帶有語法錯誤的話,讓 GPT-3 進行修改。

第一個例子中,原句裏有兩個並列的動詞「was」和「died」,GPT-3 刪除系動詞「was」,將其修改爲正確的句子。

第二個例子中,原句裏 likes 後的 ourselves 是 we 的反身代詞,而這裏 like 這一動作的執行者是 Leslie,因此 likes 後即使要用反身代詞,也應該是 himself,而另一個改法是將反身代詞改成 we 的賓格 us,即「我們認爲 Leslie 喜歡我們」。

Bingo!GPT-3 答對了。

看完 GPT-3 的糾錯效果,真是英語老師欣慰,學生慚愧……

GPT-3 還能做計算題?

不止英語老師欣慰,數學老師也跑不了。 GPT-3 可以執行簡單的計算。

OpenAI 研究人員在以下 10 項任務中測試了 GPT-3 做簡單計算的能力,且無需任何任務特定的訓練。

這十項任務分別是:兩位數加減法、三位數加減法、四位數加減法、五位數加減法、兩位數乘法,以及一位數混合運算。

用於測試 GPT-3 計算能力的十項任務。

在這十項任務中,模型必須生成正確的答案。對於每項任務,該研究生成包含 2000 個隨機實例的數據集,並在這些實例上評估所有模型。

下圖展示了 GPT-3(few-shot)在這十項計算任務上的性能。從圖中可以看到,小模型的性能較差,即使是擁有 130 億參數的模型(僅次於擁有 1750 億的 GPT-3 完整版模型)處理二位數加減法的準確率也只有 50% 左右,處理其他運算的準確率還不到 10%。

GPT-3 在多個語言建模任務中的表現

GPT-2 發佈時在多個領域特定的語言建模任務上實現了當前最佳性能。現在,我們來看參數和成本大量增加後的 GPT-3 效果如何。

OpenAI 在多項任務中對 GPT-3 的性能進行了測試,包括語言建模、補全、問答、翻譯、常識推理、SuperGLUE 等任務。具體結果如下表所示:

不同模型在所有任務上的性能,以及任務的 SOTA 性能(包括模型規模、訓練細節等信息)。

GPT-3 技術解析

近期大量研究工作表明,通過對大量文本進行預訓練,並且針對特定任務進行微調,模型的性能可以在許多 NLP 任務以及基準測試中獲得顯著提升。

最近,OpenAI 團隊訓練了 GPT-3(這是一個具有 1750 億參數的自迴歸語言模型,參數量是之前任何非稀疏語言模型的 10 倍),並在少樣本(few-shot)環境下對其性能進行了測試。在所有任務中,GPT-3 無需進行任何額外的梯度更新或微調,完全只通過模型與文本的交互,即可直接應用於特定任務與少樣本 demo。

GPT-3 在許多 NLP 數據集上均有出色的性能,包括翻譯、問答和內容填充任務,以及多項需要實時推理或域適應的任務,如利用新單詞造句或執行三位數運算等。GPT-3 生成的新聞文章足以以假亂真,令人類評估員難以分辨。

不過,GPT-3 也有缺點。該研究團隊發現 GPT-3 (few-shot) 在文本合成和多個 NLP 數據集上的性能不夠好,還存在一些結構和算法上的缺陷。另一個語言模型大多會有的缺陷「預訓練樣本效率較低」的問題它也有,GPT-3 在預訓練期間閱讀的文本比人一生讀的還要多。此外,還有可解釋性問題等。

預訓練方法

OpenAI 團隊使用的基礎預訓練方法包括模型、數據與訓練三部分。GPT-3 的訓練過程與 GPT-2 類似,但對模型大小、數據集大小與多樣性、訓練長度都進行了相對直接的擴充。關於語境學習,GPT-3 同樣使用了與 GPT-2 類似的方法,不過 GPT-3 研究團隊系統地探索了不同的語境學習設定。

OpenAI 團隊明確地定義了用於評估 GPT-3 的不同設定,包括 zero-shot、one-shot 和 few-shot。

  • Fine-Tuning (FT):微調是近幾年來最爲常用的方法,涉及在期望任務的特定數據集上更新經過預訓練模型的權重;

  • Few-Shot (FS):在該研究中指與 GPT-2 類似的,在推理階段爲模型提供少量任務演示,但不允許更新網絡權重的情形;

  • One-Shot (1S):單樣本與小樣本類似,不同的是除了對任務的自然語言描述外,僅允許提供一個任務演示;

  • Zero-Shot (0S):零次樣本除了不允許有任何演示外與單樣本類似,僅爲模型提供用於描述任務的自然語言指示。

zero-shot、one-shot、few-shot 設置與傳統微調方法的對比。

上圖以英-法翻譯任務爲例,展示了四種方法。該研究將重點放在 zero-shot、one-shot 和 few-shot 上,其目的並非將它們作爲競品進行比較,而是作爲不同的問題設置。OpenAI 團隊特別強調了 few-shot 結果,因爲其中許多結果僅僅略微遜色於 SOTA 微調模型。不過,用 one-shot 甚至有時是 zero-shot 與人類水平進行對比似乎最爲公平,這也是未來工作的重要目標之一。

模型和架構

該研究使用了和 GPT-2 相同的模型和架構,包括改進的初始設置、預歸一化和 reversible tokenization。 區別在於 GPT-3 在 transformer 的各層上都使用了交替密集和局部帶狀稀疏的注意力模式 ,類似於 Sparse Transformer [CGRS19]。

爲了研究性能對模型大小的依賴性,該研究訓練了 8 種不同的模型大小 ,涵蓋 3 個數量級,從 1.25 億參數到 1750 億個參數不等,具備 1750 億個參數的模型即爲 GPT-3。

先前的研究 [KMH+20] 表明,在有足夠訓練數據的情況下,驗證損失的縮放比例應該近似爲模型大小的光滑冪律函數。這項研究訓練了多個不同大小的模型,這使得研究者可以對驗證損失和下游語言任務檢驗該假設。

表 2.1 展示了 8 個模型的大小和架構。這裏 n_params 表示可訓練參數總量,n_layers 表示層數,d_model 表示每個瓶頸層中的單元數量(在該研究中前饋層總是瓶頸層大小的 4 倍,即 d_ff = 4 ∗ d_model),d_head 表示每個注意力頭的維度。所有的模型均使用 n_ctx = 2048 tokens 的語境窗口。

表 2.1:該研究所訓練 8 個模型的大小、架構和超參數信息。所有模型一共使用了 3000 億 token。

爲了最大程度地減少節點之間的數據傳輸,該研究從深度和寬度兩個方向進行跨 GPU 模型分割。然後基於跨 GPU 模型佈局的計算效率和負載平衡選擇每個模型精確的架構參數。先前的研究 [KMH+20] 表明,在合理範圍內,驗證損失對這些參數並不是特別敏感。

訓練數據集

下表介紹了 GPT-3 訓練過程中所用的數據集。

表 2.2:用於訓練 GPT-3 的數據集。

OpenAI:其實我們也有點玩不起了

最開始是訓練不動,後來 finetune 不起,現在到了 GPT-3 模型的時代,我們連 forward 也要不起了。

你肯定想問這樣一個問題:訓練 GPT-3 模型需要花多少錢?我們目前還只能粗略地估計——訓練一個 BERT 模型租用雲算力要花大概 6912 美元,訓練 GPT-2 每小時要花費 256 美元,但 OpenAI 一直沒有透露一共要花多少小時。

相比之下,GPT-3 需要的算力(flops)是 BERT 的 1900 多倍, 所以這個數字應該是千萬美元級別 的,以至於研究者在論文第九頁說:我們發現了一個 bug,但沒錢再去重新訓練模型,所以先就這麼算了吧。

但即使這樣它的效果依然驚人。

GPT-3 的實驗結果,似乎驗證了 Richard Sutton 去年頗具爭議的論斷,他在《苦澀的教訓》的最後寫道:「我們應該從苦澀的教訓中學到一點:通用方法非常強大,這類方法會隨着算力的增加而繼續擴展,搜索和學習似乎正是這樣的方法。」

關於 GPT-3 的更多詳情,參見論文:https://arxiv.org/abs/2005.14165

另外,油管博主 Yannic Kilcher 做了一個 GPT-3 解讀視頻,emmm… 光視頻就有一個小時,感興趣的讀者請戳:

相關文章