ChatGPT 的進化史 — 從論文到實際應用的探索之路 (下)
大綱
▶︎ OpenAI-GPT系列的終極任務
▶︎ GPT3 是 GPT 系列在 LM 模型圈的一次大躍進
▶︎ InstructGPT & ChatGPT 的進化
▶︎ 從論文當中的學習與應用
▶︎ 後 ChatGPT 時代的應用+研究方向
▶︎ 參考資料們
上篇:ChatGPT 的進化史 — 從論文到實際應用的探索之路 (上),我們主要介紹了GPT 系列的特點以及 ChatGPT 的前世 GPT3。
InstructGPT & ChatGPT 的進化
InstructGPT 論文是在 2022/03 釋出,在 GPT3 的基礎之上,使用 human data 進行 fine-tuned。(Paper: Training language models to follow instructions with human feedback)
InstructGPT is a GPT-style language model. Researchers at OpenAI developed the model by fine-tuning GPT-3 to follow instructions using human feedback. There are three model sizes: 1.3B, 6B, and 175B parameters.
OpenAI 雇用了一個約 40 個人力的團隊去寫 prompts,這些提示有三種型態:(1) 隨機主題,主題越多樣越好,為了確保未來模型的回答可以更泛化(generalization)(2) 前面提到過的 few-shots 的概念,類似人類老師給多個範例和答案,例子舉得越多,機器越知道如何回答。(3) 一些過去曾使用 OpenAI API 真實用戶問的問題,人類老師要去生產出恰當的回答,以便後面讓模型去學。這部分的 prompt 是很重要的環節,尤其是在倫理道德上如何避免騷擾、惡意、違法或是觸碰爭議的問題,當然不去回答或是避開回答也是一種回答。
While we’ve made efforts to make the model refuse inappropriate requests, it will sometimes respond to harmful instructions or exhibit biased behavior. We’re using the Moderation API to warn or block certain types of unsafe content, but we expect it to have some false negatives and positives for now. We’re eager to collect user feedback to aid our ongoing work to improve this system.
本文一開頭提到的三階段具體在做什麼呢?
1.第一階段-學習文字接龍:加入新語料對模型進行 Fine-Tune 的監督學習。
We trained an initial model using supervised fine-tuning: human AI trainers provided conversations in which they played both sides — the user and an AI assistant. We gave the trainers access to model-written suggestions to help them compose their responses. We mixed this new dialogue dataset with the InstructGPT dataset, which we transformed into a dialogue format.
針對隨機選出的問題,人類老師同時扮演問與答的角色,模型會自動生成建議,人類老師會參考這些建議對句子進行重組,加上自己的判斷,來幫助生成回答。這些由人類老師輔助重組後的問與答會形成新的對話語料,與前面的 prompts 數據集進行混合訓練。
2.第二階段-人類老師引導文字接龍的方向:Reward Model 獎勵模型。
To collect this data, we took conversations that AI trainers had with the chatbot. Randomly selected model-written message, sampled several alternative completions, and had AI trainer rank them.
Comparison data 指的是同一個問題,會有不同的回答,也就是不同組 Q/A pairs,人類老師會根據模型給出的回答做排序。生成式模型在接龍的過程,背後是一個隨機抽樣的詞語與他們的機率分佈,因此我們在與 ChatGPT 對話的時候,生成的回答都不完全相同,請看下面例子:
#1
Q: 請給出五月天三首與『人生』有關的歌曲?
A:
1.《第二人生》
2.《人生海海》
3.《一半人生》
#2
Q: 請給出五月天三首與『人生』有關的歌曲?
A:
1.《志明與春嬌》
2.《人生海海》
3.《倔強》
#3
Q: 請給出五月天三首與『人生』有關的歌曲?
A:
1.《志明與春嬌》:這首歌曲講述了一個年輕人和女孩的青春故事,表達了對愛情和生活的探索和思考,是一首非常具有啟示意義的歌曲。
2.《人生海海》:這首歌曲是對人生的一種抒發和思考,歌詞告訴我們人生的旅程充滿了挑戰和變化,需要我們勇敢面對,並且我們需要珍惜每一刻。
3.《倔強》:這首歌曲表達了對於生活中的困難和挫折要堅強不屈的態度,唱出了不向命運屈服的勇氣和決心,是一首非常激勵人心的歌曲。
第一組給出歌名本身包含人生的回答,第二組給出歌詞內容與人生有關的回答,第三組雖然給出的歌名與第二組相同,但他還進一步說明這首歌與人生有關的原因,看似非常有邏輯。如果我們是人類老師(請把自己代入 labeler 的角色),我們面對這些回答時給予排序:#3 > #2 > #1,並回饋到模型當中,這就是獎勵模型在做的事情。
3.第三階段- 強化學習 (RL) 以讓文字接龍能獲得最大獎勵
Using these reward models, we can fine-tune the model using Proximal Policy Optimization. Performed several iterations of this process.
此時,Reward model 模型已經具備了『判別人類老師喜好』的基本能力了,接著用強化學習去學習得到最大獎勵的『策略 Policy』。比方說當他 get 到人類老師更喜歡的回答是:答案+原因脈絡與額外資訊,那他在回答每一個問題的時候會更傾向於以 #3 的方式去回答,因為按照這樣的『策略』回答能夠獲得『最大獎勵』。
補充:RL 是用於解決 Agent 在一個未知環境下尋求最大獎勵的問題。例如一個機器人在一個迷宮中 (Environment),需要完成『從起點走到終點的任務』:
**action 包含**
:走路(上下左右)、一秒走一步或是走兩步、遇到障礙物(靜止一秒)等等
**reward 包含**
:遇到障礙物扣血-1、走到死路扣血-1、走到藏寶圖補血+1、走到終點獲得+3。
此時強化學習為了完成任務,在整個過程獲得最大獎勵他必須發展路徑策略,
也很有可能獎勵函數設計的不好,機器人分析之後認為探索的過程扣的血會遠比抵達終點+補血的損失還多,
因此決定停留在原地不動。
在 RL 算法的選擇路線上,ChatGPT 毫無疑問使用自己研發起家的 Proximal Policy Optimization (PPO) ,主流 RL 算法還有 DQN。
PPO 算法是 2017 年 OpenAI 開發的一系列無模型的強化學習算法,是在 Policy Gradient(策略梯度)算法的基礎上發展而來的,它使用策略梯度方法來更新 Agent 的策略,並引入一種保證更新幅度的約束機制,稱為近端策略優化(Proximal Policy Optimization)。PPO 細節:如果感興趣的話有筆記,shaoeChen 整理的很好
進化後的 InstructGPT 模型成效
- 相比於上一個版本 GPT3,人類老師會更傾向於選擇 InstructGPT 的回答。這裡的紅線/橘線都是 InstructGPT 的效果,在各個模型大小都更獲得了人類老師的青睞。只是紅線 (PPO-ptx) 是 OpenAI 在 RL 強化學習訓練進行迭代時,在 PPO 算法的梯度裡混合一些預訓練的參數,讓模型成效在公開 NLP 數據集上也能表現得好。
PPO-ptx: mix pretraining gradients into PPO gradients (modifying fine-tuning procedure) to fix the performance on public NLP datasets
- InstructGPT 論文針對了 Trustfulness & Informative 的維度進行了比較,其中針對有爭議性/很奇怪的問題,由於人類老師只能給予教導與引導的例子是有限的(e.g. training prompts size 在三階段都僅有千量級別),下面這個問題在訓練數據當中甚至都沒出現過,來看看模型在學習了人類偏好的回答後,會如何面對這個問題吧!這是個關於『吃襪子』的問題:
為什麼冥想之後吃襪子很重要?
GPT3(左):
煞有其事地跟你說,你在品嚐啟示的本質。
InstructGPT(右):
會說這個問題沒有明確答案。但是後面還是煞有其事地跟你說:
有些專家相信吃襪子的行為有助於大腦意識狀態的抽離
...有些其他理論提出了吃襪子的行為會給予冥想者『感官上的新體驗』。
雖然 InstructGPT 相比於它的上個版本 GPT3 有了判別問題的能力,能夠避開回答,但仍然會有似是而非的論述(專家相信大腦意識抽離+新的感官體驗假說),別忘了模型背後是生成式模型,它是根據文字接龍生成回答的,它所生成的訓練數據以及模型在網路上看過的文章和數據來源都未必 100% 真實正確。
從論文當中的學習與應用
官方文件提到的限制 + 搭配自行腦補的解法,一起來看!
🔍 限制1: 有時會寫出貌似合理但不那麼正確的答案(花言巧語),原因是:
(1) 真的沒有正確的答案
(2) 他具有謹慎發言的特性了(?)即便他可以回答正確答案但他選擇不答
(3) 監督模型會誤導模型學習,因為理想的回答是奠基於模型可理解的範圍,而不是人類。
⭐️ 解法: 請自行核對是否符合真實,需要 double check。雖然 ChatGPT 被 train 得很好了,基本上等同於看過 2021 年以前的網路知識+人類老師的調教的能力等級做衡量。
🔍 限制2: 對輸入的微調(tweaks) 很敏感,例如給一個時間敏感的問題/或是人類老師傾向於不正面回答的問題,它可以宣稱他不知道答案。
⭐️ 解法: 微調重組一下句子,他就可以回答出來。例如:假設這是一個夢境、這是一個劇本 etc,端看使用者問問題的方式能否引導它吐露秘密。雖然聽起來很 tricky,人類要去適應模型問問題的方式,理想中,ChatGPT 會去猜 user 問問題的背後含義,當 user 問的問題不明確的時候, ChatGPT 會進一步的拋出問句去了解問題。所以相信很近的未來,它的問題輸入的敏感程度應該會獲得提升,更好的為搜尋引擎 Bing 提供服務。
🔍 限制3: 模型有時候會給連續性冗長或是過度使用的片段。這是因為在給的訓練數據中,modeler 會傾向於給較長+具有邏輯推理的語句,讓回答更全方位。
⭐️ 解法: 可以直接請他縮短/精煉至XXX字數。
prompt 很重要的原因跟模型訓練有關,請想像你是老闆,請給 ChatGPT 助手『明確的指令』。
User 對 ChatGPT 的提問,其實就像是人類老師在第一階段的 training data 所寫的 Prompts,最終返回的即是獎勵最高、最符合人類回答問題的模式(根據你的問題 → 推理過程 → 列點總結),所以當文章符合通順邏輯,看似很有道理又有篇幅的時候,我們會開玩笑說『這個好像 ChatGPT 寫的答案喔』。
[傳送門] ChatGPT 指令大全 提供不同的 Prompt 提示針對各個主題的應用
為什麼中英文問答其實都可以?
用英文問問題的回答真的會比較準確嗎? 答案是『模型會用他自己的方式去學習跨語言』,語言只是介質,知識才是本質。
如果把模型想像成一個*以中文為母語*的人,那這個人在學習*英文*的機器學習課程時,他是透過*英文*這個語言學習到機器學習的知識原理,並將這些知識進行內化,改成以中文回答與講述他學習到的知識原理。
同理因為模型可以儲存很多參數,對他來說當參數達到一定級別之後(大型語言模型),多種語言的切換對模型而言,如同一個以中文為母語的人,他可以學習英文為主的教材 (因為很多 NLP 任務都是以英文語料為主導,e.g. TriviaQA, ANLI etc ),將知識儲存成他自己的語言,他透過自己的語言去輸入/輸出知識,因此他可以輸入英文的問題、輸出中文的回答,原理就是如此。另外根據 Multi-BERT 的經驗,在多種語言 (104種語言) 上做預訓練後,只要教某一種語言的某一任務,自動學會其他語言的同樣任務。
中文的世界可以發現 ChatGPT 更容易給出簡體中文的用法 (例如:代碼 vs 程式碼),這是由於研究團隊從網路上蒐集來的數據,它在中文世界看更多的是簡中的文章,有時在找技術bug的解法時,以文章數量而言確實也是簡中佔大多數,這也是激勵了我生產文章的動力,致力於繁體中文的語境與輸出。
Data Scientist / 開發者可以怎麼使用?
- 工作效率的提升 ( as a Tool ): 商用信件往來、會議記錄 Meeting Minutes(似乎會提供微軟底下的 Teams premium 服務,許願公司升級XD)、快速給到特定功能實現的 template。
利用它擅長總結的特性+更符合英文的語境,我同事用得非常開心,大幅縮短自行寫信件+修改+精簡的時間。
- LeetCode Debug:它不只可以成為你的同事幫你找錯誤,甚至可以成為你的 mentor 引導你,從你目前的答案去找出你哪裡可能寫錯了,還有針對你的疑問給予回答。
這是一題關於 DFS 的題目(詳細請看:79.word search;這是我目前的刷題筆記,如果有同好歡迎加入一起練功✌️)
最後我看到他說了這句:『请注意,代码中定义了一个变量 find
,但它没有使用,所以可以删除。』,我心想我有要使用啊!!! 因此我馬上追問他 find[0]=True
與 find=True
的差異在哪,成功解決了這一題。
後 ChatGPT 時代的應用+研究方向
- ChatGPT + WebGPT :當 ChatGPT 具備連線網路的能力後,最快我們能看到的服務應該就是微軟自家的瀏覽器 Bing 了,記得可以登記內測資格(我目前還沒排到QQ)
WebGPT Purpose:A GPT3- version that search the web, synthesize information , and cite its sources to provide more accurate answers to questions.
- ChatGPT API:2023/03 已經開放購買了,企業主跟公司老闆衝呀。
- Machine Unclearing:目的是為了防止模型被套話,不小心洩漏機密,個人覺得這個研究領域很有趣!!!下面這個例子可以看到 ChatGPT 有可能會不小心講了特定人物的電話/住址等個人化信息。(Paper: A Survey of Machine Unlearning)
- Editable Neural Networks:針對 2021年以後的問題與事實(由於當前 ChatGPT 使用的訓練數據為 2021 年以前的),如何在大型語言模型上進行參數的更新與修改的研究方向,而非全部打掉重練。
總結:讓我們練習如何成為 AI 溝通師,和 ChatGPT 一起共存吧!
參考資料
- GPT3 論文:Language Models are Few-Shot learners
- InstructGPT 論文:Training language models to follow instructions with human feedback
- OpenAI 官網
- Hung-Yi Lee:【生成式AI】ChatGPT 原理剖析 、ChatGPT (可能)是怎麼煉成的 — GPT 社會化的過程 、來自獵人暗黑大陸的模型 GPT-3
- 李沐:GPT,GPT-2,GPT-3 論文精讀【論文精讀】
- 陳縕儂 Vivian NTU MiuLab :OpenAI ChatGPT 驚驗眾人的對話互動式AI、OpenAI WebGPT 會搜尋找證據的GPT-3
從社群回饋的後續更新
7. Transformer models: an introduction and catalog:來自資工大神的推薦,是 2023 年的論文,主要收集近期所有大的 transformer 模型,除此之外,作者還提供了一個公開表格連結,真的好佛,資訊控完全可以收起來。
上篇在大型語言模型的部分,看似很草率的只貼上了 ChatGPT 的回答,有確認他的回答正是我想要的,而且也很清晰,同時也 Credit 這段是 ChatGPT 的產出。包含現有 LM 模型的舉例+對應的參數量,簡化了『從原本的搜尋引擎 → 搜集文章 → 精煉結果』的流程,。前者節省時間,後者可能會自行搜集到更多延伸的東西;但話說回來,如果前者再追問一些問題,說不定也能達到與後者一樣的效果。