在线LaTeX公式编辑器
看封面就知道,这节课是讲transformer,它的主要应用是BERT,BERT就是unsupervisored transformer。怎么感觉这节应该放在BERT那节的前面。
李宏毅学习笔记15.Transformer
那transformer是什么?
transformer实际上是Seq2seq model with “Self-attention”

Sequence to Sequence

下面是之前讲RNN的时候讲过的Seq2seq 模型,这个模型有个问题就是输出和输入很难parallel(并行),什么意思?就是要输出b4b^4要把前面的a1a4a^1\sim a^4都看过才可以。
李宏毅学习笔记15.Transformer
因此,提出了用CNN来替代RNN。
李宏毅学习笔记15.Transformer
三角形的是filter,小圆圈是卷积的结果。经过stride,得到一排结果
李宏毅学习笔记15.Transformer
换个filter
李宏毅学习笔记15.Transformer
若干个filter后的结果可以堆叠起来:
李宏毅学习笔记15.Transformer
可能你会觉得这样没有办法看到整个句子的关系,没关系,再上面还可以加卷积层:
李宏毅学习笔记15.Transformer
这个时候,蓝色的filter就可以看到整个的句子。而且卷积计算可以并行。
但是低层次的filter仍然是没有办法看到整个句子的信息,因此又可以并行又可以看到所有句子信息的模型提出来了:

Self-Attention

Self-Attention就是替代之前的RNN layer,它的输入是Sequence,输出也是Sequence。
李宏毅学习笔记15.Transformer
这里bib^i是基于整个Sequence来生成的。
b1b4b^1\sim b^4可以并行计算。
论文笔记:
李宏毅学习笔记15.Transformer

生成过程

第一步,先是输入Sequencexx,然后先经过embedding得到a。
李宏毅学习笔记15.Transformer
然后进入attention layer
进去先分别乘上三个transformation(matrix):q、k、v
李宏毅学习笔记15.Transformer
李宏毅学习笔记15.Transformer
第二步,拿每个 query q 去对每个key k做attention(attention操作有很多种算法,通常是输入两个向量,输出两个向量的相似度。)
李宏毅学习笔记15.Transformer
由于q和k要做点乘,所以他们两个的维度一样。他们两个维度越大,点乘后的variance越大,所以要除以一个d\sqrt{d}
李宏毅学习笔记15.Transformer
第三步:α\alpha经过softmax得到α^\hat \alpha,其实这样就会使得α^\hat \alpha之和为1
α^1,i=exp(α1,i)jexp(α1,i)\hat \alpha_{1,i}=\cfrac{exp(\alpha_{1,i})}{\sum_jexp(\alpha_{1,i})}
李宏毅学习笔记15.Transformer
最后第四步,用α^\hat \alpha分别乘以viv^i然后求和得到b
b1=iα1,ivib^1=\sum_i\alpha_{1,i}v^i
李宏毅学习笔记15.Transformer
b1b^1就是第一个结果,在计算b1b^1的过程用到了整个序列的信息。当然如果要只考虑附近单词的信息,可以把其他的α\alpha设置为0即可。
整个self attention的思想就是:天涯若比邻!无论单词距离多远,都可以有attention的关系。
同样的,我们可以同时计算b2b^2
李宏毅学习笔记15.Transformer

并行过程

第一步:把q、k、v、a分别并起来,变成QKVI
李宏毅学习笔记15.Transformer
第二步:把k并起来然后转置,计算α\alpha
李宏毅学习笔记15.Transformer
依次类推:
李宏毅学习笔记15.Transformer
第三步,把A中每一列做softmax得到A^\hat A
李宏毅学习笔记15.Transformer
第四步,把A^\hat A每一列分别和V点乘得到O

李宏毅学习笔记15.Transformer

小结

整个过程就是输入序列I,输出序列O
李宏毅学习笔记15.Transformer
李宏毅学习笔记15.Transformer
李宏毅学习笔记15.Transformer
李宏毅学习笔记15.Transformer
李宏毅学习笔记15.Transformer
可以看到从输入到输出是一堆矩阵乘法。GPU可以很容易加速。

Multi-head Self-attention(2 heads as example)

一个头:
李宏毅学习笔记15.Transformer
现在两个头,所以qkv分成两份:
李宏毅学习笔记15.Transformer
其中:
李宏毅学习笔记15.Transformer
现在开始做attention操作:
李宏毅学习笔记15.Transformer
上的attention操作只针对q1之和k1,最后得bi,1b^{i,1},然后针对q2之和k2计算bi,2b^{i,2}
李宏毅学习笔记15.Transformer
然后把bi,1b^{i,1}bi,2b^{i,2}concat起来得到bib^i
如果对bib^i的维度不满意,可以降维:
李宏毅学习笔记15.Transformer
在原论文中的描述中,不同的head可以关注不同点,例如有的head关注比较近的单词,有的关注比较远的单词。

Positional Encoding

从self attention的机制来看,它的思想是天涯若比邻,也就是说这个机制是不在乎单词之间的距离的,距离远和近都可以获得的attention。这个其实相当于没有单词的顺序信息,不好(例如我们不希望:你好=好你),因此加入位置信息是很必要的。
Original paper:each position has a unique positional vector eie^i(not learned from data)
李宏毅学习笔记15.Transformer
注意这里是相加,不是concat,为什么?
因此这里相加相当于对原始的x和一个独热编码做了一个concat操作:
李宏毅学习笔记15.Transformer
如果把WPW^P可视化就是:
李宏毅学习笔记15.Transformer

Seq2seq with Attention

李宏毅学习笔记15.Transformer
中间替换为自注意力模型
李宏毅学习笔记15.Transformer
李宏毅学习笔记15.Transformer
李宏毅学习笔记15.Transformer
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
最后是总结:

总结

这里讲了一点Layer Norm,一般是和RNN一起使用,和Batch Norm不一样。
李宏毅学习笔记15.Transformer
李宏毅学习笔记15.Transformer

应用

李宏毅学习笔记15.Transformer
与之前不一样的是,摘要变长了,可以几万字摘要出几千字。这个事情在以前的模型做不了的。
Universal Transformer:还可以把注意力模型堆叠,变深。
李宏毅学习笔记15.Transformer
Self-Attention GAN:图像上可以应用注意力机制找出像素关注的点。
李宏毅学习笔记15.Transformer

相关文章: