宅中地 - 每日更新
宅中地 - 每日更新

贊助商廣告

X

AI模型多想一會兒,調用工具就能更准嗎?一篇關於「循環語言模型」的實驗報告

2026年09月17日 首頁 » 熱門科技

你有沒有遇到過這種情況:讓AI幫你訂機票、查天氣、再把結果匯總成一份行程表,結果它要麼漏掉一步,要麼把參數填錯,要麼乾脆把兩個任務的順序搞反了。

這不是你的錯覺。當AI模型需要連續調用好幾個工具、還要讓後一個工具用上前一個工具的結果時,出錯率會明顯上升。這篇來自劍橋大學的論文,就是在琢磨一件事:能不能讓AI模型在做決定之前,多"想"幾遍,從而把這種複雜的工具調用任務做得更好。

先搞清楚,這件事到底難在哪

現在的AI智能體,說白了就是一個不斷做決策的系統。用戶說一句話,模型要判斷該調用哪個工具、填什麼參數、調用完之後結果要不要傳給下一個工具。

如果只是"查一下北京天氣"這種單次調用,大多數模型都能應付。真正的麻煩出現在複合任務里。比如"把這個整數列錶轉成字符串,然後再把字符串里的特殊符號全部替換掉",這就要求模型先調用A函數,再把A函數的輸出結果作為參數傳給B函數。中間任何一步出錯,整個任務就崩了。

**工具調用*:指AI模型根據用戶請求,自動選擇合適的外部函數(API)並生成調用參數的過程,是構建AI智能體的核心能力之一。

論文裡用一個專門的說法來描述這種結構:模型給出的一整套工具調用方案,可以看成一張"有向無環圖",節點是每一次具體的調用,邊代表"這次調用的結果要餵給下一次調用"。如果這張圖里節點之間沒有連線,說明各個調用互相獨立,可以並行執行;如果有連線,就意味著存在依賴關係,必須按順序來,還得把中間結果正確地傳遞下去。

論文選用了三個評測基準來考察這件事:BFCL(主要測試單次調用和並行獨立調用)、NESTful(專門測試有依賴關係的嵌套調用)、API-Bank(測試真實世界API的選擇和參數填寫準確度)。這三個基準合起來,基本覆蓋了從"簡單查一次"到"複雜多步協同"的全部難度梯隊。

那麼,"多想一會兒"具體是什麼意思?這就要說到這篇論文的主角——循環語言模型。

循環語言模型:不是加參數,而是加"思考輪數"

普通的Transformer模型,結構是一層一層往上疊的,每一層參數都不同,模型跑一遍輸入就直接產生輸出,一錘子買賣。

**Transformer*:目前主流大語言模型採用的神經網路架構,通過自注意力機制處理序列數據。

循環語言模型(Looped Language Models)換了個思路:它不是把很多層不同的Transformer疊起來,而是反覆使用同一組共享參數的Transformer模組,對輸入的隱藏表示進行多輪加工。用論文裡的公式說,第t輪疊代的隱藏狀態h是由上一輪的隱藏狀態經過同一個共享模組計算得到的,每一輪結束後都可以生成一次預測結果,模型可以選擇在第1輪就輸出答案,也可以選擇在第2輪、第3輪甚至第4輪再輸出。

這裡有個關鍵區別要說清楚:這不是讓模型變得更大,而是讓模型對同一個問題多算幾遍。打個比方,普通模型像是讓你把一道數學題從頭到尾抄一遍公式直接給答案,循環模型則像是讓你把這道題在草稿紙上反覆演算幾次,每一次都檢查一下上一次的結果對不對,再決定要不要繼續算下去。

如果不這樣設計會怎樣?答案很直接:模型的計算深度永遠和參數量綁死。想要更強的推理能力,唯一的辦法就是堆更多層、更多參數,訓練和部署成本跟著水漲船高。循環結構把"計算量"和"參數量"這兩件事解耦了,同一套參數,你想讓它算1輪就是輕量模式,想讓它算4輪就是深度模式,不需要重新訓練一個更大的模型。

這就好比家裡做飯,一道菜可以按標準流程走一遍出鍋,也可以多燉一會兒讓味道更透。廚具(參數)沒變,火候(計算輪數)變了,出來的成品質量也會不同。如果永遠只按標準流程走一遍,遇到需要慢燉才能入味的菜(也就是複雜的依賴任務),味道自然就差了一截。

