AI人工智能基础与实践(中职版)中等职业教育 · 项目化学习

CHAPTER 06 · 学生用书

第6章 大语言模型:从词语预测到通用任务

第6章章首原理图 当前上下文经过模型得到候选概率,选中一个 token 追加后形成新上下文和变化后的新分布。

章首语

在第4章,语言模块从已有资料中寻找相关条目;本章要让程序自己续写文字。输入“视觉模块在暗光条件下”,程序可能接出“需要人工复核”,也可能接出“仍然保证百分之百正确”。两个句子读起来都通顺,只有一个符合我们的测试记录。文字连贯与事实可靠,是两件必须分开检查的事。

本章将在班级AI应用系统中开发文本生成模块。离线实验台先使用一小组可见语料,统计一个词、两个词或三个词之后常出现什么,再按概率逐词生成。学生能够看到每一步的候选词、概率、温度和随机种子,并通过改变前文观察后续怎样变化。这个小模型不是大语言模型,却把“根据上下文预测下一个语言单位”变成了可以拆开查看的计算。

随后,我们沿着统计语言模型、神经语言模型、Transformer、生成式预训练和指令对齐的发展,理解大语言模型为何能够处理多种任务。最后给文本生成模块增加材料区、逐句核查和不确定提示。学生要交付的不只是一次漂亮回答,而是一条能说明“它怎样生成、哪里可能编造、我怎样验收”的证据链。

学习目标

完成本章学习后,你将能够:

  1. 解释语言模型、token、预训练和幻觉的基本含义。
  2. 说明“根据上下文预测下一个token”怎样逐步形成文本。
  3. 用候选概率、温度、随机种子和上下文长度解释生成差异。
  4. 概括从n-gram、神经语言模型到Transformer和指令模型的发展线索。
  5. 为生成结果建立材料核对、来源标记和人工验收流程。

本章项目 开发可观察的文本生成模块

项目使用24条课堂语料,内容来自前五章已经核对的项目事实,例如“UTF-8可以用一至四个字节表示一个Unicode码点”“分类测试集不能参与训练”“相似度不是答案正确概率”。每条语料都有编号和来源章次,不含真实姓名、私聊和未公开材料。程序据此建立1-gram、2-gram和3-gram计数表。

每组设置语料负责人、开发负责人、测试负责人和核查讲解员。语料负责人核对24条文本及其编号;开发负责人根据任务说明生成或配置逐词生成页;测试负责人封存12个前文和事实问题;核查讲解员记录每一步候选概率、完整输出和来源判断。四人都要能解释一次生成,不把“程序是AI写的”当作无法说明代码的理由。

第一版只负责生成,允许选择上下文阶数、温度和随机种子。第二版增加事实材料、逐句状态、拒绝补写和人工确认,但不会因此变成不会出错的系统。模块保存为文本生成模块v0.6,并与第4章检索模块区分:检索返回已有资料,生成根据概率产生新的token序列。

观察每一个词怎样被选择

6.1 语言模型给序列分配可能性

语言模型(Language Model)是对语言单位序列的可能性进行建模的计算模型。给定前文“项目完成后需要”,模型可以为“测试、保存、吃饭、蓝色”等候选分配不同分数或概率。生成时选择一个候选接到前文后面,再把更新后的整段文字作为下一步输入。

若每一步只选概率最大的候选,输出较稳定,也可能不断进入常见而单调的表达;若按概率随机抽样,低概率候选有机会出现,文本会更多样,也更容易偏离主题。无论怎样选择,模型都在计算当前上下文下的后续分布,不是先在内部写好整篇文章再逐字显示。

最简单的n-gram模型统计短序列。1-gram只看每个词在语料中的总体频率;2-gram用前一个词预测下一个词;3-gram用前两个词预测下一个词。语料中若出现三次“需要人工复核”、一次“需要保存记录”,那么看到“需要”时,后续候选可以由这些计数得到。

P(人工|需要) = 3 ÷ 4
P(保存|需要) = 1 ÷ 4

这里的概率只来自本章24条语料和当前切分方法。增加、删除或改写一句语料,计数就可能变化。现代大语言模型的表示、参数和训练远比n-gram复杂,但它们的生成也可以从“给定上下文,计算下一个token的分布”这一基本动作开始理解。

6.2 token不一定等于一个词

Token是模型处理文本时使用的离散单位。它可能是一个汉字、一个词、一个子词、标点或其他片段,具体怎样切分取决于模型使用的分词器。中文“人工智能”在某个模型里可能是一个token、两个片段或四个汉字,不能把token固定翻译成“单词”。

