第 12 / 26 个单元人工智能与智能系统区
第 11 章 大语言模型怎样生成一段回答
核心问题文字怎样进入模型,下一词元怎样被逐轮选择,流畅为何仍不等于真实?
一句话尚未写完时,人往往能凭上下文把它补出来。“实验数据已经超过量程,下一步应该——”后面可能是“停机检查”;“窗外突然下起大雨,出门记得带——”后面大概率是“伞”。前文给出的对象、关系和语气,缩小了后续文字的可能范围。
大语言模型处理文本时,也利用上下文预测后续。不过,把它概括成“猜下一个词”还不够。真正值得理解的是:文字怎样进入模型,模型怎样把上下文压进一组数值表示,怎样为下一步生成候选,又为什么这种机制能够写出长文、解释概念,同时仍会郑重其事地说错事实。
一段回答,是一连串没有写在屏幕上的选择
假设输入是:
课程通知写明实验改到周四,学生应当……
模型不会先在内部找到一段完整答案,再把它复制出来。它先为“确认”“准备”“注意”“在”等许多可能的后续单位计算分数,由解码规则选出一个;选出的结果接回原文本,模型再计算下一步。这个过程反复进行,直到遇到停止条件或达到长度限制。[1]
这里的“文字单位”通常叫词元(Token)。一个词元可能是一个汉字、一个词的一部分、标点或特殊符号,具体切分方式由分词器决定。模型处理的并不是我们在纸上看到的天然词语边界。
把三轮生成放慢来看
下面是一段教学示踪。候选和数值由本书构造,只为显示生成过程,不是某个真实模型的内部记录;真实系统使用的词元切分也可能不同。
手机端已转换为卡片,可纵向阅读
| 轮次 | 模型此刻看到的末尾 | 几个候选词元及示意概率 | 本轮选中 |
|---|---|---|---|
| 1 | 学生应当 | 先 0.34;在 0.22;确认 0.18;提前 0.11 | 先 |
| 2 | 学生应当先 | 确认 0.31;准备 0.27;查看 0.16;到 0.08 | 确认 |
| 3 | 学生应当先确认 | 时间 0.29;通知 0.23;实验 0.18;地点 0.12 | 时间 |
第一轮选出“先”以后,第二轮的输入已经变化;第二轮选出“确认”,第三轮又在新的上下文上重新计算。每增加一个词元,模型都会重算下一步,候选表也随之变化。
如果第一轮通过采样选中了“在”,后面的高概率候选可能转向“周四”“实验楼”等表达,于是重新生成会走出另一条句子。这解释了同一问题为什么可能得到不同措辞。它仍然没有回答“周四是否来自真实通知”:学生应当先确认时间在语言上很合理,事实依据却必须到课程资料中寻找。
常见的自回归生成链可以写成:
输入文字
→ 切分为词元
→ 转换为数值表示
→ 结合上下文计算每个候选词元的分数
→ 按解码规则选择下一词元
→ 把新词元接回上下文,继续下一轮
“选择”也不总等于挑最高分。某些场景会直接选择概率最高的候选,某些场景会在一组候选中采样;温度、候选范围等设置会改变输出的稳定性与多样性。于是,同一个问题可能得到不同措辞,开放性任务有时会出现不同思路。随机性能够增加变化,却不会自动增加事实依据。
文字进入模型以后,先变成可以计算的表示
词元本身只是离散符号。模型需要先把它们映射为向量,也就是一组能够参与计算的数值。这个过程通常称为嵌入(Embedding)。向量不是词典释义,也不是把每个词固定在某个唯一含义上;同一个词出现在不同上下文里,后续层计算出的表示会发生变化。
Transformer 的作用发生在这里。它让序列中的位置结合其他位置的信息,逐层更新当前表示。[2] 例如,在“苹果发布了新系统”和“桌上放着一个苹果”中,“苹果”附近的词不同,模型形成的上下文表示也会不同。
Transformer 以注意力机制为核心构件,但 Attention 只是计算机制的名称。它不等于人的注意,不表示模型产生了自觉,也不能把某个注意力权重直接当成可靠的因果解释。2017 年的原始论文主要展示机器翻译实验;今天的大语言模型还依赖训练目标、数据处理、计算基础设施、规模扩展和后续对齐方法,不能把全部发展归结为一篇论文。
经过多层计算,模型得到当前位置的上下文表示,再把它转换为词表中各候选词元的分数。分数经过归一化后,可以形成下一词元的概率分布。读者不必现在计算矩阵,但应看清一件事:模型生成的直接依据,是参数和当前输入共同形成的数值关系,而不是一次自动完成的事实调查。
训练塑造参数,推理使用参数
模型投入使用以前,要经历训练。训练系统让模型处理大量样本,根据训练目标比较预测与目标之间的差距,再反复调整参数。经过许多轮更新,参数中形成了对语言结构、概念关联、表达方式和部分世界规律的统计性表示。
这解释了模型为何能在没有逐题编程的情况下完成多种语言任务,也解释了“参数记住了知识”这个说法为什么容易误导。参数不是一排可以逐条打开的文献卡片。模型可能在训练中接触过某个事实,却无法稳定给出原始出处;也可能把多个相近模式重新组合成一条并不存在的说法。
使用阶段通常称为推理。此时模型接收系统指令、用户问题、对话历史以及周边应用提供的材料,然后生成输出。把一份课程通知贴进对话,只是让它进入这一次推理的上下文,通常不会重新训练模型,也不保证未来对话能够取回。
因此至少要区分四个位置:
- 模型参数:训练形成的内部数值状态;
- 当前上下文:这一次推理直接看到的词元;
- 外部资料:由检索或应用在运行时取回的文件与记录;
- 系统状态:账户、权限、日历、订单等由外部软件维护的现实记录。
把它们统称为“AI记忆”,会掩盖来源、期限、权限和更新方式的差别。
为什么它能解释概念,也能编出文献
大规模训练让模型学到大量可迁移的模式。它能续写句子,也能根据上下文完成摘要、改写、分类、代码生成和分步解释。较复杂的能力不必全部预先写成规则;它们可能从规模、数据、训练任务和使用方式的共同作用中表现出来。
但模型训练的直接目标与“保证每句话真实”并不是同一件事。一个回答语法完整、结构清楚、与常见论述相似,说明它成功产生了合适的语言序列;这不能单独证明它读取了最新文件、找到了真实论文或完成了现实动作。NIST 将生成式 AI 自信地产生错误或虚假内容的风险称为 confabulation。[3]
这类错误不只是偶然口误。它可能来自训练材料本身的缺陷,来自问题缺少必要背景,来自上下文中的冲突,也可能来自生成机制在信息不足时仍继续补全语言。要求模型“不要编造”有一定约束作用,却不能把生成系统改造成可靠数据库。
评价回答时,应先判断任务属于哪一类。创意标题、语言改写和候选结构,主要看是否符合表达目的;课程日期、论文结论、医疗建议、财务数字和工具执行结果,则必须接触模型之外的资料、测试或责任人。检查力度由错误后果决定,不由回答语气决定。
上下文更长,也不等于模型拥有长期记忆
上下文窗口是模型一次推理能够直接处理的词元范围。窗口增大,可以放入更长的材料、更多轮对话和更多检索片段,但“能放进去”与“能准确使用”仍是两件事。信息可能被噪声淹没,关键条件可能出现在模型没有正确利用的位置,相互冲突的材料也不会因为同时出现就自动得到裁决。
产品所说的“记忆”还可能来自外部数据库:系统把用户偏好、摘要或历史记录保存下来,下一次再放进上下文。此时记忆属于产品的数据与权限设计,并非模型参数在对话间自行生长。判断一项记忆功能时,应问保存了什么、由谁控制、何时删除、能否纠错,而不是只看模型是否说“我记得”。
读完这一章,真正需要建立的是一条可复述的生成链:词元进入模型,经过数值表示和上下文计算,形成下一步概率,再由解码规则逐步生成;训练塑造参数,推理使用参数;流畅来自语言建模能力,事实可靠仍需外部证据。
下一章要把模型放回系统。只有这样,才能看见资料从哪里来、工具由谁执行,以及 Agent 为什么不是“更聪明的聊天模型”。