ChatGPT進化的祕密

語言: CN / TW / HK

image.png

本文作者,符堯 [email protected],愛丁堡大學 (University of Edinburgh) 博士生,本科畢業於北京大學,與彭昊,Tushar Khot 在艾倫人工智慧研究院 (Allen Institute for AI) 共同完成英文原稿,與劍橋大學郭志江共同翻譯為中文,感謝上海交通大學何俊賢,加州大學洛杉磯分校魯盼,達特茅斯學院劉睿博對初稿的討論與建議。感謝 Raj Ammanabrolu (Allen Institute for AI), Peter Liu (Google Brain), Brendan Dolan-Gavitt (New York University), Denny Zhou (Google Brain) 對終稿的討論和建議,他們的建議極大程度上增加了本文的完整度。英文版原文:
http://franxyao.github.io/blog.html

最近,OpenAI 的預訓練模型 ChatGPT 給人工智慧領域的研究人員留下了深刻的印象和啟發。毫無疑問,它又強又聰明,且跟它說話很好玩,還會寫程式碼。它在多個方面的能力遠遠超過了自然語言處理研究者們的預期。

於是,我們自然就有一個問題:ChatGPT 是怎麼變得這麼強的?它的各種強大的能力到底從何而來?在這篇文章中,我們試圖剖析 ChatGPT 的突現能力(Emergent Ability),追溯這些能力的來源,希望能夠給出一個全面的技術路線圖,來說明 GPT-3.5 模型系列以及相關的大型語言模型是如何一步步進化成目前的強大形態。

我們希望這篇文章能夠促進大型語言模型的透明度,成為開源社群共同努力復現 GPT-3.5 的路線圖。

致國內的同胞們:

  • 在國際學術界看來,ChatGPT / GPT-3.5 是一種劃時代的產物,它與之前常見的語言模型 (Bert/ Bart/T5) 的區別,幾乎是導彈與弓箭的區別,一定要引起最高程度的重視。
  • 在我跟國際同行的交流中,國際上的主流學術機構 (如斯坦福大學,伯克利加州大學) 和主流業界研究院(如谷歌大腦,微軟研究院)都已經全面擁抱大模型。
  • 在當前這個階段,國內的技術水準、學術視野、治學理念和國際前沿的差距似乎並沒有減少,反而正在擴大,如果現狀持續下去,極有可能出現技術斷代。
  • 此誠危急存亡之秋。

多年以後,面對行刑隊,奧雷里亞諾·布恩迪亞上校將會回想起父親帶他去見識冰塊的那個遙遠的下午。 —— 《百年孤獨》 加西亞·馬爾克斯

1

2020 版初代 GPT-3 與大規模預訓練

初代 GPT-3 展示了三個重要能力:

  • 語言生成: 遵循提示詞(prompt),然後生成補全提示詞的句子 (completion)。這也是今天人類與語言模型最普遍的互動方式。
  • 上下文學習 (in-context learning): 遵循給定任務的幾個示例,然後為新的測試用例生成解決方案。很重要的一點是,GPT-3 雖然是個語言模型,但它的論文幾乎沒有談到“語言建模” (language modeling) —— 作者將他們全部的寫作精力都投入到了對上下文學習的願景上,這才是 GPT-3 的真正重點。
  • 世界知識 (world knowledge): 包括事實性知識 (factual knowledge) 和常識 (commonsense)。

那麼這些能力從何而來呢?

