新智元報道
新智元報道
編輯:LRST
【新智元導讀】基於內建思維鏈的思考方法為解決多輪會話中存在的問題提供了研究方向。按照思考方法收集訓練資料集,透過有監督學習微調大語言模型;訓練一個一致性獎勵模型,並將該模型用作獎勵函式,以使用強化學習來微調大語言模型。結果大語言模型的推理能力和計劃能力,以及執行計劃的能力得到了增強。
使用者已經習慣於將大模型如ChatGPT、Llama-3-chat等當作聊天物件,然而在使用者和聊天助手的會話中,有的使用者提示(例如一些命令或請求)不能在一輪會話中結束,需要大語言模型和使用者進行多輪會話。
這種跨越多輪的會話目前仍然存在一些問題:大語言模型的回答容易出錯,不能幫助使用者達到目標,且隨著會話輪數增加出錯機率會增大。
對同一個命令或問題,大語言模型比較難以根據實際需求產生不同流程的響應,在需要大語言模型與環境互動時,目前比較流行的做法是使用函式呼叫或工具呼叫,但不夠優雅和高效,而且由於上下文視窗的限制,能支援的工具呼叫數量有限。
這些問題的主要原因是因為大語言模型沒有像人類一樣的思考能力,缺乏推理能力和計劃能力,缺乏執行計劃的能力。
為了解決這些問題,國內學者提出了一個基於內建思維鏈的思考方法:在多輪會話中,對於每一個使用者提示,大語言模型基於會話歷史,思考上下文,行動呼叫,記憶和知識等要素進行思考,進行詳細的推理和計劃,並根據計劃進行行動。大語言模型按照這種思考方法產生的思維鏈是內置於響應裡,由特殊詞元包裝起來,通稱內建思維鏈。

論文連結:https://arxiv.org/pdf/2502.13475
專案連結:https://github.com/HaunLeung/thinkandaction
論文還探討了大語言模型透過這個思考方法來增強思考能力的方式:按照思考方法收集訓練資料集,透過有監督學習微調大語言模型;訓練一個一致性獎勵模型,並將該模型用作獎勵函式,以使用強化學習來微調大語言模型,強化大語言模型按照這種思考方法輸出。
總的來說,這篇論文的貢獻包括:
(1)基於內建思維鏈的思考方法
為了解決模型在完成行動任務時存在的諸多問題,研究人員提出了基於內建思維鏈的思考方法,定義了模型思考時基於的五個要素,以及思考流程;為收集訓練資料集指定了方針,最終增強了模型的思考能力。
(2)一致性獎勵模型
多輪會話中,模型根據使用者提示和行動呼叫結果輸出響應,如何判斷模型輸出響應序列的質量,成了強化訓練效果的關鍵。通常是用人類偏好獎勵模型來判斷,但這準確性不高。
由於行動任務是非準確性推理問題,所以不能用Deepseek-R1的基於規則的獎勵。
為了解決這個問題,文中創新性地引入一致性獎勵模型,一致性獎勵模型給模型輸出響應序列進行一致性判斷,最後發現一致性獎勵模型大大增強了強化訓練的效果。
(3)區域性思考上下文
系統上下文通常用來存放背景資料和資訊,以及工具呼叫。它的缺點有:系統上下文會佔用上下文視窗長度,使得輸出響應長度有限制;有限的上下文視窗長度使得函式或工具呼叫數量有限制;過長的系統上下文會使得推理速度變慢;有時候模型回答提示根本不需要任何一個已經載入在系統上下文裡的函式或工具。
為了解決這些問題,文中創新使用區域性思考上下文,它能夠按照需求來載入背景資訊和工具,不會造成上述問題,而且支援無限多工具。
(4)行動呼叫
關於工具使用,研究人員使用的是行動呼叫。和函式呼叫或工具呼叫相比,它不但語法優雅而且行動高效。
基於內建思維鏈的思考方法
為什麼要引入思考方法
在處理行動任務時,大語言模型需要仔細地思考,進行詳細的推理和計劃,並根據計劃進行行動。但計劃是否正確?是否能完成所有的計劃步驟?如何和環境互動?工具呼叫時發生異常如何處理?在行動任務執行過程中,使用者發起新的任務時怎麼辦?在行動任務執行過程中,使用者輸入提示噪音,干擾正確的流程時怎麼辦?
如果處理不好這些複雜的問題,那麼大語言模型的回答就會出錯,需要一個明確的處理方針。
於是研究人員提出了基於內建思維鏈的思考方法,主要有五個思考要素,兩個處理邏輯,一個計劃步驟執行,一個思考流程將這五個要素,兩個處理邏輯和計劃步驟執行連線起來。思考方法的流程圖如圖所示。