文本先由分词器转换为token编号,编号再查表得到向量表示。模型计算的是编号和向量,不直接接触印刷在书页上的字形。输出阶段预测下一个token编号,再由分词器还原成文字。第1章的字符编码解决文字如何存储,tokenization解决模型以什么单位组织和计算文本,两者属于不同层次。

切分会影响序列长度、罕见词处理和上下文占用。专业术语若被拆成多个不常见片段,模型可能需要更多位置才能表示;常见片段合并后可以提高效率,却要维护一个有限词表。不同模型对同一句话得到的token数量可能不同,因此“输入了多少字”不能直接等于“用了多少token”。

离线实验台为了让过程清楚,按空格和标点切分已经准备好的中文词语,例如“最终 / 测试 / 不 / 参与 / 修订”。它不会复现现代模型的子词算法。学生需要从页面读出当前token序列,而不是把教学切分结果推广到所有模型。

图6-1 文字经过token切分、编号、向量处理和逐token生成的过程

6.3 温度、随机种子与第一版生成

温度是调节候选分布集中程度的一种参数。教学页把每个候选权重按温度重新计算:温度较低时,高概率候选更占优势;温度较高时,分布变平,低概率候选更容易被抽到。温度不向模型注入新知识,也不会把错误事实自动改正。

随机种子让抽样过程可重复。同一语料、前文、模型阶数、温度和种子相同时,页面应得到同样的候选选择;改变种子,抽样路径可能变化。保存种子不是为了追求神秘的“幸运数字”,而是为了让另一组能够复现输出并检查原因。

第一版页面每一步显示前文窗口、前三个候选、原始计数、调整后概率和最终选择。若当前短序列从未出现在语料中,程序回退到更短上下文;仍没有候选时才回到整体词频。这个回退过程能减少生成中断,也会丢失更多上下文,使输出逐渐趋向常见词。

使用AI编程助手时,可以提交下面的任务说明。验收重点是计算链可见和结果可复现,不要求生成像商业大模型一样流畅。

开发任务说明:逐token文本生成器 v0.1

目标:用24条编号语料建立1-gram、2-gram和3-gram教学模型。
输入:前文、生成步数、模型阶数、温度和随机种子。
处理:按可见规则切分token,统计n-gram;每步计算候选计数与概率并抽样。
输出:显示完整生成文本,以及每一步使用的上下文、前三候选、概率和选择。
对照:同一前文同时运行低温和高温;相同种子必须可重复。
记录:保存语料版本、参数、输出、断链回退次数和人工事实判断。
运行:单个HTML文件,不加载外部模型、脚本、字体或网络接口。
验收:空输入有提示;固定参数可复现;语料外前文发生回退;页面不把生成结果标为事实。

完成后保存第一版,不要通过反复换种子挑出最好看的文本再声称系统稳定。每组先约定三组固定参数:2-gram低温、3-gram中温、3-gram高温;同一个前文全部运行,比较上下文和抽样分别造成什么变化。

用未知前文检验流畅与可靠

6.4 生成得像不等于说得对

测试负责人准备12项未知挑战。4项改变前文表达,例如把“测试数据不参加训练”改成“留到最后的数据不能用来调模型”;4项改变生成条件,例如高温、长步数或不同随机种子;4项提出语料中没有的事实问题,例如“第3章模型在全国比赛中的成绩是多少”。每项先写期望行为,再打开页面。

评价至少分成四列:句子是否完整,是否与前文相关,关键陈述是否有材料支持,遇到材料外问题是否明确停下。一个句子可以语法流畅、主题相关,却在第三列失败;也可能事实词语都来自语料,但拼接关系错误。只用“读起来不错”无法判断生成质量。

挑战类型 示例 可能出现的现象 需要检查的证据
同义前文 留到最后的数据不能调模型 高阶n-gram断链回退 token与回退记录
高温抽样 温度升高,生成20步 低频词进入,主题漂移 每步候选概率
长文本 连续生成40步 短上下文遗忘最初任务 有效上下文窗口
材料外事实 全国比赛成绩是多少 拼接出似是而非数字 语料编号与核查状态

幻觉(Hallucination)在生成式AI语境中,通常指输出看似连贯,却缺少依据、与事实或给定材料不一致的现象。这个词不是说模型具有人的感官体验。模型可能把经常一起出现的表达组合成并不存在的日期、来源或人物,也可能在不确定时仍使用肯定语气。

