AgentThink: A Unified Framework for Tool-Augmented Chain-of-Thought Reasoning in Vision-Language Models for Autonomous Driving
1. 引述
這是一篇自動駕駛領域的論文。我對這篇論文主要感興趣的點在于其對于工具調用(Tool Call)的設計。這一點同時也被設計在了其強化微調時的獎勵函數上。
2. 方法
2.1 思維鏈設計
論文思維鏈的每個步驟都被組織成五個要素:
-
所選工具(顯式輸出在思考過程中,也就是 <tool>)
模型在該步驟決定要調用的外部模塊/工具名稱(比如 “Open-Vocab Detector” 或 “Depth Estimator”),或者標記不調用任何工具。 -
子問題?
針對當前推理目標,模型提出的一個更細粒度的問題。例如在判斷能否左轉時,子問題可能是“前方來車速度如何?”或“左側車道上有沒有行人?”
-
不確定性標記
一個布爾值,標記“內部知識能否直接回答子問題”:-
如果模型內部已有足夠知識,可直接判斷,則標記為 False
-
否則標記為 True,表示需要調用工具輔助判斷。
-
-
初步答案
-
當不確定性標記為 False 時,模型直接給出問題的回答;
-
若不確定性標記為 True,此處留空,等待工具返回結果后再進行下一步推理。
-
-
下一步動作選擇
指示是“繼續推理”(Continue Reasoning)還是“結束推理并輸出最終答案”(Conclude)。
2.2?工具調用
在開放詞匯目標檢測、軌跡預測等指定任務上,專門針對這方面的模型必然效果比語言模型好。如果讓 LLM 去做這些任務,那么大概率是會生成幻覺的,就好比早期的 GPT,你問它數學題,它輸出錯誤答案(幻覺);而現在的 GPT 遇到復雜的數學問題會直接求助 Python,這就是工具調用(Tool Call)。
上圖是論文的一個對比實驗圖,對比使用 tool 和不使用 tool 的效果。
論文的附錄里面寫了所有使用的 tool,而結果上這些 tool 是一個個的函數。在 SFT 階段,論文對大模型輸出形式進行微調(預熱),在微調輸出思維鏈那一塊兒就用 <tool> 來指定調用哪個函數。
2.3?獎勵函數
論文在摘要提到他們的創新包括: GRPO 微調、調用工具、思維鏈。事實上,GRPO 微調的論文現在一抓一大把,微調不是創新,微調的設置才是創新,確切來說(主要)是獎勵函數的設計。
工具調用和思維鏈這兩個創新需要和微調關聯起來,意思就是說獎勵函數的設計是包括了這兩個創新點。
論文的獎勵函數設計思路如下:
- 最終答案獎勵:答案正確就基于正反饋
- 推理步驟獎勵:思維鏈的推理是否正確(判斷答案是不是蒙出來的,或者答案錯誤但是思路是對的)
- 工具調用獎勵:在 “解題” 過程中,是否用了正確的輔助工具
具體的設計公式(給多少點獎勵)論文并未提及。
2.4?方法流程
論文首先是構建了一個數據集。使用特定提示模板,讓 GPT-4o 在每一步推理中決定是否調用工具,并生成“子問題 → (工具調用)→ 中間答案 → 下一步動作”的完整鏈式思維軌跡。
接著使用千問7B作為 LLM,使用 SFT 對模型進行預熱,也就是規范模型輸出格式,并告訴模型其將要面臨的具體任務(比如這個數據集都是自動駕駛的數據,那么模型在監督微調之后,后續的回復就會更傾向自動駕駛)
最后在實際推理時,模型根據每步的“不確定”標記,實時決定是否調用工具,并將工具輸出融入后續推理。