当前位置: 首页 > news >正文

self-attention计算过程

Self-Attention(自注意力)详解 + 数据示例

Self-Attention(自注意力)是注意力机制的一种特殊形式,用于计算同一序列内部元素之间的相关性。它能够捕捉序列中任意两个元素的长距离依赖关系,广泛应用于Transformer、BERT等模型。


1. Self-Attention 的计算步骤

假设我们有一个输入序列(如句子中的单词),每个单词用向量表示。Self-Attention 的计算过程如下:

输入数据示例

假设我们有 3 个单词的句子,每个单词用 4 维向量表示:

  • X(输入矩阵):
    [
    X = \begin{bmatrix}
    x_1 \ x_2 \ x_3
    \end{bmatrix} = \begin{bmatrix}
    1 & 0 & 1 & 0 \ 0 & 2 & 0 & 2 \ 1 & 1 & 1 & 1
    \end{bmatrix}
    ]
    • (x_1 = [1, 0, 1, 0])
    • (x_2 = [0, 2, 0, 2])
    • (x_3 = [1, 1, 1, 1])

Step 1: 计算 Query (Q), Key (K), Value (V)

Self-Attention 通过三个权重矩阵 (W^Q, W^K, W^V) 将输入 (X) 映射到 Query、Key、Value:
[
Q = X W^Q, \quad K = X W^K, \quad V = X W^V
]

假设:
[
W^Q = \begin{bmatrix}
1 & 0 & 1 \ 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 1 & 1
\end{bmatrix}, \quad
W^K = \begin{bmatrix}
0 & 1 & 1 \ 1 & 0 & 1 \ 0 & 1 & 0 \ 1 & 0 & 0
\end{bmatrix}, \quad
W^V = \begin{bmatrix}
0 & 0 & 1 \ 1 & 1 & 0 \ 0 & 1 & 0 \ 1 & 0 & 1
\end{bmatrix}
]

计算:
[
Q = X W^Q = \begin{bmatrix}
1 & 0 & 1 & 0 \ 0 & 2 & 0 & 2 \ 1 & 1 & 1 & 1
\end{bmatrix} \begin{bmatrix}
1 & 0 & 1 \ 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 1 & 1
\end{bmatrix} = \begin{bmatrix}
1 & 0 & 1 \ 2 & 2 & 2 \ 2 & 1 & 2
\end{bmatrix}
]
[
K = X W^K = \begin{bmatrix}
0 & 1 & 1 \ 4 & 0 & 2 \ 2 & 2 & 1
\end{bmatrix}, \quad
V = X W^V = \begin{bmatrix}
0 & 1 & 1 \ 2 & 2 & 2 \ 2 & 2 & 1
\end{bmatrix}
]

Step 2: 计算注意力分数(Attention Scores)

计算 (Q) 和 (K) 的点积,得到注意力分数矩阵:
[
\text{Scores} = Q K^T = \begin{bmatrix}
1 & 0 & 1 \ 2 & 2 & 2 \ 2 & 1 & 2
\end{bmatrix} \begin{bmatrix}
0 & 4 & 2 \ 1 & 0 & 2 \ 1 & 2 & 1
\end{bmatrix} = \begin{bmatrix}
1 & 2 & 3 \ 4 & 8 & 8 \ 3 & 6 & 7
\end{bmatrix}
]

Step 3: 缩放 + Softmax 归一化

为了防止点积过大,通常除以 (\sqrt{d_k})((d_k) 是 Key 的维度,这里 (d_k=3)):
[
\text{Scaled Scores} = \frac{\text{Scores}}{\sqrt{3}} = \begin{bmatrix}
0.58 & 1.15 & 1.73 \ 2.31 & 4.62 & 4.62 \ 1.73 & 3.46 & 4.04
\end{bmatrix}
]

