深度学习模型Transformer核心组件—自注意力机制

news2025/3/12 6:47:38

第一章:人工智能之不同数据类型及其特点梳理
第二章:自然语言处理(NLP):文本向量化从文字到数字的原理
第三章:循环神经网络RNN:理解 RNN的工作机制与应用场景(附代码)
第四章:循环神经网络RNN、LSTM以及GRU 对比(附代码)
第五章:理解Seq2Seq的工作机制与应用场景中英互译(附代码)
第六章:深度学习架构Seq2Seq-添加并理解注意力机制(一)
第七章:深度学习架构Seq2Seq-添加并理解注意力机制(二)
第八章:深度学习模型Transformer初步认识整体架构
第九章:深度学习模型Transformer核心组件—自注意力机制

假设我们有一个想要翻译的输入句子:“这只动物没有穿过街道,因为它太累了。”

这句话中的“它”指的是什么?是指“街道”还是“动物”呢?对于人类来说,这是一个简单的问题,但对于算法而言则不然。

当模型处理到单词“它”时,自注意力机制允许模型将“它”与“动物”关联起来。

当模型处理每个单词(即输入序列中的每个位置)时,自注意力机制允许模型查看输入序列中的其他位置,以寻找有助于为该单词生成更好编码的线索。

如果你对RNN(循环神经网络)有所了解,可以想想维持隐藏状态是如何让RNN将其对之前处理过的词或向量的表示与当前正在处理的词结合起来的。自注意力就是Transformer用来将其他相关词的理解融入到当前正在处理的词中的方法。

一、自注意力机制工作原理

自注意力机制(Self-Attention),也称为内部注意力机制(Intra-Attention),是Transformer模型的核心组成部分。它允许模型在处理序列数据时,能够考虑到序列中不同位置之间的关系,从而有效地捕捉长距离依赖。
在这里插入图片描述

  1. 输入表示:假设我们有一个输入序列 X = ( x 1 , x 2 , . . . , x n ) X = (x_1, x_2, ..., x_n) X=(x1,x2,...,xn),其中每个 x i x_i xi都是一个向量(例如词嵌入)。

  2. 线性变换:对输入序列中的每个元素应用三个不同的线性变换(通过学习得到的权重矩阵),生成查询(Query)、键(Key)和值(Value)向量:

    • 查询向量 Q = X W Q Q = XW_Q Q=XWQ
    • 键向量 K = X W K K = XW_K K=XWK
    • 值向量 V = X W V V = XW_V V=XWV
      其中, W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 是模型需要学习的参数矩阵。
      在这里插入图片描述
  3. 计算注意力分数:对于序列中的每个位置 i i i,使用 Q K ⊤ QK^\top QK
    点积来计算当前位置与其他所有位置之间的相似度(即注意力分数Score)。
    在这里插入图片描述

    这可以通过以下公式完成:
    Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V
    这里, d k d_k dk 是键向量的维度,分母中的 d k \sqrt{d_k} dk 用于缩放,避免点积结果过大导致softmax函数饱和。
    在这里插入图片描述

  4. 加权求和:根据计算出的注意力分数,为每个位置的值向量分配权重,并进行加权求和,得到输出序列 Z Z Z
    在这里插入图片描述

二、自注意力推导示例

