COLM 24 | 從正確中學習?大模型的自我糾正新視角
本文作者來自香港城市大學和華為諾亞方舟實驗室。其中,第一作者姚宇璇是香港城市大學計算機系的二年級博士生,研究方向涉及大模型的復雜推理和生成,師從宋林琦教授。吳涵,郭志江是華為諾亞方舟實驗室研究員。
大型語言模型(LLMs)雖然進展很快,很強大,但是它們?nèi)匀淮嬖跁a(chǎn)生幻覺、生成有害內(nèi)容和不遵守人類指令等問題。一種流行的解決方案就是基于【自我糾正】,大概就是看自己輸出的結(jié)果,自己反思一下有沒有錯,如果有錯就自己改正。目前自己糾正還是比較關(guān)注于讓大模型從錯誤中進行學習。更多相關(guān)內(nèi)容可以參考這篇 TACL 的 survey [1]。
但是呢,現(xiàn)有的很多自我糾正的方法依賴于復雜的 prompt engineering,人類反饋,或外部工具,但這些方法往往比較麻煩(試 prompt),不穩(wěn)定(換了個模型 prompt 可能就要修改了),昂貴(人類反饋很貴的),增加時延(要調(diào)用不同的外部工具)。為了克服這些限制,本文提出了一種無需 prompt engineering 也無需外部反饋的方法 ——Learning from Correctness(LeCo,是的,作者們是樂高愛好者 XD),我們想倒反天罡,從正確而不是錯誤中進行學習,讓自己變得更強大。
- 論文鏈接:https://arxiv.org/pdf/2403.19094arxiv.org/pdf/2403.19094
- 代碼鏈接:https://github.com/starrYYxuan/LeCo
一句話總結(jié):LeCo 通過大模型自己生成的推理步驟進行自我糾正,無需人類反饋,手工提示和外部工具。其核心思想就是:模型如果知道更多的正確推理步驟,那他的搜索空間就可以壓縮,從而更有高效地找到完整的正確推理路徑。LeCo 為每個推理步驟計算置信度分數(shù),通過分數(shù)給推理步驟打分,低分的推理步被視為潛在錯誤,之前的步驟被視為正確。通過將這些正確步驟附加到輸入中,模型可以逐步接近正確答案。如下圖所示,LeCo 首先得到對當前問題的解(左邊 output), 然后我們逐漸去收集正確的推理步驟知道得到最后正確的解。這種漸進式學習方法不僅提高了推理準確性,還減少了 tokens 消耗(窮人友好)和迭代次數(shù)(和投票,從錯誤中學習相比)。
LeCo 方法示意圖
如何找出正確的推理步驟?
一些預設知識:在生成任務中,logits 代表候選詞被選為下一個詞的對數(shù)概率。另一方面,置信度指的是模型對其預測的確定性。在推理任務中,我們提出步驟置信度來衡量模型對每個推理步驟的正確性的置信度。于是我們設計了三種基于 logits 的評分,從單步推理步和不同推理步出發(fā),全面評估每個推理步驟的置信度。
方法:為了找出大模型自己生成的正確推理步驟,本文開發(fā)了一種基于生成 logits 的高效方法來測量每個推理步驟的置信度,無需額外標注或工具。通過綜合考慮每個步驟中的平均置信度、步驟置信度差異和步驟傳遞概率,LeCo 能識別出近 65% 的錯誤步驟。具體來講,我們的置信度設計考慮了 3 個不同的角度:
單步置信度(average token score):一種簡單的方法來衡量步驟置信度是平均計算某一步中的 token 概率。這個平均值反映了模型在該步驟中推理的確定性。單步置信度定義為:
單步散度分數(shù) (step divergence score):雖然平均 token 概率看似直觀,但它可能會產(chǎn)生誤導。在一個步驟中,大多數(shù) token 通常是常見詞匯,具有高置信度分數(shù),但攜帶的信息很少。相反,對于推理至關(guān)重要的 token,例如數(shù)學計算,通常置信度較低。這種矛盾導致整個步驟的平均 token 置信度偏高。為了解決這個問題,本文提出了 Step Divergence Score。這個指標測量了步驟中標記概率的分布均勻性。理想情況下,正確的推理步驟 token 概率不僅高,而且在所有 token 之間均勻分布。為此我們定義了 token 概率的歸一化分布
和均勻分布 U 來設計:
步間轉(zhuǎn)移分數(shù) (Inter-step Transition Score) : 在步驟內(nèi)部測量之后,我們尋求量化連續(xù)步驟之間的轉(zhuǎn)換。初步實驗發(fā)現(xiàn)了兩個關(guān)鍵點:
(1)整體置信度較低的步驟傾向于在初始的幾個 tokens(通常是前三個)中具有較低的置信度,更多討論可以在附錄中找到。
(2)這些初始的幾個 tokens 也是在不同程序運行中最有可能改變的。基于這些觀察,我們建議使用步驟中的開頭的借個 tokens 概率來表示該步驟和下一個步驟之間的交叉轉(zhuǎn)換分數(shù)。換言之,轉(zhuǎn)換分數(shù):
結(jié)合以上三個分數(shù),我們可以得到針對每個推理步驟的置信分數(shù):
LeCO:從正確的推理步中學習
好了,現(xiàn)在我們已經(jīng)擁有了衡量推理步置信分數(shù)的方法,現(xiàn)在只需要迭代式地收集正確的推理步驟,優(yōu)化搜索空間去拿到最后的正確推理路徑。LeCo 分為兩個階段:
- 初始階段(Initial Stage):用任何 CoT 的方法生成一個初始的解即可,要求就是需要這個解是有推理步驟的。
- 反思階段(Rethink Stage):拿到這個解之后,我們用上述方法去計算每個推理步驟。然后選擇分數(shù)最低的那個步驟作為 “犯錯的第一步”。之前的的推理步驟我們都認為是 “正確的步驟”。然后我們將正確的步驟也作為輸入給到大模型去進行推理。
LeCo 就是在推理和反思兩個階段交替進行直到達到停止的條件。我們設置的條件有兩個:1. 達到最大的迭代次數(shù);2. 連續(xù)兩次的解都是一致的。
LeCo 算法總結(jié)如下:
實驗結(jié)果
我們使用 LeCo 在推理任務上面進行了驗證,包括邏輯推理,常識推理和數(shù)學推理。對比的基線系統(tǒng)包括了也是需要多次推理的 Self-Consistency(SC [2]),Adaptive Consistency(ADPSC [3])和 Recursively Criticizes and Improves(RCI [4],從錯誤中學習):
表 1:LeCo 在邏輯,常識和數(shù)學推理上面的性能表現(xiàn)
表 2:LeCo 在需要更加復雜的推理 MATH 上的表現(xiàn)
從上面的兩個表格中我們可以看到:
- LeCo 的普適性:適用于不同的模型(GPT3.5,GPT4,DeepSeek)和不同的 CoT 方法(Initial Stage 用的);
- LeCo 的性能提升:在不同類型的推理任務上面都有提升,越難的任務,需要越多推理步驟的任務提升越多(比如 MATH);
- LeCo 的效率提升:如下兩個表格所示,LeCo 除了在各種任務上對性能有一定提升之外,所消耗的 token 數(shù)量更少(如:比 self-consistency 低 80%),并且所需的迭代輪數(shù)更低。
表 3:LeCo 和不同方法的 Token 消耗比較
表 4:LeCo 和不同方法的迭代次數(shù)比較
人工分析:為了進一步驗證 LeCo 是否真的能識別到推理中正確的步驟,本文人工標注了 100 題 GSM8K,找出推理過程中正確和錯誤的時間步。Exact Correct 表示 LeCo 能精確定位到第一步犯錯的步驟,Partial Correct 表示定位在 1 步的誤差范圍內(nèi),Wrong 表示定位誤差范圍大于 1 步。總體來說,LeCo 可以通過計算置信度的方式而無需外部信息較為準備地找出正確和錯誤的步驟,不過仍然存在提升空間。
表 5:不同方法計算推理步驟置信度的準確率(人工分析 100 題)
總結(jié)
1. 本文提出了一種新的多步推理范式,稱為從正確中進行學習(LeCo),通過逐步積累正確步驟接近最終答案;
2. 本文挑戰(zhàn)了高質(zhì)量反饋只能來自外部的觀點,并提出了一種僅僅使用模型自身的 confidence score 來近似每個推理步驟的正確性的方法;
3. 無論是開源和閉源模型,都可以在各種多步推理任務中從 LeCo 中獲益,同時減少 token 和迭代輪次的消耗。更令人振奮的是,和我們的題目一樣,LeCo 消除了 rethink 階段重新編寫 prompt 的需求。