LLM CoT的工作原理
?思維鏈(CoT:Chain of Thought)常常作為增強大模型推理能力的利器,
但大模型推理能力的提升多大程度上來自人為任務拆解?還是額外提示的Token激發了背后更強大的計算?
“讓我們逐步思考:Transformer語言模型中的隱藏計算”[文獻1] 發現了一個有趣的現象,
通過在思維鏈中添加無意義的中間Token(例如“……”)可以解決無中間Token時沒法完成的較難的兩個算法任務。
文獻的結論是:添加額外Token就可以增強大模型推理,甚至可以與Token本身內容選擇無關。
網友本就驚訝于著名提示詞“讓我們一步一步地想”(Let‘s think step by step)的神奇效果,
對本論文描述的“AI不依賴人類經驗的token內容,隱藏自行推理”,就更覺得魔幻且擔憂。
不過筆者發現,斯坦福谷歌等學者的預印論文,“思維鏈使Transformer能解決內在串行的問題”[文獻2], 可以非常直觀的用來解釋文獻1中揭示的現象!
文獻2采用了類似文獻1中的電路復雜度分析的方法,將Transformer看作一定深度的復雜電路,分析其可以解決的問題的復雜度。
電路復雜度分析用 TC0 表示可以通過一個固定深度的電路解決的計算問題,而足夠長的思維鏈,能將Transformer的表達能力擴展到TC0之外。
文獻結論:“從概念上講,CoT賦予模型執行本質上串行計算的能力,這是Transformer所缺乏的,尤其是在深度較低的情況下。”
意思是文獻1描述的“AI不依賴人類經驗的token內容隱藏自行推理”,既不魔幻也不可怕,甚至可以說是Transformer內在缺陷導致的。
文獻進一步論證,通過T步CoT,使用固定位精度和O(logn) 嵌入大小的固定深度Transformer可以解決任何可由大小為T的布爾電路解決的問題。
實證上,CoT的作用是,提高了低深度Transformer在內在串行問題上的表達能力。
筆者理解是,CoT 其實是引導了Transformer避免簡單并行推理,而是通過串行的方式去一步步推理。
原理很直觀,類似有向無環圖DAG的處理,例如SQL數據查詢,并不是所有的Access Plan DAG 中的算子都適合并行,有許多并行阻斷算子 parallel blocker, 例如全局sort。
這是Transformer特有的現象嗎?Mamba之類的潛力架構是否可以規避這個問題,優化zero-shot推理呢?
結合筆者的大模型數理原理的認知框架,可以這么看:LLM在范疇中采樣,變分推理時,
串行處理,引入中間信息,加深LLM在范疇對象和態射中遍歷的深度,逐步調整采樣概率分布,實現更精確的推理;
并行處理,增加填充信息,在寬度上有機會影響采樣的概率分布,進而影響最后的推理效果。
文獻1 Let's Think Dot by Dot: Hidden Computation in Transformer Language Models https://arxiv.org/abs/2404.15758
文獻2 Chain of Thought Empowers Transformers to Solve Inherently Serial Problems https://arxiv.org/abs/2402.12875