假设输入序列为两个词,维度 d k = 3 d_k=3 dk=3
X = [ 1 0 1 0 1 1 ] , W Q = [ 1 0 0 1 1 0 ] , W K = [ 0 1 1 0 0 1 ] , W V = [ 1 1 0 1 1 0 ] X = \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ \end{bmatrix}, \quad W^Q = \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 1 & 0 \\ \end{bmatrix}, \quad W^K = \begin{bmatrix} 0 & 1 \\ 1 & 0 \\ 0 & 1 \\ \end{bmatrix}, \quad W^V = \begin{bmatrix} 1 & 1 \\ 0 & 1 \\ 1 & 0 \\ \end{bmatrix} X=[100111],WQ= 101010 ,WK= 010101 ,WV= 101110

  1. 计算 Q、K、V
    Q = X W Q = [ 2 0 1 1 ] , K = X W K = [ 1 2 1 1 ] , V = X W V = [ 2 1 1 1 ] Q = XW^Q = \begin{bmatrix} 2 & 0 \\ 1 & 1 \end{bmatrix}, \quad K = XW^K = \begin{bmatrix} 1 & 2 \\ 1 & 1 \end{bmatrix}, \quad V = XW^V = \begin{bmatrix} 2 & 1 \\ 1 & 1 \end{bmatrix} Q=XWQ=[2101],K=XWK=[1121],V=XWV=[2111]

  2. 计算注意力分数
    Q K ⊤ 3 = 1 3 [ 4 2 2 2 ] \frac{QK^\top}{\sqrt{3}} = \frac{1}{\sqrt{3}} \begin{bmatrix} 4 & 2 \\ 2 & 2 \end{bmatrix} 3 QK=3 1[4222]

  3. Softmax 归一化
    Softmax ( [ 4 / 3 2 / 3 2 / 3 2 / 3 ] ) ≈ [ 0.88 0.12 0.5 0.5 ] \text{Softmax}\left(\begin{bmatrix} 4/\sqrt{3} & 2/\sqrt{3} \\ 2/\sqrt{3} & 2/\sqrt{3} \end{bmatrix}\right) \approx \begin{bmatrix} 0.88 & 0.12 \\ 0.5 & 0.5 \end{bmatrix} Softmax([4/3 2/3 2/3 2/3 ])[0.880.50.120.5]

  4. 加权求和
    Attention ( Q , K , V ) = [ 0.88 0.12 0.5 0.5 ] @ [ 2 1 1 1 ] = [ 0.88 × 2 + 0.12 × 1 0.88 × 1 + 0.12 × 1 0.5 × 2 + 0.5 × 1 0.5 × 1 + 0.5 × 1 ] = [ 1.88 1.0 1.5 1.0 ] \text{Attention}(Q, K, V) =\begin{bmatrix} 0.88 & 0.12 \\ 0.5 & 0.5 \end{bmatrix} @ \begin{bmatrix} 2 & 1 \\ 1 & 1 \end{bmatrix}= \begin{bmatrix} 0.88 \times 2 + 0.12 \times 1 & 0.88 \times 1 + 0.12 \times 1 \\ 0.5 \times 2 + 0.5 \times 1 & 0.5 \times 1 + 0.5 \times 1 \end{bmatrix} = \begin{bmatrix} 1.88 & 1.0 \\ 1.5 & 1.0 \end{bmatrix} Attention(Q,K,V)=[0.880.50.120.5]@[2111]=[0.88×2+0.12×10.5×2+0.5×10.88×1+0.12×10.5×1+0.5×1]=[1.881.51.01.0]

W Q W^Q WQ W K W^K WK W V W^V WV,这三个 W W W 怎么得来的,有什么作用,为什么要和 X 分别相乘

三、如何得到 W Q W^Q WQ W K W^K WK W V W^V WV

  • 初始化与学习:这些权重矩阵通常是在训练开始时随机初始化的,并通过反向传播算法在训练过程中不断调整以最小化损失函数。换句话说,它们是通过训练过程自动学习得到的,目的是为了优化模型在特定任务上的性能。

  • 作用

    • W Q W^Q WQ (Query Weight Matrix):用于将输入向量 X X X转换为查询向量 Q Q Q。查询向量代表了对于某个位置的信息“查询”或需求。
    • W K W^K WK (Key Weight Matrix):用于将输入向量 X X X转换为键向量 K K K。键向量是用来与查询向量进行比较,以确定哪些部分的信息是相关的。
    • W V W^V WV (Value Weight Matrix):用于将输入向量 X X X转换为值向量 V V V。值向量包含了实际的内容信息,这些信息将根据注意力分数被加权组合。

四、 W Q W^Q WQ W K W^K WK W V W^V WV为什么要与 X X X 分别相乘

  1. 不同视角的理解:通过使用不同的权重矩阵将相同的输入向量 X X X映射到不同的空间,模型可以从多个角度理解输入数据。例如,一个单词在一个句子中可能扮演多种角色(如主语、宾语等),通过不同的变换可以捕捉到这些多样的信息。

  2. 增强表达能力:这种机制极大地增强了模型的表达能力。因为即使面对相同的输入,通过不同的权重矩阵可以产生多样化的输出,从而使得模型能够更灵活地捕捉序列中的复杂模式和依赖关系。

  3. 实现自我关注机制:在自注意力机制中, Q Q Q K K K之间的交互(即点积操作)用于衡量输入序列中各元素间的相关性或相似度。然后,基于这些相似度得分对 V V V进行加权求和,以生成每个位置的新表示。这样做的好处是可以让模型在构建每个位置的表示时考虑到整个序列的信息,而不是仅仅局限于局部邻域内的信息。

