机器翻译Transformer框架分析笔记 | Attention is all you need

本文深入分析Transformer模型,详细解读Encoder-Decoder Attention、Self-attention机制、多头注意力、Positional Encoding以及训练过程中的技巧,揭示Transformer如何在机器翻译任务中发挥作用。通过对每一层的解析,展示Transformer如何捕获全局信息并处理长时依赖问题,同时探讨其优缺点及潜在的应用局限性。
摘要由CSDN通过智能技术生成

个人笔记使用,可能记得比较乱,是针对大量文章总结而成,方便自己理解和复习

〇、笔记一中对Encoder-Decoder Attention理解有误

此注意力中的输入Q K V
其中K V应该是从编码器得到的输出乘以decoder子层随机初始化的W_K和W_V得到的
Q是上一步self-attention的输出乘以decoder子层随机初始化的W_Q得到的
注意:Decoder端中每个Decoder子层都有两组Q K V对应两组不同的W_Q,W_K,W_V

一、前期分析笔记


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、Transformer整体框架

在这里插入图片描述

三、Transformer中的Self-attention

Multi-head attentionScaled Dot-Product Attention
在Decoder端被称为Masked multi-head attention
Self-attention的字面理解:自注意力机制, Q K V都来自自身, 对输入本身做注意力。
在做自注意力处理之前,Q K V会先经过一个Linear层(乘以一个矩阵),线性变换,做维度变换:num_head * (d_q, d_k, d_v)
在做完点积注意力后,输出(多个z)要经过concat串联合并操作变成一个Z,因为Feed Forward一次只接收一个Z。
为什么会产生多个z呢?因为是多头注意力机制,一个头产生一个z,多个头就产生多个z。
多头怎样理解呢?其实就是人多好办事,每个人对同一个问题都有自己不同的看法,大致可能相同,但是具体肯定不同,所以就会有多个z。
而在点积注意力中,Q K V作为输入,首先就要打分,打什么分呢?打的是我们一句话中所有的单词对我们的原始输入向量x1这个单词的关注度,所以让Q与K做点乘,得到一个分值例如96;
为了保持我们的梯度稳定,用得到的分值除以K向量维度的平方根,统一降低这个分值,得到12(起到调节作用,使得内积不至于太大,太大的话 softmax 后梯度很小,就非 0 即 1 了,不够“soft‘’,不利于反向传播的进行。);
这只是某个其他单词对我们输入的单词x1的关注度的打分,对于所有单词对x1的关注度打分我们做一个softmax归一化,使分值和为1全为正数(防止梯度爆炸)。对于得到的这些新的分值,乘以对应的V(每个词都有对应的Q K V)得到对应的加权向量z(增大对需要关注的词的关注度,减小无关词的关注度)。 将所有词关于单词x1的加权向量z相加,得到单词x1最终的self-attention的输出Z.
以上是一个单词在一头下的情况,实际使用时,输入应该是一句话,得到的输出也是一个矩阵,所以以上过程就要对应一个矩阵的输入输出形式。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
multi-head attention是通过h个不同的线性变换对Q,K,V进行投影,最后将不同的attention结果拼接起来(这跟 CNN 中的多个卷积核的思想是一致的)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、Q K V

这三个才是真正的输入,因为每一个Encoder子层或Decoder子层都有对应的输入和输出,所以他们的输入都是Q K V。
Q K V就是由一个向量(也许是最初的输入向量或者是上一步的输出向量)乘以对应的W转换矩阵得到的。
这个W转换矩阵是随机初始化而来,通过不断的训练而进行调整,一个子层中一头有一组Q K V。
而每一个Q K V都对应一个W矩阵,所以一个子层一头中有三个W矩阵,分别是W_Q, W_K, W_V
Note: 在一般的attention模型中,Q就是decoder的隐层,K就是encoder的隐层,V也是encoder的隐层。所谓的self-attention就是取Q,K,V相同,均为encoder或者decoder的input embedding and positional embedding,更具体为“网络输入是三个相同的向量q, k和v,是word embedding和position embedding相加得到的结果"。(原文这段话其实有点没看懂,QKV相等?????是想说‘Q K V所对应的原输入是同一个’这个意思吗?)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值