admin 管理员组

文章数量: 1086019


2024年3月28日发(作者:php学习经典实例)

self-attention的公式

Self-attention机制,也被称为自注意力机制,是一种用于自然语

言处理任务中的注意力机制,最初由《Attention is All You Need》一

文提出,并被广泛应用于Transformer模型中。Self-attention机制通

过计算查询(query)、键值对(key-value pair)之间的关联性来获取

每个位置上的表示。

Self-attention的计算过程可以分为三个步骤:查询计算、关联性

计算和加权求和。下面将详细介绍每个步骤及其对应的公式。

在查询计算中,我们通过将输入序列的每个位置的特征与查询向量进

行内积得到查询的向量表示。查询向量可以看作是Self-attention机制

用于获取关联性的工具。假设输入矩阵为$X$,查询向量为$Q$,则查询计

算公式为:

$Q = X cdot W_q$

2. 关联性计算(Attention Calculation):

在关联性计算中,我们通过计算查询向量与键向量之间的相似度来度

量它们之间的关联性。具体来说,我们使用查询向量乘以键权重矩阵的转

置来计算关联矩阵$S$。假设键权重矩阵为$W_k$,则关联性计算公式为:

$S = Q cdot (X cdot W_k)^T$

3. 加权求和(Weighted Summation):

在加权求和阶段,我们将关联矩阵$S$进行softmax归一化处理,以

获得每个位置上的注意力权重。然后,我们将注意力权重乘以值矩阵$X$,

并将每个位置的加权和作为该位置的输出表示。值矩阵用于将不同的信息

传递给不同的位置。假设值权重矩阵为$W_v$,输出矩阵为$Y$,则加权求

和的公式为:

$Y = softmax(S) cdot (X cdot W_v)$

需要注意的是,在实际应用中,为了提高模型的表达能力,通常会进

行多头注意力(multi-head attention)的操作,即将查询、键和值分成

多个子空间,并对每个子空间进行独立的Self-attention操作。这可以

通过将权重矩阵$W_q$、$W_k$ 和$W_v$拆分为多个子矩阵来实现。

总结起来,Self-attention机制通过查询计算、关联性计算和加权

求和来获取与每个位置相关的表示。通过学习查询、键和值之间的关系,

Self-attention能够自动地对输入的序列进行集中处理,从而获得更好

的表示结果。在自然语言处理任务中,Self-attention机制的应用已经

取得了很多的成功,并在Transformer模型中展现出了强大的能力。


本文标签: 查询 向量 计算 位置 矩阵