总之, W Q W^Q WQ W K W^K WK W V W^V WV的存在是为了将输入向量映射到不同的表示空间,从而使得模型能够在计算自注意力时从多个维度理解输入数据。这一过程不仅提高了模型处理序列数据的能力,还使其能够有效地捕捉长距离依赖关系。

五、Q为什么要和 K 的转置 K T K^T KT求点积

(Q)与 K T K^T KT(即键(K)的转置)点积这一操作是为了计算注意力分数,也就是衡量输入序列中各个元素之间的相似度或关联程度。
在这里插入图片描述

  1. 计算相似度:在自注意力机制中,我们需要一种方法来量化序列中每个位置与其他所有位置之间的相关性或相似度。通过将查询向量 Q Q Q 与键向量 K K K 的转置 K T K^T KT 求点积,我们可以得到一个矩阵,其中每个元素代表了一个位置的查询向量与另一个位置的键向量之间的点积。这个点积可以看作是一种相似度得分,表示两个向量方向上的接近程度。

  2. 维度匹配:假设我们有一个输入序列长度为 n n n,每个位置对应的向量维度为 d k d_k dk 。那么, Q Q Q K K K 都是形状为 [ n , d k ] [n, d_k] [n,dk] 的矩阵。为了使 Q Q Q 中的每个查询向量能够与 K K K 中的每个键向量进行比较,我们需要将 K K K 转置成形状为 [ d k , n ] [d_k, n] [dk,n] 的矩阵。这样,当执行 Q × K T Q \times K^T Q×KT 时,结果就是一个形状为 [ n , n ] [n, n] [n,n] 的矩阵,其中每个元素 A i j A_{ij} Aij 表示第 i i i 个位置的查询向量与第 j j j 个位置的键向量之间的相似度得分。

  3. 生成注意力权重:一旦得到了相似度得分矩阵,接下来会通过softmax函数将其转换为概率分布,这些概率就是所谓的“注意力权重”。它们决定了在计算最终输出时,每个位置的值向量 V V V 应该被赋予多少权重。换句话说,它决定了哪些位置的信息对于当前位置最为重要。

  4. 加权求和得到输出:最后,使用上述获得的注意力权重对值向量 V V V 进行加权求和,从而产生新的表示形式,该表示综合了整个序列的信息,并且更加侧重于那些被认为更重要的位置。

综上所述, Q Q Q K T K^T KT 点积是自注意力机制中用于计算输入序列中各个元素之间相似度的核心步骤。这一步骤允许模型动态地评估并整合来自序列内不同位置的信息,从而捕捉到复杂的模式和依赖关系。

六、 Q K ⊤ QK^\top QK为什么要除以 d k \sqrt{d_k} dk

防止梯度过大或过小

  1. 梯度消失或爆炸问题:当输入向量的维度较高时,点积的结果可能会非常大或者非常小。这会导致softmax函数的输出变得极端(接近0或1),从而引发梯度消失或梯度爆炸的问题。这是因为softmax函数对输入的尺度非常敏感,特别是在其输入值较大或较小时。

  2. 归一化效果:通过除以 d k \sqrt{d_k} dk ,可以有效地将点积的结果控制在一个合理的范围内。这样做有助于保持softmax函数输入值的稳定性,使其不会因为输入过大而饱和到极端值,也不会因为输入过小而导致所有输出几乎相同的情况。

实践中的影响

  • 训练稳定性:适当缩放可以提高训练过程的稳定性,使得模型更容易收敛。
  • 性能提升:通过这种方式,可以改善模型的表现,因为它有助于维持每一层输入的尺度一致,避免了某些层的激活值过于膨胀或收缩。

示例数据

第一组:未缩放时 - 注意力权重趋向极端分布

