李宏毅学习笔记15.Transformer


在线LaTeX公式编辑器
看封面就知道,这节课是讲transformer,它的主要应用是BERT,BERT就是unsupervisored transformer。怎么感觉这节应该放在BERT那节的前面。
在这里插入图片描述
那transformer是什么?
transformer实际上是Seq2seq model with “Self-attention”

Sequence to Sequence

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

Self-Attention

Self-Attention就是替代之前的RNN layer,它的输入是Sequence,输出也是Sequence。
在这里插入图片描述
这里 b i b^i bi是基于整个Sequence来生成的。
b 1 ∼ b 4 b^1\sim b^4 b1b4可以并行计算。
论文笔记:
在这里插入图片描述

生成过程

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

并行过程

第一步:把q、k、v、a分别并起来,变成QKVI
在这里插入图片描述
第二步:把k并起来然后转置,计算 α \alpha α
在这里插入图片描述
依次类推:
在这里插入图片描述
第三步,把A中每一列做softmax得到 A ^ \hat A A^
在这里插入图片描述
第四步,把 A ^ \hat A A^每一列分别和V点乘得到O

在这里插入图片描述

小结

整个过程就是输入序列I,输出序列O
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到从输入到输出是一堆矩阵乘法。GPU可以很容易加速。

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

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

Positional Encoding

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

Seq2seq with Attention

在这里插入图片描述
中间替换为自注意力模型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
最后是总结:

总结

这里讲了一点Layer Norm,一般是和RNN一起使用,和Batch Norm不一样。
在这里插入图片描述
在这里插入图片描述

应用

在这里插入图片描述
与之前不一样的是,摘要变长了,可以几万字摘要出几千字。这个事情在以前的模型做不了的。
Universal Transformer:还可以把注意力模型堆叠,变深。
在这里插入图片描述
Self-Attention GAN:图像上可以应用注意力机制找出像素关注的点。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值