然后应用 Softmax 归一化(按行):
[
\text{Attention Weights} = \text{softmax}(\text{Scaled Scores}) = \begin{bmatrix}
0.20 & 0.30 & 0.50 \ 0.02 & 0.49 & 0.49 \ 0.04 & 0.24 & 0.72
\end{bmatrix}
]

Step 4: 加权求和得到输出

用 Attention Weights 对 (V) 加权求和:
[
Z = \text{Attention Weights} \cdot V = \begin{bmatrix}
0.20 & 0.30 & 0.50 \ 0.02 & 0.49 & 0.49 \ 0.04 & 0.24 & 0.72
\end{bmatrix} \begin{bmatrix}
0 & 1 & 1 \ 2 & 2 & 2 \ 2 & 2 & 1
\end{bmatrix} = \begin{bmatrix}
1.6 & 1.8 & 1.3 \ 2.0 & 2.0 & 1.5 \ 1.9 & 1.9 & 1.1
\end{bmatrix}
]

最终输出

每个单词的新表示 (Z) 包含了整个序列的信息:
[
Z = \begin{bmatrix}
z_1 \ z_2 \ z_3
\end{bmatrix} = \begin{bmatrix}
1.6 & 1.8 & 1.3 \ 2.0 & 2.0 & 1.5 \ 1.9 & 1.9 & 1.1
\end{bmatrix}
]


2. Self-Attention 的作用

  1. 捕捉长距离依赖:即使 (x_1) 和 (x_3) 相隔很远,Self-Attention 也能直接计算它们的相关性。
  2. 动态权重分配:每个单词的表示会根据其他单词动态调整(如 (z_1) 受 (x_2, x_3) 影响)。
  3. 并行计算:所有位置的注意力可以同时计算,适合 GPU 加速。

3. 实际应用

  • Transformer:编码器和解码器均使用 Self-Attention。
  • BERT/GPT:基于 Transformer 的预训练模型,依赖 Self-Attention 理解上下文。

Self-Attention 的核心思想是让模型自己决定哪些信息更重要,而不是依赖固定规则(如 RNN 的顺序计算)。

相关文章:

  • JavaEE-多线程实战02
  • 计算机图形学(一):基础
  • err: Error: Request failed with status code 400
  • chrony服务器(2)
  • Azure Devops - 尝试一下在Pipeline中使用Self-hosted Windows agent
  • MongoDB与PHP7的集成与优化
  • 如何让自己的博客可以在百度、谷歌、360上搜索到(让自己写的CSDN博客可以有更多的人看到)
  • 电子病历高质量语料库构建方法与架构项目(智能质控体系建设篇)
  • 英文中数字读法规则
  • 【黑马JavaWeb+AI知识梳理】前端Web基础02 - JS+Vue+Ajax
  • 通过数据增强打造抗噪音多模态大模型
  • 微服务即时通信系统(十二)---入口网关子服务
  • Transformer四模型回归打包(内含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型)
  • [AHOI2001] 质数和分解
  • 【计算机网络物理层】从信号传输到介质选型的核心技术解析
  • 机器学习基础理论 - 分类问题评估指标
  • PDF处理控件Aspose.PDF指南:如何使用 C# 在 PDF 中搜索
  • Maven 4.0.0 模式-pom.xml配置详解
  • MSO-Player:基于vlc的Unity直播流播放器,支持主流RTSP、RTMP、HTTP等常见格式
  • LLM模型的几何抽象:上文向量与Token距离的容量优化
  • 绵阳造AI机器狗参与警务工作,演练中辅助民警控制“嫌疑人员”
  • 上海首个航空前置货站落户松江综合保税区,通关效率可提升30%
  • 海南旅文局通报游客入住酒店港币被调包:成立调查组赴陵水调查
  • 怎样更加贴近中国消费者,运动品牌给出“本地化”选择
  • 子公司神州信息十年来首次亏损,神州控股遭国有股东广州城投派驻董事问责
  • 年客流超2500万,九岁的上海国际旅游度假区有哪些文旅商体实践?