假设我们有如下输入序列,每个词被表示为一个4维向量,并且这些向量之间的差异较大:

  • x 1 = [ 1 , 2 , 3 , 4 ] x_1 = [1, 2, 3, 4] x1=[1,2,3,4]
  • x 2 = [ 5 , 6 , 7 , 8 ] x_2 = [5, 6, 7, 8] x2=[5,6,7,8]
  • x 3 = [ 9 , 10 , 11 , 12 ] x_3 = [9, 10, 11, 12] x3=[9,10,11,12]

这些向量通过线性变换得到查询 Q Q Q、键 K K K(这里为了简化,直接使用原始向量作为 Q Q Q K K K)。

计算 Q K ⊤ QK^\top QK
Q K ⊤ = [ 1 2 3 4 5 6 7 8 9 10 11 12 ] [ 1 5 9 2 6 10 3 7 11 4 8 12 ] = [ 30 70 110 70 174 278 110 278 446 ] QK^\top = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{bmatrix} \begin{bmatrix} 1 & 5 & 9 \\ 2 & 6 & 10 \\ 3 & 7 & 11 \\ 4 & 8 & 12 \end{bmatrix} = \begin{bmatrix} 30 & 70 & 110 \\ 70 & 174 & 278 \\ 110 & 278 & 446 \end{bmatrix} QK= 159261037114812 123456789101112 = 307011070174278110278446

应用Softmax函数到每一行上,得到注意力权重矩阵:
softmax ( Q K ⊤ ) ≈ [ 0.001 0.018 0.981 0.000 0.002 0.998 0.000 0.000 1.000 ] \text{softmax}(QK^\top) \approx \begin{bmatrix} 0.001 & 0.018 & 0.981 \\ 0.000 & 0.002 & 0.998 \\ 0.000 & 0.000 & 1.000 \end{bmatrix} softmax(QK) 0.0010.0000.0000.0180.0020.0000.9810.9981.000
可以看到,在这种情况下,未经缩放的点积结果导致了非常极端的注意力权重分布。特别是对于第三个位置,几乎所有的注意力都集中在自身上,而忽略了其他位置的信息。

第二组:缩放后 - 权重分布更平缓

现在考虑相同的输入序列,但在计算 Q K ⊤ QK^\top QK后除以 d k \sqrt{d_k} dk ,其中 d k = 4 d_k=4 dk=4,因此缩放因子是 1 2 \frac{1}{2} 21

重新计算 Q K ⊤ / d k QK^\top/\sqrt{d_k} QK/dk
Q K ⊤ d k = 1 2 × [ 30 70 110 70 174 278 110 278 446 ] = [ 15 35 55 35 87 139 55 139 223 ] \frac{QK^\top}{\sqrt{d_k}} = \frac{1}{2} \times \begin{bmatrix} 30 & 70 & 110 \\ 70 & 174 & 278 \\ 110 & 278 & 446 \end{bmatrix} = \begin{bmatrix} 15 & 35 & 55 \\ 35 & 87 & 139 \\ 55 & 139 & 223 \end{bmatrix} dk QK=21× 307011070174278110278446 = 153555358713955139223

接着应用Softmax函数到每一行上,得到调整后的注意力权重矩阵:
softmax ( Q K ⊤ d k ) ≈ [ 0.011 0.269 0.720 0.002 0.092 0.906 0.000 0.024 0.976 ] \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) \approx \begin{bmatrix} 0.011 & 0.269 & 0.720 \\ 0.002 & 0.092 & 0.906 \\ 0.000 & 0.024 & 0.976 \end{bmatrix} softmax(dk QK) 0.0110.0020.0000.2690.0920.0240.7200.9060.976

对比与解释

  • 未缩放的情况:在第一组的例子中,由于点积结果非常大,导致Softmax输出的概率分布极其不均衡,某些位置几乎完全占据了注意力权重,这不利于模型学习序列中的复杂依赖关系。

  • 缩放的情况:第二组的数据展示了当应用缩放因子后,Softmax函数产生的概率分布更加平滑。虽然第三个位置仍然获得了较高的注意力权重,但相比于未缩放情况下的极端分布,这里的权重分布明显更加合理和平缓,允许模型更好地捕捉不同位置之间的关系。