思考方法流程
基於要素進行思考:在多輪會話中,對於使用者的每一個輸入提示,模型首先基於會話歷史,全域性思考上下文,內建行動呼叫,記憶和知識四個要素進行思考。
最後一個計劃步驟匹配:如果輸入提示是對應於最後一個未完成計劃的最後一個計劃步驟,那麼模型會收集輸入提示裡的有用資訊,並接著進行計劃的當前或下一個步驟,必要時會使用行動呼叫和環境互動,並根據行動呼叫結果推理出答案;反之,模型會基於已有的四個要素思考如何回答。
思考如何回答:如果模型覺得已有的四個要素並不能回答提示,它會進一步獲得和提示相關的區域性思考上下文。如果和提示相關的區域性思考上下文不存在,那麼最終答案是"無法提供幫助"之類;如果存在,那麼會進入下一步判斷是否需要計劃流程。如果模型覺得已有的四個要素能回答提示,那麼會進入下一步判斷是否需要計劃流程。
是否需要計劃:判斷是否需要計劃流程,如果回答不需要制定計劃,那麼進行推理;反之,進行推理和計劃。
推理處理邏輯:在推理階段,模型會基於五個要素進行嚴密的推理,必要時會使用行動呼叫和環境互動,並根據行動呼叫結果推理出答案。
推理和計劃處理邏輯:在推理和計劃階段,模型會基於五個要素進行嚴密的推理和計劃,制定一個包含多個步驟的計劃,並開始執行計劃的第一個步驟,必要時會使用行動呼叫和環境互動,並根據行動呼叫結果推理出答案。
內建思維鏈
除了答案外,思考方法產生的思考過程被封裝在特殊詞元<<think>>和<</think>>內,這通常稱作內建思維鏈。這和 OpenAI GPT-o1-preview 和 Deepseek-R1 做法相似。
思考要素及優先順序
思考要素包括五個要素:會話歷史,全域性思考上下文,內建行動呼叫,區域性思考上下文,記憶和知識。這些思考要素的優先順序如下:

模型思考時優先考慮優先順序高的要素,然後才是低優先順序要素。例如,全域性思考上下文或區域性思考上下文裡的背景資訊和指導規則,會優先於模型具有的記憶和知識。要注意全域性思考上下文和區域性思考上下文這兩個要素有時候不一定存在,例如有時候全域性思考上下文不存在系統上下文中,例如獲取區域性思考上下文時可能返回空。
行動呼叫
行動呼叫在模型和環境發生互動時使用,作用和函式呼叫或工具呼叫類似。
但行動呼叫比函式呼叫或工具呼叫語法上優雅且高效。
行動呼叫定義使用 json 結構,屬性有name, description, parameters, exception.
name: 行動呼叫的名字,模型思考時使用這個名字進行呼叫。
description: 行動呼叫的詳細描述,關於用途和使用場景。
parameters: 使用行動呼叫時傳入的引數描述,包括不侷限於單位,列舉值,是否可選等。
exception: 使用行動呼叫時可能發生的異常描述,以及異常處理建議。
例如,即時天氣查詢的行動呼叫定義如下:

模型在思考時,會使用行動呼叫。行動呼叫的使用格式:

模型在使用行動呼叫時,在生成<</action>>符號時取樣演算法會停止取樣,並把<<action>>和<</action>>符號之間的字串交給代理Agent。Agent解析行動呼叫名字,解析引數和引數值,再執行和行動呼叫名對應的函式,並返回函式產生的結果。取樣演算法把返回結果連線在<<observation>>符號後面,並以<</observation>>符號結束。然後模型繼續進行思考。
全域性/區域性思考上下文
研究人員內建了幾個行動呼叫,目的是方便模型思考時使用,包括獲取上下文、搜尋網際網路、開啟檔案、郵件傳送、數學計算。
全域性思考上下文由兩個部分組成:思考背景和指南、行動呼叫定義。
思考背景:模型思考時依據的資料和資訊;
思考指南:模型思考時依據的指導規則,通常用於指導如何建立計劃。
行動呼叫定義:定義了一個行動呼叫列表,模型思考時可以使用這些行動呼叫和環境發生互動。
全域性思考上下文寫在系統上下文(system context)裡。全域性思考上下文的作用和傳統意義上的系統上下文類似,指導模型如何做,以及用什麼來做。眾所周知,ChatGPT等聊天模型通常把函式呼叫和工具呼叫放在系統上下文裡。系統上下文的缺點有:會導致佔用上下文視窗,限制了輸出長度;同時過長的系統上下文會導致推理速度減慢;有時有的輸入提示根本不需要使用任何工具呼叫。
為了解決這些痛點,研究人員開發出了局部思考上下文。
區域性思考上下文由兩個部分組成:思考背景和指南、行動呼叫定義,其解釋和全域性思考上下文一樣。
對於每一個使用者輸入提示,模型首先基於會話歷史,全域性思考上下文,內建行動調,記憶和知識用四個要素進行思考。如果模型覺得已有的四個要素並不能幫助回答提示,會進一步獲得和提示相關的區域性思考上下文。模型獲得區域性思考上下文是透過一個內建的行動呼叫。
在實際應用中,研究人員建議首選使用區域性思考上下文,不建議使用全域性思考上下文;支援全域性思考上下文只是為了和傳統的系統上下文的作用相容。
全域性思考上下文和區域性思考上下文的例子如圖所示。

