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