七、不缩放为什么会导致梯度消失?

  1. Softmax函数的导数
    Softmax函数的导数依赖于其自身的输出。具体来说,如果某个位置的Softmax输出接近1,则该位置对应的梯度将会很小,因为Softmax函数在其输出接近1的地方几乎是平坦的。相反,对于那些输出接近0的位置,其梯度也会非常小,因为这些位置对最终输出的影响微乎其微。

  2. 梯度传播
    在反向传播过程中,梯度通过网络层逐层传递。如果某一层的激活值(在这里是Softmax的输出)导致梯度变得非常小,那么这一小部分梯度将被进一步传播到前面的层,导致前层接收到的用于参数更新的信号极其微弱。这种情况称为“梯度消失”。

  3. 极端分布的影响
    当注意力权重分布极为不均衡(例如,一个位置几乎占据了所有注意力,而其他位置的注意力权重接近0),这会导致大部分路径上的梯度变得极小。由于梯度是参数更新的关键依据,过小的梯度意味着模型难以有效调整其权重以适应训练数据,从而可能导致训练停滞或者学习速度显著减慢。

上面的例子,未缩放的情况
softmax ( Q K ⊤ ) ≈ [ 0.001 0.018 0.981 0.000 0.002 0.998 0.000 0.000 1.000 ] \text{softmax}(QK^\top) \approx \begin{bmatrix} 0.001 & 0.018 & 0.981 \\ 0.000 & 0.002 & 0.998 \\ 0.000 & 0.000 & 1.000 \end{bmatrix} softmax(QK) 0.0010.0000.0000.0180.0020.0000.9810.9981.000

在这种情况下,我们可以观察到第三行的注意力权重几乎完全集中在最后一个位置(即权重为1.000)。这意味着对于第三个位置,它几乎不会考虑来自其他位置的信息,这不仅限制了模型捕捉长距离依赖的能力,而且由于Softmax输出接近1,其梯度也将非常小。具体来说:

  • 对于第三行,Softmax输出为[0.000, 0.000, 1.000],这意味着在反向传播过程中,对于第一和第二位置,由于它们的注意力权重接近0,所以从损失函数回传到这两个位置的梯度也非常小。
  • 同样地,对于那些获得较高注意力权重的位置(如第三个位置),尽管它们会接收到来自后续层的一些梯度信息,但由于Softmax在其输出接近1的区域几乎是平坦的,因此这部分梯度也非常有限。

这种现象在整个网络中传播时,会导致前面的层接收到的梯度信号极其微弱,进而导致梯度消失问题,使得模型难以有效地更新其参数。

八、为什么是除以 d k \sqrt{d_k} dk ,不是其他其他变量或者数字

在Transformer模型中,将查询(Q)和键(K)的点积结果除以 d k \sqrt{d_k} dk 的主要原因是为了控制点积的方差,防止因维度 d k d_k dk增大导致Softmax函数输入值过大而引发的梯度消失问题

1. 数学推导:点积的方差分析

假设查询向量 Q Q Q和键向量 K K K的每个元素是独立同分布的随机变量,均值为0,方差为1:
E [ Q i ] = E [ K j ] = 0 , Var ( Q i ) = Var ( K j ) = 1. \mathbb{E}[Q_i] = \mathbb{E}[K_j] = 0, \quad \text{Var}(Q_i) = \text{Var}(K_j) = 1. E[Qi]=E[Kj]=0,Var(Qi)=Var(Kj)=1.

则点积 Q ⋅ K = ∑ i = 1 d k Q i K i Q \cdot K = \sum_{i=1}^{d_k} Q_i K_i QK=i=1dkQiKi的方差为:
Var ( Q ⋅ K ) = ∑ i = 1 d k Var ( Q i K i ) ( 独立项方差相加 ) = d k ⋅ E [ Q i 2 K i 2 ] ( 因  E [ Q i ] = E [ K i ] = 0 ) = d k ⋅ Var ( Q i ) Var ( K i ) ( 独立性 ) = d k ⋅ 1 ⋅ 1 = d k . \begin{aligned} \text{Var}(Q \cdot K) &= \sum_{i=1}^{d_k} \text{Var}(Q_i K_i) \quad (\text{独立项方差相加}) \\ &= d_k \cdot \mathbb{E}[Q_i^2 K_i^2] \quad (\text{因}\ \mathbb{E}[Q_i] = \mathbb{E}[K_i] = 0) \\ &= d_k \cdot \text{Var}(Q_i) \text{Var}(K_i) \quad (\text{独立性}) \\ &= d_k \cdot 1 \cdot 1 = d_k. \end{aligned} Var(QK)=i=1dkVar(QiKi)(独立项方差相加)=dkE[Qi2Ki2]( E[Qi]=E[Ki]=0)=dkVar(Qi)Var(Ki)(独立性)=dk11=dk.