論文裡用到的模型主要分兩類。一類是"原生"循環模型,比如Ouro-1.4B和Ouro-2.6B,它們從預訓練階段開始就是按照循環結構設計的,最多支持4輪疊代,預訓練用了大約7.7萬億個token。

**預訓練*:指模型在海量通用文本數據上進行的初步訓練,讓模型先學會語言的基本規律,之後再針對具體任務微調。

另一類是"改造"循環模型,研究者拿現成的Llama-3.2-1B和OLMo-2-1B這些標準模型,把中間一部分層改造成可以循環執行的模組,最多支持8輪疊代。這種改造方式的好處是不用從零訓練,直接在原有模型的基礎上做手術,代價是可能沒有原生設計那麼徹底。

Ouro模型是怎麼學會"該想幾輪"的

原生的Ouro模型有一個很巧妙的設計:它不是傻乎乎地固定跑滿4輪,而是自帶一個"退出閘門"。

具體來說,模型在每一輪疊代後,都會順便算一個"我現在要不要停下來"的概率,這個概率經過一系列連乘運算,就形成了一個關於"到底該在第幾輪退出"的概率分布。訓練的時候,模型的損失函數會綜合考慮所有輪次的預測結果,並且用一個類似正則化的手段,鼓勵模型別急著在第一輪就草率退出。

訓練分兩個階段進行。第一階段,語言模型本身和這個退出閘門一起訓練。第二階段,語言模型的參數被凍結住,只單獨訓練退出閘門,訓練信號來自"多算一輪到底能帶來多大的提升"這個指標,如果多算一輪幾乎沒有改善,閘門就該學會在這裡喊停。

這套機制的好處顯而易見:簡單問題不用陪著複雜問題一起"陪跑"滿血計算。這就像考試的時候,選擇題掃一眼就能確定答案,你不會非要按大題的解題步驟把選擇題的每個選項都推導一遍。如果不設計這種自適應機制,模型面對一道送分題也要老老實實算滿4輪,白白浪費計算資源,這對追求推理效率的實際部署場景來說是不划算的。

改造版的循環模型(比如基於Llama和OLMo做手術改造的那些)就沒有這套自適應退出機制了。它們訓練時的做法是,每個訓練批次隨機採樣一個循環輪數(用一種叫泊松-對數正態分布的方式來採樣),然後只在這個採樣到的最終輪次上計算損失,同時用KL散度約束新模型的輸出不要偏離原始預訓練模型太遠。

**KL散度*:一種衡量兩個概率分布差異程度的數學工具,這裡用來約束改造後的模型行為不要和原模型差太多,防止"改造"把模型原有能力搞壞。

這意味著改造版模型在推理時,只能靠人為指定一個固定的循環輪數,沒法像Ouro那樣自己靈活判斷該停在哪一輪。這也是論文後面重點討論的一個差異來源。

實驗結果:複合任務里,循環計算的優勢最明顯

論文做了一系列對照實驗,控制變量做得相當紮實:所有模型用同一份Hermes函數調用數據集微調,用完全相同的訓練超參數(學習率、訓練輪數、LoRA配置等),確保比較的是"循環結構"本身帶來的差異,而不是訓練技巧的差異。

**LoRA*:一種參數高效微調技術,只訓練模型中一小部分新增的參數,而不是重新訓練整個模型的全部參數,能大幅降低微調成本。

先看BFCL這個基準的結果。Simple類別(只有一個工具、只需一次調用)里,循環模型和非循環模型的差距很小,因為這種任務本來就不難,誰都能做好。但是到了Parallel和Parallel-Multiple這兩個需要生成多個獨立調用的類別,差距就明顯拉開了。

舉個具體數字:Ouro-2.6B在SFT(監督微調)之後,Parallel類別達到83.0分,Parallel-Multiple達到76.5分,整體準確率86.4分,這個成績甚至超過了參數量更大的Qwen3-4B(SFT後整體只有56.7分,儘管其指令微調版本表現更好)。而基於Llama-3.2-1B改造的循環版本,在Parallel類別上從非循環版本的14.0分躍升到31.0分,Simple類別也從29.8分升到43.5分,提升幅度相當可觀。

**SFT(監督微調)*:Supervised Fine-Tuning的縮寫,指用人工標註好的高質量數據對預訓練模型進行針對性訓練,讓模型學會執行特定任務。

