A27

Transformer

点击正文段落选定收藏或划线位置;未选定时使用屏幕内第一段。

课内目录

1 Transformer 要回答什么

读到“这部电影并不精彩”时,人会把“不”和“精彩”连起来,而不会只统计积极词出现了几次。机器处理文本也需要这种联系:某个位置的含义,常常取决于其他位置提供的条件。Transformer 的核心问题是,如何让序列里的位置交换信息,得到适合当前任务的表示。它是一类模型结构;仅知道结构名称,既不能推断训练数据,也不能保证分类准确。

先确定本课的工作场景:给英文短评判断正面或负面情感。可以使用公开的 SST-2 数据集开展练习,输入是短评文本,输出是正类概率。实际分词器会把文本变成词元,词元可能是完整单词,也可能是单词片段。下面的中文句子只用于解释机制,不应直接当作英文数据上的评测证据。分类器需要学习否定、转折和修饰关系,而非把某个词永久标成积极或消极。

开始训练前,先确认评估边界。SST-2 的公开训练集可进一步划出训练部分和内部验证部分,公开验证集可在流程冻结后作为最终留出评估;官方测试标签不可直接用于本地计算指标。应在报告中明确这种角色分配,避免把内部验证和官方验证混称为测试。若发现重复或近似重复文本,应先分组再划分,避免相近句子跨集合。划分比例可以设为可用训练数据的 90% 与 10%,并保存随机种子和样本标识。

把正面情感定义为正类后,精确率表示预测为正面时有多少判断正确,召回率表示真正正面短评有多少被找到,F1 综合这 2 个指标。ROC-AUC 考察概率排序,计算它时使用连续分数。类别明显不平衡时还应查看 PR-AUC、各类支持样本数和宏平均 F1。所有阈值、模型选择和预处理取舍都在验证集完成,最终留出集只承担最后评估。

从数据划分到分类评估的完整位置
从数据划分到分类评估的完整位置

Transformer 也能用于图像和表格,但适用方式不同。图像分类可以把图像切成图块并保留空间位置;表格流失预测则必须区分“账户年龄”“近期投诉次数”“是否已申请注销”等字段及其时间边界。对于表格任务,树模型经常是值得比较的基线。对于短文本任务,词频或 TF-IDF 配合逻辑回归也能提供有用参照。模型结构是否必要,应由相同划分下的结果、资源消耗和失败样本共同回答。

2 自注意力与位置编码

自注意力允许每个位置根据当前内容,从可见的位置中汇总信息。“自”表示查询和被查询的信息来自同个序列;“注意力”在这里指计算出的加权汇总规则。以“电影并不精彩”为例,更新“精彩”的表示时,模型可能需要读取“不”。更新“电影”的表示时,所需信息和权重又可以不同,因此整句并不是共用 1 张固定的重要性清单。

入门时可以把计算拆成查询、键和值。查询表达当前位置正在寻找什么,键参与判断其他位置与它是否匹配,值提供真正被汇总的信息。它们来自输入表示经过学习得到的变换。查询和各个键产生匹配分数,通常经过缩放,再通过 softmax 归一化成权重;随后用这些权重对值做加权求和。权重非负,对当前查询的可见位置求和为 1,但它不是这个词属于某个类别的概率。

例如,教学示意可以把“精彩”对“不”的权重设为 0.45,对自身设为 0.20,其余权重分给其他词元。这只能说明汇总比例,不能推出“不”贡献了 45% 的负面情感。值向量的内容、后续层和分类器都会影响结果。实际权重必须来自指定模型、指定层、指定注意力头和指定输入;手工数值不能作为实验结果写进报告。

自注意力如何生成新的上下文表示
自注意力如何生成新的上下文表示

如果仅做这种内容匹配,又没有位置表示、位置相关偏置或具有顺序约束的机制,模型就缺少明确辨认词序的依据。位置编码把位置信息加入计算,使“甲批评乙”和“乙批评甲”能形成不同表示。位置方案可以是学习得到的位置向量,也可以使用预先定义的形式。本课只要求理解其用途:词元内容回答“是什么”,位置信息帮助回答“在哪里、与谁相邻”。具体位置方案和长距离外推留到后续讨论。