结论:点积的方差与维度 d k d_k dk成正比,即维度越大,点积值的波动范围越大。

2. Softmax函数的敏感性

Softmax函数对输入值的绝对大小非常敏感。当输入值 z i z_i zi的绝对值较大时,输出会趋向于极端值(如0或1),导致梯度消失:
Softmax ( z i ) = e z i ∑ j e z j , ∂ Softmax ( z i ) ∂ z j = Softmax ( z i ) ( δ i j − Softmax ( z j ) ) . \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}}, \quad \frac{\partial \text{Softmax}(z_i)}{\partial z_j} = \text{Softmax}(z_i)(\delta_{ij} - \text{Softmax}(z_j)). Softmax(zi)=jezjezi,zjSoftmax(zi)=Softmax(zi)(δijSoftmax(zj)).
若某个 z i z_i zi远大于其他值, Softmax ( z i ) ≈ 1 \text{Softmax}(z_i) \approx 1 Softmax(zi)1,梯度趋近于零,阻碍参数更新。

3. 缩放因子的选择

为了稳定点积的方差,需将点积结果缩放,使其方差与 d k d_k dk无关。由于点积的方差为 d k d_k dk,标准差为 d k \sqrt{d_k} dk ,因此选择除以 d k \sqrt{d_k} dk
Scaled Dot-Product = Q K ⊤ d k . \text{Scaled Dot-Product} = \frac{QK^\top}{\sqrt{d_k}}. Scaled Dot-Product=dk QK.
效果

  • 方差归一化:缩放后的方差为 d k ( d k ) 2 = 1 \frac{d_k}{(\sqrt{d_k})^2} = 1 (dk )2dk=1,与维度无关。
  • 数值稳定:无论 d k d_k dk多大,点积值被限制在合理范围内,避免Softmax输入过大。
  • 梯度保留:Softmax输出的分布更平缓,保留有效的梯度流动。

