2020李宏毅机器学习笔记-Transformer

目录

摘要

1.Transformer的提出

1.1 Self-attention

1.2 Multi-head Self-attention(以双头为例)

1.3 Positional Encoding

2.seq2seq with attention

3.Transformer(重点)

4. Atention Visualization

5. 应用

总结和展望


摘要

本节学习的是Transformer,Transformer实际上就是一个带有“self-attention”的sequence-to-sequence模型。提出的背景是因为RNN常被用于输出是一个序列的情况,但是有一个问题——不容易被平行化(并行)。于是有人提出用CNN取代RNN,可以做到和RNN类似的效果,输入一个sequence,输出一个sequence。表面上CNN和RNN都可以有同样的输入输出。但是每个CNN只能考虑很有限的内容,而RNN是考虑了整个句子再决定输出。

所以,引入了 一个新的想法:Self-Attention,输入输出与RNN一样,都是sequence。特别的地方在于,和双向RNN有同样的能力,通过将输入转换成三个vector Q、K、V,经过一系列的矩阵计算,最终得到输出。每一个输出都是看过整个input sequence,只不过输出是可以同时算出来的,可以并行计算。使用一种多头机制 Multi-head Self-attention(多头机制),把多个attention连接在一起,可以使有的头可以把注意力放在长期信息上,有的头可以把注意力放在短期信息上,然后再进行集合。此外Self-Attention中所有的运算都可以利用矩阵来进行运算,因此我们就可以使用gpu来进行加速,极大的加快了我们的运算速度。

1.Transformer的提出

一般的sequence-to-sequence模型是用RNN来做的,但这样构成的模型不能进行平行计算,例如下图中左边的模型就是RNN结构的sequence-to-sequence模型,想要求出b4就得先从a1输入开始一步一步往后求,直到求出b4,而不能对a1,a2,a3,a4一起计算。

为了能够进行并行计算,提出了使用CNN代替RNN的方法,如上图右侧基于CNN的sequence-to-sequence模型。这个模型中每个三角形的底部是m个输入,顶部是n个输出,n<m,这样的话这个模型就可以并行计算了,但它的感受也与每个CNN的输入尺寸有关,也与CNN的层数有关。但不管怎么样,CNN都无法像RNN一样看的无限远。

也就是说RNN结构的sequence-to-sequence模型和CNN结构的sequence-to-sequence模型都有其优缺点,所以就有了Transformer。Transformer是用Self-Attention Layer来替代RNN的sequence-to-sequence模型。Transformer模型在质量上更优越,同时更具可并行性,并且需要更少的训练时间。

 

Transformer中的bi是由所有的输入决定的,比如上图中的b2是由a1,a2,a3,a4共同决定的,且b1,b2,b3,b4能够平行计算。

1.1 Self-attention

第一步:

第二步:

第三步:

第四步:

计算b1的时候可以如果让α^都不为0,那么b1就考虑了全局的输入,如果计算b1的时候让α^1,1​,α^1,2​,α^1,3​为0,但α^1,4不为0,则b1只考虑了局部输入。下图中的"x"代表乘。

 

用上面的方法就可以计算出所有的b了。

用矩阵的形式来看:

 

框着k的橘色方框横过来代表转置

将α进行softmax变为α^

整个过程:

 

1.2 Multi-head Self-attention(以双头为例)

其实就是把多个自注意力连起来,这样的一来就可以分工协作了,比如有的头可以把注意力放在长期信息上,有的头可以把注意力放在短期信息上,然后再进行集合。

1.3 Positional Encoding

因为在Transformer中没有rnn,所以如果直接将数据输入模型的话是没有位置信息的,所以需要位置编码。

对pi进行独热编码,编码完为一个向量,这个向量只有第i个值为1,其余都为0,这样再将输入xi和pi拼接起来就可以表示value和position了。

 

Wp是人为设置的,绘制出来如下所示:

 

2.seq2seq with attention

就是将普通的seq2seq模型中的rnn换位Self-Attention

 

3.Transformer(重点)

基本架构

更加具体一点:

 

4. Atention Visualization

一个句子中的每两个单词都有连接,连接的线条越粗说明attention的权重越大。

下图中第一句话中的it分给animal的注意力最多,因为it代指的就是这个animal,第二句话的it分给street的注意力最多,因为这个it代指street。

下图中绿色的代表Multi-head Attention

5. 应用

总结和展望

本节学习的Transformer,抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。更准确地讲,Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。采用Attention机制的原因是考虑到RNN或者LSTM的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题:

1.限制了模型的并行能力;

2.顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。

Transformer的提出解决了上面两个问题,首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;其次它不是类似RNN的顺序结构,因此具有更好的并行性。

最后讲了一些Transformer的应用,凡是可以使用seq2seq的都可以使用Transformer,如上,用维基百科作为输出(句子长度长达10e2到10e6),神经网络还能不混乱,足以见到 Transformer 之强。据说RNN已经基本上被self-attention取代了。因为RNN也是一个记忆机制,也是在考虑一个向量的信息的时候 ,加入其它向量的位置信息,可以看成是self-attention的一种特殊情况。加深这些内容的理解还需要自己后面手动去编程实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值