摘要:
这节课讲的是Transformer,Transformer是具有自我注意力机制的seq2seq模型。
通常情况下,seq2seq中使用的是rnn。在transformer中,中间层使用self-attention layer。
self-attention layer通过将输入转换成三个vector Q、K、V,经过一系列的矩阵计算,最终得到输出,这样做的好处是可以进行并行计算,矩阵计算可以通过GPU来加速。
Q、K、V三个vector也可分成多个组,每个组表示不同的含义,这就是multi-head self-attention。
由于self-attention忽略了输入测序的影响,所以需要加上positional encoding。也就是表示输入测序的参数。
最后讲了self-attention在机器翻译中的结构体系,以及attention的可视化效果展示。
目录
4.multi-head self-attention (以2个为例)
一.生成句子
1.RNN:
还是熟悉的rnn,a和b都是vector sequence
例子中rnn是双向的,在输出每一个b时,都已经看过所有a了
RNN的局限性:不容易被平行化。比如要想输出b4 得经过a1-a2-a3-a4,不能并行。
2.把CNN来代替RNN
每个三角形是一个filter,用一个filter连接两个参数,两个参数做内积得到一个数。
用多个filter的结果,排列成每一个vector(b1到b4),这样也实现了seq2seq。
这样做的问题是,cnn考虑的vector很少(例子中是2个到3个)
这样可以叠多层的cnn,这样就可以考虑很多的cnn。
在这里,每一个filter都可以同时计算,也就是并行
二.self-attention layer
1.什么是self-attention layer
也是句子生成句子,把中间的rnn换成self-attention layer
输出bi看过每一个输入a,而且每一个b是可以同时计算的。