实际 Transformer 通常还有多个注意力头、逐位置的前馈变换、残差连接和归一化。多个头提供不同的汇总通道,但不能预先保证某个头专门处理否定、某个头专门处理主语。残差连接让原有表示与更新结果共同传递,逐位置变换继续加工汇总后的信息。理解这些模块的职责已经足够进入实验,不必在本课推导所有矩阵公式。

3 编码器、解码器与上下文边界

编码器通常让输入中的位置彼此可见,适合把已有文本变成上下文表示,再用于分类等任务。“彼此可见”受掩码限制:补齐长度产生的填充位置应被遮住,特定任务也可能限制其他连接。短评分类时,可以按模型约定使用专门的汇总位置,或对有效词元表示做池化,再交给分类器。不能随意更换汇总方式后仍声称是完全相同的模型配置。

解码器在生成下个词元时,通常使用因果掩码,只允许当前位置读取自身和之前的位置。训练时虽然可以同时计算多个位置,但每个位置仍不能看到其预测任务中的未来内容。这里的并行计算与未来信息可见性是不同问题。如果把正确答案提前放进输入而没有遮挡,模型可能表现得很好,却没有学会真实使用时能够完成的任务。

还有编码器与解码器组合的结构:编码器处理源序列,解码器在因果边界内生成目标序列,并通过交叉注意力读取源序列。交叉注意力的查询与键、值来自不同来源,所以与同个序列内部的自注意力有区别。翻译是直观例子。本课的短评分类不需要为了结构完整而额外加入生成过程,应先选择与任务输出相符的结构。

上下文边界首先由模型实际收到的词元决定。原始文档很长,不代表模型看到了全部内容;分词、特殊词元、裁剪和拼接都会改变输入。最大长度为 128 时,如果需要 2 个特殊词元,正文预算可能只有 126 个词元,具体取决于分词器约定。词元数不等于汉字数,也不等于英文单词数,因此长度统计必须使用实验所选的分词器。

另种边界来自数据可用时间。表格流失预测若要在月初判断下月是否流失,只能使用当时已经知道的信息;“下月是否办理销户”即使在数据表中存在,也不能作为特征。文本分类同样不能把人工复核结论、事后处理标签或测试答案拼进上下文。注意力机制只负责利用输入,不能替研究者判断信息是否合法可用。模型可见性和业务可用性都应写进数据说明。

因此,讨论“模型有没有理解上下文”之前,要保存模型真正接收的词元、有效位置和掩码。可以在受控样本上同时检查原文、解码后的输入与预测,确定关键否定和转折是否仍在。若证据已经在预处理阶段消失,调整注意力头数无法恢复它;应先修正输入策略,再讨论表示能力。

4 动手:对照一次注意力权重的作用

这个实验要回答有限的问题:在已经训练完成的短评分类模型中,改变某处注意力分配,会怎样影响相同样本的预测?它不负责证明整类模型优于所有替代结构。先训练或使用来源和许可明确的模型,并记录是否已有预训练权重。小数据上从头训练表现不佳,并不能单独否定 Transformer;使用预训练模型表现较好,也不能把收益全部归给注意力结构。

固定数据划分、分词器、最大长度、批量和随机种子。用训练部分更新参数,内部验证部分选择停止轮次和分类阈值,保留最终留出评估直到方案冻结。先运行 TF-IDF 加逻辑回归基线,再获得正常 Transformer 的验证结果。为聚焦否定现象,可以人工构造“the film is enjoyable”和“the film is not enjoyable”这样的对照句,但必须把它们标为诊断样本,不能混充公开基准的代表性统计。

选择支持读取和替换注意力概率的实现,在评估模式下关闭 dropout,冻结全部参数。条件 A 保留正常计算;条件 B 只将指定层、指定头的注意力概率改成对有效可见位置的均匀分布。编码器中的填充位置仍然不可见;若使用因果结构,未来位置也必须继续遮挡。其余层、值向量和分类器保持相同,避免把多种变化混成同个实验。

控制变量下观察权重干预的影响
控制变量下观察权重干预的影响

对同批验证文本记录真实标签、A 的正类概率、B 的正类概率以及是否被截断。使用从正常模型验证流程中选定的固定阈值,比较精确率、召回率和 F1;另记录概率差与 ROC-AUC。若重新给 B 选择阈值,便引入了额外适配,应作为另个实验单独报告。批量指标之外,把样本按含否定、含转折、较长输入等规则切片,检查整体变化是否掩盖了局部退化。

