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一起计算。

2020李宏毅机器学习笔记-Transformer_第1张图片

为了能够进行并行计算,提出了使用CNN代替RNN的方法,如上图右侧基于CNN的sequence-to-sequence模型。这个模型中每个三角形的底部是m个输入,顶部是n个输出,n

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

2020李宏毅机器学习笔记-Transformer_第2张图片

 

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

1.1 Self-attention

第一步:

2020李宏毅机器学习笔记-Transformer_第3张图片

第二步:

2020李宏毅机器学习笔记-Transformer_第4张图片

第三步:

2020李宏毅机器学习笔记-Transformer_第5张图片

第四步:

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

2020李宏毅机器学习笔记-Transformer_第6张图片

2020李宏毅机器学习笔记-Transformer_第7张图片

 

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

用矩阵的形式来看:

2020李宏毅机器学习笔记-Transformer_第8张图片

 

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

2020李宏毅机器学习笔记-Transformer_第9张图片

将α进行softmax变为α^

2020李宏毅机器学习笔记-Transformer_第10张图片

整个过程:

2020李宏毅机器学习笔记-Transformer_第11张图片

 

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

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

2020李宏毅机器学习笔记-Transformer_第12张图片

2020李宏毅机器学习笔记-Transformer_第13张图片

2020李宏毅机器学习笔记-Transformer_第14张图片

1.3 Positional Encoding

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

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

2020李宏毅机器学习笔记-Transformer_第15张图片

 

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

2020李宏毅机器学习笔记-Transformer_第16张图片

 

2.seq2seq with attention

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

2020李宏毅机器学习笔记-Transformer_第17张图片

 

3.Transformer(重点)

基本架构

2020李宏毅机器学习笔记-Transformer_第18张图片

更加具体一点:

2020李宏毅机器学习笔记-Transformer_第19张图片

 

4. Atention Visualization

一个句子中的每两个单词都有连接,连接的线条越粗说明attention的权重越大。
2020李宏毅机器学习笔记-Transformer_第20张图片

下图中第一句话中的it分给animal的注意力最多,因为it代指的就是这个animal,第二句话的it分给street的注意力最多,因为这个it代指street。
2020李宏毅机器学习笔记-Transformer_第21张图片

下图中绿色的代表Multi-head Attention
2020李宏毅机器学习笔记-Transformer_第22张图片

5. 应用

2020李宏毅机器学习笔记-Transformer_第23张图片

2020李宏毅机器学习笔记-Transformer_第24张图片

2020李宏毅机器学习笔记-Transformer_第25张图片

总结和展望

本节学习的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的一种特殊情况。加深这些内容的理解还需要自己后面手动去编程实现。

你可能感兴趣的:(机器学习,深度学习,神经网络)