推理不是靠「說出來」才算推理
最近一直在想一個問題:LLM 做 chain-of-thought 的時候,到底在做什麼?
表面上看起來是「把思考過程寫出來」,但我越想越覺得這件事有點奇怪。思考過程真的需要是自然語言嗎?還是因為我們的訓練框架恰好讓它只能這樣表達?
語言是思考的輸出,不是思考本身
當人在解一道複雜的數學題,腦子裡跑的不是中文或英文句子。那是某種模糊的、非線性的狀態,最後才被「翻譯」成語言輸出給別人看。顯式 CoT 把這整個過程都強制語言化了,包括那些本來就是「半成形、試探性」的中間步驟。
問題是:當你強迫一個不確定的想法變成一個明確的句子,你其實在扭曲它。
這是 explicit CoT 最根本的結構缺陷:它假設「可以表達的」等同於「有助於推理的」。
把中間思考搬進 latent space
我最近試著思考一種替代方案:如果中間推理步驟不是 token sequence,而是 continuous latent states,會怎樣?
這不只是「省 token」這麼簡單。從模型架構的角度來看,這是把推理的「頻寬」從 vocabulary size 的離散空間,換到一個高維度的連續向量空間。資訊密度差了幾個數量級。
一個 token 大概能攜帶的資訊量被 softmax 壓縮成了一個離散選擇,但 latent vector 可以在同樣的維度裡編碼更細緻的不確定性、多個可能方向同時存在的狀態。
更關鍵的是:normalizing flow 這類架構能夠保留 tractable likelihood。這代表你不只能生成 latent thoughts,還能精確計算它出現的機率,進而做 policy gradient 優化。不需要用 RLHF 那種近似估計,可以直接在 latent reasoning space 上做更乾淨的優化。
實際壓縮比的意義
大概 385 個顯式 reasoning token 可以壓成 64 個 latent token,約 6 倍壓縮。
但我想強調的是:這不是壓縮,這是換了一種表達形式。就像把一段樂譜壓成 MIDI 和壓成 MP3 是不一樣的事。MIDI 保留了結構資訊,MP3 保留了音色資訊。Latent reasoning 保留的是「推理過程的向量軌跡」,而 CoT token 保留的是「可被人類閱讀的文字步驟」。
這兩者能攜帶的東西根本不同。
對 coding agent 和 verifier pipeline 的啟示
在 code generation 場景上,這個方向特別有趣。因為 coding 的推理過程本來就不是線性的,寫 code 時你會同時考慮多個可能的 approach,嘗試、否定、回頭。CoT 把這個過程強迫攤平成一個線性序列,但 latent state 可以保留更多的分支狀態。
更重要的是對 verifier-in-the-loop 架構的影響。如果中間推理是 continuous vector,verifier 可以直接在 latent space 裡評分,不需要先 decode 成自然語言再判斷。這讓 speculative decoding 和 tree-of-thought 之類的搜尋策略在計算上更可行。
另外,保留了左到右 autoregressive 生成和 KV cache 相容性,代表這個架構不是從頭設計的新範式,而是可以疊在現有 LLM 上的擴充。部署成本不會爆炸。
還沒解決的問題
當然我也在想這個方向的限制在哪裡。
最明顯的是可解釋性問題。CoT 最大的副作用價值是讓人類可以 audit 推理過程,latent reasoning 把這個完全移除了。在 high-stakes 場景(醫療、法律)這可能是硬傷。
另外,latent space 的推理品質高度依賴 normalizing flow 的表達能力,訓練不穩定的風險比 token-level 預測要高。
不過整體來說,我覺得這個方向代表了一個思維轉換:推理能力的瓶頸可能不在模型大小,而在推理的表達形式本身。
下一步應該看的是怎麼把這個機制跟 MCTS 或 beam search 在 latent space 裡結合,那才是真正讓推理效率爆發的地方。
作者:陳思維