原始模型是頭奇怪的野獸
剛訓練完出爐時,大型語言模型是一個基礎模型(base model):一台純粹的文字完成引擎,讀過了整個網路,卻完全不知道自己「應該要幫忙」。你問一個基礎模型「法國的首都是哪裡?」,它也許會答「巴黎」——也可能接著再寫三道測驗題,因為在它的訓練資料裡,問題後面常常還跟著更多問題。它只是在完成文字,還不會「協助」。
基礎模型很有威力,卻很難駕馭。它有著原始的知識,但不會穩定地遵循指令、不會專注在任務上,也不會拒絕有害的請求。要把這份原始能力,變成你會想與它聊天的東西,得再經過第二階段的雕琢。
自回归生成循环示意图,将每个预测出的词元作为输入重新送回。
教它當一個助理
你真正在對話的那個版本,是一個對話模型(chat model),也叫做對話式助理(conversational assistant)。它的做法是:拿基礎模型,再用「有幫助的對話」範例進一步訓練它——這一步稱為指令微調(instruction tuning)——然後再依人類的回饋來精修,使它偏好那些大家覺得有用、且行為得體的回答。那個回饋步驟,常用一種叫基於人類回饋的強化學習(reinforcement learning from human feedback,RLHF)的方法。
基礎模型的本領並沒有被抹掉——而是被「對準」了。經過這番雕琢(更廣義的做法稱為微調,fine-tuning)之後,同一台「猜下一個字」的機器,現在會穩定地回答你的問題、遵循你的格式要求、在需要時反問你以釐清,並拒絕它不該做的事。這就是為什麼你用的助理,感覺比它原始的祖先合作得多。
RLHF 流程:人类偏好数据训练奖励模型,奖励模型再微调语言模型的策略。
提示進去,補全出來
兩個你到處都會看到的詞:提示(prompt)是你送進模型的一切——你的問題,加上先前的對話與指示——而補全(completion)則是它寫回來的文字。在內部,兩者之間並沒有什麼神奇的分界線:模型只是把提示接續下去,而它加上去的那一段就是補全。你整段對話,其實是一塊不斷長大的文字,模型一輪接一輪地持續完成它。
PROMPT (what you and the system provide): System: You are a helpful, concise assistant. User: What's the capital of France? COMPLETION (what the model writes): Assistant: The capital of France is Paris.
為什麼對話模型感覺像魔法(底下又是什麼)
有句話值得直說:即使是打磨過的助理,在每一句回覆底下,跑的仍然是下一個詞元預測。微調並沒有取代那個循環,而是教會那個循環去落在「有幫助、安全、格式得體」的接續上。當聊天機器人「決定」反問你一個釐清的問題時,那個決定,不過就是模型在它被訓練出來的行為之下,預測「一個釐清問題」就是最貼切的下一段文字。
即便是打磨过的聊天机器人,每个词元仍是从这个下一词元分布中选出的。
同時握住這兩個事實——它既是個謙卑的「猜下一個字」預測器,「又」是個真正有用的協作者——才是理解這些系統的成熟方式。這能讓你不至於過度信任它們,同時又仍然能用它們完成真正的工作。