Transformer初学习(一)

Self-attention

为什么提出Self-attention

我们现在有a1, a2, a3, a4四个输入,先来看一下RNN是怎么做的
在这里插入图片描述
对于这个结构来说,必须要计算完前一个RNN,才能开始不断更新下一个RNN。也就是说,我们必须按照a1–>a2–>a3–>a4的顺序最终得到b4,不能够平行运算(Hard to parallel !)
那么就有人提出了用CNN来取代RNN的想法,让我们来一起看看CNN怎么解决这个问题:
在这里插入图片描述
对于输入a1, a2, a3, a4 可以通过多个filter同时得到 b1, b2, b3, b4;但是这时候又遇到一个问题,这里每个CNN都只能考虑有限的内容,不像RNN可以考虑整个句子(a1-a4)的内容;因此我们要使用多层CNN。可以看到上图中蓝色的三角,它可以看到这个句子所有的内容。但是问题就来了,如果你要看到长期的资讯,就需要叠很多层的CNN,如果你想要在第一个filter就看到长期的资讯,是做不到的。*因此self-attention就被提出,有效地解决了这个问题 *
我们先来大概的看一下,什么是Self-attention:
在这里插入图片描述
这里我们先大致的了解一下Self-attention做了什么事情,简单来说,就是输入a1-a4,可以通过平行运算,得到b1-b4。

Self-attention如何平行运算

我们清楚了Self-attention在做什么之后,一起来看看它是如何做到平行运算的:
在这里插入图片描述
从上图可以看到,我们在计算 Q, K, V 矩阵时,都可以通过 Wq, Wk, Wv 实现平行运算;(W矩阵是训练得到的,随机初始化)
在这里插入图片描述
从上图看到,我们可以通过这种方式,平行运算得到我们的注意力矩阵A,再通过softmax可以得到之后的矩阵。
在这里插入图片描述
最后以同样的形式可以平行运算得到输出矩阵O:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值