4. 为什么不是其他缩放方式?

  1. 除以 d k d_k dk

    • 方差变为 d k d k 2 = 1 d k \frac{d_k}{d_k^2} = \frac{1}{d_k} dk2dk=dk1,随维度增加急剧减小,导致数值过小。
    • 引发梯度不稳定,尤其在高维度下。
  2. 使用常数(如2)

    • 无法适应不同维度的模型,导致低维时缩放不足,高维时缩放过度。
  3. 其他函数(如 log ⁡ d k \log d_k logdk

    • 缺乏数学依据,增加复杂性且无实际收益。

选择 d k \sqrt{d_k} dk 的优势

  • 直接对应于点积的标准差,数学上自然。
  • 保持方差恒为1,适应任意维度。
  • 实现简单,计算高效。

5. 实际训练验证

  • 未缩放时:当 d k = 64 d_k=64 dk=64,点积值可能达到数十或数百,Softmax输出接近one-hot,梯度消失。
  • 缩放后:点积值被限制在 [ − 8 , + 8 ] [-8, +8] [8,+8](假设原始值在 [ − 64 , + 64 ] [-64, +64] [64,+64]),Softmax输出保留合理分布(如 [ 0.7 , 0.2 , 0.1 ] [0.7, 0.2, 0.1] [0.7,0.2,0.1]),梯度有效传播。
操作数学意义实际影响
计算 Q K ⊤ QK^\top QK衡量相似度生成原始注意力分数
除以 d k \sqrt{d_k} dk 标准差归一化稳定数值范围,防止梯度消失
应用Softmax概率归一化生成注意力权重

关键结论

除以 d k \sqrt{d_k} dk 是唯一能同时满足以下条件的缩放方式:

  1. 方差稳定:控制点积方差为1,与维度无关。
  2. 计算高效:无需复杂运算,直接缩放。
  3. 训练友好:确保Softmax输入在合理范围,保留梯度流动性。

九、总结

自注意力机制让Transformer能够灵活地处理序列数据中的每一个元素,并且可以同时考虑整个序列的信息,这对于理解句子结构、捕捉长距离依赖关系等非常有帮助。此外,由于其并行化特性,相较于RNN/LSTM等序列模型,Transformer在处理长序列时更加高效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2311651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nature genetics | SCENT:单细胞多模态数据揭示组织特异性增强子基因图谱,并可识别致病等位基因

–https://doi.org/10.1038/s41588-024-01682-1 Tissue-specific enhancer–gene maps from multimodal single-cell data identify causal disease alleles 研究团队和单位 Alkes L. Price–Broad Institute of MIT and Harvard Soumya Raychaudhuri–Harvard Medical S…

基于数据挖掘的疾病数据可视化分析与预测系统

【大数据】基于数据挖掘的疾病数据可视化分析与预测系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 📌 技术核爆点:✔️ Python全栈开发Flask高能框架 ✔️ 爬虫技术…

《AI大模型专家之路》No.2:用三个模型洞察大模型NLP的基础能力

用三个模型洞察大模型NLP的基础能力 一、项目概述 在这个基于AI构建AI的思维探索项目中,我们实现了一个基于BERT的中文AI助手系统。该系统集成了文本分类、命名实体识别和知识库管理等功能,深入了解本项目可以让读者充分了解AI大模型训练和推理的基本原…

Spring Boot集成Minio笔记

一、首先配置MinIO 1、MinIO新建Bucket&#xff0c;访问控制台如图 创建访问密钥(就是账号和密码) 二、集成mino添加Minio客户端依赖 1.maven构建方式在pom.xml引入jar <dependency><groupId>io.minio</groupId><artifactId>minio</artifactI…

HCIA-路由重分布

一、路由重分布是指在同一个网络中&#xff0c;将一种路由协议所学习到的路由信息导入到另一种路由协议中的技术&#xff0c;实现通信。 二、实验 1、配置 AR1AR2AR3sy sy AR1 int g 0/0/1 ip add 192.168.1.254 24 int g 0/0/0 ip add 10.1.1.1 24 rip version 2 net 192.16…

【项目】nnUnetv2复现

作者提出一种nnUNet(no-new-Net)框架,基于原始的UNet(很小的修改),不去采用哪些新的结构,如相残差连接、dense连接、注意力机制等花里胡哨的东西。相反的,把重心放在:预处理(resampling和normalization)、训练(loss,optimizer设置、数据增广)、推理(patch-based…

【大学生体质】智能 AI 旅游推荐平台(Vue+SpringBoot3)-完整部署教程

智能 AI 旅游推荐平台开源文档 项目前端地址 ☀️项目介绍 智能 AI 旅游推荐平台&#xff08;Intelligent AI Travel Recommendation Platform&#xff09;是一个利用 AI 模型和数据分析为用户提供个性化旅游路线推荐、景点评分、旅游攻略分享等功能的综合性系统。该系统融合…

TCP7680端口是什么服务

WAF上看到有好多tcp7680端口的访问信息 于是上网搜索了一下&#xff0c;确认TCP7680端口是Windows系统更新“传递优化”功能的服务端口&#xff0c;个人理解应该是Windows利用这个TCP7680端口&#xff0c;直接从内网已经具备更新包的主机上共享下载该升级包&#xff0c;无需从微…

恭喜!《哪吒2》明天将荣登世界影坛第六!目前仅差1.81亿元

全球总票房为为20.27亿美元&#xff01;3月8日将荣登世界影坛第六宝座&#xff01; 中国票房 内地票房 中国电影票房、灯塔、猫眼三大数据源加权平均得出《哪吒2》中国内地总票房为144.26亿元人民币。 港澳票房 目前港澳地区没有新的数据显示&#xff0c;按3月6日1905电影网…

e2studio开发RA4M2(15)----配置RTC时钟及显示时间

e2studio开发RA4M2.15--配置RTC时钟及显示时间 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置SWD调试口设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user…

Flink深入浅出之04:时间、水印、TableSQL

深入理解Flink的waterMark的机制、Flink Table和SQL开发 3️⃣ 目标 掌握WaterMark的的原理掌握WaterMark的运用掌握Flink Table和SQL开发 4️⃣ 要点 &#x1f4d6; 1. Flink中的Time概念 对于流式数据处理&#xff0c;最大的特点是数据上具有时间的属性特征 Flink根据时…

MongoDB Compass 使用说明

MongoDB Compass 使用说明 安装工具栏按钮详细介绍Connect(连接)1. New Window&#xff08;新窗口&#xff09;2. Disconnect&#xff08;断开连接&#xff09;3. Import Saved Connections&#xff08;导入保存的连接&#xff09;4. Export Saved Connections&#xff08;导出…

Halcon 算子 一维码检测识别、项目案例

首先我们要明白码的识别思路 把窗口全部关闭读取新的图片图像预处理创建条码模型设置模型参数搜索模型获取条码结果显示条码结果 图像预处理和条码增强 对比度太低&#xff1a; scale_image&#xff08;或使用外部程序scale_image_range&#xff09;,增强图像的对比度图像模糊…

信号完整性基础:高速信号的扩频时钟SSC测试

扩频时钟 SSC 是 Spread Spectrum Clock 的英文缩写&#xff0c;目前很多数字电路芯片都支持 SSC 功能&#xff0c;如&#xff1a;PCIE、USB3.0、SATA 等等。那么扩频时钟是用来做什么的呢&#xff1f; SSC背景&#xff1a; 扩频时钟是出于解决电磁干扰&#xff08;EMI&#…

stm32移植LCD2002驱动

介绍 LCD2002支持20X2个字符串显示&#xff0c;引脚功能和读写时序跟LCD1602都很像 LCD类型&#xff1a;字符点阵 点 阵 数&#xff1a;202 外形尺寸&#xff1a;116.0mm37.0mm&#xff08;长宽&#xff09; 视域尺寸&#xff1a;83.0mm18.6mm 点 距 离&#xff1a;0.05mm…

OpenCV计算摄影学(18)平滑图像中的纹理区域同时保留边缘信息函数textureFlattening()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::textureFlattening 是 OpenCV 中用于图像处理的一个函数&#xff0c;旨在平滑图像中的纹理区域&#xff0c;同时保留边缘信息。该技术特别适…

“此电脑”中删除WPS云盘方法(百度网盘通用)

&#x1f4e3;此方法适用于卸载WPS云盘后&#xff0c;WPS云盘图标依然在此电脑中显示的问题。 原理&#xff1a;通过注册来进行删除 步骤&#xff1a; WIN键R,打开运行窗口&#xff0c;输入regedit命令&#xff0c;来打开【注册表编辑器】&#xff1b; 从左侧&#xff0c;依…

Agent革命:Manus如何用工作流拆解掀起AI生产力革命

一、现象级产品的诞生背景 2025年3月6日&#xff0c;一款名为Manus的AI产品在技术圈引发地震式传播。其官方测试数据显示&#xff1a;在GAIA基准测试中&#xff0c;基础任务准确率达86.5%&#xff08;接近人类水平&#xff09;&#xff0c;中高级任务完成率突破57%。这标志着A…

四款GIS工具箱软件解析:满足企业多样化空间数据需求

概述 随着地理信息系统&#xff08;GIS&#xff09;在城市规划、环境监测、资源管理等领域的广泛应用&#xff0c;各种GIS工具箱软件不断涌现&#xff0c;为用户提供了强大的数据处理、空间分析和地图制图功能。本文将为大家介绍4款GIS工具箱软件&#xff0c;这些软件各具特色…

After Effects的图钉与关键帧动画

姜 子 博 引言 在数字媒体时代&#xff0c;动态图形和视觉效果在信息传播和表达中扮演着越来越重要的角色。After Effects 作为行业领先的软件&#xff0c;提供了丰富的工具和功能&#xff0c;帮助用户创作出令人惊叹的视觉作品。图钉工具和关键帧动画是 AE 中实现复杂动画效…