问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Transformer中的自注意力机制计算过程分析

创作时间:
作者:
@小白创作中心

Transformer中的自注意力机制计算过程分析

引用
CSDN
1.
https://blog.csdn.net/Flag_ing/article/details/136421027

Transformer中的自注意力机制是其核心组成部分,通过计算序列中元素之间的相关性,实现了对输入序列的高效处理。本文将详细解析自注意力机制的计算过程,帮助读者理解这一重要技术。

什么是自注意力机制

自注意力机制(Self-Attention)顾名思义就是关注单个序列内部元素之间的相关性,不仅可以用于 seq2seq 的机器翻译模型,还能用于情感分析、内容提取等场景。因此分析网络如何表达出“单个序列”与“内部元素”之间的相关性这一问题可以回答开头所述的大部分疑问。

自注意力的计算过程

如图1所示,假设网络某一个自注意力层的输入向量序列为 (X = {x_1, x_2, ..., x_n}),维度均为 (d),该层的输出向量序列为 (Y = {y_1, y_2, ..., y_n}),维度同样都为 (d)。

首先将 (X) 中的每个向量分别乘以同一个矩阵 (W_K)、(W_Q)、(W_V) 得到 key 向量 (K)、query 向量 (Q) 以及 value 向量 (V),且维度均为 (d_k)。

然后以 (y_i) 输出到 (Y) 的过程为例。把 (Q_i) 依次与所有的 key 做点积后得到初步的注意力值 (A_i),如图1所示。


图1 自注意力计算过程1

然后将 (A_i) 经过 softmax 函数归一化得到最终的注意力权重 (A'_i),这个 (A'_i) 可以看作我们给输入向量序列中的每个位置的向量打分,而这个分数决定了当我们在一个特定的位置处理一个向量时,在输入的句子的其他部分应该给予多少关注。


图2 注意力权重计算

将权重 (A'_i) 与 (V) 加权相乘之后再相加得到 (y_i) 对应的自注意力输出向量,如图3所示。


图3 自注意力计算3

其他的计算方法与此相同,最终的计算结果如图4所示。其中 (Y) 与相应的 (X) 的维度相同,都是 (d)。整个注意力机制中只有 (W_K)、(W_Q) 以及 (W_V) 三个矩阵是可学习的参数。


图4 自注意力计算4

进一步地,既然每个输入向量 (x_i) 都是乘以相同的矩阵,那么可以将所有输入向量 (X) 整合为一个矩阵 (X),然后把三种输出向量 (K)、(Q) 以及 (V) 也整合成矩阵的形式分别为 (K)、(Q)、(V),比如 (K) 可以写为下式所示的形式:

[K = XW_K]

此时的输出矩阵就可以写成下式的结果:

[Y = softmax(\frac{QK^T}{\sqrt{d_k}})V]

这里的矩阵 (softmax(\frac{QK^T}{\sqrt{d_k}})) 就是注意力矩阵,代表着当处理当前位置向量时,其他位置的向量对当前位置向量的影响程度。

Transformer中的输出矩阵还乘以了一个缩放系数 (\frac{1}{\sqrt{d_k}}),(d_k) 是 (K) 的维度。所以最终的输出是下式所示的形式:

[Y = softmax(\frac{QK^T}{\sqrt{d_k}})V]

在这里使用矩阵运算的目的是可以提升计算效率。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号