ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

transformer first time

2021-02-09 15:33:48  阅读:202  来源: 互联网

标签:transformer 编码器 batch 解码器 time 序列 自然语言 输入 first


ref :https://jishuin.proginn.com/p/763bfbd37c6f

Transformer是Google在2017年提出的用于机器翻译的模型:

Transformer内部本质上是一个Encoder-Decoder(编码器-解码器)结构:

 

Transformer中抛弃了传统的CNN和RNN,整个网络结构完全由Attention机制组成,并且采用了6层Encoder-Decoder结构:

 

很显然了,Transformer只有分为两大部分:编码器、解码器。这里只看其中一个Encoder-Decoder结构,剩余5个一样一样的。

以一个简单的例子进行说明:

输入: Why do we work?(我们为何工作? 后面以中文字符分析)

上图左右两个红框,左侧红框是编码器Encoder,右侧红框是解码器Decoder。

编码器负责将自然语言序列映射为隐藏层(上图第2步),即含有自然语言序列的数学表达

解码器负责将隐藏层再映射为自然语言序列,从而使我们可以解决各种问题,如情感分析、机器翻译、摘要生成、语义关系抽取等

简单说下,上图每一步都做了什么:

  输入自然语言序列到编码器:Why do we work?(为啥要工作);

  编码器输出得到隐藏层,再将其输入到解码器;

  输入<start>(起始)符号到解码器;

  解码器得到第一个字: “为”;

  将解码器得到的第一个字“为”再次从上图解码器结构的下端输入解码器;

  解码器得到第二个字:“什”;

  同样将解码器得到的第二个字“什”再次从上图解码器结构的下端输入解码器;

  如此,直到解码器输出<end>终止符,即序列生成完成。

解码器和编码器的结构类似,本文对编码器部分进行讲解:把自然语言序列映射为隐藏层的数学表达的过程。

为便于理解学习,将编码器分为4部分依次讲解。

 

1. 位置嵌入

输入维度为[batch size, sequence length]的数据X,例如:我们为什么工作。

batch size就是一个batch的大小,这里只有一句话,所以batch size为1,sequence length是句子长度,共7个字,所以输入数据维度是[1,7].

我们不能直接将这句话输入到编码器中,因为transformer不认识,需要先进行字嵌入操作,得到上图中的Xembedding.

简单点说,就是文字-->字向量的转换,这种转换是将文字转换为计算机认识的数学表示,用到的方法就是Word2Vec,Word2Vec的具体细节可以暂时不用了解,知道要用到,先拿来用就好。

得到的Xembedding的维度是:[batch size, sequence length, embedding dimension]。enbedding dimension的大小由Word2Vec决定,transformer采用512长度的字向量。所以Xembedding的维度是[1, 7, 512]。

至此,输入的“我们为什么工作”,可以用一个矩阵来表示:

 

标签:transformer,编码器,batch,解码器,time,序列,自然语言,输入,first
来源: https://www.cnblogs.com/ariel-dreamland/p/14392495.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有