Transformer Model:从Attention层到Transformer网络(2/2)

目录

一、正文

二、参考链接


一、正文

这次我们使用attention和self-attention基本组件来搭建部署一个深度神经网络

L个单头self-attentions输出的序列做concat堆叠起来,多头self-attention的最终输出,堆叠起来的c向量变得更高,如果每个单头的输出都是d*m的矩阵。那么多头的输出就是ld*m的矩阵。

刚才我们用L个单头self-attentions构造出多头self-attention,我们同样可以用L个单头attention构造多头attention,所有L单头attention的输入都是两个序列x1到xm,以及x1’到xt’,每个单头attention都有各自的参数矩阵,他们不共享参数每个单头都有输出序列c,把单头输出的c堆叠起来就是多头的输出

我们已经构造出了多头self-attention,多头attention

接下来要用这两种层来搭建深度神经网络,首先用多头self-attention与全连接层搭建一个encoder网络

这是刚才搭建的多头self-attention层,输入是序列x1到xm,输出是序列c1到cm

然后搭一个全连接层,把向量c1作为输出,全连接层把c1乘到参数矩阵Wu上,然后再用Relu或者其他激活函数得到输出向量U1,把同一个全连接层用到c2上,得到输出U2,U2计算方法完全相同,注意这些全连接层是完全相同的,他们的参数矩阵都是Wu,然后把全连接层用到c3上,输出u3,以此类推,得到m个输出向量u,这些全连接层都是完全一样的,有同一个参数矩阵Wu

刚才我们搭建了两层,一个多头self-attention,一个全连接层。

输入是m个向量,x1到xm,输出也是m个向量,u1到um。Ui在xi向量的位置上,但是ui不仅仅依赖于xi,ui依赖于所有m个x向量,改变任何一个x向量,ui都会发生变化,当然ui影响最大的还是xi。可以继续加更多多头attention层和全连接层,想搭建多少层都可以,这样便会搭建出一个深度神经网络,道理跟多层RNN是一样的

现在我们来搭建Transformer 的encoder网络,一个block有两层

一个多头attention和一个全连接层,输入是512*m的矩阵,输出也是512*m的矩阵

这里m是输入序列x的长度,每个x向量都是512维的。

这个是encoder网络的结构,输入是512*m的矩阵X,x的每一列都是512维的词向量,这个是我们刚刚定义的一个block,他有两层,一个self-attention层,一个全连接层,它的输出也是512*m的矩阵,输入和输出的大小一样,然后搭建第二个block,输出还是512的矩阵。我们想搭建多少个block都可以,Transformer的encoder网络一共有6个blocks

每个blocks有两层,每个block都有自己的参数blocks之间不共享参数,最终的输出是512*m的矩阵,输出与输入的大小是一样的

刚才我们通过堆叠多头self-attention与全连接层,搭建出encoder网络,encoder网络有6个blocks,每个block有两层。现在我们进一步用到attention层,从而搭建Transformer的decoder网络

Transformer是一个seq2seq模型,他有一个encoder,和一个decoder,输入是两个序列,如果我们想把英语翻译成德语,那么x序列是英语的词向量,x’是德语的词向量

刚才我们已经搭建了好了encoder网络,它有6个blocks,每个block有两层,encoder的输入和输出都是512维的向量,输入序列有m个词向量,x1到xm,输出序列也有m个向量,记作u1到um,现在我们开始搭建decoder网络的第一个block

第一层是一个多头self-attention,输入是x1’到xt’,输出是c1到ct,他们全都是512维的向量

第二层是多头attention

这一层有两个序列,一个是u1到um,一个是c1到ct,多头attention的输出是z1到zt,他们也都是512维的向量,

最后在搭建一个全连接层,输入是512维z1,输出是512维的向量s1,全连接层都一样,都是把参数矩阵Ws,与输入的z向量相乘,然后relu激活函数得到向量s

把z2作为输入,全连接层输出s2,用同样的方法,把所有的z向量,都映射到s向量

我们已经搭建了decoder的一个block,这个block有三层,分别是self-attention层、attention层、以及全连接层

刚才我们搭建了三层,这三层组成了decoder的一个block,这个block需要两个输入序列,两个序列都是512维的向量,两个序列的长度分别是m和t如果是把英语翻译成德语,那么m是英语句子长度,t是已经生成德语单词的数量,这个输出序列长度是t,每个向量都是512维的。

现在把这些模块拼接起来得到最终的Transformer模型。

最后,总结一下Transformer模型

Transformer是seq2seq模型,有encoder和decoder网络,可以用来做机器翻译,Transformer不是RNN,他没有循环结构,Transformer完全基于attention和全连接层,Transformer和RNN的输入输出大小完全一样,所以之前如何使用RNN,现在便可以如何使用Transformer,Transformer使用在自然语言处理问题上效果非常好,可以完爆最好的RNN+Attention,所以现在Transformer已经是业界标准。

二、参考链接

ShusenWang的个人空间_哔哩哔哩_bilibili

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值