【tensorflow2.0】39.Transformer、CNN,RNN对比

三种模型的对比
从encoder,decoder,attention三个部位来对比

encoder端:

1)RNN

RNN的encoder端和常见的用于分类的RNN模型没有什么区别,输入x,得到最后一层的隐层状态,用于之后计算attention。

2)conv

在这里采用stacking conv来对输入x编码,作者认为这种stacking conv是可以捕获到长距离的信息的,假设卷积的kernel size为3,第一层卷积能覆盖的最大长度为3(对原始序列),第二层卷积能覆盖的最大长度为32(对原始序列),依次类推,因此随着卷积层的增长,在原始序列上能覆盖的最大长度呈指数增长。同样去最后一层的隐层状态,用于之后计算attention。同时在每一层之间都引入了残差连接和batch normalization。

3)transformer

transformer的encoder和之前介绍的用transformer做分类基本一致(文本分类实战(八)—— Transformer模型)。整个结构由self-attention和feed forward层组合而成的,同样将最后一层的隐层状态用于之后计算attention。

attention端:

1)RNN

RNN的attention都是基于decoder中的目标词和encoder的序列中的每一个词计算点积(或者其他的计算方式,如MLP,conv等都可以),然后softmax得到一个概率分布,也就是attention的权值。然后对encoder的序列中的每个词对应的向量做加权和得到最终的attention的结果。具体的如下图:
在这里插入图片描述

2)conv

卷积中的attention的计算和RNN中的基本一致,但是最后在做加权和的时候引入了最初encoder中embedding的词向量,其表达式如下:
在这里插入图片描述

上面式子中αlij是表示l解码层对应的attention权重,zuj表示的是encoder最后的隐层结果,ej表示的是encoder最初的embedding层的词向量,j表示encoder中第j个词。

3)transformer

transformer的attention计算有点不太一样,在这里仍然使用了在做self-attention计算中的multi-attention和scaled-attention。因此这里虽然目标词是来源于decoder,但是整个计算过程和transformer中的self-attention是一致的。

decoder端:

1)RNN

RNN在解码时一般都是用单层,因为从左到右的这种单层模式也符合解码的模式,dencoder的层数也一般和encoder保持一致。RNN的解码如上面的GRU示例一样,只是在计算的过程中引入了encoder的结果,其他的和encoder没什么太大的差异。

2)conv

conv在解码时主要是在序列的补全时和encoder不一样,为了保持卷积后序列的长度不变,encoder时会在序列的两端添加长度为(kernelsize−1)/2的pad。而在decoder时会在序列的左端添加长度为(kernelsize−1)的pad(在这里kernel size一般取奇数,便于添加pad)。另外不同于RNN的是(RNN是将attention引入到了RNN结构中),conv在解码时的卷积操作只是提取序列的特征,然后经过GLU操作到和encoder的隐层相同的向量维度之后再计算attention,最后将attention的结果和GLU的结果和卷积前的结果相加作为下一层的输入。另外在解码的每一层都引入了残差连接和batch normalization。

3)transformer

transformer的decoder层其实和encoder层差不多,主要不同在加入了encoder的attention的结果,但这里和RNN,conv又优点不一样,这里是先对decoder中的序列做self-attention提取特征,然后再做对encoder的attention,然后进入到feed forward层,因此在这里的操作是串行的。同样再transformer中因为层数比较多,也引入了残差连接和Layer normalization(在自然语言处理中很多layer normalization的用的比batch normalization,除非是卷积,不然一般不用batch normalization)。

除了上面的不同点之外,一般来说transformer和conv的层数都比较深,因此也就需要残差连接和normalization来避免模型过拟合。此外在transformer和conv中都会引入位置向量来引入序列的位置信息,但是在RNN中,因为RNN的本质是从前往后又依赖关系的,因此位置信息在这种传递过程中已经存在了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值