李宏毅2020机器学习深度学习:Transformer


主要内容基于李宏毅老师的网课
讲的不太详细和没听明白的部分自己又去学习,加了些参考注解
简单总结:
Transformer是带有“Self-attention”机制的seq2seq模型

背景

在处理序列问题时
RNN及其变种LSTM,GRU等难以并行
CNN可以并行,使用膨胀卷积,可以扩大 CNN 的感受野,使网络有能力捕获更长的上下文
但是要堆很多层(才能让高层的网络处理序列的输入)

在这里插入图片描述

自注意力机制

在这里插入图片描述
注意力机制全面替代了RNN,输出序列基于整个输入序列。
注意力机制在机器翻译领域的应用最早来自于2014年的论文“Neural Machine Translation by Jointly Learning to Align and Translate”,其核心内容是为输入向量的每个单词学习一个权重。通过给定一个任务相关的查询向量Query 向量,计算Query和各个Key的相似性或者相关性得到注意力分布,即得到每个Key对应Value的权重系数,然后对Value进行加权求和得到最终的Attention数值。
以信息检索系统举例,用户在搜索引擎上输入的内容便是Query,然后搜索引擎根据Query匹配Key(例如商品的种类,价格,描述等),然后根据Query和Key的相似度得到匹配的内容(Value)。

在这里插入图片描述
简单示意的计算步骤如下:
x是输入的词向量,经过不同矩阵运算得到q,k,v
在这里插入图片描述
每个query要和每个key做点积运算,计算相似度。
在这里插入图片描述
为什么要除根号d?
答:缩放因子的作用是归一化
在这里插入图片描述
计算出来的点积结果要经过一个Softmax函数,使其和为1,得到符合概率分布的注意力分配概率分布数值。

在这里插入图片描述
这些权值用于给不同的value做权值,进行线性加权求和。
在这里插入图片描述
第二个query也是相同的计算步骤。
在这里插入图片描述
从上面的计算步骤可知,Self-attention Layer的输出是可以并行得到的。
在这里插入图片描述
通过矩阵运算,可以进行并行操作(一次运算多个词的q,k,v)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用GPU可以加速这些矩阵乘法。
这也是原论文中的矩阵形式运算公式的由来。
自己写的总结如下:
在这里插入图片描述

Multi-head Self-attention(多头自注意力机制)

多头注意力相当于多个不同的自注意力的集成。
通过矩阵运算,原本的q,k,v实际进行了降维。
多头注意力机制允许模型在不同的表示子空间里学习到相关的信息。
每个head关注的地方不同,各司其职。
在这里插入图片描述
多头计算的结果可以拼接起来,经过矩阵运算,保持和单头的运算结果维度相同。
在这里插入图片描述
总结来说,多头注意力机制在保持参数总量不变的情况下,将同样的query, key和value映射到原来的高维空间(Q,K,V)的不同子空间( Q 0 Q_0 Q0, K 0 K_0 K0, V 0 V_0 V0等)中进行自注意力的计算,最后再合并不同子空间中的注意力信息。

Positional Encoding

在注意力机制中,词的顺序是不重要的。例如,对“张三打了李四。”和“李四打了张三。”这两句话进行中文分词,嵌入词向量空间,并行送入编码器后,其输出很可能是相同的,但两者的中文语义恰恰相反。
因此在每个位置都有一个位置编码 e i e^i ei,增加位置的信息。
具体公式可去阅读原论文。
图中是用one-hot编码解释加上 e i e^i ei的这个操作的合理性。


在这里插入图片描述

详细结构

原论文做的是机器翻译任务。
李老师用中英翻译举例
Transformer采用了Encoder-Decoder框架。在机器翻译任务中,编码器(Encoder)对输入句子进行编码,将输入句子通过非线性变换转化为中间语义表示。解码器(Decoder)的任务是根据中间语义表示和之前已经生成的历史信息来预测未来时刻要生成的单词。最终,解码的特征向量经过一层激活函数为Softmax的全连接层之后得到表示每个单词概率的输出向量。
编码器主要分为三个部分,输入部分进行词嵌入和位置编码,后续连接六个相同结构的块进行多头注意力机制的计算。
解码器和编码器的不同之处在于其使用了两种注意力机制,分别为Self-Attention和Encoder-Decoder Attention。解码器中的自注意力计算方式和编码器中相同,只是query, key, value都对应目标端序列。而Encoder-Decoder Attention中的query对应目标端序列,key和value对应源端序列,每一层中的Encoder-Decoder Attention都使用编码器最后一层的输出结果。
在这里插入图片描述
Encoder和Decoder的结构详解
主要关注的点有几个:

  • Add&Norm环节,使用了残差网络和Layer Normalization
  • 解码器中第一处注意力机制叫Masked 多头注意力,因为在机器翻译中,解码过程是一个顺序操作的过程,当解码第k个特征向量时,我们只能看到第k-1及其之前的解码结果。Decoder端的Masked是为了保证训练阶段和推理阶段的一致性。
  • 解码器中第二处注意力机制计算是Encoder-Decoder Attention,是用编码器的最终输出和解码器自注意力输出作attention
    在这里插入图片描述
    多头注意力机制的可视化
    不同的头捕捉到了不同的句法
    在这里插入图片描述

参考文献

【经典精读】Transformer模型深度解读
一份很棒的transformer可视化计算过程讲解

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值