ChatGPT專題之一GPT家族進化史
?時間線
2018 年 6 月
OpenAI發布GPT-1模型,1.1億參數。
2018 年 11 月
OpenAI發布GPT-2模型,15億參數,但由于擔心濫用,不向公眾開放模型的全部代碼及數據。
2019 年 2 月
OpenAI開放了GPT-2模型的部分代碼和數據,但仍然限制了訪問。
2019 年 6 月 10 日
OpenAI發布GPT-3模型,1750億參數,并向部分合作伙伴提供了訪問權限。
2019 年 9 月
OpenAI開放了GPT-2的全部代碼和數據,并發布了更大版本。
2020 年 5 月
OpenAI宣布推出GPT-3模型的beta版本,該模型擁有1750億個參數,是迄今為止最大的自然語言處理模型。
2022 年 3 月
OpenAI發布InstructGPT,用到 Instruction Tuning
2022 年 11 月 30 日
OpenAI通過GPT-3.5系列大型語言模型微調而成的,全新對話式AI模型ChatGPT正式發布。
2022 年 12 月 15 日
ChatGPT 第一次更新,提升了總體性能,增加了保存和查看歷史對話記錄的新功能。
2023 年 1 月 9 日
ChatGPT 第二次更新,改善了回答的真實性,增加了“停止生成”新功能。
2023 年 1 月 21 日
OpenAI發布限于部分用戶使用的付費版ChatGPT Professional。
2023 年 1 月 30 日
ChatGPT第三次更新,在此提升了答案真實性的同時,還提升了數學能力。
2023 年 2 月 2 日
OpenAI正式推出ChatGPT收費版訂閱服務,新版本對比免費版響應速度更快,運行更為穩定。
2023 年 3 月 15 日
OpenAI震撼推出了大型多模態模型GPT-4,不僅能夠閱讀文字,還能識別圖像,并生成文本結果,現已接入ChatGPT 向Plus用戶開放。
GPT-1:基于單向Transformer的預訓練模型
在 GPT 出現之前,NLP 模型主要是基于針對特定任務的大量標注數據進行訓練。這會導致一些限制:
大規模高質量的標注數據不易獲得;
模型僅限于所接受的訓練,泛化能力不足;
無法執行開箱即用的任務,限制了模型的落地應用。
為了克服這些問題,OpenAI走上了預訓練大模型的道路。GPT-1是由OpenAI于2018年發布的第一個預訓練模型,它采用了單向Transformer模型,并使用了超過40GB的文本數據進行訓練。GPT-1的關鍵特征是:生成式預訓練(無監督)+判別式任務精調(有監督)。先用無監督學習的預訓練,在 8 個 GPU 上花費 了1 個月的時間,從大量未標注數據中增強AI系統的語言能力,獲得大量知識,然后進行有監督的微調,與大型數據集集成來提高系統在NLP任務中的性能。GPT-1在文本生成和理解任務上表現出了很好的性能,成為了當時最先進的自然語言處理模型之一。
GPT-2:多任務預訓練模型
由于單任務模型缺乏泛化性,并且多任務學習需要大量有效訓練對,GPT-2在GPT-1的基礎上進行了擴展和優化,去掉了有監督學習,只保留了無監督學習。GPT-2采用了更大的文本數據和更強大的計算資源進行訓練,參數規模達到了1.5億,遠超過GPT-1的1.1億參數。除了使用更大的數據集和更大的模型去學習,GPT-2還提出了一個新的更難的任務:零樣本學習(zero-shot),即將預訓練好的模型直接應用于諸多的下游任務。GPT-2在多項自然語言處理任務上表現出了卓越的性能,包括文本生成、文本分類、語言理解等。
GPT-3:創造出新的自然語言生成和理解能力
GPT-3是GPT系列模型中最新的一款模型,采用了更大的參數規模和更豐富的訓練數據。GPT-3的參數規模達到了1.75萬億,是GPT-2的100倍以上。GPT-3在自然語言生成、對話生成和其他語言處理任務上表現出了驚人的能力,在一些任務上甚至能夠創造出新的語言表達形式。
GPT-3提出了一個非常重要的概念:情境學習(In-context learning),具體內容會在下次推文中進行解釋。
InstructGPT & ChatGPT
InstructGPT/ChatGPT的訓練分成3步,每一步需要的數據也有些許差異,下面我們分別介紹它們。
從一個預訓練的語言模型開始,應用以下三個步驟。
步驟1:監督微調SFT:收集演示數據,訓練一個受監督的策略。我們的標簽器提供了輸入提示分布上所需行為的演示。然后,我們使用監督學習在這些數據上對預訓練的GPT-3模型進行微調。
步驟2:獎勵模型Reward Model訓練。收集比較數據,訓練一個獎勵模型。我們收集了一個模型輸出之間比較的數據集,其中標簽者表示他們更喜歡給定輸入的哪個輸出。然后我們訓練一個獎勵模型來預測人類偏好的輸出。
步驟3:通過獎勵模型上的近端策略優化(PPO)強化學習:使用RM的輸出作為標量獎勵。我們使用PPO算法對監督策略進行微調,以優化該獎勵。
步驟2和步驟3可以連續迭代;在當前最優策略上收集更多的比較數據,這些數據用于訓練一個新的RM,然后是一個新的策略。
前兩步的prompts,來自于OpenAI的在線API上的用戶使用數據,以及雇傭的標注者手寫的。最后一步則全都是從API數據中采樣的,InstructGPT的具體數據:
1. SFT數據集
SFT數據集是用來訓練第1步有監督的模型,即使用采集的新數據,按照GPT-3的訓練方式對GPT-3進行微調。因為GPT-3是一個基于提示學習的生成模型,因此SFT數據集也是由提示-答復對組成的樣本。SFT數據一部分來自使用OpenAI的PlayGround的用戶,另一部分來自OpenAI雇傭的40名標注工(labeler)。并且他們對labeler進行了培訓。在這個數據集中,標注工的工作是根據內容自己編寫指示。
2. RM數據集
RM數據集用來訓練第2步的獎勵模型,我們也需要為InstructGPT/ChatGPT的訓練設置一個獎勵目標。這個獎勵目標不必可導,但是一定要盡可能全面且真實的對齊我們需要模型生成的內容。很自然的,我們可以通過人工標注的方式來提供這個獎勵,通過人工對可以給那些涉及偏見的生成內容更低的分從而鼓勵模型不去生成這些人類不喜歡的內容。InstructGPT/ChatGPT的做法是先讓模型生成一批候選文本,讓后通過labeler根據生成數據的質量對這些生成內容進行排序。
3. PPO數據集
InstructGPT的PPO數據沒有進行標注,它均來自GPT-3的API的用戶。既又不同用戶提供的不同種類的生成任務,其中占比最高的包括生成任務(45.6%),QA(12.4%),頭腦風暴(11.2%),對話(8.4%)等。
附 錄:
ChatGPT 的各項能力來源:
GPT-3 到 ChatGPT 以及這之間的迭代版本的能力和訓練方法:
參考文獻
1、拆解追溯 GPT-3.5 各項能力的起源:https://yaofu.notion.site/GPT-3-5-360081d91ec245f29029d37b54573756
2、全網最全時間線梳理!從ChatGPT的前世今生,到如今AI領域的競爭格局https://www.bilibili.com/read/cv22541079
3、GPT-1論文:Improving Language Understanding by Generative Pre-Training, OpenAI.
4、GPT-2論文:Language Models are Unsupervised Multitask Learners, OpenAI.
5、GPT-3論文:Language Models are Few-Shot Learners, OpenAI.
6、Jason W, Maarten B, Vincent Y, et al. Finetuned Language Models Are Zero-Shot Learners[J]. arXiv preprint arXiv: 2109.01652, 2021.
7、OpenAI是如何“魔鬼調教” GPT的?——InstructGPT論文解讀 https://cloud.tencent.com/developer/news/979148