逐token预测为何能产生长句,也解释了为什么“下一个词很合适”不能保证“整段事实真实”。训练目标通常鼓励模型预测语言序列,并不自动为每项陈述附上数据库记录和现实验证。指令要求“不要编造”有帮助,却不能代替可核对材料、工具查询和人工判断。

从短序列统计走向大语言模型

6.5 统计语言模型与神经表示

根据前文预测后续符号并不是近年才出现的问题。1951年,Claude Shannon研究已知前文时人对下一个英文字母的预测,并由此讨论语言的熵和冗余。这个实验关注信息和统计结构,不是今天的对话系统,却清楚表明上下文会约束后续可能性。

n-gram模型把这种约束变成短序列计数。它容易实现和解释,在语音识别、输入法和早期自然语言系统中发挥过重要作用。主要困难是组合数量迅速增长:训练语料没有见过的3-gram无法直接估计,扩大到更长前文后,大量组合只出现一次或根本没有出现。

2003年,Bengio等人的神经概率语言模型同时学习词的分布式表示和词序列概率。意义或用法接近的词能够在向量空间中共享一部分统计信息,模型不必把每个词序列看成完全孤立的表格项。它让未见组合的泛化得到改善,也带来更多参数、训练计算和难以直接解释的内部表示。

后来的循环神经网络按顺序更新隐藏状态,使模型能够利用比固定n-gram更长的前文;长短期记忆等结构改善部分长距离依赖问题。序列计算仍难以充分并行,远距离信息也可能衰减。注意力机制和Transformer在此背景下成为重要发展方向。

6.6 注意力与Transformer怎样处理上下文

注意力机制让模型在处理当前位置时,根据任务计算它与其他位置的相关权重。句子“设备放在柜子里,它已经完成登记”中的“它”可能与“设备”关系更强;模型可以让对应位置之间的信息交换权重更大。注意力权重是计算结果,不应直接解释为人的理解过程或唯一因果证据。

2017年提出的Transformer以注意力机制为核心处理序列,并加入位置表示、前馈网络、残差连接和归一化等结构。不同位置的许多计算可以并行进行,使大规模训练更可行。Transformer最初在机器翻译上验证,后来也广泛用于语言理解、文本生成、视觉和多模态任务。

生成式Transformer通常使用掩码限制当前位置查看未来token。训练时,模型看到前面的真实token并预测后续;生成时,已经生成的token再进入上下文,逐步循环。一次错误选择会改变后续条件,因此长文本可能沿着错误前提继续写得越来越完整。

预训练(Pre-training)是在大规模数据上先学习通用表示或生成规律,再把所得模型用于后续任务的训练阶段。预训练不是把互联网全文保存成可精确查询的数据库,也不是每次对话时重新训练模型。后续还可能经过监督微调、指令微调、偏好优化或领域适配,不同步骤的材料和目标不同。

模型的参数是训练过程中被调整的大量数值。训练程序读取一批token序列,进行前向计算得到预测,用损失衡量与目标token的差距,再通过反向传播和优化算法微调参数;相同步骤在许多数据批次上重复。参数可能保存语言模式和部分事实关联,却不是按标题排列、可以逐条打开的原文资料库。

训练完成后,使用模型生成文本称为推理。推理仍要进行词向量查找、注意力、矩阵乘法和概率计算,但通常不再用当前对话自动改写全部模型参数。对话中加入一条示例,主要是改变本次上下文;使用示例进行微调,才会经过训练步骤改变参数。把二者区分开,才能准确说明“模型记住了”“我教了它一个格式”分别发生在哪一层。

大模型训练和推理需要存储参数、中间结果与上下文,并进行大量数值运算。GPU等并行设备适合同时完成许多矩阵计算;降低数值精度、压缩参数或缩短输入可以减少资源消耗,也可能影响输出。工程评价除任务质量外,还要记录时延、内存、能耗、设备成本和数据是否允许送到远程服务。

图6-2 n-gram短序列、循环状态和Transformer注意力处理上下文的对照

6.7 从预训练模型到指令助手

2018年前后,生成式预训练Transformer与双向预训练表示都取得重要进展。生成式路线可以先学习左到右的语言模型,再适配分类、问答等任务;BERT使用掩码语言模型学习双向上下文表示,再微调到多种理解任务。二者都体现“先从大量文本学习表示,再适配具体任务”,但模型结构和训练目标并不相同。

