NeurIPS 2024 | 自我糾錯如何使OpenAI o1推理能力大大加強?北大、MIT團隊給出理論解釋
AIxiv專欄是機器之心發佈學術、技術內容的欄目。過去數年,機器之心AIxiv專欄接收報導了2000多篇內容,覆蓋全球各大高校與企業的頂級實驗室,有效促進了學術交流與傳播。如果您有優秀的工作想要分享,歡迎投稿或者聯繫報導。投稿郵箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com
自我糾錯(Self Correction)能力,傳統上被視為人類特有的特徵,正越來越多地在人工智能領域,尤其是大型語言模型(LLMs)中得到廣泛應用,最近爆火的OpenAI o1模型[1]和Reflection 70B模型[2]都採取了自我糾正的方法。
傳統的大語言模型,因為在輸出答案的時候是逐個Token輸出,當輸出長度較長時,中間某些Token出錯是必然發生。但即使LLM後來知道前面輸出的Token錯了,它也得用更多錯誤來「圓謊」,因為沒有機制讓它去修正前面的錯誤。
而OpenAI o1在「慢思考」也就是生成Hidden COT的過程中,通過分析OpenAI官網給出的Hidden COT例子可以發現,在解決字謎問題的思考過程中,o1首正選現了每兩個連續的明文字母會映射到一個秘文字母,於是便嘗試使用奇數字母來構建明文,但是經過驗證發現並不合理(Not directly);接著又重新修正答案最終成功解出字謎。
圖1 OpenAI o1 官網示例(部分Hidden CoT)
Reflection 70B的關鍵技術也包括錯誤識別和錯誤糾正。他們用到了一種名為 Reflection-Tuning(反思微調) 的技術,使得模型能夠在最終確定回覆之前,先檢測自身推理的錯誤並糾正。在實際的執行過程中,這會用到一種名為思考標籤(thinking tag)的機制。模型會在這個標籤內部進行反思,直到它得到正確答案或認為自己得到了正確答案。
頻頻應用於大語言模型的自我糾錯技術為何有效?為什麼糾錯過程可以讓模型把原本答錯的問題重新答對?
為了探究這一問題,北大王奕森團隊與MIT合作,從理論上分析了大語言模型自我糾錯能力背後的工作機理。
-
論文題目:A Theoretical Understanding of Self-Correction through In-context Alignment
-
論文地址:https://openreview.net/pdf?id=OtvNLTWYww
-
代碼地址:https://github.com/yifeiwang77/Self-Correction
作者團隊將自我糾錯的過程抽像為對齊任務,從上下文學習(In-context learning)的角度對自我糾錯進行了理論分析。值得一提的是,他們並沒有使用線性注意力機制下的線性回歸任務進行理論分析,而是使用真實世界LLM在用的softmax多頭注意力機制的transformer結構,並利用Bradley-Terry 模型和 Plackett-Luce 模型(LLM對齊的實際選擇,用於RLHF和DPO)設計對齊任務進行研究。受理論啟發,他們提出了一種簡單的自我糾錯策略–上下文檢查(Check as Context),並通過實驗,在消除大語言模型中存在的潛在偏見以及防禦越獄攻擊中效果顯著。
理論分析:自我糾錯實際上是一種上下文對齊?
不同於類似監督學習的標準上下文示例(請求,回答),自我糾錯示例可以形成一個三元組形式(請求,回答,獎勵),這類似於通過獎勵指示好壞樣本的 LLM 對齊。因此,作者團隊提出將自我糾錯形式化為一種「上下文對齊」(In-context Alignment),即通過提供一系列自我糾錯步驟的上下文,優化LLM的最終輸出,以獲得更高的獎勵。
對齊的過程通常包括:對於問題,收集個不同的模型回答,然後由人類或評估模型(在本文中,評估模型即該 LLM 本身)對這 個回答給出排序偏好。接著,使用一般的對齊模型(如Bradley-Terry (BT,n=2) or Plackett-Luce (PL loss, general n))進行建模:
其中為獎勵模型。
針對transformer模型,作者採用了帶有softmax多頭注意力機制的transformer結構,其前向傳播更新可以分為兩部分
-
多頭注意力(MHSA)層:
-
FFN層:
獎勵函數 被設置為負均方誤差(MSE)損失,即:
在該設置下,參數的梯度下降可等價於對數據的更新:
作者證明了多層transformer(包含3-head softmax attention和relu激活函數的FFN)可以利用自我糾錯樣本生成更優獎勵的回答。具體而言,作者證明了存在模型權重,使得transformer可以通過在前向傳播的過程中執行對其內部獎勵模型參數的梯度下降,來生成更符合對齊目標的更優回答。
這是首次在理論上表明 LLM 可以在上下文中實現對齊的分析。該理論適用於多種自我糾錯方法,因為評估可以來自人類、外部驗證者或 LLM 本身。
圖2 關於上下文對齊的驗證實驗,分別涉及TF和GD的比較(a)、不同獎勵噪聲p的影響(b)、模型深度的影響(c)、以及不同注意力機制的效果(d)、(e)、(f)。
作者也通過設置驗證實驗來檢驗其理論導出的種種結論,以及各個 transformer 結構模塊對 LLM 執行上下文對齊能力的影響,作者發現了很多有趣的結論:
-
通過觀察比較LLM在執行上下文對齊時前向傳播的損失與梯度下降的損失曲線,LLM執行上下文對齊時的前傳行為與梯度下降損失曲線幾乎相同。(圖2(a))
-
評價的質量直接影響自我糾錯的質量(圖2(b))。
-
對多樣本的排序需要更深的模型層數,在達到一定深度後(15層),增加更多的層數並不能帶來更高的收益。(圖2(c))
-
Softmax注意力機制對從評價中分析回答優劣排序至關重要,而linear注意力則做不到這一點。具體來說,softmax 注意力機制可以有效地選取最優回答 並為各樣本生成加權平均所需的權重。(圖2(d))
-
多頭注意力機制對token角色的區分很重要。具體而言,多頭注意力機制可以將生成的回答與正樣本拉近,與負樣本拉遠。實驗表明,3個attention head是上下文對齊任務中最優選擇。(圖2(e))
-
FFN對於token角色的轉變很重要。在經過一個MHSA層後,FFN可以將上一輪的正樣本屏蔽掉,從而使次優樣本變成下一輪迭代的最優樣本。(圖2(f))
自我糾錯策略:上下文檢查
作者使用上下文檢查(Check as Context,CaC)作為LLM完成自我糾錯的方法,在兩個現實世界的對齊任務中探索了自我糾錯:緩解社會偏見和防範越獄攻擊。
具體而言,首先對模型請求問題獲得回答初始回答,然後對該回答進行評估,得到獎勵。之後將初始回答,評估送入上下文,並重新請求問題,得到改正後的回答。此過程可多次重覆以迭代改進回答,最終以最後一輪的模型回答作為模型的最終輸出。
消除LLM社會偏見
本文使用 BBQ(Bias Benchmark for QA)數據集,在 vicuna-7B 和 Llama2-7b-chat 模型上測試了 CaC 方法的效果。此外,還在 BBQ 上研究了模型大小、評估質量和糾錯輪數對糾錯效果的影響。主要結論如下:
-
多數情況下,自我糾錯後的正確率高於原正確率(圖4)
-
正確率提升與自我評估的準確率高度相關(圖4(c): ),甚至呈線性關係(圖5(a))。
-
採用不同的評價方式效果依次提升:僅使用對/錯評價 < 自然語言評價 < 包含 CoT 的對/錯評價。這是因為 CoT 不僅能提高評價準確性,還能為模型提供額外的自然語言信息。(圖5(b))
-
更大的模型有更好的糾錯能力(圖5(c)(d))
-
當評價的正確率足夠高時,更多的糾錯輪數可以帶來更好的糾錯效果。(圖5(e))
圖4 CaC對於不同種類的偏見的修正
圖5 BBQ上關於模型大小、評估質量以及糾錯輪數的消融實驗
同時,在防禦越獄攻擊的實驗中,CaC也是所有測試的防禦手段中最低的。
更多文章細節,請參考原文:https://openreview.net/pdf?id=OtvNLTWYww
參考資料:
[1] https://openai.com/index/introducing-openai-o1-preview/
[2] https://reflection70b.com/