昨天我們介紹了訓練三階段的第一階段 Pretrain,LLM 會透過海量的語料庫學會基本的語言模式,建立「知識基礎」,但這時候的模型,其實還不會「聽懂人類的指令」,更不懂「人類價值觀」。
因此,LLM 的訓練還需要 SFT 與 RLHF 兩個步驟,讓模型從一個「只會讀書卻不會實際運用」的學生,變成真正能「遵循指令」並「符合價值觀」的助手。
預訓練給了 LLM 海量的知識,但他仍然只會用「接龍」的方式生成,SFT 的目的就是讓模型學會理解並執行人類指令。
傳統 PLM 會針對每個任務單獨微調(分類、翻譯、摘要),而 LLM 會直接訓練「指令遵循能力」,能泛化到更多任務,SFT 透過 instruction dataset,來訓練模型理解指令,但是高品質的指令數據大多都還是需要人工標記,成本極高,部分研究會用 GPT-4 生成指令數據(如 Alpaca)來降低成本。
一個典型的 SFT:
{
"instruction": "將下列文字翻譯成英文:",
"input": "今天天氣真好",
"output": "Today is a nice day!"
}
SFT 還能訓練模型具備「多回合對話能力」,這個能力完全來自 SFT 訓練資料的設計。
一次性對話的模型:
user:你好,我是 Datawhale 成員
model:你好!有什麼能幫你嗎?
user:你知道 Datawhale 是什麼嗎?
model:我不知道。
有多回合對話能力的模型:
user:你好,我是 Datawhale 成員
model:你好!有什麼能幫你嗎?
user:你知道 Datawhale 是什麼嗎?
model:Datawhale 是一個開源組織。
SFT 讓模型能聽懂指令,但他可能還是會「答非所問」或給出「不像人回覆的答案」,因此,需要 RLHF 來對齊人類偏好與價值觀。
RLHF 的執行成本極高,需要同時訓練四個模型(Actor、Ref、Reward、Critic),消耗大量的 GPU 資源,為了降低成本,學界提出了 DPO(Direct Preference Optimization),用監督學習直接學習人類偏好,效果接近 RLHF,但更省算力。
LLM 的三階段邏輯如下:
Pretrain(讀懂知識) -> SFT(理解指令)-> RLHF(回覆出我們偏好的答案)
參考連結:
https://datawhalechina.github.io/happy-llm/#/