深度学习9——transformer之注意力机制

注意力机制概述

Transformer先将文本划分为token,再通过Embedding将每个token转换成向量。所有token向量组合后得到一个矩阵,并加入位置编码,使模型能够感知token的顺序和位置。

之后,输入矩阵通过三个可学习的权重矩阵W_Q、W_K、W_V,分别映射为Q、K、V:

复制代码
Q = X × W_Q
K = X × W_K
V = X × W_V

其中,X是加入位置编码后的输入矩阵,W_Q、W_K、W_V都是模型训练过程中学习得到的参数。

注意力计算流程:

复制代码
输入矩阵X
  ↓
映射得到Q、K、V
  ↓
Q × K^T,得到注意力分数
  ↓
除以sqrt(d_k)
  ↓
Softmax,得到注意力权重
  ↓
注意力权重 × V
  ↓
得到上下文增强后的输出矩阵

最终输出仍然是一个矩阵,其中每一行对应一个token的上下文表示。单个token对应一个向量,整个序列对应一个向量矩阵。

Q、K、V的作用

  • Q(Query,查询向量):表示当前token想从其他token中获取什么信息。

  • K(Key,键向量):表示当前token具有什么特征,可以和其他token的Q进行匹配。

  • V(Value,值向量):表示当前token真正需要传递和聚合的信息。

可以简单理解为:

复制代码
Q:我想找什么
K:我有什么特征
V:我能提供什么内容

例如某个token的输入向量为E1,则:

复制代码
Q1 = E1 × W_Q
K1 = E1 × W_K
V1 = E1 × W_V

单头注意力的计算

一个token的Q会与所有token的K进行点积:

复制代码
Q_i × K_1
Q_i × K_2
...
Q_i × K_n

点积结果叫作注意力分数(Attention Score),表示当前token与其他token的匹配程度。

注意力分数经过Softmax后,转换为0到1之间且总和为1的注意力权重(Attention Weight)

然后根据这些权重,对所有V进行加权求和:

复制代码
output_i = weight_1 × V_1
         + weight_2 × V_2
         + ...
         + weight_n × V_n

得到当前token融合上下文信息后的新向量。所有token的新向量组合起来,就得到注意力输出矩阵。

注意力输出与原始输入相加属于残差连接,不是注意力计算本身:

复制代码
残差输出 = 原始输入X + Attention输出

为什么要除以sqrt(d_k)

缩放点积注意力的公式可以写为:

其中,d_k是每个注意力头中Q和K的向量维度。

Q和K的维度越高,点积需要累加的项越多,点积结果的方差也会增大。如果直接输入Softmax,注意力分数之间的差异会被明显放大,使注意力权重过于尖锐:

复制代码
某个权重接近1
其他权重接近0

此时Softmax容易进入饱和区域,反向传播时梯度会变得很小,影响Q、K等参数的更新,导致训练不稳定。

因此除以sqrt(d_k),可以控制注意力分数的尺度,避免Softmax过度饱和。

多头注意力机制

多头注意力包含多个Attention Head,每个Head都有不同的Q、K、V映射参数:

复制代码
Head1:W_Q1、W_K1、W_V1
Head2:W_Q2、W_K2、W_V2
...

不同的Head可以从不同的表示子空间学习不同类型的关系,例如语法关系、指代关系或语义关系。

每个Head分别完成注意力计算后,将结果拼接起来,再通过输出矩阵W_O进行线性映射:

复制代码
MultiHead = Concat(Head1, Head2, ..., Head_h) × W_O

之后再通过残差连接,将多头注意力输出与原始输入相加:

复制代码
输出 = 原始输入X + MultiHead输出
相关推荐
jobBridge21几秒前
大模型到底是怎么"想"的?我把 Transformer 拆开,发现它其实是个"接词狂魔"
人工智能·后端·编程语言
水如烟13 分钟前
孤能子视角:感质论——关系场的内摩擦显影:自指折返时的质地涌现
人工智能
AC赳赳老秦15 分钟前
风控岗应用:OpenClaw 采集公开司法与经营异常数据,自动生成企业风险评估报告
大数据·c语言·数据库·人工智能·python·php·openclaw
析稿Ai写作工具20 分钟前
无限画布+服装带货:一套完整的AI视频生成方案(含提示词工程)
人工智能
还不秃顶的计科生43 分钟前
具身智能论文学习8:Octo: An Open-Source Generalist Robot Policy
人工智能·深度学习·学习·机器学习·语言模型·vla·vlm
新知图书1 小时前
6.4 关键时刻:它自己修好了 Bug
人工智能·agent·ai agent·智能体
深海鱼在掘金1 小时前
深入浅出RAG——第7章:基础篇实战:文档问答机器人
人工智能·typescript·命令行
Jay80591 小时前
一文讲清楚 Epoch、Batch 和 Iteration 的区别
人工智能
深海鱼在掘金1 小时前
深入浅出RAG——第8章:RAG 的局限性及应对策略
人工智能·架构
lucas_AI1 小时前
1.2B 小模型赢过 235B 大模型:NaviDC-OCR 把文档解析卷明白了
人工智能·深度学习·算法