LLM「想太多」有救了!高效推理讓大模型思考過程更精簡
大模型雖然推理能力增強(qiáng),卻常常「想太多」,回答簡單問題也冗長復(fù)雜。Rice大學(xué)的華人研究者提出高效推理概念,探究了如何幫助LLM告別「過度思考」,提升推理效率。
LLM的推理能力顯著增強(qiáng),然而,這個「超級大腦」也有自己的煩惱。
有時候回答會繞好大一個圈子,推理過程冗長又復(fù)雜,雖能得出正確答案,但耗費了不少時間和計算資源。
比如問它「2加3等于多少」,它可能會從數(shù)字的概念、加法原理開始,洋洋灑灑說上一大通,這在實際應(yīng)用中可太影響效率啦。
來自Rice大學(xué)的華人研究者提出了「高效推理」的概念,在保證回答準(zhǔn)確的同時,更快、更簡潔地給出答案。
論文鏈接:https://arxiv.org/abs/2503.16419
項目鏈接:https://github.com/Eclipsess/Awesome-Efficient-Reasoning-LLMs
接下來,深入探討LLM的高效推理,幫它們告別「過度思考」。
別讓模型「想太多」,邁向高效推理
LLM通過思維鏈(CoT)提示等技術(shù),在復(fù)雜推理任務(wù)中表現(xiàn)亮眼。
CoT就像是給模型裝上了「思考引擎」,讓它能一步一步地推導(dǎo),把推理過程清晰地展現(xiàn)出來。
不過,這份出色的表現(xiàn),需要消耗大量計算資源。
LLM經(jīng)常出現(xiàn)「過度思考」的情況,生成長而冗余的推理內(nèi)容,增加了延遲和資源消耗。
本文聚焦于如何在提升或保持模型性能的同時,優(yōu)化推理過程,這對計算資源有限的實際場景十分重要。
研究者梳理了應(yīng)對「過度思考」,實現(xiàn)高效推理的技術(shù)手段:
- 基于模型的高效推理:即考慮將模型優(yōu)化為更簡潔的推理模型,或直接訓(xùn)練高效推理模型。
- 基于推理輸出:旨在推理過程中動態(tài)減少推理步驟和長度。
- 基于輸入提示:根據(jù)輸入提示的屬性(如難度或長度控制)提高推理效率。
此外,研究者還介紹了用高效數(shù)據(jù)訓(xùn)練推理模型,探索小模型的推理能力,并討論了評估方法和基準(zhǔn)測試。
認(rèn)識「過度思考」
LLM產(chǎn)生冗長、不必要的推理過程時,就出現(xiàn)了「過度思考」現(xiàn)象。
在回答「0.9和0.11哪個大」這個簡單的問題時,DeepSeek-R1和QwQ-32B這兩個模型給出的答案都十分冗長。
它可能會從十進(jìn)制的原理開始,分析小數(shù)點后的每一位數(shù)字,還會嘗試用各種方法驗證,比如轉(zhuǎn)化為分?jǐn)?shù)或在數(shù)軸上表示,最后才給出答案。
雖然答案是對的,但推理過程又長又啰嗦,耗費了大量時間和計算資源。
DeepSeek-R1:好的,我得判斷0.9和0.11誰更大。它們都是小數(shù),但小數(shù)點后的位數(shù)不一樣。我先想想每個小數(shù)的含義,0.9就是十分之九,因為小數(shù)點后第一位是十分位。等等,我換個方法確認(rèn)下,把它們轉(zhuǎn)成百分?jǐn)?shù)試試……為了確保沒錯,我在數(shù)軸上表示一下吧。還有其他驗證方法嗎?用減法好像也行……或者……我確定答案是0.9。(616字,19秒)
QwQ-32B:要找出0.9和0.11哪個大。它們是小數(shù),逐位比較看看?我回憶下小數(shù)比較的規(guī)則……0.9 小數(shù)點后有1位,0.11有2位,寫法上是不是要調(diào)整下……不對,我再檢查下,是不是哪里搞錯了。換個思路……另一種方法是……最終答案是0.9更大。(602字,42秒)
從這個例子,能看出「過度思考」的幾個特點:回答簡單問題,兩個模型都寫了600多字。推理過程中有很多重復(fù)、多余的驗證方法。
推理內(nèi)容越長,處理所需的時間就越多。模型會反復(fù)懷疑自己的推理過程。
在資源有限的環(huán)境,或像自動駕駛、智能交互助手這類需要實時響應(yīng)的應(yīng)用場景中,「過度思考」帶來的效率低下問題就會格外突出。
開啟高效推理
高效推理方法有以下三類,基于模型的有效推理、針對結(jié)果的優(yōu)化和借助輸入提示的有效推理。
基于模型的有效推理
一種有效的做法是在RL中加入長度獎勵,引導(dǎo)它生成簡潔的推理。
以前,模型訓(xùn)練的時候主要關(guān)注答案是否正確、格式是否規(guī)范?,F(xiàn)在研究人員給它加了一個新的「考核指標(biāo)」——推理長度。
就像老師不僅要求學(xué)生答對題,還要求答題過程簡潔明了。
獎勵函數(shù)通常是這樣的:
其中α用來調(diào)節(jié)長度懲罰在獎勵函數(shù)中的權(quán)重,R_length是根據(jù)推理響應(yīng)長度設(shè)置的懲罰項,計算方式如下:
模型為了獲得更多獎勵,就會在保證答案準(zhǔn)確的同時,盡量少用token。
利用可變長度的CoT數(shù)據(jù)進(jìn)行監(jiān)督微調(diào),也是提升推理效率的有效方法。
這就好比給模型提供了不同難度和長度的「練習(xí)題」,讓它學(xué)會靈活應(yīng)對各種情況。
訓(xùn)練數(shù)據(jù)中既有完整詳細(xì)的推理鏈,也有簡短、高效的推理路徑。
通過這些示例,模型就能學(xué)會在不降低準(zhǔn)確性的前提下,采用更簡潔高效的推理模式。
在微調(diào)模型的時候,既可以采用像LoRA這樣的標(biāo)準(zhǔn)微調(diào)方法,對模型參數(shù)進(jìn)行小范圍的調(diào)整;也可以采用漸進(jìn)式微調(diào),讓模型慢慢適應(yīng)新的思考節(jié)奏,逐步提高推理效率。
優(yōu)化推理輸出,精簡思考過程
從推理輸出的角度,研究人員嘗試通過創(chuàng)新的方式來壓縮推理步驟,讓模型的「思考過程」更加精簡。
這些方法不改變模型的參數(shù),直接對推理輸出的結(jié)果進(jìn)行優(yōu)化。
潛在推理技術(shù)能把推理步驟壓縮為更精簡的表達(dá)形式,圖中展示了多種以更高效的格式編碼的潛在推理方法:
- Coconut:在訓(xùn)練過程中,逐漸減少推理內(nèi)容的冗長部分。
- CODI:運(yùn)用自蒸餾的方式,壓縮推理內(nèi)容。
- CCOT:把CoT推理壓縮為潛在表征。
- SoftCoT:借助小型輔助模型,將潛在思維投射到較大的模型中。
這些方法通常會用到嵌入函數(shù),把冗長的推理內(nèi)容映射到一個更緊湊的空間里,用公式表示就是:
E_compact是壓縮后的推理表示,f是學(xué)習(xí)到的變換函數(shù)。
除了利用潛在表示,在推理過程中動態(tài)調(diào)整推理策略也是提高效率的關(guān)鍵。
動態(tài)推理會根據(jù)每個問題的具體情況,按需生成推理步驟,圖中介紹了兩種典型的技術(shù)。
在獎勵引導(dǎo)方面,推測拒絕優(yōu)化了最佳N解碼算法。在生成多個響應(yīng)的過程中,根據(jù)獎勵模型的評估,及時丟棄低質(zhì)量的輸出,減少不必要的計算開銷。
面對復(fù)雜問題時,它會先大量生成可能的推理路徑,然后快速排除那些沒有希望的路徑,只保留高質(zhì)量的路徑繼續(xù)推理,大大提高了推理效率。
這兩種技術(shù)的核心思路都是,根據(jù)問題的復(fù)雜程度靈活調(diào)整推理深度,用公式表示為:
借助輸入提示,巧妙引導(dǎo)思考從輸入提示的角度入手,也能讓模型推理變得更高效。
長度約束提示簡單又實用,直接在提示里要求模型控制推理長度,比如「用不超過10個token回答下面的問題」。
CoD方法則讓模型在逐步推理時,只保留每個思考步驟的最少草稿,最多用五個單詞。
比如在解答數(shù)學(xué)題時,模型不再詳細(xì)寫出每一步的推導(dǎo)過程,而是用簡潔的幾個詞概括關(guān)鍵思路,這樣在保證準(zhǔn)確性的同時,大大減少了token的使用。
不同的任務(wù)難度不同,對推理的要求也不一樣。
因此,根據(jù)輸入提示的屬性進(jìn)行推理路由也是一種提高效率的策略。
RouteLLM訓(xùn)練了一個查詢路由器,它根據(jù)問題的復(fù)雜性將查詢分配給合適的模型。
簡單的問題就交給速度快但推理能力較弱的模型處理,復(fù)雜的問題則交給能力更強(qiáng)的模型,這樣可以充分發(fā)揮不同模型的優(yōu)勢,提高整體推理效率。
Self-Ref方法讓LLM能根據(jù)自身的不確定性分?jǐn)?shù)來決定是否需要路由到更強(qiáng)大的模型。
如果模型對自己的答案不太確定,就會自動尋求更強(qiáng)大模型的幫助,減少不必要的推理步驟。
其他探索
除了上述方向,研究人員還在數(shù)據(jù)、模型和評估等方面進(jìn)行了深入探索,以進(jìn)一步提升LLM的推理效率。
用更少數(shù)據(jù),辦更多事
很多研究發(fā)現(xiàn),訓(xùn)練數(shù)據(jù)的質(zhì)量和結(jié)構(gòu),對模型的高效推理能力影響很大。
通過精心挑選和組織訓(xùn)練數(shù)據(jù),即使數(shù)據(jù)量少,也能讓模型有出色的表現(xiàn)。
- 數(shù)據(jù)多樣性:讓模型接觸各種推理模式和問題類型。
- 數(shù)據(jù)質(zhì)量:選擇高質(zhì)量的樣本,而不只追求數(shù)量多。
- 推理結(jié)構(gòu):明確教模型逐步推理,而不是直覺推理。
LIMO打破了傳統(tǒng)的觀念,不再追求數(shù)據(jù)的數(shù)量,而是專注于質(zhì)量。
它會從難度、通用性和知識多樣性等方面挑選高質(zhì)量的問題,然后再配上結(jié)構(gòu)合理、驗證嚴(yán)格的解決方案。
用這精心挑選的817個樣本,LIMO訓(xùn)練出來的模型就能超越那些用了10多萬個樣本訓(xùn)練的模型,是不是很厲害?
S2R給LLM注入了自我驗證和自我糾正的能力,就像給模型請了一個私人教練。
它先在一個精心挑選的數(shù)據(jù)集上對模型進(jìn)行微調(diào),讓模型初步具備這些能力,然后再通過RL進(jìn)一步提升。
只用了3100個初始化樣本,S2R微調(diào)后的模型在推理任務(wù)中的表現(xiàn),比很多用大量長CoT蒸餾數(shù)據(jù)訓(xùn)練的模型還要好。
小模型的「逆襲之路」
LLM雖然能力很強(qiáng),但它對計算資源的要求也很高,在一些資源有限的場景里就有點施展不開。
這時候,小語言模型(SLM)就有了用武之地。
不過,要讓SLM在有限的資源下也能有強(qiáng)大的推理能力,還得給它來點「特殊訓(xùn)練」。
知識蒸餾是提升SLM推理能力的重要方法,簡單來說,就是把LLM的智慧傳遞給SLM。
混合蒸餾就像是把不同的「知識精華」混合在一起,有的把長、短CoT推理示例混合,有的把CoT和PoT(Program of Thought)結(jié)合,讓SLM能吸收更全面的知識。
反事實蒸餾則像是給SLM創(chuàng)造了一些假設(shè)情境,通過對原始問題進(jìn)行特殊處理,生成多視角的CoT,讓SLM從不同角度學(xué)習(xí)知識。
還有反饋驅(qū)動的蒸餾技術(shù),它會不斷優(yōu)化蒸餾數(shù)據(jù)集,像給SLM提供越來越精準(zhǔn)的學(xué)習(xí)資料。
另外,一些方法還把探測和檢索機(jī)制融入蒸餾過程,或者在蒸餾時讓模型根據(jù)任務(wù)動態(tài)調(diào)整推理策略,這些都幫助SLM更好地學(xué)習(xí)LLM的推理能力。
評估推理能力
評估高效推理,需要綜合考慮準(zhǔn)確性和推理效率:
- 準(zhǔn)確性:看最終給出的答案是否正確。
- 效率:token使用數(shù)量、推理花費的時間、消耗的計算資源。
實際評估時,通常會先把效率指標(biāo)標(biāo)準(zhǔn)化處理,再和準(zhǔn)確性指標(biāo)結(jié)合起來,形成一個綜合指標(biāo):
既獎勵正確性,又鼓勵推理的簡潔性。
Sys2Bench涵蓋了算術(shù)、邏輯、常識、算法和規(guī)劃等多個領(lǐng)域的任務(wù),用11個不同的數(shù)據(jù)集對LLM進(jìn)行全方位的測試。
通過這個測試,發(fā)現(xiàn)僅靠增加推理時的計算資源,并不能讓模型在所有任務(wù)中都表現(xiàn)出色,提升LLM的推理能力需要多種方法結(jié)合。
還有一些研究專門考察不同的推理策略對模型性能的影響,以及測試時擴(kuò)展(TTS)策略和模型性能之間的關(guān)系。
對LLM的過度思考問題,也有專門的評估方法。
研究人員開發(fā)了一個評估框架,可以深入分析模型的推理過程,找出像分析癱瘓、異常行為和過早放棄等模式。
他們提出了「過度思考分?jǐn)?shù)」,就像是一個健康指標(biāo),分?jǐn)?shù)越高,說明模型過度思考的問題越嚴(yán)重,任務(wù)性能就越差。
通過選擇過度思考分?jǐn)?shù)低的解決方案,可以讓模型性能提高30%,同時降低43%的計算開銷。
參考資料:
https://www.alphaxiv.org/overview/2503.16419
新智元報道 編輯:英智
本文由人人都是產(chǎn)品經(jīng)理作者【新智元】,微信公眾號:【新智元】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于 CC0 協(xié)議。
- 目前還沒評論,等你發(fā)揮!