掘金 人工智能 5小时前
transformer讲解
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入剖析了Transformer模型中的关键概念,包括Q、K、V矩阵的含义和作用,以及Multi-head Attention机制的实现。同时,详细介绍了Padding Mask和Causal Mask两种Mask操作,解释了它们在处理变长输入和保证生成顺序方面的重要作用。此外,还探讨了Encoder-Decoder Attention的输入来源和核心作用,以及位置编码的原理和意义,揭示了Transformer模型捕捉序列信息的能力。

🔑 **Q、K、V矩阵**: Q代表查询信息,K代表被查询信息,V代表被查询到的内容。通过计算Q和K的点积,可以得到两条信息的相似程度,再经过softmax归一化得到权重矩阵,用于加权V,从而提取关键信息。

🤔 **Multi-head Attention**: 通过h个线性变换计算Q、K、V,得到h组不同的Q、K、V,分别计算attention,然后将h个结果拼接并通过线性变换映射回原空间,从而在多个子空间中提取信息。

🛡️ **Mask机制**: Padding Mask用于处理变长输入,通过掩盖填充位置来避免无效计算;Causal Mask用于保证生成顺序,阻止模型在预测第i+1个位置时访问到未来的信息,确保模型按顺序生成。

📍 **位置编码**: Transformer模型通过位置编码将单词的位置信息融入词向量中,使得模型能够学习词序信息。位置编码具有线性关系,使得模型能够捕捉序列中元素之间的相对位置关系。

💡 **Encoder-Decoder Attention**: Decoder的Query来自Decoder的上一层输出,Key和Value来自Encoder的最终输出。通过计算Q和K的相似度,模型学习如何从源序列中检索与当前目标位置相关的信息。

理解Q、V、V

  dot得到这两条信息的相似程度,除以dk\sqrt{d_k}训练梯度稳定,最后我们用softmax函数对结果进行归一化,也就是让所有元素的和为1,现在我们得到了一个权重矩阵。

除以dk\sqrt{d_k}训练梯度稳定,为什么?

  在我们的两个向量维度非常大的时候, 点乘结果的方差也会很大(元素差距很大),在点乘的值很大softmax的梯度趋近于0,在原文中有提到 假设q和k的元素是相互独立维度为dk的随机变量,它们的平均值是0, 方差为1,那么q和k的点乘的平均值为0, 方差为dk。如果將点乘的结果进行缩放操作,也就是除以dk,就可以有效控制方差从dk回到1,也就是有效控制梯度消失的问题

我们再复习一下海王选妃的流程 输入X和三个矩阵相乘,分别得到三个矩阵Q,K,V:

Multi-headattention

  Multi-headattention是通过h个线性变换来计算Q,K,V,也就是用h组不同的Wq,Wk,Wv和X相乘,得到h组Q,K,V,我们再分别用这h组Q,K,V计算attention, 得到h个矩阵(z1znz_1……z^n)

将h个z矩阵拼接起来,也就是经过一个线性变换,把多个子空间的结果央射到原来的空间得到结果Z

Add & Norm

FNN

FFN(x)=max(0,xW1+b1)W2+b2\text{FFN}(x) = \max(0, \, xW_1 + b_1)W_2 + b_2

max(0,)\max(0, \cdot) 是 ReLU(Rectified Linear Unit)激活函数,保留正值,将负值置零,引入非线性。

最后multi-head attention提炼得到的向量,用一个两层的神经网络进一步提取它的特征,Encoder的任务就算完成啦。

decoder 解码

masked

  在decoder的第一个注意力层比之前encoder中的注意力注意力层还多了一个(masked前缀)mask的两种操作:

Padding Mask

1. 为什么需要 Padding Mask?

2. Padding Mask 的核心思想

3. 实现步骤

假设原始序列为 [3, 5, 7],期望长度 max_length=5,填充后为:

padded_sequence = [3, 5, 7, 0, 0]  # 填充符为 0

(2) 生成 Padding Mask标记填充位置为 True(需要掩码),非填充位置为 False

mask = [False, False, False, True, True]  # 对应填充后的序列 [3,5,7,0,0]

因果掩码(Sequence)

  在翻译一句话的时候,我们希望transformer按顺序来翻译它, 先翻译完前i个单词,再去预测第i+1个单词,这样的话,我们需要阻止它去注意还不该翻译到的单词,也就是每个单词只能注意到自己和自己之前的单词 。这就需要因果掩码了

因果掩码的作用

2. 因果掩码的实现

(1) 掩码形式

因果掩码是一个 下三角矩阵,形状为 (seq_len, seq_len),其中:

示例(序列长度=4):Mask=[0000000000]\text{Mask} = \begin{bmatrix}0 & -\infty & -\infty & -\infty \\0 & 0 & -\infty & -\infty \\0 & 0 & 0 & -\infty \\0 & 0 & 0 & 0 \\\end{bmatrix}

(2) 应用方法

  在计算自注意力分数后,将掩码添加到注意力分数矩阵上,再通过 softmax 计算注意力权重。由于 softmax 会将 -∞ 映射为 0,上三角部分的未来位置权重被清零。

Masked Scores=Scores+Mask

Transformer 中self-attention以及mask操作的原理以及代码解析_mask self attention-CSDN博客

注意力 Encoder-Decoder Multi-head Attention

1. Encoder-Decoder Attention的输入来源

核心作用

位置编码

  transform本来没有类似于RNN捕捉序列的能力,但如果我们将输入的文字编码成词向量的时候结合单词的位置信息,它就可以学习词序信息了。

PE的计算结果是一个行数与序列数相等,列数和模型维度相等的矩阵,pos代表的是目前的token在序列的位置,dmodel代表模型的维度

相对距离的线性表示

  对任意相对距离 k,PEpos+k可用PEpos的线性函数表示,所以两个位置点积反映相对距离,从而对注意力产生影响。

参考资料:

Transformer使我快乐(下)_哔哩哔哩_bilibili

Transformer学习资源&顺序推荐 - 有氧 - 博客园

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Transformer QKV Attention Mask 位置编码
相关文章