学到一点就写一点 · AI 大白话 用具体例子,把 AI 的原理和用法讲清楚。
把三个人的高矮关系联系起来的概念封面 · 点击放大
前两篇说过,大模型会结合上下文,一步步预测接下来的词元,再生成回答。词元就是模型处理文字的小单位,不一定恰好是一个字或一个词。
可我们也见过,它不只会接话,还能做推理题。
“预测接下来写什么”和“根据条件得出结论”,怎么能是同一件事里发生的?先看一道很小的题。
两个条件,能得出一个新结论
小明比小红高,小红比小刚高。
这三个人,谁最高?
我们会把两句话接起来:小明在小红前面,小红又在小刚前面,按从高到矮排列,就是小明、小红、小刚。所以小明最高。
题目没有直接说“小明比小刚高”,但这件事可以从已有条件推出。
把条件联系起来,得到原来没有直接写出的结论,就是这里要看的推理。
下面的例子和回答都用于讲解,不是某个模型的实测记录。我们先弄清怎样推才成立,再看模型怎样可能完成这件事。
把两条高矮条件合成排序,再得到小明最高的结论 · 点击放大
教学示意:展示这道题的条件与推导关系,不是模型内部结构或实际计算记录。
预测的是下一个词元,用到的却不只有一个词
“预测下一个词”,容易让人想到:看见“今天”,就接“天气”;看见“天气”,再接“不错”。
但前面介绍的模型,可以参考当前能够使用的上下文,不只看最后一个词。
在这道题里,它收到的是两条条件和一个问题。生成回答前,会把这些内容转成数字,经过多层计算,把不同位置的信息联系起来。
上一篇讲的注意力参与了这种联系,但后面还有其他计算,不能把推理全算在注意力头上。
通过训练,模型可以学到一些比较关系和组合关系的办法。这不等于它见过这道原题,也不保证换一道题还能做对。
比如,一种分步回答可以先写:
小明比小刚高。
这句话没直接出现在题目里,但能由两条高矮条件推出。生成这句话时,模型的计算可以利用这两条条件之间的关系,再一个词元、一个词元地把它写出来。
接下来,它还可以参考自己刚生成的“小明比小刚高”,继续生成“小明最高”。下一段生成的文字,本身就可以是推理中的一步。
这是用一种解法说明预测与推理怎样配合,不代表真实模型内部必然按这两步计算。
“逐个预测词元”说的是回答怎样生成;“推理”说的是它能否根据条件得出成立的结论。 两者并不冲突。
不过,只知道训练目标是预测,也还不足以完整解释所有推理能力。不同模型能处理哪些关系、换种问法会不会错,都需要进一步研究和检验。
把中间步骤写出来,后面就多了一份可用的信息
刚才的题很简单,直接答“小明最高”也可以。
如果条件再多一点,而且顺序打乱呢?
小明比小红高。
小刚比小丽高。
小红比小刚高。
请按从高到矮排列这四个人。
一种分步解法是:
先由“小明比小红高”和“小红比小刚高”,排出小明、小红、小刚。
再用“小刚比小丽高”,把小丽接到后面。
最后得到:小明、小红、小刚、小丽。
对人来说,这像在纸上先记下一部分结果,再接着算。
对逐步生成文字的模型来说,也有一个具体作用:前面生成的步骤,可以成为后面生成时的上下文。 这里的上下文,包括原来的题目,以及前面已经生成的文字。
写下“小明、小红、小刚”的排序后,接下来生成文字时,就可以同时参考原题和这个中间结果,继续处理小丽的位置。每多生成一步,也会继续进行计算。
所以,中间步骤不只是写给读者看的说明,它们还可能参与后续答案的形成。
但如果前面的排序写错了,后面也可能沿着错误继续。分步在一些任务上有帮助,不代表步骤越多越好,更不保证每次都比直接回答准确。
这就是常说的“思维链”吗?
像这样,在最终答案前生成一串中间推理步骤,通常叫作思维链,英文是 Chain of Thought。
先记住它的用途就够了:把一个问题拆成若干步,让中间结果能被继续利用,也方便我们检查。
不过,“思维链”这个名字,容易让人以为屏幕上的文字就是模型脑子里的全部活动。
这里要分清两件事:写出的步骤能不能供后面使用,和这些步骤有没有把答案的来由讲全。
比如,假设题目旁又多了一句“提示:答案是小明”。回答可能受了这句提示影响,解释却只写了高矮条件,没有提到提示。
一段文字能影响后面的答案,不等于它完整说明了这个答案怎样形成。 模型内部还有大量数字计算,并没有逐项翻译成文字。
所以,我们可以用这些步骤检查结论有没有道理,却不能把它当成模型内部计算的完整记录。
同一道高矮题,也能有几种错法
下面都是假设错误,不是在说某个模型一定会这样回答。
第一种:把关系读反。
题目说“小明比小红高”,回答却写成“小红比小明高”。后面即使排得很整齐,起点也已经错了。
第二种:补上题目没给的条件。
小明比小刚高,小红也比小刚高。
小明和小红,谁更高?
这时只能确定,两个人都高于小刚。小明和小红之间谁更高,甚至是否一样高,都还不知道。
如果回答“小明最高”,就是把一个没有依据的判断塞了进去。条件不够时,“不能确定”才是合适的结论。
第三种:没发现条件互相冲突。
假设说的是同一次身高比较:
小明比小红高,小红比小刚高,小刚又比小明高。
前两条已经推出小明比小刚高,第三条却反了过来。这三条不能同时成立,应该先指出矛盾,不能硬排出一个顺序。
这些例子也说明,语言顺畅和逻辑成立是两回事。生成过程本身,不会自动保证每个词元组成的句子都经过了正确性验证。
看它的步骤时,可以逐条核对:有没有读反条件?有没有增加条件?这一步真能从前面推出吗?最后的答案符合所有条件吗?
这些本领,是怎样学来的?
训练材料里,既有普通叙述,也可能有比较、解释、解题等内容。模型在预测练习中调整参数,可以逐渐学到其中的语言和关系规律。
一些模型还会经过专门的后续训练,用解题示例,或根据答案是否正确给出的反馈,改善处理推理任务的能力。具体训练方式并不都一样。
所以,推理表现与训练有关;临时让它“多想几步”,也不等于现场给它补上了所有缺少的能力。
下一篇,我们就接着看:模型怎样从训练材料里学习,预测错了又怎样调整。
回到这篇的小题,真正需要检查的是:条件有没有用对,结论能不能推出。步骤多、文字顺,都不能替代这项检查。
配图说明:封面由 AI 生成,是条件联系的视觉隐喻;正文图为程序绘制的教学示意。高矮题、解法和错误回答均为假设例子,不是模型实测;“在纸上记结果”只用于帮助理解,不表示模型像人一样思考。