Transformer

Transformer特别的地方是在seq2seq上大量用到了self-attention

传统的seq2seq,内部是RNN,输入是一个序列,输出是一个序列,在输出序列b1-b4均考虑了a1-a4,因此不能被平行化。
使用CNN来处理,每一个filter的输入是sequence中的一小段,然后使用filter扫过整个sequence
在这里插入图片描述
当我们使用多个filter扫过这个sequence,可以得到和RNN相同的输入和输出,但是CNN只能考虑部分输入。

解决:叠很多层CNN就可以考虑全部输入。
在这里插入图片描述
CNN可以平行化,每个filter都可以单独计算。
缺点:一定要叠很多层。
解决:使用self-attention layer可以(输入是一个sequence输出是sequence)
使用self-attention layer来取代RNN。
在这里插入图片描述

self-attention
相同的输入乘以三个不同的矩阵得到三个不同的向量。
在这里插入图片描述
简单来说:Q就是词的查询向量(最适合查找目标的),K是“被查”向量(适合接收查找的),V是内容向量。这三者不一定要一致,所以网络设置了三个向量,然后学习出最适合的Q, K, V,以此增强网络的能力。

这里使用搜索的过程来理解Q和K:
当我们想要查找一篇文章,我们会搜索该文章的关键字,如果我们通过该关键字搜不到要找的文章,我们会换另一个关键字,直到搜索到我们想要的文章,那么这个可以让我们搜到的关键字就是最适合查找目标的关键字,也就是Q。
搜索引擎拿到我们输入的关键字后Q后,会将该关键字与数据库里的文章进行对比,搜索引擎在检索一篇文章的时候会提前把数据库里的文章进行处理,比如提取关键信息,而关键信息也很多(比如一篇文章有很多关键词),那么那个关键信息能使搜索命中率最高,那个就是最适合接收查找信息的关键信息,这个最适合接收查找的关键信息就是K
之后我们使用Q和K进行点乘也就是计算相似度之后得到一个分数,这就是相似度评分,之后有了相似度评分,就可以把内容V加权回去了。

由于计算Q、K、V的矩阵是可以学习的,因此网络可以自己学习出要怎么样安排Q、K、V。

计算过程:
q和k点乘得到权重
在这里插入图片描述
然后经过softmax层
在这里插入图片描述
之后和v相乘
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
矩阵运算
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Multi-head self-attention
在这里插入图片描述
在这里插入图片描述
不同的head关注不同的资讯
在这里插入图片描述
在这里插入图片描述
Wp是人为设置的
在这里插入图片描述
将seq2seq中的RNN替换为self-attention。
在这里插入图片描述
Batch Normalization是以一个batch为基本单位,对每个神经元做归一化处理。(对同一个batch中不同数据的同一纬度做normalization)
Layer Normalization不需要考虑batch,给一笔data我们希望各个不同纬度的μ=0,σ=0

feed forward将输出吧b1-b4进行处理,然后进入另一个add&norm
在这里插入图片描述
原始论文中attention,每两个单词之间做一个attention。attention的权重越大,线条越粗
在这里插入图片描述
第一个句子,机器可以自动学到it要和animal做attention。
第二个句子,机器可以自动学到it要attention到street。
在这里插入图片描述
在multi-head attention中,每一组q、k、v做不同的事情。
不同的qkv得到不同的attention,左边的attention每个单词只考虑附近的几个单词,右边的attention中每个单词都考虑其余的所有单词。
在这里插入图片描述
在这里插入图片描述
universal transformer:每一层都是一样的transformer,深度上是RNN
在这里插入图片描述
为什么需要universal transformer:
主要的出发点是原版Transformer不是图灵完备的,有些很简单的任务表现很差,比如字符串拷贝。对于这个问题,谷歌给出了他的解决方案,也就是Universal Transformer。序列任务还是比较偏好于迭代和递归变换,RNN正好满足了这一点,而Transformer不满足。
在这里插入图片描述
1,引入了时间步step,从而实现了循环递归。除了第一次是原始信息作为输入,之后都是由前一个step的输出作为后一个的输入。
2,Feed-forward换成了Transition函数。根据task不同,可选择separable convolution分解卷积和fully-connected neural network全连接神经网络。
3,时间和位置编码,TimeStep embedding和Position embedding,新引入了TimeStep embedding,二者的编码公式和Transformer中的位置编码很像。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值