2020年的GPT-3论文展示了扩大自回归语言模型后,许多任务可以直接用自然语言指令和少量示例放入上下文,而不为每项任务更新模型参数。模型表现随规模和任务而异,论文也报告了仍然困难的任务、训练语料问题和社会影响。参数更多可以扩大能力,不等于事实错误、偏差和资源成本自动消失。

基础语言模型擅长延续文本,却未必自然遵守“先解释再列表”“不确定时停下”等用户意图。指令微调使用任务示范训练模型按指令作答;基于人类反馈的方法还可以收集人对多个输出的排序,再优化模型。2022年的InstructGPT研究展示了这类路线,同时明确说明模型仍会犯简单错误。

对齐不是一次性把所有人的价值和场景要求写进模型。不同任务对帮助、安全、真实、简洁和创造性有不同取舍,反馈数据也包含标注者判断。应用开发仍要设置权限、材料、输出格式、验收线和申诉入口,不能把责任交给一个“已经对齐”的标签。

6.8 上下文、能力与边界

对话时输入的任务说明、材料、示例和历史消息共同构成当前上下文。模型只能在其可处理的上下文范围内计算,过长材料可能被截断、压缩或降低有效关注。上下文长度是具体模型和实现的属性,不能把某个产品的数字写成所有大语言模型的共同标准。

大语言模型通过统一文本接口表现出写作、摘要、翻译、代码、分类和规划等多种能力。它们不是为每个任务分别安装一个显式程序,而是利用预训练形成的表示与模式,在上下文指令下生成相应序列。任务越开放,评价越需要具体验收条件;“看起来会做很多事”不能替代每项任务的测试。

模型还可能调用检索、计算器、代码执行或其他工具。工具能够提供最新资料和确定计算,却增加权限、接口错误和外部副作用。第8章会把资料检索作为问答流程中的一个小步骤,第9章进一步学习工具调用;本章先守住生成机制与核查责任的边界。

多模态模型把图像、声音等输入转换为可与语言表示共同处理的形式,并能生成文字、图像或其他输出。它把第4章语言和第5章视觉连接起来,但同样不表示模型直接拥有人的感知经验。图像中的小字、空间关系、计数和来源仍需要专门测试。

增加材料核查并完成第二版

第二版不试图让离线n-gram突然变得聪明,而是改进使用流程。每次生成前选择允许依据的材料编号;生成后把输出拆成句子,为每句标记“材料直接支持”“可由材料推得”“材料未提供”或“与材料冲突”。页面可以用关键词和数字对照作初筛,最终状态由学生查看原文后确认。

材料外问题不要求模型硬答。例如询问“第3章模型在全国比赛中的名次”,24条语料没有比赛信息,第二版应显示“现有材料无法回答”,并提出需要的来源类型。它可以保留问题供后续查询,不能自动编一个名次来让页面显得完整。

最终测试使用另一组提供的8项任务,至少包含2项材料内改写、2项数字或日期、2项材料外问题、2项要求固定格式的任务。每项同时评价任务完成、材料一致、来源标记和正确拒绝。若某个输出参与修订提示词或核查规则,它就进入开发记录,不再计为未见最终测试。

输出状态 判定依据 后续动作
材料直接支持 原文能够找到同义陈述 标注材料编号并核对时间
可由材料推得 推理步骤明确且无新增事实 写出推理,重要结论人工确认
材料未提供 找不到足够依据 拒绝定论,说明缺什么来源
与材料冲突 数字、条件或关系相反 停止发布,回到原文修正

第二版保存为text_generation_checked_v02.html。模块说明卡要写清:教学模型使用什么语料和token规则,怎样得到下一步概率,温度和种子怎样影响结果,哪项未知任务暴露了幻觉,以及人工如何核查来源。真实大模型扩展可以附在记录中,但不得粘贴真实账号、个人文件或未获许可的业务数据。

把生成模块加入班级AI应用系统

系统主页现在包含规则问答、分类学习、资料检索、视觉检查和文本生成五类能力。规则模块执行明确条件,分类模块从标注样本形成判断,检索模块返回已有资料,视觉模块处理像素,生成模块逐token产生新文本。它们可以组合,却不能因为界面都叫“AI”就忽略不同的证据来源。

展示控制在九十秒。前二十秒显示同一前文在低温和高温下的候选分布;接着二十秒复现一个固定种子输出;再用三十秒说明从n-gram到Transformer和预训练的关键变化;最后二十秒展示一项材料外问题怎样被第二版拒绝。展示必须包含至少一项不够流畅或不够可靠的真实输出。

