COLM 24 | 從正確中學習?大模型的自我糾正新視角

机器之心發表於2024-09-17

Ixiv專欄是機器之心釋出學術、技術內容的欄目。過去數年,機器之心AIxiv專欄接收報導了2000多篇內容,覆蓋全球各大高校與企業的頂級實驗室,有效促進了學術交流與傳播。如果您有優秀的工作想要分享,歡迎投稿或者聯絡報導。投稿郵箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com

本文作者來自香港城市大學和華為諾亞方舟實驗室。其中,第一作者姚宇璇是香港城市大學計算機系的二年級博士生,研究方向涉及大模型的複雜推理和生成,師從宋林琦教授。吳涵,郭志江是華為諾亞方舟實驗室研究員。

大型語言模型(LLMs)雖然進展很快,很強大,但是它們仍然存在會產生幻覺、生成有害內容和不遵守人類指令等問題。一種流行的解決方案就是基於【自我糾正】,大概就是看自己輸出的結果,自己反思一下有沒有錯,如果有錯就自己改正。目前自己糾正還是比較關注於讓大模型從錯誤中進行學習。更多相關內容可以參考這篇 TACL 的 survey [1]。

但是呢,現有的很多自我糾正的方法依賴於複雜的 prompt engineering,人類反饋,或外部工具,但這些方法往往比較麻煩(試 prompt),不穩定(換了個模型 prompt 可能就要修改了),昂貴(人類反饋很貴的),增加時延(要呼叫不同的外部工具)。為了克服這些限制,本文提出了一種無需 prompt engineering 也無需外部反饋的方法 ——Learning from Correctness(LeCo,是的,作者們是樂高愛好者 XD),我們想倒反天罡,從正確而不是錯誤中進行學習,讓自己變得更強大。

圖片

  • 論文連結:https://arxiv.org/pdf/2403.19094arxiv.org/pdf/2403.19094
  • 程式碼連結:https://github.com/starrYYxuan/LeCo

一句話總結:LeCo 透過大模型自己生成的推理步驟進行自我糾正,無需人類反饋,手工提示和外部工具。其核心思想就是:模型如果知道更多的正確推理步驟,那他的搜尋空間就可以壓縮,從而更有高效地找到完整的正確推理路徑。LeCo 為每個推理步驟計算置信度分數,透過分數給推理步驟打分,低分的推理步被視為潛在錯誤,之前的步驟被視為正確。透過將這些正確步驟附加到輸入中,模型可以逐步接近正確答案。如下圖所示,LeCo 首先得到對當前問題的解(左邊 output), 然後我們逐漸去收集正確的推理步驟知道得到最後正確的解。這種漸進式學習方法不僅提高了推理準確性,還減少了 tokens 消耗(窮人友好)和迭代次數(和投票,從錯誤中學習相比)。

圖片

LeCo 方法示意圖

如何找出正確的推理步驟?

一些預設知識:在生成任務中,logits 代表候選詞被選為下一個詞的對數機率。另一方面,置信度指的是模型對其預測的確定性。在推理任務中,我們提出步驟置信度來衡量模型對每個推理步驟的正確性的置信度。於是我們設計了三種基於 logits 的評分,從單步推理步和不同推理步出發,全面評估每個推理步驟的置信度。

方法:為了找出大模型自己生成的正確推理步驟,本文開發了一種基於生成 logits 的高效方法來測量每個推理步驟的置信度,無需額外標註或工具。透過綜合考慮每個步驟中的平均置信度、步驟置信度差異和步驟傳遞機率,LeCo 能識別出近 65% 的錯誤步驟。具體來講,我們的置信度設計考慮了 3 個不同的角度:

單步置信度(average token score):一種簡單的方法來衡量步驟置信度是平均計算某一步中的 token 機率。這個平均值反映了模型在該步驟中推理的確定性。單步置信度定義為:

圖片

單步散度分數 (step divergence score):雖然平均 token 機率看似直觀,但它可能會產生誤導。在一個步驟中,大多數 token 通常是常見詞彙,具有高置信度分數,但攜帶的資訊很少。相反,對於推理至關重要的 token,例如數學計算,通常置信度較低。這種矛盾導致整個步驟的平均 token 置信度偏高。為了解決這個問題,本文提出了 Step Divergence Score。這個指標測量了步驟中標記機率的分佈均勻性。理想情況下,正確的推理步驟 token 機率不僅高,而且在所有 token 之間均勻分佈。為此我們定義了 token 機率的歸一化分佈

圖片

和均勻分佈 U 來設計:

圖片

步間轉移分數 (Inter-step Transition Score) : 在步驟內部測量之後,我們尋求量化連續步驟之間的轉換。初步實驗發現了兩個關鍵點:

(1)整體置信度較低的步驟傾向於在初始的幾個 tokens(通常是前三個)中具有較低的置信度,更多討論可以在附錄中找到。

(2)這些初始的幾個 tokens 也是在不同程式執行中最有可能改變的。基於這些觀察,我們建議使用步驟中的開頭的借個 tokens 機率來表示該步驟和下一個步驟之間的交叉轉換分數。換言之,轉換分數:

圖片

結合以上三個分數,我們可以得到針對每個推理步驟的置信分數:

圖片

LeCO:從正確的推理步中學習

好了,現在我們已經擁有了衡量推理步置信分數的方法,現在只需要迭代式地收集正確的推理步驟,最佳化搜尋空間去拿到最後的正確推理路徑。LeCo 分為兩個階段:

  • 初始階段(Initial Stage):用任何 CoT 的方法生成一個初始的解即可,要求就是需要這個解是有推理步驟的。
  • 反思階段(Rethink Stage):拿到這個解之後,我們用上述方法去計算每個推理步驟。然後選擇分數最低的那個步驟作為 “犯錯的第一步”。之前的的推理步驟我們都認為是 “正確的步驟”。然後我們將正確的步驟也作為輸入給到大模型去進行推理。

LeCo 就是在推理和反思兩個階段交替進行直到達到停止的條件。我們設定的條件有兩個:1. 達到最大的迭代次數;2. 連續兩次的解都是一致的。

LeCo 演算法總結如下:

圖片

實驗結果

我們使用 LeCo 在推理任務上面進行了驗證,包括邏輯推理,常識推理和數學推理。對比的基線系統包括了也是需要多次推理的 Self-Consistency(SC [2]),Adaptive Consistency(ADPSC [3])和 Recursively Criticizes and Improves(RCI [4],從錯誤中學習):

圖片

表 1:LeCo 在邏輯,常識和數學推理上面的效能表現

圖片

表 2:LeCo 在需要更加複雜的推理 MATH 上的表現

從上面的兩個表格中我們可以看到:

  • LeCo 的普適性:適用於不同的模型(GPT3.5,GPT4,DeepSeek)和不同的 CoT 方法(Initial Stage 用的);
  • LeCo 的效能提升:在不同型別的推理任務上面都有提升,越難的任務,需要越多推理步驟的任務提升越多(比如 MATH);
  • LeCo 的效率提升:如下兩個表格所示,LeCo 除了在各種任務上對效能有一定提升之外,所消耗的 token 數量更少(如:比 self-consistency 低 80%),並且所需的迭代輪數更低。

圖片

表 3:LeCo 和不同方法的 Token 消耗比較

圖片

表 4:LeCo 和不同方法的迭代次數比較

人工分析:為了進一步驗證 LeCo 是否真的能識別到推理中正確的步驟,本文人工標註了 100 題 GSM8K,找出推理過程中正確和錯誤的時間步。Exact Correct 表示 LeCo 能精確定位到第一步犯錯的步驟,Partial Correct 表示定位在 1 步的誤差範圍內,Wrong 表示定位誤差範圍大於 1 步。總體來說,LeCo 可以透過計算置信度的方式而無需外部資訊較為準備地找出正確和錯誤的步驟,不過仍然存在提升空間。

圖片

表 5:不同方法計算推理步驟置信度的準確率(人工分析 100 題)

總結

1. 本文提出了一種新的多步推理正規化,稱為從正確中進行學習(LeCo),透過逐步積累正確步驟接近最終答案;

2. 本文挑戰了高質量反饋只能來自外部的觀點,並提出了一種僅僅使用模型自身的 confidence score 來近似每個推理步驟的正確性的方法;

3. 無論是開源和閉源模型,都可以在各種多步推理任務中從 LeCo 中獲益,同時減少 token 和迭代輪次的消耗。更令人振奮的是,和我們的題目一樣,LeCo 消除了 rethink 階段重新編寫 prompt 的需求。

參考文獻:

1.Automatically Correcting Large Language Models: Surveying the Landscape of Diverse Automated Correction Strategies. TACL 2024

2.Self-consistency improves chain of thought reasoning in language models. ICLR 2023

3.Let's sample step by step: Adaptive consistency for efficient reasoning and coding with llms.EMNLP 2023

Language models can solve computer tasks. NeurIPS 2023

相關文章