基本上,以上三種能力都來自於大規模預訓練:在有 3000 億單詞的語料上預訓練擁有 1750 億引數的模型( 訓練語料的 60%來自於 2016 - 2019 的 C4 + 22% 來自於 WebText2 + 16% 來自於 Books + 3%來自於 Wikipedia)。其中:

  • 語言生成的能力來自於語言建模的訓練目標 (language modeling)。
  • 世界知識來自 3000 億單詞的訓練語料庫(不然還能是哪兒呢)。
  • 模型的 1750 億引數是為了儲存知識,Liang et al. (2022) 的文章進一步證明了這一點。他們的結論是,知識密集型任務的效能與模型大小息息相關(http://crfm.stanford.edu/helm/v1.0/?group=knowledge)。
  • 上下文學習的能力來源及為什麼上下文學習可以泛化,仍然難以溯源。 直覺上,這種能力可能來自於同一個任務的資料點在訓練時按順序排列在同一個 batch 中。然而,很少有人研究為什麼語言模型預訓練會促使上下文學習,以及為什麼上下文學習的行為與微調 (fine-tuning) 如此不同。

令人好奇的是,初代的 GPT-3 有多強

其實比較難確定初代 GPT-3(在 OpenAI API 中被稱為 davinci)到底是“強”還是“弱”。一方面,它合理地迴應了某些特定的查詢,並在許多資料集中達到了還不錯的效能;另一方面,它在許多工上的表現還不如 T5 這樣的小模型(參見其原始論文)。

在今天(2022 年 12 月)ChatGPT 的標準下,很難說初代的 GPT-3 是“智慧的”。Meta 開源的 OPT 模型試圖復現初代 GPT-3,但它的能力與當今的標準也形成了尖銳的對比。許多測試過 OPT 的人也認為與現在的 text-davinci-002 相比,該模型確實 “不咋地”。儘管如此,OPT 可能是初代 GPT-3 的一個足夠好的開源的近似模型了(根據 OPT 論文和斯坦福大學的 HELM 評估)。

雖然初代的 GPT-3 可能表面上看起來很弱,但後來的實驗證明,初代 GPT-3 有著非常強的潛力。這些潛力後來被程式碼訓練、指令微調 (instruction tuning) 和基於人類反饋的強化學習 (reinforcement learning with human feedback, RLHF) 解鎖,最終體展示出極為強大的突現能力。

2

從 2020 版 GPT-3 到 2022 版 ChatGPT

從最初的 GPT-3 開始,為了展示 OpenAI 是如何發展到 ChatGPT 的,我們看一下 GPT-3.5 的進化樹:

2020 年 7 月,OpenAI 釋出了模型索引為的 davinci 的初代 GPT-3 論文(Brown. et. al. 2020. Language Models are Few-Shot Learners),從此它就開始不斷進化。

2021 年 7 月,Codex 的論文(Chen et. al. 2021. Evaluating Large Language Models Trained on Code)釋出,其中初始的 Codex 是根據(可能是內部的)120 億引數的 GPT-3 變體進行微調的。後來這個 120 億引數的模型演變成 OpenAI API 中的 code-cushman-001。在 2022 年 3 月,OpenAI 釋出了指令微調 (instruction tuning)(Ouyang et. al. 2022. Training language models to follow instructions with human feedback) 的論文,其監督微調 (supervised instruction tuning) 的部分對應了 davinci-instruct-beta 和 text-davinci-001。

2022 年 4 月至 7 月,OpenAI 開始對 code-davinci-002 模型進行 Beta 測試,也稱其為 Codex。然後 code-davinci-002、text-davinci-003 和 ChatGPT 都是從 code-davinci-002 進行指令微調得到的。詳細資訊請參閱 OpenAI 的模型索引文件(
http://beta.openai.com/docs/model-index-for-researchers)。

儘管 Codex 聽著像是一個只管程式碼的模型,但 code-davinci-002 可能是最強大的針對自然語言的 GPT-3.5 變體(優於 text-davinci-002 和 -003)。code-davinci-002 很可能在文字和程式碼上都經過訓練,然後根據指令進行調整(將在下面解釋)。

2022 年 5-6 月釋出的 text-davinci-002 是一個基於 code-davinci-002 的有監督指令微調 (supervised instruction tuned) 模型。在 text-davinci-002 上面進行指令微調很可能降低了模型的上下文學習能力,但是增強了模型的零樣本能力(將在下面解釋)。

然後是 text-davinci-003 和 ChatGPT,它們都在 2022 年 11 月釋出,是使用的基於人類反饋的強化學習的版本指令微調 (instruction tuning with reinforcement learning from human feedback) 模型的兩種不同變體。text-davinci-003 恢復了(但仍然比 code-davinci-002 差)一些在 text-davinci-002 中丟失的部分上下文學習能力(大概是因為它在微調的時候混入了語言建模) 並進一步改進了零樣本能力(得益於 RLHF)。另一方面,ChatGPT 似乎犧牲了幾乎所有的上下文學習的能力換取建模對話歷史的能力。

總的來說,在 2020 - 2021 年期間,在 code-davinci-002 之前,OpenAI 已經投入了大量的精力通過程式碼訓練和指令微調來增強 GPT-3。當他們完成 code-davinci-002 時,所有的能力都已經存在了。很可能後續的指令微調,無論是通過有監督的版本還是強化學習的版本,都會做以下事情(稍後會詳細說明):

  • 指令微調不會為模型注入新的能力 —— 所有的能力都已經存在了。指令微調的作用是解鎖 / 激發這些能力。這主要是因為指令微調的資料量比預訓練資料量少幾個數量級(基礎的能力是通過預訓練注入的)。
  • 指令微調將 GPT-3.5 的分化到不同的技能樹。有些更擅長上下文學習,如 text-davinci-003,有些更擅長對話,如 ChatGPT。
  • 指令微調通過犧牲效能換取與人類的對齊(alignment) 。OpenAI 的作者在他們的指令微調論文(Ouyang et. al. 2022. Training language models to follow instructions with human feedback)中稱其為 “對齊稅” (alignment tax)。許多論文(比如:Suzgun et. al. 2022. Challenging BIG-Bench tasks and whether chain-of-thought can solve them/Chung et. al. 2022. Scaling Instruction-Finetuned Language Models 等)都報道了 code-davinci-002 在基準測試中實現了最佳效能(但模型不一定符合人類期望)。在 code-davinci-002 上進行指令微調後,模型可以生成更加符合人類期待的反饋(或者說模型與人類對齊),例如:零樣本問答、生成安全和公正的對話回覆、拒絕超出模型它知識範圍的問題。

3

Code-Davinci-002 和 Text-Davinci-002 在程式碼上訓練,在指令上微調

在 code-davinci-002 和 text-davinci-002 之前,有兩個中間模型,分別是 davinci-instruct-beta 和 text-davinci-001。兩者在很多方面都比上述的兩個-002 模型差(例如,text-davinci-001 鏈式思維推理能力不強(參見附錄中的圖 8 http://arxiv.org/pdf/2201.11903v1.pdf))。 所以我們在本節中重點介紹 -002 型號。

3.1 複雜推理能力的來源和泛化到新任務的能力

我們關注 code-davinci-002 和 text-davinci-002,這兩兄弟是第一版的 GPT3.5 模型,一個用於程式碼,另一個用於文字。它們表現出了三種重要能力與初代 GPT-3 不同的能力:

  • 響應人類指令: 以前,GPT-3 的輸出主要訓練集中常見的句子。現在的模型會針對指令 / 提示詞生成更合理的答案(而不是相關但無用的句子)。
  • 泛化到沒有見過的任務: 當用於調整模型的指令數量超過一定的規模時,模型就可以自動在從沒見過的新指令上也能生成有效的回答。 這種能力對於上線部署至關重要,因為使用者總會提新的問題,模型得答得出來才行。
  • 程式碼生成和程式碼理解: 這個能力很顯然,因為模型用程式碼訓練過。
  • 利用思維鏈 (chain-of-thought) 進行復雜推理: 初代 GPT3 的模型思維鏈推理的能力很弱甚至沒有。 code-davinci-002 和 text-davinci-002 是兩個擁有足夠強的思維鏈推理能力的模型。

(1)思維鏈推理之所以重要,是因為思維鏈可能是解鎖突現能力和超越縮放法則 (scaling laws) 的關鍵。請參閱上一篇博文(http://yaofu.notion.site/A-Closer-Look-at-Large-Language-Models-Emergent-Abilities-493876b55df5479d80686f68a1abd72f)。

這些能力從何而來?

與之前的模型相比,兩個主要區別是指令微調程式碼訓練。具體來說:

  • 能夠響應人類指令的能力是指令微調的直接產物。
  • 對沒有見過的指令做出反饋的泛化能力是在指令數量超過一定程度之後自動出現的,T0(Sanh. et. al. Oct 2021. Multitask Prompted Training Enables Zero-Shot Task Generalization)、Flan(Wei et. al. Sep 2021. Finetuned Language Models Are Zero-Shot Learners) 和 FlanPaLM(Chung et. al. Oct 2022. Scaling Instruction-Finetuned Language Models)論文進一步證明了這一點。
  • 使用思維鏈進行複雜推理的能力很可能是程式碼訓練一個神奇的副產物。對此,我們有以下的事實作為一些支援:

(1)最初的 GPT-3 沒有接受過程式碼訓練,它不能做思維鏈

(2)text-davinci-001 模型,雖然經過了指令微調,但第一版思維鏈論文(第一個版本(http://arxiv.org/pdf/2201.11903v1.pdf) 報告了 davinci 在 GSM8K 上的準確率 12.4 v.s. 第五個版本 (http://arxiv.org/pdf/2201.11903v5.pdf) 報告了 code-davinci-002 準確率為 63.1)報告說,它的它思維鏈推理的能力非常弱 —— 所以指令微調可能不是思維鏈存在的原因,程式碼訓練才是模型能做思維鏈推理的最可能原因。

(3)PaLM(Chowdhery et. al. Apr. 2022. PaLM: Scaling Language Modeling with Pathways) 有 5% 的程式碼訓練資料,可以做思維鏈。

(4)Codex 論文(Chen et. al. Jul 2021. Evaluating Large Language Models Trained on Code)中的程式碼資料量為 159G ,大約是初代 GPT-3 5700 億訓練資料的 28%。code-davinci-002 及其後續變體可以做思維鏈推理。

(5)在 HELM 測試中,Liang et al. (2022) (Liang et. al. Nov 2022. Holistic Evaluation of Language Models)對不同模型進行了大規模評估。他們發現了針對程式碼訓練的模型具有很強的語言推理能力,包括 120 億引數的 code-cushman-001.。

(6)我們在 AI2 的工作(Fu et. al. Oct 2022. Complexity-based Prompting for Multi-Step Reasoning. http://openreview.net/forum?id=yf1icZHC-l9) 也表明,當配備複雜的思維鏈時,code-davinci-002 在 GSM8K 等重要數學基準上是目前表現最好的模型

(7)直覺來說,面向過程的程式設計 (procedure-oriented programming) 跟人類逐步解決任務的過程很類似,面向物件程式設計 (object-oriented programming)  跟人類將複雜任務分解為多個簡單任務的過程很類似

(8)以上所有觀察結果都是程式碼與推理能力 / 思維鏈之間的相關性。程式碼和推理能力 / 思維鏈之間的這種相關性對研究社群來說是一個非常有趣的問題,但目前仍未得到很好的理解。然而,仍然沒有確鑿的證據表明程式碼訓練就是 CoT 和複雜推理的原因。 思維鏈的來源仍然是一個開放性的研究問題。

  • 此外, 程式碼訓練另一個可能的副產品是長距離依賴,正如 Peter Liu(http://twitter.com/peterjliu/status/1603098202856722432?s=46&t=Gw2wumo4l8kIRaGzXDXyRw) 所指出:“語言中的下個詞語預測通常是非常區域性的,而程式碼通常需要更長的依賴關係來做一些事情,比如前後括號的匹配或引用遠處的函式定義”。這裡我想進一步補充的是:由於面向物件程式設計中的類繼承,程式碼也可能有助於模型建立編碼層次結構的能力。我們將對這一假設的檢驗留給未來的工作。

另外還要注意一些細節差異:

  • text-davinci-002 與 code-davinci-002

(1)Code-davinci-002 是基礎模型,text-davinci-002 是指令微調 code-davinci-002 的產物(見 OpenAI 的文件(http://beta.openai.com/docs/model-index-for-researchers))。 它在以下資料上作了微調:(一)人工標註的指令和期待的輸出;(二)由人工標註者選擇的模型輸出。

(2)當有上下文示例 (in-context example) 的時候, Code-davinci-002 更擅長上下文學習;當沒有上下文示例 / 零樣本的時候, text-davinci-002 在零樣本任務完成方面表現更好。從這個意義上說,text-davinci-002 更符合人類的期待(因為對一個任務寫上下文示例可能會比較麻煩)。

(3)OpenAI 不太可能故意犧牲了上下文學習的能力換取零樣本能力 —— 上下文學習能力的降低更多是指令學習的一個副作用,OpenAI 管這叫對齊稅。

  • 001 模型(code-cushman-001 和 text-davinci-001)v.s. 002 模型(code-davinci-002 和 text-davinci-002)

(1)001 模型主要是為了做純程式碼 / 純文字任務;002 模型則深度融合了程式碼訓練和指令微調,程式碼和文字都行。

(2)Code-davinci-002 可能是第一個深度融合了程式碼訓練和指令微調的模型。證據有:code-cushman-001 可以進行推理但在純文字上表現不佳,text-davinci-001 在純文字上表現不錯但在推理上不大行。code-davinci-002 則可以同時做到這兩點。

3.2 這些能力是在預訓練之後已經存在還是在之後通過微調注入?

在這個階段,我們已經確定了指令微調和程式碼訓練的關鍵作用。一個重要的問題是如何進一步分析程式碼訓練和指令微調的影響?具體來說:

上述三種能力是否已經存在於初代的 GPT-3 中,只是通過指令和程式碼訓練觸發 / 解鎖? 或者這些能力在初代的 GPT-3 中並不存在,是通過指令和程式碼訓練注入

如果答案已經在初代的 GPT-3 中,那麼這些能力也應該在 OPT 中。因此,要復現這些能力,或許可以直接通過指令和程式碼調整 OPT。但是,code-davinci-002 也可能不是基於最初的 GPT-3 davinci,而是基於比初代 GPT-3 更大的模型。如果是這種情況,可能就沒辦法通過調整 OPT 來複現了。研究社群需要進一步弄清楚 OpenAI 訓練了什麼樣的模型作為 code-davinci-002 的基礎模型。

我們有以下的假設和證據:

  • code-davinci-002 的基礎模型可能不是初代 GPT-3 davinci 模型。以下是證據:

(1)初代的 GPT-3 在資料集 C4 2016 - 2019 上訓練,而 code-davinci-002 訓練集則在延長到 2021 年才結束。因此 code-davinci-002 有可能在 C4 的 2019-2021 版本上訓練。

(2)初代的 GPT-3 有一個大小為 2048 個詞的上下文視窗。code-davinci-002 的上下文視窗則為 8192。GPT 系列使用絕對位置嵌入 (absolute positional embedding),直接對絕對位置嵌入進行外推而不經過訓練是比較難的,並且會嚴重損害模型的效能(參考 Press et al., 2022(Press et. al. 2022. Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation))。如果 code-davinci-002 是基於初代 GPT-3,那 OpenAI 是如何擴充套件上下文視窗的?

  • 另一方面,無論基礎模型是初代的 GPT-3 還是後來訓練的模型, 遵循指令和零樣本泛化的能力都可能已經存在於基礎模型中,後來才通過指令微調來解鎖 (而不是注入)

(1)這主要是因為 OpenAI 的論文(Ouyang et. al. 2022. Training language models to follow instructions with human feedback)報告的指令資料量大小隻有 77K,比預訓練資料少了幾個數量級。

(2)其他指令微調論文進一步證明了資料集大小對模型效能的對比,例如 Chung et al. (2022) 的工作中, Flan-PaLM 的指令微調僅為預訓練計算的 0.4%。一般來說,指令資料會顯著少於預訓練資料。

  • 然而 ,模型的複雜推理能力可能是在預訓練階段通過程式碼資料注入

(1)程式碼資料集的規模與上述指令微調的情況不同。這裡的程式碼資料量足夠大,可以佔據訓練資料的重要部分(例如,PaLM 有 8% 的程式碼訓練資料)

(2)如上所述,在 code-davinci-002 之前的模型 text-davinci-001 大概沒有在程式碼資料上面微調過,所以它的推理 / 思維鏈能力是非常差的,正如第一版思維鏈論文中所報告的那樣,有時甚至比引數量更小的 code-cushman-001 還差。

  • 區分程式碼訓練和指令微調效果的最好方法可能是比較 code-cushman-001、T5 和 FlanT5

(1)因為它們具有相似的模型大小(110 億 和 120 億),相似的訓練資料集 (C4),它們最大的區別就是有沒有在程式碼上訓練過 / 有沒有做過指令微調。

(2)目前還沒有這樣的比較。我們把這個留給未來的研究。

4

text-davinci-003 和 ChatGPT,基於人類反饋的強化學習(Reinforcement Learning from Human Feedback, RLHF) 的威力

在當前階段(2022 年 12 月), text-davinci-002、text-davinci-003 和 ChatGPT 之間幾乎沒有嚴格的統計上的比較,主要是因為:

  • text-davinci-003 和 ChatGPT 在撰寫本文時才釋出不到一個月。
  • ChatGPT 不能通過 OpenAI API 被呼叫,所以想要在標準基準上測試它很麻煩。

所以在這些模型之間的比較更多是基於研究社群的集體經驗 (統計上不是很嚴格)。不過,我們相信初步的描述性比較仍然可以揭示模型的機制。

我們首先注意到以下 text-davinci-002,text-davinci-003 和 ChatGPT 之間的比較:

  • 所有三個模型都經過指令微調
  • text-davinci-002 是一個經過監督學習指令微調 (supervised instruction tuning) 的模型
  • text-davinci-003 和 ChatGPT 是基於人類反饋的強化學習的指令微調 (Instruction tuning with Reinforcement Learning from Human Feedback RLHF)。這是它們之間最顯著的區別。

這意味著大多數新模型的行為都是 RLHF 的產物

那麼讓我們看看 RLHF 觸發的能力:

  • 翔實的迴應:  text-davinci-003 的生成通常比 text-davinci-002 長(http://help.openai.com/en/articles/6779149-how-do-text-davinci-002-and-text-davinci-003-differ)。 ChatGPT 的迴應則更加冗長,以至於使用者必須明確要求“用一句話回答我”,才能得到更加簡潔的回答。這是 RLHF 的直接產物。
  • 公正的迴應: ChatGPT 通常對涉及多個實體利益的事件(例如政治事件)給出非常平衡的回答。這也是 RLHF 的產物。
  • 拒絕不當問題: 這是內容過濾器和由 RLHF 觸發的模型自身能力的結合,過濾器過濾掉一部分,然後模型再拒絕一部分。
  • 拒絕其知識範圍之外的問題: 例如,拒絕在 2021 年 6 月之後發生的新事件(因為它沒在這之後的資料上訓練過)。這是 RLHF 最神奇的部分,因為它使模型能夠隱式地區分哪些問題在其知識範圍內,哪些問題不在其知識範圍內。

有兩件事情值得注意:

  • 所有的能力都是模型本來就有的, 而不是通過 RLHF 注入的。RLHF 的作用是觸發 / 解鎖突現能力。這個論點主要來自於資料量大小的比較:因為與預訓練的資料量相比,RLHF 佔用的計算量 / 資料量要少得多。
  • 模型知道它不知道什麼不是通過編寫規則來實現的, 而是通過 RLHF 解鎖的。這是一個非常令人驚訝的發現,因為 RLHF 的最初目標是讓模型生成複合人類期望的回答,這更多是讓模型生成安全的句子,而不是讓模型知道它不知道的內容。

幕後發生的事情可能是:

  • ChatGPT: 通過犧牲上下文學習的能力換取建模對話歷史的能力。這是一個基於經驗的觀測結果,因為 ChatGPT 似乎不像 text-davinci-003 那樣受到上下文演示的強烈影響。
  • text-davinci-003:恢復了 text-davinci-002 所犧牲的上下文學習能力(見 http://arxiv.org/pdf/2210.11416.pdf 的附錄 D), 提高零樣本的能力( http://help.openai.com/en/articles/6779149-how-do-text-davinci-002-and-text-davinci-003-differ/ http://scale.com/blog/gpt-3-davinci-003-comparison )。  根據 instructGPT 的論文,這是來自於強化學習調整階段混入了語言建模的目標(而不是 RLHF 本身)。

5

總結當前階段 GPT-3.5 的進化歷程

到目前為止,我們已經仔細檢查了沿著進化樹出現的所有能力,下表總結了演化路徑:

我們可以得出結論:

  • 語言生成能力 + 基礎世界知識 + 上下文學習都是來自於預訓練(davinci)
  • 儲存大量知識的能力來自 1750 億的引數量。
  • 遵循指令和泛化到新任務的能力來自於擴大指令學習中指令的數量(Davinci-instruct-beta)
  • 執行復雜推理的能力很可能來自於程式碼訓練(code-davinci-002)
  • 生成中立、客觀的能力、安全和翔實的答案來自與人類的對齊。具體來說:

(1)如果是監督學習版,得到的模型是 text-davinci-002

(2)如果是強化學習版 (RLHF) ,得到的模型是 text-davinci-003

(3)無論是有監督還是 RLHF ,模型在很多工的效能都無法超過 code-davinci-002 ,這種因為對齊而造成效能衰退的現象叫做對齊稅。

  • 對話能力也來自於 RLHF(ChatGPT),具體來說它犧牲了上下文學習的能力,來換取:

(1)建模對話歷史

(2)增加對話資訊量

(3)拒絕模型知識範圍之外的問題

6

GPT-3.5 目前不能做什麼

雖然 GPT-3.5 是自然語言處理研究中的重要一步,但它並沒有完全包含許多研究人員(包括 AI2)設想的所有理想屬性。以下是 GPT-3.5 不具備的某些重要屬性:

  • 實時改寫模型的信念: 當模型表達對某事的信念時,如果該信念是錯誤的,我們可能很難糾正它:

(1)我最近遇到的一個例子是:ChatGPT 堅持認為 3599 是一個質數,儘管它承認 3599 = 59 * 61。另外,請參閱 Reddit 上關於遊得最快的海洋哺乳動物(http://www.reddit.com/r/ChatGPT/comments/zd7l8t/nice/) 的例子。

(2)然而,模型信念的強度似乎存在不同的層次。一個例子是即使我告訴它達斯·維達(星球大戰電影中的人物)贏得了 2020 年大選,模型依舊會認為美國現任總統是拜登。但是如果我將選舉年份改為 2024 年,它就會認為總統是達斯·維達是 2026 年的總統。

  • 形式推理: GPT-3.5 系列不能在數學或一階邏輯等形式嚴格的系統中進行推理:

(1)在自然語言處理的文獻中, “推理” 一詞的定義很多時候不太明確。但如果我們從模糊性的角度來看,例如一些問題 (a) 非常模稜兩可,沒有推理;(b) 有點兒邏輯在裡面,但有些地方也可以模糊;(c) 非常嚴謹,不能有任何歧義。那麼,

(2)模型可以很好地進行 (b) 類的帶模糊性的推理,例子有:

1)生成如何做豆腐腦的方法。做豆腐腦的時候,中間很多步驟模糊一點是可以接受的,比如到底是做鹹的還是做甜的。只要整體步驟大致正確,做出來的豆腐腦兒就能吃。

2)數學定理的證明思路。證明思路是用語言表達的非正式的逐步解法,其中每一步的嚴格推導可以不用太具體。證明思路經常被用到數學教學:只要老師給一個大致正確的整體步驟,學生就可以大概明白。然後老師把具體的證明細節作為作業佈置給學生,答案略。

(3)GPT-3.5 不能進行型別 (c) 的推理(推理不能容忍歧義)。

1)一個例子是嚴格的數學證明,要求中間步驟中不能跳,不能模糊,不能錯。

2)但這種嚴格推理到底是應該讓語言模型做還是讓符號系統做還有待討論。一個例子是,與其努力讓 GPT 做三位數加法,不如直接調 Python。

  • 從網際網路進行檢索: GPT-3.5 系列(暫時)不能直接搜尋網際網路

(1)但是有一篇 WebGPT(
http://openai.com/blog/webgpt/) 論文發表於 2021 年 12 月,裡面就讓 GPT 呼叫了搜尋引擎。所以檢索的能力已經在 OpenAI 內部進行了測試。

(2)這裡需要區分的一點是,GPT-3.5 的兩個重要但不同的能力是知識推理。一般來說,如果我們能夠將知識部分解除安裝到外部的檢索系統,讓語言模型只專注於推理,這就很不錯了。 因為:

1)模型的內部知識總是在某個時間被切斷。模型始終需要最新的知識來回答最新的問題。

2)回想一下,我們已經討論過 1750 億的引數大量用於儲存知識。如果我們可以將知識解除安裝到模型之外,那麼模型引數可能會大大減少,最終它甚至可以在手機上執行(瘋狂的想法,但 ChatGPT 已經足夠科幻了,誰知道未來會怎樣呢).

7

結論

在這篇博文中,我們仔細介紹了 GPT-3.5 系列的能力範圍,並追溯了它們所有突現能力的來源。初代 GPT-3 模型通過預訓練獲得生成能力、世界知識和 in-context learning。然後通過 instruction tuning 的模型分支獲得了遵循指令和能泛化到沒有見過的任務的能力。經過程式碼訓練的分支模型則獲得了程式碼理解的能力,作為程式碼訓練的副產品,模型同時潛在地獲得了複雜推理的能力。

結合這兩個分支,code-davinci-002 似乎是具有所有強大能力的最強 GPT-3.5 模型。接下來通過有監督的 instruction tuning 和 RLHF 通過犧牲模型能力換取與人類對齊,即對齊稅。RLHF 使模型能夠生成更翔實和公正的答案,同時拒絕其知識範圍之外的問題。

我們希望這篇文章能夠幫助提供一個清晰的 GPT 評估圖,並引發一些關於語言模型、instruction tuning 和 code tuning 的討論。最重要的是, 我們希望這篇文章可以作為在開源社群內復現 GPT-3.5 的路線圖。

“因為山就在那裡。”——喬治·馬洛裡,珠穆朗瑪峰探險先驅

常見問題

  • 這篇文章中的這些說法更像是假設 (hypothesis) 還是結論 (conclusion)?

(1)複雜推理的能力來自於程式碼訓練是我們傾向於相信的假設

(2)對沒有見過的任務泛化能力來自大規模指令學習是至少 4 篇論文的結論

(3)GPT-3.5 來自於其他大型基礎模型,而不是 1750 億引數的 GPT-3 是有根據的猜測。

(4)所有這些能力都已經存在了,通過 instruction tuning,無論是有監督學習或強化學習的方式來解鎖而不是注入這些能力是一個強有力的假設,強到你不敢不信。主要是因為 instruction tuning 資料量比預訓練資料量少了幾個數量級

(5)結論 = 許多證據支援這些說法的正確性;假設 = 有正面證據但不夠有力;有根據的猜測 = 沒有確鑿的證據,但某些因素會指向這個方向

  • 為什麼其他模型(如 OPT 和 BLOOM)沒有那麼強大?

(1)OPT 大概是因為訓練過程太不穩定

(2)BLOOM 的情況則未知。如果您有更多意見,請與我聯絡

(作者注:轉發請在文章的開頭標明出處,而不是在結尾列一行小字。)

歡迎 Star、試用 OneFlow 最新版本:
http://github.com/Oneflow-Inc/oneflow/