揭秘大语言模型的思维链之旅
发表时间: 2024-07-15 15:00
在这个信息爆炸的时代,你是否曾幻想过与机器流畅交谈,或是让AI助你笔下生花,创作出惊艳的文章?这一切,都离不开大语言模型的神奇魔力。今天,让我们一起揭开这层神秘的面纱,走进大语言模型的科普奇幻之旅!自大语言模型兴起以来,人们通过不断地增加参数量,使模型的效果得到一次又一次的跃升。但是,单纯的增加参数量只能让模型在阅读理解、事实确认等方面提升显著,在逻辑推理、数学推理等复杂推理问题方面收益却不大。针对这一问题,一个直观的改良方法就是微调(Finetune),通过引入大量“问题+答案”形式的样本,对模型进行训练迭代参数,从而让模型专门提升这方面的能力。然而,这种方式在复杂推理等问题上带来的效果依然有限,且需要大量的训练样本。看起来模型在大量学习样本之后,似乎也并没有获得推理的能力。究竟要怎样才能让模型真正学会推理呢?既然模型不能直接从“问题+答案”中学习到推理逻辑,那么如果我们给出“问题+推理步骤+答案”,告诉模型最后的结果是怎么一步步推导出来的,是不是模型就可以学会了呢?从这个想法出发,2022年谷歌发布论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》,提出思维链(Chain of Thought,CoT)的方法,成功大幅提高了模型复杂推理的能力。这一方法迅速得到了广泛的研究和应用,至今已成为大模型提示词(Prompting)工程的主流技术之一。图片翻译自论文:《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》 arxiv.org/pdf/2201.11903首先,左侧的标准做法中,模型的输入部分增加了一个问答的案例供模型参考(不更新模型参数),再给出模型需要回答的问题,这被称为One-shot方法,如果给出多个案例的话则称为Few-shot. 这种做法的好处是只需要极少的样本就能让模型执行特定的任务,避免了收集大量样本来对模型进行微调。对应地,右侧思维链的做法中,也使用了One-shot方法,区别在于案例的回答部分除了给出答案以外,还给出了中间的计算过程。基于这两种不同的输入,模型给出的输出也截然不同。普通做法中,模型像案例一样只是简单给出了一个计算结果,并且算错了。但在思维链的做法中,模型模仿案例的做法先给出了中间计算过程,并通过将问题拆成两个步骤分别计算,成功得出了正确的答案。所以,只要给出少量含有思维链(推理过程)的案例,就可以既不用花费成本去收集大量样本,又能使大语言模型在复杂问题处理能力上得到显著的提升。甚至后来有人发现,即使不添加案例,只是在提问中增加一句“让我们一步步思考”(Let’s think step by step),也能提升模型的推理能力,这被称为Zero-shot方法。 思维链在许多复杂推理的问题上的表现都很令人惊喜。除了在例子中展示的数学问题以外,思维链在常识推理、符号推理等问题上的解决率(Solve rate)都远超过标准做法。在部分问题上,思维链的效果超过了有监督学习的历史最佳表现,甚至在体育常识推理数据集中超过人类。并且,从实验数据来看,思维链在更复杂的问题上提升效果更为显著。
除了问题解决率的提升外,思维链技术还有着其他的一些优势。其中最重要的是在思维链提问下,模型会给出推理过程,这样可以使我们理解模型给出最后结果的逻辑。如果模型的最后答案出错了,我们也可以检查出来模型究竟是在哪一个步骤上出错。此外,思维链能将问题拆解成多个子问题,从而让模型根据问题的复杂程度分配计算资源。思维链只需要用自然语言描述,这也意味着它能够快速被应用在众多不同类型的问题上。在思维链的作用下,模型能够进行一步一步的推理,并给出最终的答案,这不是正如人类的思考过程一样吗?是不是模型至此已经真正开始推理和思考了呢?这个问题至今还并不明朗。有可能思维链只是让输入的提示词更复杂了,使得模型不得不使用更多计算资源来进行处理,从而得到了更好的结果。有可能思维链中新增的内容引导模型能够更好地找到了相关的知识。也有可能模型自身已经有推理的能力了,只是思维链技术强迫模型进行了推理。2024年4月发布的纽约大学论文《Let’s Think Dot by Dot: Hidden Computation in Transformer Language Models》中发现,如果将思维链的逻辑推理部分换成一系列单纯的点“.”,同样可能提升模型的效果,不过只能在问题的复杂度在一定范围内时才有效。但使用思维链时,除了在这些问题上可以获得更大的提升外,还可以在更复杂的问题上获得提升。这能够说明思维链带给模型的提升,至少不仅是通过提升计算量达成的,还应当有其他方面的作用。 从2022年思维链正式提出,到现在短短两年时间里,已经涌现出了大量的衍生技术。通过将思维链中的链结构换成树结构,可以构造出思维树(Tree of Thought,ToT),让模型在推理时考虑更全面的情况,从而得到更好的效果。模型在推理时可以将问题拆解为多个子问题分别处理,也可以沿着树结构回退到之前的推理节点上。在推理过程中,也可以引入深度优先或广度优先等搜索算法、蒙特卡罗方法、并行计算等方法来提升效率。进一步引入循环等结构后,还可以构造出思维图(Graph of Thought,GoT)。这些不同结构统称为广义思维链(XoT),一般来说更复杂的结构能够处理更复杂的问题,但构造的成本也会更高。XoT的提示词构造也出现了多种不同的方法。经典的人工构造法虽然效果比较好,但成本还是偏高。自动构造法则让模型自己学习从问题出发生成思维链案例,这种方法成本极低,但由于缺少监督信号,结果非常不稳定。半自动构造法基于少量的人工样本来衍生更多样本,成本和效果则均介于前两者之间。此外,还有一些研究致力于通过提高推理过程的正确性,来提高思维链最后结果的准确性。例如,通过专门设置验证模型来检查推理过程,可以及时发现推理错误并进行改进。在推理过程中遇到对事实性信息强依赖的任务时,也可以让模型连接到外部的知识图谱或其他数据库等进行查询,从而及时纠正模型可能产生的事实性错误。思维链相关技术当前仍在快速的发展和迭代当中,接下来思维链可能有四个关键的发展方向:多模态输入、可信推理、理论基础和AI agent应用。1.多模态输入:当前的思维链还是以文本输入为主,如果能够成功将思维链应用在多模态的输入上,其适用的范围将进一步扩大。2.可信推理:当前思维链的推理准确性依然有提升空间。这其中,检测推理的错误或不一致性,及时进行正确的调整都很重要。3.理论基础:思维链的原理至今还并不明朗,思维链究竟是如何影响大模型并带来提升的,这仍然需要深入的理论研究。4.AI agent应用:AI agent需要通过感知环境、推理并调用工具来完成任务,思维链在其中将起到关键性的作用。