NLP-图解self-Attention


一、self-Attention是什么?

假设以下句子是我们要翻译的输入句子:

” The animal didn’t cross the street because it was too tired”

这句话中的“它”指的是什么?它指的是街道还是动物?这对人类来说是一个简单的问题,但对算法来说却不是那么简单。当模型处理 “it” 这个词时,self-attention 允许它把 “it” 和 “animal” 联系起来。

二、 self-Attention实现

第一步: 把输出进行编码得到词向量,构建三个矩阵分别来查询当前词跟其他词的关系,以及特征向量的表达。
在这里插入图片描述

通过将所有输入的词向量拼接到矩阵 X X X 中,并将其乘以我们训练的权重矩阵( W Q W^Q WQ W K W^K WK W V W^V WV)来做实现。
在这里插入图片描述
其中:
Q : q u e r y Q:query Q:query ,要去查询的
K : k e y K:key K:key , 等待被查的
V : v a l u e V:value V:value, 实际的特征信息

第二步: 计算每一个 token 和句子中的每一个 token的相关性。假设我们正在计算第一个单词“Thinking” 的相关性,需要用 “Thinking” 的查询向量 q 1 q_1 q1 分别和 “Thinking”与"Machines" 的 key 值做内积,内积越大,相关性越高。
在这里插入图片描述

在这里插入图片描述

第三步: 防止内积过大, 将上述结果除以 d k d_k dk 的平方根。然后通过 softmax 操作传递结果。Softmax 将分数归一化,因此它们都是正数并且加起来为 1, 表示分数的重要性。

其中: d k d_k dk Q Q Q K K K 矩阵的列数,即句子的长度。
在这里插入图片描述

这个 softmax 分数决定了每个单词在这个位置上的表达量。显然,这个位置的单词将具有最高的 softmax 分数,但有时关注与当前单词相关的另一个单词很有用。
在这里插入图片描述

第四步 将每个 value 向量乘以 softmax 分数并求和。这里是保持我们想要关注的单词的值不变,并忽略不相关的单词(例如,通过将它们乘以像 0.001 这样的微小数字)。
在这里插入图片描述

在这里插入图片描述

总结: 每个词的Q会跟整个序列中每一个K计算得分,然后基于得分再分配特征。
在这里插入图片描述
在这里插入图片描述

三、 Multi-Head Attention实现

一组 Q 、 K 、 V Q、K、V QKV 得到了一组当前词的特征表达,类似卷积神经网络中的filter能不能提取多种特征呢?

多头注意力层提供了多个“表示子空间”。正如我们接下来将看到的,通过多头注意力,我们有多组一组 Q 、 K 、 V Q、K、V QKV 权重矩阵(Transformer 使用八个注意力头) . 这些集合中的每一个都是随机初始化的。在训练之后,每个集合用于将输入的词向量投影到不同的表示子空间中。
在这里插入图片描述

如果我们进行与上述相同的自注意力计算,只是使用不同的权重矩阵进行八次不同的计算,我们最终会得到八个不同的 Z 矩阵:
在这里插入图片描述

我们连接这些矩阵,然后将它们乘以一个额外的权重矩阵 W O W^O WO,得到一个矩阵:
在这里插入图片描述

总结:

在这里插入图片描述

<think>好的,用户需要查找关于self-attention自注意力机制的流程图或图解。首先,我需要回忆相关引用内容。引用[1]、[2]、[3]都提到了自注意力机制的基本概念,其中引用[2]提到有图解,可能包含流程图。引用[4]提到图片输入的处理,但可能不相关。需要确认是否有具体的步骤分解。 根据引用[2],图解自注意力机制详细解释了输入相关性处理,可能包含流程图步骤。另外,用户可能需要从输入到输出的流程,包括查询、键、值的计算,注意力权重生成等步骤。需要将这些步骤用流程形式呈现,并引用相关来源。同时,用户可能需要Python示例,但问题中没有明确提到代码,所以可能不需要。需要确保回答结构清晰,包含流程图的文字描述,并附上引用标识。最后生成相关问题,比如步骤、应用、权重计算等。</think>关于自注意力机制(Self-Attention)的流程图和解图,以下是其核心步骤的文字描述与图解说明: --- ### **Self-Attention 流程图解** 1. **输入向量生成** 输入序列的每个词(或位置)通过嵌入层转换为向量,例如输入序列 $X = [x_1, x_2, ..., x_n]$,每个 $x_i$ 是维度为 $d$ 的向量。 2. **计算查询(Query)、键(Key)、值(Value)** 通过权重矩阵 $W^Q, W^K, W^V$ 对输入向量进行线性变换: $$ Q = X \cdot W^Q, \quad K = X \cdot W^K, \quad V = X \cdot W^V $$ 3. **注意力权重计算** 通过查询 $Q$ 和键 $K$ 的点积计算相似度,并缩放后应用 Softmax 归一化: $$ \text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) \cdot V $$ 其中 $d_k$ 是键向量的维度,用于防止梯度消失[^3]。 4. **输出生成** 注意力权重与值向量 $V$ 加权求和,得到每个位置的最终输出向量。 --- ### **图解说明** 下图展示了 Self-Attention 的流程(文字描述): 1. **输入嵌入**:将输入词转换为向量。 2. **线性变换**:生成 $Q, K, V$。 3. **相似度计算**:通过 $QK^T$ 计算词与词之间的关联强度。 4. **权重归一化**:Softmax 将相似度转换为概率分布。 5. **加权输出**:将权重与值向量结合,得到每个位置的上下文感知表示。 具体可视化可参考引用[^2]中的图解,展示了输入序列如何通过自注意力机制建立全局依赖关系。 --- ### **核心特点** - **并行计算**:所有位置的查询、键、值可同时计算,提升效率。 - **长程依赖建模**:直接捕捉序列中任意两个位置的关系[^1]。 - **应用场景**:自然语言处理(如 Transformer)、计算机视觉(需将图像展平为向量)[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大虾飞哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值