目录
一、自注意力和交叉注意力
自注意力:
相当于图书馆内部整理,自注意力机制让序列中的每个位置都能与其他所有位置交互
如何理解:
想象你在整理一个图书馆,每本书都要了解其他书的内容,"我"(当前词)想知道自己在这个句子中应该表达什么意思,于是"我"去查看句子中所有其他词,了解上下文关系
-
例如:在句子"猫吃了鱼,因为它饿了"中,"它"通过自注意力知道要指向"猫"
交叉注意力:
相当于读者查资料,解码器用自己的当前状态作为Query,去编码器的输出中寻找相关的Key和Value
如何理解:
想象你在写论文,每写一句话就去图书馆查相关资料,你带着"当前要写什么"的问题(Query),去书架上找相关的书籍(Key),然后从这些书中提取有用的内容(Value)来完善你的论文
-
例如:翻译时,生成英文"studying"时,去查看中文原文中的"学习"
关键区别:
自注意力是内部交流,交叉注意力是跨序列参考
二、填充掩码
为什么需要填充掩码呢?
不同训练句子单词个数通常不一样,为了确保同一batch中的序列长度一致
就像在图书馆里有些书架只有3本书,有些有5本书,为了整齐摆放,我们在3本书的书架上放2个空盒子,这些空盒子就是[PAD]标记
填充掩码的作用
防止模型从这些无意义的[PAD]标记中学习
相当于告诉图书管理员:"请忽略这些空盒子,只整理真正的书籍"
在计算注意力时,让模型"看不见"填充的位置,具体体现就是把[PAD]位置的注意力分数设为很小的负数,softmax后权重接近0
实际意义
确保模型只从真实词汇中学习,不被空白位置干扰
三、位置编码
为什么需要位置编码
核心问题:自注意力机制把输入当作一个无序的词向量集合,只关心词与词之间的内容相似度,完全不关心它们在序列中的位置关系。
如何理解:
自注意力机制就像把一副扑克牌全部摊在桌面上:它知道桌面上有"猫"、"追"、"老鼠"这几张牌,它知道这些牌的内容和含义,但它完全不知道这些牌应该按照什么顺序排列
结果就是:模型无法区分"猫追老鼠"和"老鼠追猫"这两个完全不同的意思,因为自注意力看到的是同一个词集合 {猫, 追, 老鼠}。
位置编码的解决方案
技术方案:使用正弦和余弦函数为每个位置生成独特的位置向量,与词嵌入向量相加。
通俗理解:
为了解决"乱序扑克牌"的问题,我们给每个词发一张"电影院座位票":
-
第1个词"猫":1排1座
-
第2个词"追":1排2座
-
第3个词"老鼠":1排3座
现在,模型不仅知道有哪些词,还知道它们的排列顺序:
-
"猫"在1号位 → 可能是主语
-
"追"在2号位 → 动作
-
"老鼠"在3号位 → 可能是宾语
这样就明确了是"猫追老鼠"而不是"老鼠追猫"。
巧妙之处(位置可控性):
这种正弦余弦编码方式让模型能够:
-
轻松理解相对位置关系:知道"1排3座"在"1排1座"后面2个位置
-
处理更长的序列:即使遇到训练时没见过的长序列,也能通过相对位置关系推导出位置编码
-
保持距离感知:相邻位置的关系比远距离位置更密切
实际效果:
位置编码为Transformer注入了顺序感知能力,让它从"词袋模型"升级为能够理解语言结构的序列模型,这是Transformer能够成功处理自然语言的关键因素之一。
四、多头注意力:多个专家团队
单一注意力的问题
局限性:单一注意力可能只关注一种类型的关系
通俗理解:
-
一个翻译可能只关注语法,忽略了语义和逻辑
-
就像医生只关注发烧症状,忽略了其他病因
多头注意力的解决方案
实现:将Q、K、V分成多个头,每个头计算出独立的注意力结果
通俗理解:
组建8个专家的翻译团队:
-
语法专家:关注主谓宾结构
-
语义专家:关注词义关系
-
指代专家:关注代词指向
-
逻辑专家:关注因果关系
工作流程(结合资料):
-
把输入信息复制8份,每份给一个专家
-
每个专家从自己的专业角度分析
-
把8个专家的分析结果汇总
-
得出全面、准确的最终理解
好处:比单个专家看得更全面,能同时捕捉多种语言关系
五、层归一化:深度网络的稳定器
为什么需要层归一化
技术问题:在深度神经网络中,前面层的参数更新会改变其输出的分布,导致后续层需要不断适应这种变化的输入分布,这种现象称为"内部协变量偏移"。
通俗理解:
就像一条生产线:
-
第一道工序有微小误差
-
第二道工序在这个误差基础上继续加工
-
误差不断累积放大
-
到最后工序时,产品可能已经完全变形
层归一化 vs Batch Normalization
| 特性 | Batch Normalization(批归一化) | Layer Normalization(层归一化) |
|---|---|---|
| 归一化维度 | 跨样本,对同一特征归一化 | 跨特征,对同一样本归一化 |
| 计算方式 | 在一个batch内计算每个特征的均值和方差 | 对每个样本的所有特征计算均值和方差 |
| 依赖关系 | 依赖batch size,小batch效果差 | 不依赖batch size,单样本也能工作 |
| 适用场景 | 计算机视觉(CNN) | 自然语言处理(Transformer/RNN) |
| 序列数据处理 | 不适合,序列长度变化 | 非常适合,每个序列独立处理 |
对比:
-
Batch Norm:像学校按科目排名次
-
把所有学生的数学成绩放一起比较
-
把所有学生的语文成绩放一起比较
-
需要足够多的学生(大batch)才有意义
-
-
Layer Norm:像老师给单个学生写评语
-
看这个学生各科成绩的总体表现
-
不与其他学生比较
-
即使只有一个学生也能评价
-
层归一化的作用
技术方法:对每个样本的所有特征进行标准化,使均值为0,方差为1,然后进行可学习的缩放和平移。
通俗理解:
在Transformer的生产线上设置智能质量检查站:
-
测量分析(计算均值和方差)
-
检查当前"产品"(样本)的各项指标
-
比如:检查一个词向量的512个维度值
-
-
标准化校准(归一化处理)
将各项指标调整到标准范围 -
个性化微调(缩放和平移)
根据具体情况适当调整
在Transformer中的具体实现
位置:采用Pre-Norm结构,在每个子层之前进行归一化
具体流程:
输入 → LayerNorm → 多头注意力 → 残差连接 → LayerNorm → 前馈网络 → 残差连接 → 输出
为什么选择层归一化而不是批归一化:
-
序列长度可变:Transformer处理不同长度的序列,Batch Norm难以处理
-
训练稳定性:Layer Norm对batch size不敏感,训练更稳定
-
推理一致性:训练和推理时的行为完全一致
-
并行计算:适合Transformer的并行计算架构
实际效果
让深层Transformer成为可能:
-
没有层归一化:6层以上的Transformer很难训练
-
有层归一化:可以轻松训练12层、24层甚至96层的模型
训练加速:
-
减少内部协变量偏移
-
允许使用更大的学习率
-
收敛更快更稳定
在架构中的重要性:
层归一化是Transformer能够堆叠成深层网络的关键技术之一,它与残差连接配合,确保了信息在深层网络中的有效流动,让现代大语言模型的训练成为可能。
Transformer核心机制解析
1294

被折叠的 条评论
为什么被折叠?



