简单来说,是的,DeepSeek的思维链展示的就是真实的思考过程。
我觉得题主问这个问题是因为DeepSeek,包括其他会深度思考的模型界面设计给人一个误解,就是思考和输出是分开的,有原则上区别的:
但是这只是网页展示的不同,对于大语言模型来说,思考的过程和输出的过程并没有本质的不同,都是在接受到prompt之后对token的预测。只是思考的过程前后有特殊的token这个标签标起来了,所以在设计网页的时候可以把他们当做小字输出。
但是这种展示上的不同不应该给用户带来误解,无论是思考还是输出,本质上都是模型的输出。只是模型通过训练(强化学习或者监督学习),训会了在输出最终结果之前,先输出一些思考的token。
DeepSeek,包括o1, o3, Sonnet 3.7, Grok 3这一系列带深度思考的模型,本质上都是对思维链这个技巧的应用。在2022年的时候,就有文章讨论过这个技巧,最著名的就是那个Let's think step by step。后来还有generated knowledge approach,least-to-most approach 现在去看prompt engineer的教程,这些都是作为prompt的高级技巧来介绍的:先生成一些基础的知识,然后逐步深入,在这个基础上生成最终答案。
而深度思考模型,是通过训练让大语言模型能够自发的选择这样的路径,而不用通过人的prompt——人的prompt说到底还是更符合人的习惯和逻辑,而这未必符合大语言模型的逻辑。
因为大语言模型容易给人一种「像人」的感觉,但是本质上起作用的还是注意力机制和next token prediction,也就是大语言模型始终是在根据前面的内容提示在预测下一个token应该是什么。那么这意味着「过程」是重要的。
对我们人类来说,12+19 = 31是自然的,我们说:
我们先计算2+9 = 11, 哦,最末一位是1,然后十位数我们要进一位,所以第二位应该是1+1+1=3,最终结果是31.
和我们直接给出31的答案是一样的,人类的知识不会因为你给出步骤而发生实质性变化。
但是对大语言模型来说,这两者是很不一样的。如果大语言模型要直接给出正确的结果,那就需要先预测出来3这个token,而为了预测出来3这个token,模型必须很好的把注意力分配给1,1,+,2和9,然后知道「因为2和9的存在,所以下一个token是3而不是2」,这意味着你需要找个地方来储存这个中间结果,如果没有地方储存的话,你需要直接预测就对注意力的容错特别小。而当预测出来3之后,又需要知道「因为2和9的存在,并且最近的这一位token是3,所以下一位应该是1」。
但是用思维链的话,思维链会试图先拆分这个加法:
我们先计算2+9 = 11, 最末一位是1,所以十位数我们要进一位。那么十位数应该是1+1+1=3,最终结果是31.
先计算2+9,这个负担是很轻的,可以直接预测出来11,因为11是两位数,所以自然的就可以预测出来后面那句关于「进位」的解释。那么在预测十位数的时候,因为进位这个提示和前面的十位数的两个1,更容易的预测出1+1+1=3这个式子,那么接下来把3和1组合成31也就顺理成章了。
每一个token被预测出来,它背后的运算都是包括了这个token之前所有的token。在这个例子里面,思维链就承载了储存中间结果,增大注意力分配容错性,促使注意力收敛到正确结果的作用。
所以大语言模型生成的过程就有点像左脚踩右脚上天的过程,通过不断地生成中间的token,平滑了注意力分配,从而更容易生成正确的结果。当然现在的大语言模型在这方面做的远远比上面的例子更复杂,像DS的Aha moment (啊哈,我好像发现了一个更好的方法),Anthoropic的reflexion(且慢,我需要仔细想一想这段代码是不是正确的),都是通过训练的技巧自动诱导出来的。
当然谈到这里可能会说,那为什么要让LLM生成人类可以理解的token呢?直接用张量思考不就好了?说到底还不是为了模拟人类思维?
这个问题就比较前沿了。因为现在也有Continuous CoT这个研究方向,真的就是「用张量思考」,直接用last hidden state 来作为新的输入,思考全程都是人看不懂向量,只有在最后一步会用softmax切分出token的概率。
这个看起来很炫,但是仔细想一下还是好坏都有的。不说「可解释性」这种人为的标准,就说最终结果,Continuous的CoT并不是全面压倒目前的人话思考。
背后有一个这样的权衡:
连续的CoT优点在于,token的空间天然是连续的——人类世界只有猫和狗,不存在31%的猫+69%的狗这种token,但是在张量空间是连续的,这样的东西没有理由不存在,所以当LLM用人类的语言思考的时候,相当于每预测一个token,都要用人类的标准切分一次概率,然后用人类能看懂的字写出来,这个切分的过程会损失掉一些信息,但是直接用张量思考就没这个问题。
但是反过来说,你最终还是要变成人类能看懂的语言的。每预测一个token就用softmax把张量空间离散化,会帮助最终结果收敛,在思维过程中出现的噪音和扰动在离散化的过程中会自动的切掉——你预测的张量位置是31%的猫+69%的狗,但是显示成人类能理解的token就是「狗」,那么相当于31%的猫就被切掉了,那么这31%是噪音还是额外的信息?其实是兼而有之的。
从结果看,COCONUT在数学这种对token切分要求很高的任务上(数学对概率的分布要求很陡峭,因为只要错了一点点,整个全部都是错的),还是弱于传统的CoT,但是在推理任务上有优势。
Hao, Shibo, et al. "Training large language models to reason in a continuous latent space."arXiv preprint arXiv:2412.06769(2024).
Liu, Jiacheng, et al. "Generated knowledge prompting for commonsense reasoning."arXiv preprint arXiv:2110.08387(2021).
Wei, Jason, et al. "Chain-of-thought prompting elicits reasoning in large language models."Advances in neural information processing systems35 (2022): 24824-24837.
Zhou, Denny, et al. "Least-to-most prompting enables complex reasoning in large language models."arXiv preprint arXiv:2205.10625(2022).