Chain-of-Thought Prompting/zh

    From Marovi AI
    This page is a translated version of the page Chain-of-Thought Prompting and the translation is 100% complete.
    Other languages:
    Article
    Topic area Natural Language Processing
    Prerequisites Transformer, Language Models are Few-Shot Learners


    概述

    思維鏈提示(CoT)是一種提示技術,通過指示或示範讓大型語言模型在給出最終答案之前先產生中間的自然語言推理步驟,從而引出多步推理能力。該方法由 Wei 等人於 2022 年提出,[1]它能在不修改模型權重的前提下,大幅提升模型在算術、常識和符號推理任務上的表現。如今,對於答案依賴於一系列推理而非單一模式匹配的任務而言,思維鏈提示已成為提示工程的標準組成部分。

    其核心觀察是:當提示鼓勵模型將推理過程外化為文本時,足夠大的語言模型可以解決原本無法解決的問題。中間步驟起到草稿紙的作用:每一步都為下一步提供條件,而最終答案則以完整的推理軌跡為條件。思維鏈與更廣義的推理時計算思想密切相關——以推理時多消耗的 token 換取更高的準確率

    動機

    GPT-3 推廣開來的標準少樣本提示[2]會先向模型展示若干輸入-輸出對,然後要求它對一個新的輸入進行補全。這一做法在通過單一學習到的關聯將輸入映射到輸出的任務上效果良好,但在多步問題——例如多位數算術、應用題或邏輯推導——上表現不佳。Wei 等人指出,對這些任務而言,瓶頸並非模型的知識,而是其計算資源的分配方式:當模型被迫在單次前向傳播中給出答案時,它沒有任何機制來分解這一問題。

    相比之下,當每個上下文示例展示的是詳細求解過程而非僅僅給出答案時,模型會模仿這一格式,並在推理時自行寫出詳細的求解過程。這就把提示重新定義為:不僅提供任務本身,還提供解決該任務的過程。

    形式化

    $ x $ 表示輸入問題,$ y $ 表示最終答案。標準的少樣本提示對 $ p(y \mid x, \mathcal{D}) $ 進行建模,其中 $ \mathcal{D} = \{(x_i, y_i)\}_{i=1}^k $ 是一組示例。思維鏈引入了一個中間變量 $ r $——推理軌跡——並將提示改為提供 $ \mathcal{D}_{\mathrm{CoT}} = \{(x_i, r_i, y_i)\} $。模型將聯合分布分解為

    $ {\displaystyle p(r, y \mid x, \mathcal{D}_{\mathrm{CoT}}) = p(r \mid x, \mathcal{D}_{\mathrm{CoT}})\, p(y \mid x, r, \mathcal{D}_{\mathrm{CoT}}).} $

    在推理時,模型以自回歸方式解碼:先逐 token 生成 $ r $,再以完整軌跡為條件生成 $ y $。由於 $ r $ 中的每個 token 都會參與後續的注意力計算,這條軌跡實際上擴展了模型可用的計算深度,超出了固定長度的單 token 答案所能提供的範圍。

    一種常見的設計選擇是用固定的分隔符(例如英文 "The answer is",意為 the answer is)來標記最終答案,以便可以從生成的文本中以程序化的方式提取 $ y $

    少樣本思維鏈

    在少樣本思維鏈中,提示中的每個示例都由一個問題、一份詳細解答以及一個最終答案組成。原論文[3]給出的一個經典數學應用題模板示例如下:

     问:Roger 有 5 个网球。他又买了 2 罐网球。
        每罐有 3 个网球。他现在一共有多少个网球?
     答:Roger 起初有 5 个球。每罐 3 个网球、共 2 罐,就是 6
        个网球。5 + 6 = 11。答案是 11。
    

    通常使用四到八個這樣的示例就足以在新問題上誘發思維鏈行為。這些示例不必來自測試分布;跨推理領域的遷移很常見,不過同領域的示例通常有所幫助。

    零樣本思維鏈

    Kojima 等人[4]表明,示例並非嚴格必需。在問題後追加觸發短語 "Let's think step by step"(讓我們一步一步思考)通常就足以產生一條推理軌跡,這種方法被稱為零樣本思維鏈。隨後用第二個提示從軌跡中抽取最終答案。在大多數基準上,零樣本思維鏈都弱於少樣本思維鏈,但它免去了編寫示例的人力,也避免了示例泄露答案信息的風險。

    自一致性

    Wang 等人[5]觀察到,推理軌跡是帶有噪聲的:模型可能通過若干不同的論證路徑得到正確答案,而錯誤路逕往往各不相同。自一致性方法以非零溫度採樣 $ N $ 條獨立的軌跡,並返回在所得集合 $ \{y^{(1)}, \dots, y^{(N)}\} $ 中出現頻次最高的答案。形式化地,預測為

    $ {\displaystyle \hat{y} = \arg\max_{y} \sum_{i=1}^{N} \mathbb{1}[y^{(i)} = y].} $

    在大多數推理基準上,自一致性會隨 $ N $ 單調地提升準確率,代價是 $ N $ 倍的推理計算開銷。如今,它已成為任何思維鏈解碼器之上的標準包裝。

    樹形與圖形變體

    若干擴展方法在線性單條軌跡之外為推理引入了結構。思維樹(Yao 等人,2023)[6]會探索多條部分軌跡,由模型自身對其打分,並使用諸如廣度優先搜索或最佳優先搜索之類的搜索算法來擴展最有希望的分支。思維圖(Graph of Thoughts)則進一步推廣為一個有向圖,中間狀態可以在其中被合併、精煉或聚合。

    這些變體把推理循環的更大一部分從模型挪到了外部控制器中,以額外的計算開銷換取在單條軌跡容易跑偏的任務上的更高魯棒性

    與替代方法的比較

    思維鏈只是面向多步推理的若干方法之一。最早用於算術任務的草稿紙方法通過監督微調訓練模型輸出中間步驟,而非依賴提示。程序輔助語言模型(PAL)以及類似的工具調用方法把算術與邏輯外包給外部解釋器,只讓模型負責結構性推理。過程獎勵模型強化學習中對單個推理步驟進行監督,而不是僅監督最終答案。現代經過推理訓練的模型——例如通過基於過程反饋的強化學習訓練得到的模型——可以看作已經把思維鏈內化到了其默認的解碼行為中。

    與上述替代方法相比,基於提示的思維鏈的吸引力在於無需訓練,且適用於任何能力足夠的模型。其缺點是推理成本較高、對示例選擇具有敏感性,而且暴露出來的推理軌跡未必真實反映模型實際產生答案時所做的計算。

    湧現與規模

    思維鏈所帶來的收益與模型規模密切相關。Wei 等人報告:在 GSM8K 數學應用題基準上,當模型規模低於約 100 億參數時,思維鏈基本上中立甚至有害;只有在約 600 億參數左右,它才開始明顯超越標準提示。這種能力隨規模驟然出現的模式,是討論大型語言模型湧現能力時被反覆引用的標誌性例子之一。具體的規模閾值因任務、基礎模型家族以及評估指標而異。

    指令微調基於人類反饋的強化學習之間的交互同樣重要:經過指令微調的模型常常默認就會產生推理軌跡,從而模糊了由提示誘發的思維鏈與未經提示的思維鏈之間的界線。

    局限性

    思維鏈提示存在若干已被充分記錄的失敗模式。第一,推理軌跡並不保證是忠實的:模型可能給出聽起來合理的論證,但這些論證實際上並不決定它最終給出的答案,這一現象在推理忠實性這一主題下被研究。第二,錯誤會逐步累積:若早期某一步出錯,軌跡的其餘部分和最終答案通常會繼承該錯誤,由此產生的看似自信的輸出可能比直接的錯誤答案更具誤導性。第三,推理成本隨軌跡長度增加,對延遲敏感的部署而言這點不容忽視。最後,對示例措辭和順序的敏感性意味著對提示的微小擾動也可能引起準確率的大幅波動,使得提示選擇本身成為一個調參問題。

    儘管存在上述這些限制,思維鏈及其衍生方法如今仍是對語言模型進行提示以處理需要多步推理任務時的默認方法,並構成了當前前沿模型所採用的顯式推理訓練範式的概念基礎。

    參考文獻