您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
   
 
  
每天15篇文章
不仅获得谋生技能
更可以追随信仰
 
     
   
 订阅
  捐助
即将取代RNN结构的Transformer
 
56 次浏览     评价:  
 2019-1-9
   
 
编辑推荐:

本文来自于segmentfault,文章介绍了Transformer的整体结构、attention计算过程等相关内容。

Transformer之前

上图是经典的双向RNN模型,我们知道该模型是通过递归的方式运行,虽然适合对序列数据建模,但是缺点也很明显“它无法并行执行”也就无法利用GPU强大的并行能力(这里插句题外话,正因为GPU强大的并行能力,所以batch_size等于1和等于200运算时间基本差不多),再加上各种门控机制,运行速度很慢。一般而言,编码器输出编码向量C作为解码器输入,但是由于编码向量C中所有的编码器输入值贡献相同,导致序列数据越长信息丢失越多。

CNN网络相比RNN网络,它虽然可以并行执行,但是无法一次捕获全局信息,通过上图可得我们需要多次遍历,多个卷积层叠加增大感受野。

谷歌的做法是Attention is All You Need !

Transformer

如图所示是Transformer的整体结构,我们将详细介绍每一部分,先从左边的编码器开始。

A: 这一步,我想大家已经非常熟悉了,将词汇表转为embedding维度的向量(onehot和embedding区别)。

B: 仅仅使用attention有一个致命短板,它对序列数据的顺序免疫,即:无法捕获序列的顺序。比如对翻译任务,我们知道顺序非常重要,单词顺序变动甚至会产生完全不同的意思。因此增加Position Embedding给每个位置编号,每个编号对应一个向量,这样每个词向量都会有一个位置向量,以此来定位。

如图所示,Position Embedding计算公式,将id为p的位置映射为一个dpos维的位置向量,这个向量的第i个元素的数值就是PEi(p),位置编码算法当然不止一种,但是不同算法必须要解决的的问题就是能够处理未知长度的序列。假设位置向量有4维,实际位置向量可能如下所示:

结合位置向量和词向量我们有两种方式,一种是将两者拼接成一个新向量,另一种是使两者维度相同然后相加得到新向量。

C:残差连接,随后是D: layer-normalization。

随着网络层数的加深,会带来梯度消失,梯度爆炸以及过拟合问题。针对此问题,我们一般采用权重正则化,批标准化,更换激活函数等等措施,但是当网络层数进一步增加,会出现网络退化问题,即:训练集精度开始下降。使用残差可以解决此问题,目前使用残差的网络可以达到几百层。

E:Multi-head注意力机制

上图是attention计算过程,我们分解步骤,依次来看。

生成“q”,“k”,“v”向量,由输入embedding向量与图示右侧对应权重矩阵相乘。需要注意的是,此处的三个权重矩阵为所有输入共享。如果每个词独享一个权重矩阵,个人认为并不会提升性能,有可能还会降低。

计算attention score,计算方式如图所示:

使用softmax归一化数值,softmax上面的相除操作主要是调解内积不要太大。

将softmax归一化后的值与“v”向量矩阵相乘,将所有加权向量加和,产生该位置的self-attention的输出结果。

multi-headed attention:就是有多组上面那样的attention,最后将结果拼接起来,其中,每组attention权重不共享。

计算公式如下:

整体计算过程如下图所示:

F:全连接网络,两个线性函数,一个非线性函数(Relu):

解码器:

A:解码器attention计算的内部向量和编码器的输出向量,计算源句和目标句之间的关系,在Transformer之前,attention机制就应用在这里。

B:线性层是一个全连接层,神经元数量和词表长度相等,然后添加softmax层,将概率最高值对应的词作为输出。

总结

Transformer现在大有取代RNN之势,但依然存在一些缺点。首先,Transformer虽然使用到了位置向量,但是对序列位置要求很高的项目做的并不好。Transformer可以一步到位获取全局信息,但如果你的项目只是需要局部信息呢?虽然也可以做到,但是增加了多余计算量。

 
   
56 次浏览  评价: 差  订阅 捐助
相关文章

我们该如何设计数据库
数据库设计经验谈
数据库设计过程
数据库编程总结
 
相关文档

数据库性能调优技巧
数据库性能调整
数据库性能优化讲座
数据库系统性能调优系列
相关课程

高性能数据库设计与优化
高级数据库架构师
数据仓库和数据挖掘技术
Hadoop原理、部署与性能调优
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号