观察到 B 的 F1 降低,只能支持“该位置的输入相关权重在这个模型和数据上有用”。它不能说明每条高权重连线都对应人类解释,也不能代表去掉全部注意力后的可训练模型会有相同结果,因为干预后的表示可能偏离模型训练时遇到的分布。反过来,若变化很小,可能是该头冗余、样本简单或其他路径补偿,不能立刻断言注意力毫无作用。

再做输入层面的诊断:在保证语法和标签解释清楚的情况下,删除否定、移动转折或替换无关修饰语,观察预测是否随应有语义变化。删除词元会同时改变位置和长度,因此这类证据也有边界。最终记录应包含模型版本、被干预位置、样本数、指标及代表性错误,而不是只贴 1 张漂亮热力图。若要比较可训练结构,应重新训练多个随机种子,并将问题与本次冻结模型干预明确区分。

5 并行训练与序列长度取舍

Transformer 的常见优势是,同层多个位置的注意力计算可以组织成矩阵运算。相比必须按位置依次传递隐藏状态的结构,这更容易利用并行硬件。并行不意味着所有工作都同时完成:层与层之间存在依赖,优化步骤仍然顺序更新,生成模型输出新词元时通常还要逐步进行。训练吞吐高,也不自动等于单条请求延迟低。

标准稠密自注意力需要考虑每对查询位置与键位置。长度为 L 时,单层单头的注意力矩阵有 L × L 个元素。长度从 128 增至 256,元素数从 16384 变为 65536,是原来的 4 倍。批量、头数和层数还会扩大相关工作量。这是理解取舍的近似入口,实际系统可以采用不同实现,整模型显存和耗时不能直接照搬这个倍数。

较长输入的价值在于可能保留证据,而非长度本身带来更高质量。先统计训练和验证文本的词元长度分布,再检查不同上限下有多少样本被截断,以及关键否定、最后结论是否被丢弃。对短评分类,128 可能覆盖多数样本,也可能不够,答案必须来自实际统计。不要在未测量时填入覆盖率,更不要用测试集选择最有利的长度。

序列长度带来信息收益和计算成本
序列长度带来信息收益和计算成本

公平比较 64、128、256 等长度时,要说明保持的是每步样本数、每步有效词元数,还是总训练预算。长度增加导致批量降低后,优化过程也可能变化;若同时改变学习率和训练轮数,就无法把效果完全归于长度。入门实验可以固定大部分配置,并诚实报告不可避免的批量调整,同时记录设备、有效词元吞吐、峰值显存和相同条件下的延迟。

补齐也是成本来源。长度相差很大的文本放入同批时,短文本可能需要大量填充。按近似长度组批或动态补齐可以减少浪费,但有效位置的掩码仍须正确。上线时还要观察真实长度分布:训练数据以短评为主,实际输入却变成长篇评论,即使类别比例相同,也可能出现截断增多和性能下降。序列预算应结合任务证据与部署测量确定。

6 常见坑:忽略位置信息比较语义

“甲批准乙”和“乙批准甲”包含相同词语,关系方向却相反。用不含位置信息的对称汇总方式处理它们,可能得到相同或难以区分的表示。这说明词语集合不足以表达所有语义。自注意力擅长建立内容联系,但联系发生在哪个位置、相对顺序如何,仍需要明确的机制。若实验忘记加入或正确使用位置信息,不能把失败简单归为数据太少。

位置也不等于语义答案。加入位置编码后,模型获得区分顺序的条件,还需要训练信号去学习哪些差异与任务有关。情感分类中,把普通形容词换个位置可能不改标签,把“不”移到另个修饰范围却可能改变含义。构造顺序诊断集时,应先由人确认预期标签和语言是否自然,避免用不通顺句子测试所谓理解能力。

可以选取含主客体关系、否定范围和转折结论的少量文本,分别保留原句与经人工确认的改写,检查预测是否合理变化。这是模型检查,不是自动扩充训练标签的方法。若随意打乱所有词语,输入可能已经远离真实分布;性能降低只能说明模型受这种扰动影响,不能精确量出位置编码贡献。想比较位置机制,需要在同等训练条件下训练对应变体。

