【DL】3 Transformer入门——李宏毅机器学习课程笔记

1. 为什么要使用Self-attention?

Transformer的中文意思是’变形金刚’,其一个很经典的应用就是BERT,Transformer实际上是Seq2seq model with “Self-attention”

一般提到要处理一个Sequence,最常使用的是RNN:

在这里插入图片描述
输出b1-b4时把每一个a1-a4都处理过,这样不容易被平行化,这样就有人提出了CNN来代替RNN进行处理(CNN可以平行处理):

在这里插入图片描述
这样每个CNN只能考虑一段时间的信息,其实只要叠足够的层数,等同于蓝色的Filter已经看了所有的句子(较高层的滤波器可以考虑较长的序列)

在这里插入图片描述
问题是需要叠很多层,所以提出了Self-Attention的方法:

在这里插入图片描述

2. Self-Attention

2.1 基本思想

最早来自于论文《Attention is all you need.》(https://arxiv.org/abs/1706.03762):

在这里插入图片描述
拿每个 query q 去对每个key k 做 attention,Attention可以自己设计:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
b2的计算是可以同时进行的,b3、b4同理:
在这里插入图片描述
如果之前的听不懂,只需要知道有一个Self-attention层,输入输出如下所示:

在这里插入图片描述

2.2 平行化(矩阵)计算

接下来进一步说明Self-attention是如何进行平行化计算的

在这里插入图片描述
为了简单起见,忽略√𝑑,把k做转置操作:

在这里插入图片描述
把q2拿出来:
在这里插入图片描述
下面做weighted sum:
在这里插入图片描述
再把之前的计算快速看一遍:
在这里插入图片描述
反正就是一堆矩阵乘法,用 GPU 可以加速

2.3 Multi-head Self-attention

Self-attention有一个变形(Multi-head Self-attention), (2 heads as example):

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
好处是:有可能不同的head关注的点不一样

2.4 Positional Encoding

  • Self-attention中没有位置信息,例如’我打了他’和’他打了我’是一样的,这显然是不合理的
  • 原稿:每个位置都有一个唯一的位置向量𝑒^𝑖(未从数据中学习)
    在这里插入图片描述
  • 换言之:每个𝑥𝑖附加一个one-hot向量𝑝𝑖,代表了位置的信息
    在这里插入图片描述
    原论文的WP是手设的,图片如下

在这里插入图片描述
这样我们原来的Seq2seq with Attention中的RNN都可以用Self-attention换掉:

在这里插入图片描述
一个关于Self-Attention的Seq2seq modle动画演示
在这里插入图片描述

3. Transformer结构

以汉英翻译为例:

在这里插入图片描述
接下来看看里面每一个Encoder、Decoder在做什么事:
在这里插入图片描述

4. Attention可视化

Attention 可视化
在这里插入图片描述
编码器对单词“it”从第5层到第6层的自我注意力分布进行了英法翻译训练(八个注意力头中的一个):

在这里插入图片描述
Multi-head Attention,显然下面红色的做的是一个Local Attention:
在这里插入图片描述

5. 应用场景

  • 如果可以使用seq2seq,那么就可以使用transformer,例如

在这里插入图片描述

在这里插入图片描述

小结

  1. 问题提出:使用RNN不能平行处理,每一个输出需要考虑所有的输入,CNN需要叠很多层
  2. 原来的Attention只是一个句子生成一个隐层或者Memory Network一个句子生成两个向量?这里Self-Attention把一个输入的embedded分成三个部分,分别用其中两个来匹配,另一个储存着信息
  3. 插入时间的维度的操作好像懂了,但是为什么不能通过训练学出来?
  4. Transformer的结构还是很复杂的,动手编程实现一下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值