訓練方法
首先,基於這個思考方法收集一個行動任務資料集;
其次,使用這個行動任務資料集有監督微調基礎語言模型,獲得一個初始策略;
然後,從這個初始策略開始,進行強化訓練過程,該過程由 3 個步驟組成,可以迭代重複。
第 1 步:從現有策略中收集樣本。對於每個行動任務資料集樣本,從兩個來源取樣響應,包括當前策略、初始策略;將行動任務資料集樣本和取樣樣本組成一對,並由人工評估員來評定一致性,獲得一致性標籤構造一致性資料集。
第 2 步:訓練一致性獎勵模型。使用一致性資料集來訓練獎勵模型,來預測一致性的對數機率。
第 3 步:根據一致性獎勵模型最佳化策略。將一致性獎勵模型的輸出視為使用強化學習最佳化的獎勵。
行動任務資料集準備
基於思考方法,研究人員收集了一個包含千份樣本的行動任務資料集,採用人工標註的收集方式,基於高效能語言模型的提示工程。

樣本格式:x1, y1', x2, y2', …., xn, yn'. 如上圖所示。xi是使用者提示或行動呼叫的結果,yi'是標籤回答。每個樣本還包含參考回答,即除了yi',還要有一個yi'_ref,這兩個響應在內容和邏輯上是一致性的(見句子對的一致性)。
樣本分佈:構建樣本時要充分考慮各種分佈,這些分佈不限於以下情況。
-
行動呼叫異常: 行動呼叫時,可能會產生並返回各種異常,模型需要處理好這些異常,儘量保證計劃繼續進行。 -
使用者主動中斷任務: 在模型執行計劃步驟中,使用者可能會主動中斷計劃。 -
使用者提示噪音: 在模型執行計劃步驟中,使用者輸入干擾流程的提示,模型需要思考並應對。 -
任務巢狀: 在模型執行計劃步驟中,使用者輸入提示進行新的任務,例如行動任務和其他任務。 -
應用情景:外賣,購物,麥當勞點餐,裝置控制,客服…
有監督微調
使用這個行動任務資料集有監督微調基礎語言模型,獲得一個初始策略。
強化微調
從現有策略中收集樣本。
收集樣本:對於每個行動任務資料集樣本,從兩個來源取樣響應,包括當前策略、初始策略。對於行動任務資料集裡的一個樣本:(x1, y1', x2, y2', …., xn, yn')~D, xi是使用者提示或行動呼叫的結果,yi'是標籤回答。使用 (x1, x2, …, xn) 進行策略取樣,得到策略輸出:(y1, y2, …., yn).

一致性評定:將行動任務資料集樣本里的標籤回答和策略的取樣輸出組成一對:[(y1',y1), (y2',y2), …., (yn',yn)]。並由人工評估員來評定一致性,即所有句子對是否都一致,獲得一致性標籤 t 等於0或1。最後獲得了一個一致性資料集D':[(y1',y1,t1), (y2',y2,t2), …., (yn',yn,tn)] ~ D'。
句子對的一致性:如果兩個句子描述的內容和邏輯基本一樣,就可以認為是一致的。但要需注意對推理和計劃產生的計劃步驟,計劃的步驟不能打亂,如果順序不一樣,就說兩個句子是不一致的。
例如下面例子(一致consistent):

例如下面例子(不一致inconsistent):

訓練一個一致性獎勵模型
從已經獲得的一致性資料集D',訓練一個獎勵模型來預測一致性的對數機率;出於效能考慮,基於高效能小型語言模型(例如Llama-3-8B)訓練一個一致性獎勵模型。
具體做法:
去掉transformer解碼器的反嵌入層,增加一個輸出維度為2的預測頭,一致性的對數機率由預測頭輸出給出。
對於一致性資料集D'的一個樣本:[(y1',y1,t1), (y2',y2,t2), …., (yn',yn,tn)] ~ D',把樣本里的 (yi',yi) 對封裝到一個提示 xi 裡,然後訓練獎勵模型判斷一致性。獎勵模型損失寫成:

其中rθ(x)是具有引數θ的獎勵模型的輸出。cross_entropy_error是交叉熵損失函式。x是由句子對構造而成的提示,t是一致性標籤。
一致性提示模板:假設一致性資料集樣本有一個句子對,提示x構造如下:

其中粗體為提示模板填入的句子對。
根據一致性獎勵模型最佳化策略
使用上面訓練的一致性獎勵模型來訓練一個策略,強化策略按照上述思考方法輸出,將策略初始化為在行動任務資料集上微調過的模型。
對於行動任務資料集裡的每個訓練樣本:(x1, y1', x2, y2', …, xn, yn') ~ D,xi是使用者提示或行動呼叫的結果,yi'是標籤回答;使用 (x1, x2, …, xn) 進行策略 𝜋𝜃 取樣,得到一組輸出 (y1, y2, …., yn):
將下述獎勵函式的輸出視為策略輸出的獎勵,來最佳化策略𝜋𝜃。

獎勵函式
獎勵函式主要由兩種型別的獎勵組成:格式獎勵和一致性獎勵。
格式獎勵:判斷策略輸出 (y1, y2, …., yn) 裡的'<<think>>'和'<</think>>'標籤,以及'<<action>>'和'<</action>>'標籤是否符合規則。
一致性獎勵:由一致性獎勵模型給出。將 [(y1,y1'), (y2,y2'), …, (yn,yn')] 封裝成提示[x1, x2, …, xn],再批次輸入一致性獎勵模型來判斷一致性,獲得結果 [r1, r2, …, rn]。最終的一致性獎勵是

。
工程實踐:實際中,為了便於在軟體工程上實現一致性獎勵核心思想,透過逐步強化訓練來達目的。
即在行動任務資料集所有訓練樣本上先進行第一輪y1的一致性強化訓練,即使用x1來進行策略取樣得到y1,然後根據 (y1,y1’) 的一致性來強化策略,反覆訓練直到策略輸出y1和y1’一致後,才接著進行第二輪y2的一致性強化訓練,即以(x1,y1,x2)來取樣y2。
以此類推,yn也進行了一致性強化訓練,最後策略輸出(y1, y2, …., yn)全部和訓練樣本一致了。
結果對比
模型的思考能力得到了增強
透過和基線模型對比,研究人員發現模型的推理能力和計劃能力,以及執行計劃的能力得到了增強。
使用行動任務測試資料集,給與基線模型相同的全域性思考上下文(系統上下文)、相同的使用者提示、相同的行動呼叫結果(注意基線模型的工具呼叫的格式和行動呼叫不一樣),然後透過人工判斷和一致性獎勵模型來判斷模型對任務的完成率,結果發現基線模型對任務的完成率沒有文中提出的模型高。
行動呼叫比工具呼叫語法優雅且高效
行動呼叫在語法上比工具呼叫優雅。工具呼叫需要增加兩個新的訊息型別,而行動呼叫不需要增加新的訊息型別。行動呼叫只是內置於思維鏈裡的一個訊息。而且行動呼叫的名字使用的是人類生活中出現的語句,廣泛分佈在訓練資料中。
行動呼叫在效率上也比工具呼叫高:使用行動任務測試資料集,在基線模型上使用工具呼叫,在該模型上使用行動呼叫,進行有監督訓練微調;工具呼叫和行動呼叫的功能相同,可以觀察到在相同的訓練資料量下,行動呼叫的效果更好。
侷限和展望
侷限性
該工作的一個限制是收集思考上下文比較困難,難以覆蓋多種情景,會導致模型的泛化能力不高。從策略採集輸出,透過人工標籤員評定一致性也費時費力,導致一致性資料集規模較小,從而導致一致性獎勵模型泛化能力不足。要思考如何提高強化演算法,進行更有效的策略取樣和強化訓練。
未來方向
未來的工作,研究人員將探索在各種任務上用思考方法進行大規模強化學習。把行動任務,推理任務,和其他任務融入思考方法流程,並進行大規模強化學習。同時思考如何能收集更多有意義的思考上下文,並覆蓋更大的應用範圍。
參考資料:
https://arxiv.org/pdf/2502.13475


