目錄
-
- 一,ChatGPT的前世今生
-
- GPT-1/2/3/3.5/Instruct/Chat
- 二,一些概念
-
- InstructGPT訓練過程:
一,ChatGPT的前世今生
GPT-1/2/3/3.5/Instruct/Chat
GPT:基于Transformer Decoder預訓練 + 微調/Finetune
GPT-2:基于Transformer Decoder預訓練 + Zero-shot Learning (零樣本學習)
僅通過大規模多領域的資料預訓練,讓模型在Zero-shot Learming的設定下自己學會解決多任務的問題
GPT-3 基于Transformer Decoder預訓練 + Zero-shot Learning (零樣本學習) + 大規模資料prompt完形填空
舍棄fine-tuning,使用40T的資料進行完形填空訓練:給前文預測單詞,有一千多億的參數。隻需将自然語言的提示資訊(prompt)和任務示例(demonstration)作為上下文輸入給GPT-3,它就可以在零樣本或小樣本的情況下執行任何NLP任務
GPT-3.5 基于Transformer Decoder預訓練 + Zero-shot Learning (零樣本學習) + 大規模資料prompt完形填空 + 微調/Finetune
模型使用與 GPT-3 相同的預訓練資料集,但進行了額外的微調,進而更擅長以下兩點:更擅長上下文學習、對話可以生成更加符合人類期待的回報
InstructGPT GPT-3 + PPO算法finetune
基于RLHF手段微調的GPT。監督學習讓GPT3有一個大緻的微調方向,然後用RL中的PPO算法來更新微調過的GPT3的參數。對InstructGPT的簡單了解,可以是基于人類回報的強化學習(RLHF)手段微調的GPT3。
InstructGPT 通過将模型的目标與人類使用者可能喜歡的内容“對齊”來解決這個問題。更真實、更誠實的答案,更少的毒性,等等。
ChatGPT GPT-3.5 + PPO算法finetune = Transformer + prompt學習 + RLHF + PPO
在GPT3.5的基礎上,先通過基于人類偏好定義獎勵函數,再基于獎勵函數通過PPO持續優化。
二,一些概念
ChatGPT是InstructGPT的兄弟模型,它經過訓練可以按照提示中的說明進行操作并提供詳細的響應
所謂的語言模型的訓練,其實就是讓模型調整候選句對應的機率,使我們人類希望輸出的候選句的機率盡可能大,而不希望輸出的機率盡可能小。
Fine-tuning與Prompting的不同
Fine-tuning中:是預訓練語言模型“遷就“各種下遊任務。具體展現就是通過引入各種輔助任務loss,将其添加到預訓練模型中,然後繼續pre-training,以便讓其更加适配下遊任務。總之,這個過程中,預訓練語言模型做出了更多的犧牲
Prompting中:是各種下遊任務“遷就“預訓練語言模型。我們需要對不同任務進行重構,使得它達到适配預訓練語言模型的效果。總之,這個過程中,是下遊任務做出了更多的犧牲
RLHF:人類回報的強化學習
InstructGPT訓練過程:
基于RLHF手段微調的GPT。InstructGPT的訓練分為三個階段(總體上結合了監督學習和強化學習,先是監督學習讓GPT3有一個大緻的微調方向,然後用RL中的PPO算法來更新微調過的GPT3的參數)。
-
階段1:利用人類的标注資料(demonstration data)去對GPT3進行有監督訓練
首先,OpenAI是先設計了一個prompt dataset,裡面有大量的提示樣本,給出了各種各樣的任務描述
其次,找了一個标注團隊對這個prompt dataset進行标注(本質就是人工回答問題)
最後,用這個标注過的資料集微調GPT3,這個微調好的GPT3我們稱之為SFT模型(監督微調,全稱Supervised fine-tuning,簡稱SFT),具備了最基本的預測能力
-
階段2:通過RLHF的思路訓練獎勵模型RM
把微調好的SFT模型去回答prompt dataset某個問題,然後通過收集4個不同的SFT輸出而擷取4個回答,接着人工對這4個回答的好壞進行标注且排序,排序的結果用來訓練一個獎勵模型RM,具體做法就是學習排序結果進而了解人類的偏好
-
階段3:通過訓練好的RM模型預測結果且通過PPO算法優化SFT模型政策
具體做法是,再次讓SFT模型去回答prompt dataset某個問題,然後此時不再讓人工評估好壞,而是讓階段2訓練好的獎勵模型去給SFT模型的預測結果進行打分排序
參考:
July GPTN: ChatGPT通俗導論
chatgpt曆程原理架構:chatgpt曆程原理架構
圖解Transformer