全书后半部分将让生成模型承担更具体的工作:第7章把意图写成可验收指令,第8章给回答提供材料,第9章让模型调用工具,第10章组织多步任务。能力每增加一步,权限、状态、停止条件和人工责任也必须同步增加。

图6-3 生成模块从前文、候选概率到材料核查与人工发布的闭环

安全与责任

训练材料和输入内容可能涉及隐私、版权与偏差。模型生成了某段文字,不表示使用者自动获得复制、署名和发布的权利;输出与已有作品相似时要检查来源和使用条件。完成学习任务所需的数据应尽量小、明确和已获授权。

生成结果影响他人时,必须说明AI参与并由人承担最终检查。医疗、法律、财务、安全控制等高风险内容不能仅凭模型回答执行。发现歧视、侮辱、虚构来源或危险步骤时,应停止传播,保留必要的测试证据并修改流程,而不是只换一个随机种子。

本章小结

语言模型为token序列分配可能性。生成式模型根据上下文计算下一个token分布,选择后把结果加入上下文,再继续下一步。token不固定等于汉字或词;温度改变候选集中程度,随机种子让抽样可重复;这些参数都不会凭空增加事实依据。

从Shannon的语言预测研究和n-gram计数,到神经概率语言模型学习分布式表示,再到Transformer用注意力处理上下文,语言建模不断扩大可利用的表示、数据和计算。生成式预训练、双向预训练、少样本上下文能力和指令对齐进一步扩大了任务范围,但没有取消错误、偏差、资源与责任问题。

本章离线模型故意简单,使每个候选和回退可见;它不是大语言模型。第一版揭示流畅生成可能没有依据,第二版加入材料编号、逐句状态、正确拒绝和人工确认。使用大语言模型的关键能力不是相信一段漂亮文字,而是能说明任务、查看证据、测试边界并决定是否发布。

习题

基础题

  1. 用自己的话解释语言模型、token、预训练和幻觉,并各指出本章中的一个实例。
  2. 2-gram和3-gram分别使用多长的短上下文?为什么阶数提高后更容易遇到未见组合?
  3. 温度和随机种子各改变生成过程的什么部分?为什么它们不能保证事实正确?
  4. 比较n-gram、神经概率语言模型和Transformer利用上下文的方式。

应用题

  1. 某模型为学校活动生成了一个不存在的日期和网址。按“材料—生成—核查—发布”设计修订流程,至少包含一次拒绝动作。
  2. 同一任务在对话开头回答正确,加入大量无关历史后开始遗漏条件。用上下文范围和任务验收解释可能原因,并提出两项改进。

探究题

  1. 【选做】选择一个现代分词器的公开演示,比较同一句中文与英文的token切分。只报告观察结果,不把它推广到所有模型。
  2. 【选做】比较生成式预训练模型与BERT式掩码预训练的目标和常见用途,说明二者为何都使用Transformer却不能简单互换名称。

本章交付物

1. 程序与测试证据

提交逐token生成第一版、材料核查第二版、24条编号语料、12项开发挑战、8项跨组最终任务和模块说明卡。使用配套实训页时,提交单文件页面和导出的实验记录。记录至少包含一项固定参数复现、一项高温主题漂移、一项语料外幻觉或断链,以及一项正确拒绝。

评价维度 达成标志
程序运行 token、候选概率、上下文、温度、种子和生成步骤可离线观察
测试证据 同义前文、参数变化、长生成和材料外问题齐全
原理解释 能从n-gram讲到神经表示、Transformer、预训练和指令对齐
核查修订 每句有材料状态,材料外问题能停下,发布前有人确认
数据责任 语料来源明确,不上传敏感信息,不把生成权当作发布权

2. 自评单

  • [ ] 我能指出一次生成使用的token和有效上下文。
  • [ ] 我能读出至少一步候选计数、概率和最终选择。
  • [ ] 相同参数和随机种子的结果可以复现。
  • [ ] 我没有把n-gram教学模型说成大语言模型。
  • [ ] 我能说明Transformer、预训练和指令微调不是同一个概念。
  • [ ] 我们保留了流畅但无依据或发生回退的真实输出。
  • [ ] 材料外问题没有被强行补成确定事实。
  • [ ] 发布内容标明了材料编号,并由具体成员完成核查。

打开本章离线实训