前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >transformer框架概述

transformer框架概述

作者头像
腾讯知文实验室
发布2018-08-14 17:23:37
4.7K5
发布2018-08-14 17:23:37
举报

导语 transformer这个模型是Attention is all you need ( Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin) 这篇论文提出的网络框架,发表在NIPS 2017上,本文大致梳理下这个网络的框架结构,和它的一些应用场景。希望有什么错误或者遗漏的地方各位大神可以指出。

1. 框架概述

    首先以机器翻译作为例子,比如说给定一个英文句子,想要让机器把它翻译成德文。transformer这个网络与传统的seq2seq模型类似(详细了解请看这里 https://blog.csdn.net/Irving_zhang/article/details/78889364),由encoder和decoder组成,encoder负责将英文的句子表示成嵌入表达式,一般每个单词由一个向量来表示,向量的维度是一个超参数,由人为设定,并且对上下文的语境进行一个向量表征。为了得到这个句子上下文语义的向量表征,seq2seq模型采用的是Long Short-term Memory(LSTM),对上下文的记忆存在隐藏状态当中,对LSTM的详细模型请看这篇文章(https://blog.csdn.net/hust_tsb/article/details/79485268)。decoder与encoder类似,也是由LSTM组成,它的主要功能是根据encoder得到的上下文信息,对翻译之后的句子在每个time step进行概率分布的预测,并且在每个time step选取概率最大的词作为输出,或者用beam search扩大搜索域。

但是transformer的基础网络框架并不由LSTM等循环神经网络组成,也不像ConvS2S或者ByteNet那样由卷积神经网络组成,它是由self attention的运算单元组成,self attention的具体计算方式我们后面会提到,它可以得到句子当中任意距离的两个单词之间的表征关系,不再像LSTM那样受限于过长的序列长度,也不像卷积神经网络那样受限于receptive field。一个宏观的网络框架如图1所示。

图1. encoder-decoder框架

    encoder和decoder分别由6层网络构成,encoder的输出会作为decoder的输入,这个和seq2seq当中的attention机制类似。图二是这个网络更加细致的展开。

图2. 框架剖析

2. encoder和decoder组成

    现在让我们来看看每一层encoder和decoder分别是怎么样组成的。每层encoder由两小层组成,第一层是self attention,第二层是feed forward。每层decoder由三小层组成,self attention层和feed forward层,与encoder相同,还有一个encoder-decoder attention层,这一层的目的是让每个decoder time step将注意力放在输入序列不同的位置上,和seq2seq中的attention机制相同。图3表示了encoder和decoder的这种连接关系。

图3. encoder-decoder的结构

3. multi-head self attention

    我们来看看self attention机制是怎么组成的。对于每一个输入单词有一个词向量的表示,假设为512维,一句话就可以别表示成一个矩阵,将这个矩阵通过三个参数矩阵QM,KM,VM映射到低维向量空间,比如说64维,得到三个低维向量空间中句子信息的表示,分别用Q,K,V来表示,Q代表query,K代表key,V代表value。将Q与K做矩阵乘法得到的矩阵A代表了这句话当中每个单词与其他位置上的单词的匹配程度,可以看做是score。然后对A矩阵进行scale,比如对每个元素除以根号下key向量的维度,目的是防止内积的结果太大,导致训练时进入梯度为0的区域。在decoder阶段,可以选择性的加入mask,目的是让当前时刻的输出不会被这个时刻以后的信息所影响。在这之后对每个单词的向量表示做softmax运算,使得矩阵乘法得到的score(scale以后)变成概率分布,再用这个概率分布在V矩阵上进行信息提取,类似于加权平均,所以跟当前位置的词匹配的其他位置的词会有更大的影响。self attention名字的由来就是因为Q,K,V都是从同一个句子的嵌入表示得来的,得到的新的向量表示是在本句话中对其他位置的信息匹配与抽取。multi-head的意思是可以同时并行地学习h组不同的QM,KM,VM矩阵,以学习到不同语义的表征关系,比如说一组矩阵学习的是这句话的情感联系,另一组矩阵学习的对命名实体更加细粒度的映射。图4是self attention的矩阵运算法。图5是multi-head attention的示意图。

图4. self attention矩阵运算法

图5. multi-head attention的示意图

4. 位置嵌入表达

    在对输入信息的表征中,除了常用的词向量,还有对于位置信息的嵌入表达。嵌入表达式如图6所示。从公式可以看出,每个位置的向量表征都可以用其他位置向量表征的线性组合来表示,这样就可以让每个位置的单词关注一些相对位置上面的词,而不像LSTM一样随着序列变长导致信息遗忘。正弦余弦公式还有一个好处,就是可以对任意长的序列进行编码,而不受句子长度的限制。图7是嵌入表达式的视觉表达。

图6. 位置嵌入表示式

图7. 嵌入表达式的视觉表达

5. 其他模型细节

    在self attention和feed forward层都有做residual,简单来说就是self attention和feed forward运算后把输入和输出进行相加,保留了更加粗粒度的信息表征。residual过后是layer normalize,是为了防止过拟合和梯度消失。图8是一层网络的详细结构。网络的输出是全连接层之后接softmax,对生成的翻译文本进行概率分布的预测,损失函数用的是cross-entropy。

图8. 一层网络的详细结构

6. 应用场景

transformer被提出后,被成功运用到了NLP的各个领域,比如语言模型,情感分析,文本摘要,语言翻译,甚至在图像领域也有了贡献,原作者将transformer应用在了图像生成领域上,取得了不错的效果,叫做image transformer,有兴趣的读者可以研究下参考文献中的[5]。

7. 小结

    本文章介绍了transformer的基本框架结构和应用场景,参考了这篇blog (https://jalammar.github.io/illustrated-transformer/),写的非常详细,图也是参考的这篇blog,想要有更加直观和细节的了解可以看一下,里面有非常多的图片讲解。还想提一下Google的一个开源项目Tensor2Tensor,这里面融入了不同的深度网络模型,包括transformer,来实现各种不同的NLP和CV的任务,有兴趣的读者可以去GitHub( https://github.com/tensorflow/tensor2tensor)逛逛。

8. 参考文献

[1] https://jalammar.github.io/illustrated-transformer/

[2] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in Neural Information Processing Systems. 2017: 5998-6008.

[3] https://blog.csdn.net/Irving_zhang/article/details/78889364

[4] https://blog.csdn.net/hust_tsb/article/details/79485268

[5] Parmar N, Vaswani A, Uszkoreit J, et al. Image Transformer[J]. arXiv preprint arXiv:1802.05751, 2018.

[6] https://github.com/tensorflow/tensor2tensor

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯知文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 框架概述
  • 2. encoder和decoder组成
  • 3. multi-head self attention
  • 4. 位置嵌入表达
  • 5. 其他模型细节
  • 7. 小结
  • 8. 参考文献
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档