工程中的位置错误常藏在预处理里。拼接句子后位置索引被错误重置,左侧补齐却沿用不匹配的位置约定,或者输入上限改了却没有检查模型支持范围,都可能损坏原本可用的表示。应遵循模型和分词器的约定,检查有效词元、位置和掩码是否一致。显示文本看起来相同,并不表示送入模型的数组相同。

还有更隐蔽的捷径:正面短评恰好较短,负面短评来自另个采集渠道,模型便可能利用长度或格式代替情感。这时位置相关信号反而帮助它记住数据偏差。应按来源、长度和类别分析指标,并检查标签是否与模板固定绑定。公开数据上的高分不能代替真实来源的评估;数据来源改变后,原先可靠的表面线索可能失效。

7 案例:上下文截断丢掉关键约束

把场景换成公开的消费者投诉文本分类,例如使用 CFPB Consumer Complaint Database 中允许公开的叙述与产品类别。任务可以定义为根据投诉叙述预测产品类别,而非推断个人信用。下载时固定快照、记录字段和许可说明,移除不应作为输入的后续处理字段。叙述可能为空,类别体系也可能变化,必须先说明纳入条件,再按时间构造训练、验证和测试范围,并检查重复叙述。

为直观看到风险,构造 1 条教学投诉:开头说“我担心账户出现未经授权的转账”,末尾补充“核实后并非未经授权,而是我本人操作;真正问题是客服未回复”。它不是公开数据库的原句,也未必对应某个现成产品标签;这里另用“最终主要问题”作为诊断标签,专门测试约束是否保留。正式数据的产品分类与这种诊断任务必须分开报告。

如果只保留开头,模型看到的是最初怀疑,看不到最后纠正。它在保留文本内部再怎么计算注意力,也不能读取已经删除的词元。表现出的错误像是不理解否定,根源却是输入缺失。排查时应沿着“原始文本—分词结果—裁剪结果—可见性掩码—模型输出”逐步定位,先确认信息进入模型,再判断模型如何利用。

从截断现象定位信息丢失的位置
从截断现象定位信息丢失的位置

候选修复包括提高长度上限、保留开头与结尾、按段分类再汇总,或从结构化字段中明确提供当时可用的条件。头尾保留可能丢失中段证据,分段可能切断否定与被否定内容,汇总器也需要训练或可验证规则。若用摘要压缩,摘要本身可能遗漏约束,不能假设它天然保真。每种方案都应在验证集比较准确性、关键约束保留情况和计算成本。

正式投诉分类常有类别不平衡,整体准确率容易被大类主导。应查看各类精确率、召回率、宏平均 F1 和混淆矩阵,再按长度与时间切片。若特别关心某类的漏判,可明确设为关注类别并在验证集选择阈值或决策规则。最后用较晚时间段的测试数据评估,观察新产品、措辞变化和叙述习惯改变带来的分布偏移。修复是否有效,应由这些证据回答。

8 把注意力假设写进模型方案

模型方案里的“采用 Transformer”信息太少。应先写假设:例如,否定与结论的相对位置会影响分类,输入相关的汇总有助于利用这些关系;部分文本较长,截断可能删除关键约束。再为每个假设写可观察证据:与简单基线比较、检查位置诊断样本、做指定头的权重干预、比较长度切片。假设、干预和证据应相互对应,避免只列模型名与总分。

数据约定要覆盖来源、时间、标签含义、类别数量、缺失处理和重复分组。表格流失任务还要写特征观察窗口,图像任务要防止同个对象的近似照片跨集合,文本任务要防止同份文档切出的片段进入不同集合。验证集用于选择,测试集用于评估;任何从全量数据拟合的词表、归一化统计或特征筛选,都要检查是否把留出信息带进训练流程。

把机制假设连接到可审核的评估计划
把机制假设连接到可审核的评估计划

模型约定需说明结构类型、是否使用预训练参数、分词器版本、特殊词元、最大长度、裁剪策略和分类汇总方式。资源约定需记录推理设备、批量、延迟测量条件和输入长度范围。比较结果时,除了精确率、召回率、F1 与 AUC,还应报告样本数和类别支持数;小切片上少量错例就可能明显改变指标,不宜把微小差距写成确定优势。