再看NESTful這個專門考察依賴鏈條的基準,結果趨勢是一致的。Ouro-2.6B經過SFT後,Win Rate(執行預測的調用序列後,答案是否正確的勝率指標)達到0.371,遠超Ouro-1.4B的0.191,也超過了參數量差不多大小的Qwen3-4B的SFT版本(0.063)。要知道NESTful里的任務需要模型先調用一個函數拿到中間結果,再把這個結果準確地餵給下一個函數,這種"接力賽"式的任務對模型的結構化推理能力要求極高。

最後看API-Bank,結果就沒那麼統一了。這個基準里大多數任務只需要一次API調用,考察的重點是"選對API、填對參數"這種局部能力,不太涉及多步協同。數據顯示,循環和非循環模型在這裡的差距明顯縮小,甚至在改造版模型上,循環版本反而略遜於非循環版本(比如OLMo-2-1B改造後的Call Correctness從37.1降到34.0)。

這個結果其實挺說明問題的。循環計算帶來的好處,不是那種"什麼任務都能通吃"的萬能加成,而是專門針對"需要維持結構、追蹤依賴"這類任務的針對性提升。簡單任務不需要反覆琢磨,多算幾輪反而可能是浪費,甚至因為訓練時的隨機性引入一點點噪聲。

這就好比讓你去買一瓶礦泉水和去策劃一場婚禮,前者你走進便利店拿了就走,根本不需要"多想幾遍",後者你反覆推敲場地、流程、賓客名單之間的相互配合才能不出岔子。如果強迫你對著買水這件事也反覆推敲三四遍,不僅沒有幫助,還顯得多此一舉。

固定輪數實驗:計算深度和準確率的關係到底是什麼樣

前面的對比實驗沒法說清一件事:模型表現更好,到底是因為循環結構本身,還是因為訓練數據或者訓練方式恰好更適合這些模型?

論文設計了一組更乾淨的實驗,把模型參數完全固定住,只調整推理時執行的循環輪數,專門觀察"多算幾輪"這一個變量的效果。

在BFCL上,結果顯示準確率總體隨著循環輪數增加而提升,提升最明顯的還是那些需要多次調用的類別。Ouro-1.4B在Simple類別很快就趨於飽和,但Multiple、Parallel、Parallel-Multiple這幾個類別在輪數增加到3輪、4輪時還在持續進步。有意思的是,Ouro-2.6B在3輪左右就基本飽和了,這說明參數量更大的模型,本身"想得更周全",不需要靠反覆疊代來彌補,就像一個經驗豐富的老師傅,看一眼圖紙心裡就有數,不需要反覆核算草稿。

NESTful上的規律更加清晰:Win Rate幾乎是隨著循環輪數線性增長的。這一點特別值得琢磨,因為NESTful里的任務本質是"後面的調用依賴前面調用的輸出",這種任務需要模型在生成過程中不斷回頭檢查、修正之前的判斷,恰好是循環計算最擅長發力的場景。

不過有個地方要潑一盆冷水:改造版的循環Llama模型,在NESTful上的表現明顯弱於原生Ouro模型。哪怕輪數拉滿到8輪,Win Rate依然很低(個位數百分比),遠不如Ouro-2.6B四輪就能達到的35%以上。這說明"事後改造"和"從頭設計"之間存在真實的差距,改造能帶來提升,但提升的天花板明顯更低,可能是因為預訓練階段的表徵方式沒有專門為循環計算做過適配。

論文裡給了一個特別直觀的例子,展示了同一個NESTful任務在不同循環輪數下的表現變化。任務是把一個整數列錶轉成字符串,再對字符串做標準化處理。第1輪時,模型直接編造了一個工具目錄里根本不存在的函數,第二步調用乾脆漏掉了;第2輪時,模型意識到需要兩步調用,但第一個函數名依然是編的,而且變量引用格式也是錯的;到了第3輪和第4輪,模型終於給出了和標準答案完全一致的調用序列,包括正確的輸出到輸入的變量引用。

這個例子說明,循環計算修正的不只是格式問題,而是實實在在的語義錯誤:函數名選錯了、調用結構漏了、變量綁定錯了,這些都是需要模型"回頭再想想"才能糾正的深層錯誤,而不是簡單的格式排版問題。

自適應推理:不是越多輪越好,是夠用就好

固定輪數實驗說明了一個規律:輪數越多,效果通常越好,但會在某個點上飽和。這意味著,如果你不管三七二十一每次都跑滿4輪,會在那些本來2輪就夠用的任務上白白浪費計算資源。

這就是自適應推理要解決的問題。論文用Ouro自帶的退出閘門,讓模型自己決定每個token生成時到底需要幾輪計算,設置了從0.1到0.8幾檔不同的置信度閾值,閾值越高,模型越傾向於多算幾輪才敢下結論。

結果顯示,自適應推理在計算量和準確率之間找到了一個明顯更划算的平衡點。在BFCL上,自適應方式用比固定4輪更少的平均計算輪數,就能達到甚至略微超過固定4輪的準確率。在NESTful上,Ouro-2.6B用自適應方式,能用比固定4輪更少的平均計算量,達到和固定4輪相同的Win Rate。

這個結果換個說法可能更好理解。假設某個任務90%的token其實一輪計算就能搞定,只有10%的token是那種需要反覆推敲的"硬骨頭",如果你固定跑4輪,就是拿處理硬骨頭的力氣去處理那90%根本不需要那麼費勁的部分。自適應機制相當於給每個token配了一個"分診台",簡單的直接放行,複雜的才轉到專家那裡反覆會診。

如果不這麼設計,代價是什麼?代價是推理成本和準確率的性價比會明顯變差。論文的圖表顯示得很清楚,固定深度曲線要爬很久才能接近自適應曲線的水平,而自適應曲線幾乎是"貼地飛行"式地用更少資源觸達差不多的高度。

這也帶出一個更值得琢磨的問題:如果這種自適應停止機制被更廣泛地應用到實際的AI智能體系統里,未來的推理成本賬單可能會因為"簡單問題少算、複雜問題多算"這種動態分配方式,出現結構性的下降,而不是單純靠模型變小或者變便宜來降本。

寫在後面

讀這篇論文時,最觸動我的不是"循環計算比不循環好"這個結論,這個結論其實符合直覺,多想想總歸沒壞處。真正讓我停下來想了一會兒的,是改造版模型和原生模型之間那道明顯的鴻溝。

同樣是循環結構,同樣多輪疊代,原生訓練出來的Ouro能在NESTful上衝到35%以上的勝率,改造版的Llama卻始終在個位數徘徊。這說明"循環"這個架構本身不是萬能鑰匙,它需要底層表徵方式在預訓練階段就為這種反覆推敲的模式做好準備。這讓我想到學一門樂器,你光靠成年後天天練琴很難達到童子功那種肌肉記憶的水平,不是練得不夠多,而是錯過了神經可塑性最強的窗口期。模型的"童子功",可能就是預訓練階段。

論文裡還有個細節我覺得該單獨提一下:參數量更大的Ouro-2.6B反而在3輪左右就飽和了,不需要像小模型那樣一路疊代到4輪才見效。這暗示著"想得深"和"想得遠"某種程度上是可以互相替代的資源,模型越聰明,越不需要靠死磕輪數來補救。那麼下一個問題自然就來了:如果繼續放大原生循環模型的規模,它需要的疊代輪數會不會進一步減少,直到接近普通模型的一次前向推理?這條曲線最終會收斂到哪裡,是這篇論文沒有回答,但我很想知道答案的地方。

Q&A

Q1:循環語言模型和普通的大語言模型有什麼區別?

A:普通語言模型是一層層不同參數堆疊、跑一遍就出結果,循環語言模型是反覆使用同一組共享參數的模組對隱藏表示進行多輪加工,可以在不增加參數量的情況下增加推理時的計算深度。

Q2:循環語言模型在哪種工具調用任務上提升最明顯?

A:在需要多步協同、維護調用之間依賴關係的複合任務上提升最明顯,比如BFCL的Parallel、Parallel-Multiple類別和NESTful的嵌套調用任務,而在單次簡單API調用的場景(如API-Bank)提升較小甚至不明顯。

Q3:自適應推理和固定輪數推理相比有什麼優勢?

A:自適應推理讓模型根據每個token的難度自主決定計算輪數,簡單預測提前退出,複雜預測多算幾輪,能用更少的平均計算量達到接近甚至超過固定深度推理的準確率,性價比更高。

宅中地 - Facebook 分享 宅中地 - Twitter 分享 宅中地 - Whatsapp 分享 宅中地 - Line 分享
相關內容
Copyright ©2026 | 服務條款 | DMCA | 聯絡我們
宅中地 - 每日更新