隨著 ChatGPT 的出現以及隨之而來的廣泛討論,RLHF、SFT、IFT、CoT 等晦澀的縮略詞出現在公眾面前,這都歸功於 ChatGPT 的成功。這些晦澀的縮寫是什麼?為什麼它們如此重要?本文作者查閱了所有關於這些主題的重要論文,並進行了分類總結。
ChatGPT 並不是第一個基於語言模型(LM)的對話智能體,事實上,許多機構在OpenAI 之前發布過語言模型對話智能體,包括Meta BlenderBot、Google LaMDA、DeepMind 的Sparrow 和Anthropic Assistant。一些機構也宣佈建立開源聊天機器人的計劃,並公開了路線圖(如 LAION 的 Open-Assistant)。肯定還有其它機構在做同樣的工作,只是沒有宣布。
下表根據上面提到的 AI 聊天機器人是否可公開存取、訓練資料、模型架構和評估的詳細信息,對它們進行了比較。 ChatGPT 沒有相關數據,這裡使用的是 InstructGPT 的資料,它是 OpenAI 的一個微調模型,被認為是 ChatGPT 的基礎。
儘管在訓練資料、模型和微調方面存在許多差異,但這些聊天機器人也存在一些共通點——指令遵循(instruction following),即根據使用者的指令,給予回應。例如讓 ChatGPT 寫一首關於微調的詩。
通常而言,基礎語言建模的目標不足以讓模型有效率地遵循使用者的指示。模型創建者也使用指令微調(Instruction Fine-Tuning,IFT),它可以在多樣化任務上對基本模型進行微調,也能應用在情緒分析、文字分類、摘要等經典 NLP 任務。
IFT 主要由三個部分組成:指令、輸入和輸出。輸入是可選的,有些任務只需要指令,如上面的 ChatGPT 範例。輸入和輸出構成實例(instance)。給定的指令可以有多個輸入和輸出。相關範例如下([Wang et al., ‘22])。
IFT 的資料通常使用人類的指令和語言模型 bootstrapped 的指令集合。對於 bootstraping,LM 會在零樣本的情況下根據 prompt,產生新的指令、輸入和輸出。在每一輪中,模型都會得到從人類編寫和生成模型中選擇的樣本的 prompt。人類和模型貢獻資料集的情況可以用頻譜表示,如下圖所示。
一種是純模型產生的IFT 資料集如Unnatural Instructions,另一種是集社群努力、手動創建的指令如Super natural Instructions。位於這兩者之間,選用高品質種子資料集然後進行 bootstrap 如 Self-instruct。為IFT 收集資料集的另一種方法是將現有高品質眾包NLP 資料集用於各種任務(包括prompting),並使用統一的模式或不同的範本將這些資料集作為指令,相關工作包括T0、Natural instructions 資料集、FLAN LM 和OPT-IML。
LM 使用微調後的指令,可能不會總是產生有用安全性的回應。這種行為的例子包括無效回應(托詞),總是給出諸如“對不起,我不明白”之類的無效回答,或者對用戶關於敏感話題的輸入做出不安全的回應。
為了解決這種問題,模型開發人員使用監督式微調(Supervised Fine-tuning, SFT),在高品質的人類標記資料上微調基礎語言模型,以實現有效和安全的回應。
SFT 和 IFT 緊密相連。指令調優可以看成是監督式微調的子集。在最近的文獻中,SFT 階段通常用於安全主題,而不是在 IFT 之後進行的指令特定主題。未來這種分類和描述會有更清晰的用例和方法。
Google的 LaMDA 也是根據一組規則對帶有安全註解的對話資料集微調。這些規則通常是由模型創建者預先定義和製定的,包含一系列廣泛的主題,如有害、歧視和錯誤訊息。
另一方面,OpenAI 的InstructGPT、DeepMind 的Sparrow 和Anthropic 的ConstitutionalAI 皆使用從人類回饋中強化學習(reinforcement learning from human feedback, RLHF)的技術。在RLHF 中,模型反應基於人類回饋(如選擇一個更好的答案)進行排序,然後用這些註釋的反應訓練模型,以返回RL 優化器的scalar 獎勵,最後透過強化學習訓練對話智能體來模擬偏好模型。
思考鏈(Chain-of-thought, CoT)是指令示範的特殊情況,透過從對話智能體中引出逐步推理產生輸出。用 CoT 微調的模型使用帶有逐步推理的人類註釋的指令資料集。如下範例所示,橘色標記代表指令,粉紅色標記代表輸入和輸出,藍色標記代表 CoT 推理。
用 CoT 來微調的模型在涉及常識、算術和符號推理的任務上表現得更好。 CoT 微調也顯示出對實現無害性非常有效(有時比 RLHF 做得更好),而且模型不會迴避並產生「對不起,我無法回答這個問題」等回應。
本文要點總結如下:
1、 與預訓練資料相比,只需要非常小的部分資料來微調指令。
2、 監督式微調使用手動標註使模型輸出更安全且更有幫助。
3、 CoT 微調提高模型在逐步思考任務上的效能,並減少了它們在敏感話題上的無效回應或迴避不答。
最後,作者對未來對話智能體的發展給了自己的一些思考。
1、 RL 在從人類回饋中學習有多重要?可以透過 IFT 或 SFT 中的高品質資料訓練獲得與 RLHF 一樣的效能嗎?
2、 與在 LaMDA 中使用 SFT 相比,在 Sparrow 中使用 SFT RLHF 的安全性如何?
3、 IFT、SFT、CoT 和 RLHF,需要怎樣的預訓練? tradeoff 是什麼?應該使用的最好的基礎模型是什麼?
4、 文中介紹的許多模型都是經過精心設計,工程師們專門收集導致失敗的模式,並根據已處理的問題改善未來的訓練(prompts 和方法)。要如何有系統地記錄這些方法的效果並重現它們?
以上是這些技術,ChatGPT和它的潛在競爭者們都在使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!