上线观察则要连接具体失败:文本变长时统计截断比例,来源变化时抽样复核,关注类别召回率下降时检查混淆对象。若概率用于拒判或转人工,需要在验证集确定规则并测量覆盖率与错误率,不能把概率 0.9 直接解释为经过校准的 90% 正确率。注意力图可以作为辅助调试材料,最终决策依据仍是可复现的输入、评估和业务边界。

9 从Transformer走向预训练模型(A28)

本课讨论了结构怎样组织信息,但结构本身没有语言知识。随机初始化的 Transformer 需要从训练数据学会词语关系和任务规律;对于规模有限的标注集,这可能很困难。预训练先利用更广泛的数据学习可迁移表示,再通过微调或其他适配方式服务具体任务。结构选择、训练目标和训练数据是相关但不同的要素,不能仅凭模型名称把它们混在一起。

编码器常见的预训练任务包括利用上下文恢复被遮住的内容,因果解码器常见的任务是预测后续词元。不同目标带来不同可见性约定和使用方式,具体细节放到 A28。当前只需记住:分类器可以建立在预训练表示上,生成能力也来自训练过程;拥有自注意力不等于已经获得可靠知识,更不等于在新数据上自动保持准确。

进入 A28 前,可以整理本课实验的边界:使用什么数据、哪些信息对模型可见、是否有预训练参数、验证阶段选择了什么、最终评估看到了哪些失败。这样,下课比较从头训练和预训练模型时,就能把效果差异放回数据规模、训练目标和适配过程,而非把所有收益都归于某个架构名称。位置、截断和泄漏问题也不会因预训练而消失。

放进方案里

在短评分类方案中,先定义正面为正类,输入只含预测时可获得的评论文本。使用固定版本的公开 SST-2 数据,从公开训练集划出内部验证集,近似重复文本按组处理;将公开验证集保留为最终评估集,并明确官方测试标签不可直接本地使用。保存样本标识、划分种子、分词器和标签映射,使后续结果能够复现。

候选方案采用编码器及分类头,同时保留 TF-IDF 加逻辑回归基线。写明是否使用预训练参数、位置处理、特殊词元和有效位置掩码。在内部验证集比较 64、128、256 的最大长度,记录截断比例、否定与转折样本表现、宏平均 F1、正类精确率与召回率,以及使用连续分数计算的 ROC-AUC。类别不平衡时补充 PR-AUC,并给出各类样本数。

注意力相关假设通过冻结模型的指定头权重干预和人工审核的顺序诊断样本检查,结果仅支持相应实验范围。长度选择同时考虑关键约束保留、峰值显存、吞吐和固定条件下的延迟。阈值、裁剪策略与停止轮次均在验证阶段确定,冻结后再运行最终评估;不能根据最终评估结果继续反复选配置。

验收时,将同条短评单独推理与放入含更长文本的批次推理,要求正类概率在预先设定的数值容差内一致;若超差,先检查填充掩码、位置索引和池化范围。保存输入词元与掩码作为排查证据。

运行阶段记录输入长度、截断比例和来源变化,定期对含否定、较长文本及低置信样本复核。若出现大量超出已验证长度的输入,按预先评估的规则转人工或进入待处理队列,并重新收集代表性样本评估。方案交付物应包含正常结果、失败切片、计算条件和适用边界,使读者知道模型依赖什么证据,也知道何时需要重新验证。

10 小结:下一步预训练模型(A28)

Transformer 通过自注意力按当前上下文汇总信息,通过位置机制保留顺序线索。编码器与解码器规定不同的可见范围,分词和截断决定信息是否真正进入模型。并行计算带来训练机会,序列长度则同时影响证据保留与资源消耗。判断这些机制是否有用,需要控制变量、合理划分数据并检查具体失败。

自测时试着回答:为什么注意力权重 0.45 不等于情感贡献 45%?为什么删掉尾部约束后增加注意力头无法恢复信息?为什么长度翻倍不能直接推断整模型耗时变为 4 倍?若能把答案连到实际输入、计算路径和评估边界,就可以进入 A28,继续理解预训练如何让结构获得可迁移的能力。

同阶段相关课

AI 答疑

默认关闭。启用后,只发送本课标题、最近阅读的屏幕内正文摘录(最多 6000 字)与本次问题。

配置自己的服务