Attention 与上下文窗口

建议用时:25 分钟(含练习)

学习目标

能够说明注意力如何关联上下文,并识别上下文过长、冲突和缺失造成的问题。

本节产出

一份上下文故障诊断清单

核心知识:看得见,不等于用得好

假设你正在读一句话:“小林把修改后的海报交给小周,因为他负责活动发布。”要理解“他”指谁,需要结合前面的角色与任务,有时还需要更多上下文。这说明文本理解不是逐字孤立处理,而是要建立不同位置之间的关系。Attention(注意力)提供了一种根据输入内容计算信息关联并组合表示的机制。

在常见的注意力计算中,可以把 Query 理解为当前位置用来寻找相关信息的表示,把 Key 理解为候选各位置(可包括当前位置)用于匹配的表示,把 Value 理解为被聚合的信息表示。相似度经过处理后形成权重,再对 Value 进行加权组合。这是一个帮助入门的功能解释,不是说网络里真的存在“问题卡”和“答案卡”,更不是模型在执行人类有意识的注意行为。

以一个纯教学例子说明加权:假设某次计算对三个位置分配的权重为 0.6、0.3、0.1,它们的某一维 Value 分别为 2、4、8,那么这一维的加权结果是 0.6×2+0.3×4+0.1×8=3.20.6×2 + 0.3×4 + 0.1×8 = 3.2。真实网络中表示是多维的,还有多个头、多层变换与位置相关机制;不要把这个标量例子当成完整 Transformer 实现。

当前位置通过匹配上下文中的不同信息形成权重,再聚合信息;上下文窗口只决定可见范围而不保证正确使用

图中的“可见范围”和“关联计算”回答不同问题。上下文窗口决定这次计算可以容纳哪些输入;注意力等机制决定如何组合其中的信息。材料不在窗口内,就不能直接依赖它的具体内容;材料在窗口内,也可能因为歧义、干扰、顺序或任务复杂度而没有被正确使用。

上下文窗口和长期记忆的区别

上下文

上下文可以包含当前问题、历史对话、系统规则、工具结果和选中的文件片段。你在产品里看得到很早以前的聊天记录,不代表模型本轮逐字看到了全部记录。产品可能截断、检索、压缩或重新组织历史;具体方式依实现而异。

长期记忆

长期保存的笔记属于外部持久信息,只有被检索或加载进当前任务,才会直接参与本轮生成。可以把上下文看成桌面上的工作材料,把持久笔记看成档案柜。这个比喻不代表真实存储结构,但能帮助判断为什么“我上个月明明告诉过它”并不足以证明模型现在知道某个事实。

更长窗口不是免整理通行证

一份项目材料里可能同时有旧版活动时间、新版时间、被否决的方案和最终决定。如果把它们不加说明地全部放进上下文,模型面临的是多个看似合理但互相矛盾的候选。仅增加窗口不会告诉它哪一个版本生效。

有效的上下文包应包含任务、当前有效事实、来源、冲突处理规则和输出标准。引用旧资料时明确标记用途,例如“只用于解释决策背景,不可作为当前时间安排”。如果材料缺失,应允许模型报告不足。这个做法提升的是信息质量,而不只是减少文本长度。

案例:同一活动出现两个日期

材料甲是周一的草案:“活动暂定 10 月 12 日”;材料乙是周三的确认通知:“因场地调整,活动改为 10 月 19 日”;材料丙是对外文案模板,仍写着旧日期。你的任务是起草最终报名提醒。

一种不可靠输入是把三个文件直接粘贴,然后说“综合一下”。更可靠的输入会说明:甲是草案,乙是最新确认,丙只保留格式;日期冲突以乙为准,若乙没有确认具体时间段则保留待确认。最终检查既要看是否使用 19 日,还要看是否错误继承了草案里的时间或地点。

这不是让模型盲目相信“最新”二字。若周三材料只是聊天中的猜测,而周一是签署过的正式通知,权威性就需要进一步核对。因此版本优先级必须由实际来源和批准状态决定,不能把文件修改时间当成唯一依据。

动手练习

  1. 写三段虚构材料,故意让其中一个字段冲突。标明各自日期、草案或确认状态以及适用范围。
  2. 制作一个不超过一页的上下文包,要求生成结果时只使用当前有效信息,并列出尚未解决的冲突。
  3. 让同伴或模型根据上下文包输出一段提醒,再逐项检查日期、地点、时间段和报名限制。

参考答案与推演

完成检查

  • 能解释注意力中的匹配与信息聚合,知道示意计算的简化边界。
  • 能区分当前上下文、产品聊天记录与外部持久记忆。
  • 上下文包明确处理版本冲突,而不是堆放全部文件。
  • 输出没有把未知字段补成事实,并能追溯到有效材料。

参考与来源

Attention 与上下文窗口

3 道题 · 及格分 60 分

开始测验