期货网站做模拟,湖州网站建设哪家好,建立网站准备工作,上海网络平台有哪些一、有哪些注意力机制#xff1f;
Transformer 里其实只有一种公式#xff1a;Scaled Dot-Product Attention。
不同名字只是使用方式不同#xff1a;名称Q 来源K/V 来源应用位置Self-Attention输入序列自身输入序列自身Encoder / DecoderMasked Self-Attention输入序列自身…一、有哪些注意力机制
Transformer 里其实只有一种公式Scaled Dot-Product Attention。
不同名字只是使用方式不同名称Q 来源K/V 来源应用位置Self-Attention输入序列自身输入序列自身Encoder / DecoderMasked Self-Attention输入序列自身输入序列自身带maskDecoderCross-AttentionDecoderEncoderDecoderMulti-Head Attention拆分多个头拆分多个头Encoder Decoder二、缩放点积注意力1. 核心公式
在论文 Attention is All You Need 中注意力机制定义为
Attention(Q,K,V)softmax (QKTdk)V
\text{Attention}(Q, K, V) \text{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right)V
Attention(Q,K,V)softmax(dkQKT)V2. 各部分含义
QQuery查询表示“我要找什么信息”。KKey键表示“我拥有什么信息”。VValue值表示“具体的信息内容”。
三者都是由输入向量通过线性变换得到的。3. 计算步骤点积 (Dot Product)计算 Query 和 Key 的相似度
QKT
QK^T
QKT每个元素表示“一个 Query 和一个 Key 的相关性”。缩放 (Scaling)
除以 dk\sqrt{d_k}dk Key 的维度。原因防止数值过大导致 softmax 梯度过小、训练不稳定。归一化 (Softmax)将相关性转化为概率分布
αsoftmax (QKTdk)
\alpha \text{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right)
αsoftmax(dkQKT)表示“Query 对所有 Key 的注意力权重”。加权求和 (Weighted Sum)用权重去加权 Value
Attention(Q,K,V)αV
\text{Attention}(Q,K,V) \alpha V
Attention(Q,K,V)αV得到最终的注意力表示。4. 举个例子
句子「那天雨很大他等了很久水汽打湿了衣服也没有等到她。」
如果我们在做自注意力
Query “他”Key/Value 整个句子
计算后
“等了很久” 对 “他” 的相关性很高 → 权重大“雨很大” 也可能有关系解释等待的背景 → 权重适中“她” 也有关联他等的人是谁 → 权重大“水汽打湿了衣服” 可能关联小 → 权重低
最终“他”的向量会融合这些上下文信息。5. 作用总结
点积 → 计算相关性缩放 → 保持数值稳定softmax → 转概率分布加权求和 → 聚合信息
三、多头注意力1. 为什么需要多头注意力
单个 Scaled Dot-Product Attention 在每次计算时只能学习一种相关性模式。比如 Query“他”
可能更关注“她”他在等谁也可能关注“雨很大”环境背景也可能关注“等了很久”行为状态。但如果只有一个头模型会压缩成一个加权分布无法同时捕捉多种语义关系 → 信息丢失。2. 多头注意力的核心思想
不是只用一个 Q/K/V而是并行生成多个 Q/K/V每组叫做一个“头head”。每个头在不同的 低维空间 中学习相关性模式。多个头的结果拼接起来再线性变换 → 得到更丰富的上下文表示。
公式
MultiHead(Q,K,V)Concat(head1,…,headh)WO
\text{MultiHead}(Q,K,V) \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O
MultiHead(Q,K,V)Concat(head1,…,headh)WO
其中
headiAttention(QWiQ,KWiK,VWiV)
\text{head}_i \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)
headiAttention(QWiQ,KWiK,VWiV)3. 多头是怎么解决问题的多视角建模每个头学到的关注点不一样有的看短程依赖有的看长程依赖。举例句子“那天雨很大他等了很久水汽打湿了衣服也没有等到她。”
头1关注“他 ↔ 她”人际关系头2关注“他 ↔ 雨很大”环境背景头3关注“他 ↔ 等了很久”动作/状态信息多样化
单头可能学到的是一种模糊加权。多头能在不同子空间里并行学习语义减少遗漏。提升模型表达能力
让 Transformer 在相同参数规模下能更好地表达复杂关系。4. 举例类比
你可以把 多头注意力 想成
一个问题交给多个专家头每个专家专注于不同角度。最后把各个专家的意见拼在一起形成更完整的结论。5. 总结一句话
问题单个注意力只能捕捉一种关系信息不够全面。解决并行多个注意力头在不同子空间学习不同关系。结果模型更强、更稳定能捕捉丰富的语义依赖。
四、掩码自注意力
1. 背景为什么需要掩码
Transformer 里有两种主要的任务场景
编码器Encoder输入序列是已知的比如一句话可以双向看上下文。解码器Decoder要一边生成一边预测下一个词比如机器翻译 → 当前时刻只能依赖过去的词不能偷看未来的词。
如果不加限制解码器的自注意力会“看到”未来词 → 信息泄露data leakage。2. 什么是掩码自注意力
就是在 自注意力Self-Attention 的计算中人为屏蔽掉未来位置的注意力权重。
公式还是
Attention(Q,K,V)softmax (QKTdkM)V
\text{Attention}(Q,K,V) \text{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}} M \right)V
Attention(Q,K,V)softmax(dkQKTM)V
其中
MMM 是 mask 矩阵对于未来位置M−∞M -\inftyM−∞softmax 后得到 0 权重只允许当前位置关注自己和之前的词3. 如何解决问题
问题在解码时如果能看到未来词就相当于“作弊”。解决通过 Mask把未来词的相关性强制变成 0 → 保证自回归auto-regressive生成。效果模型只能根据历史信息生成下一个词符合真实生成场景。4. 举例说明
句子「我爱吃苹果」
如果我们在训练解码器预测
预测“爱”时只能看到“我”预测“吃”时只能看到“我 爱”预测“苹果”时只能看到“我 爱 吃”如果没加 Mask预测“爱”时可能提前看到“吃苹果”就等于提前知道答案。5. 总结一句话
掩码自注意力是自注意力的变体用于解码器。目的防止模型看到未来词保证自回归生成的正确性。做法在 softmax 前把未来位置权重屏蔽掉置为 -∞。
五、交叉注意力
1. 背景为什么需要交叉注意力
Transformer 的 解码器 需要结合
自己已生成的内容通过自注意力得到输入序列的上下文来自编码器
如果解码器只依赖自身 → 就像闭门造车无法利用源语言/输入的语义信息。所以需要一种机制让解码器在生成时 查询编码器的输出。2. 什么是交叉注意力
交叉注意力的输入
QQuery 来自 解码器当前层的隐藏状态已生成内容的表示KKey、VValue 来自 编码器的输出输入序列的语义表示
公式
Attention(Qdecoder,Kencoder,Vencoder)
\text{Attention}(Q_{\text{decoder}}, K_{\text{encoder}}, V_{\text{encoder}})
Attention(Qdecoder,Kencoder,Vencoder)
即解码器用自己的 Query 去 对齐编码器的输出找到相关信息然后取回来。3. 它解决了什么问题问题解码器不知道该生成什么样的内容需要和输入保持对应关系比如翻译“我爱苹果” → “I love apples”。解决交叉注意力让解码器在生成每个 token 时能动态聚焦输入序列的不同部分。
生成 “I” → 关注输入的 “我”生成 “love” → 关注输入的 “爱”生成 “apples” → 关注输入的 “苹果”4. 举例说明
源句子编码器输入「那天雨很大」
目标句子解码器输出“It rained heavily that day”
当解码器生成 “It” 时Query 来自 “It” 的上下文Key/Value 来自编码器 → 可能最关注 “那天”当生成 “rained” 时 → 关注 “雨很大”当生成 “heavily” 时 → 关注 “很大”当生成 “that day” 时 → 关注 “那天”
这样生成过程保持了 输入输出的对齐关系。5. 总结一句话
交叉注意力 解码器的 Query 编码器的 Key/Value目的让解码器在生成时利用输入序列的信息解决问题实现输入与输出的动态对齐避免解码器“瞎编”