ICode9

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

seq2seq模型及Attention机制

2019-09-21 19:41:15  阅读:261  来源: 互联网

标签:模型 Attention 语义 seq2seq Encoder 输入 Decoder LSTM 向量


seq2seq模型

seq2seq模型虽然简单,但是特别经典,它的出现可以说给整个NLP带来个翻天覆地的变化。网上已经有很多人做了相关的总结,但是翻看起来还是感觉有点乱,于是想自己总结一个版本,方便自己回忆,也希望所写的内容能给大家带来帮助。由于平时都是直接拿来用,不需要在原理方面做推敲,所以公式部分就不详细介绍了,感兴趣的可以自己去阅读论文,下面只介绍相关原理及应用。
Seq2Seq,全称Sequence to Sequence。它是一种通用的Encoder——Decoder框架,可用于机器翻译、文本摘要、会话建模、图像字幕等场景中。其中Decoder部分的输出通常是不定长的,以机器翻译为例:将一句中文翻译成英文,那么这句英文的长度有可能会比中文短,也有可能会比中文长,所以输出的长度就不确定了。如下图所,输入的中文长度为4,输出的英文长度为2。下面的所有内容都以机器翻译为例。
在这里插入图片描述

Encoder部分

Encoder负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义,这个过程称为编码,如下图,获取语义向量最简单的方式就是直接将最后一个输出的隐状态作为语义向量c。也可以对最后一个隐含状态做一个变换得到语义向量,还可以将输入序列的所有隐含状态做一个变换得到语义变量。下图c代表生成的语义向量,q函数代表相应的变换(线性变换等)

Decoder部分

Decoder部分就是根据Encoder部分输出的语义向量c来做解码工作,以翻译为例,就是生成相应的译文,注意生成的序列是不定长的。而且上一时刻的输出通常要作为下一时刻的输入,如下图所示,预测y2时y1要作为输入。
在这里插入图片描述
得到语义向量c后,通常的做法是将c当做初始状态h0输入到Decoder中:

在这里插入图片描述
还有一种做法是将c当做每一步的输入:
在这里插入图片描述

seq2seq架构举例

下面是seq2seq架构的几个应用,希望能通过这几个例子对seq2seq架构有更深入的了解。

  1. 邮箱对话
    下面是一个收发邮件的例子,根据发来的消息生成相应的回复,左右两边各有四个LSTM单元(黄色蓝色方块,每个方块代表一个LSTM单元),得到的语义向量c当做初始状态h0输入到Decoder中:

在这里插入图片描述

LSTM简单介绍

下图是LSTM单元的组成结构,由四个门构成:
在这里插入图片描述
下图是3个LSTM单元相互连接(每个单元的结构都一样,上一个单元的输入会作为下一个单元的输入):
在这里插入图片描述

  1. 神经机器翻译
    图中结构比前面稍微复杂一点,单词没有直接输入到Encoder模块中,而是通过Embedding层生成的对应的词嵌入(词向量),然后将生成的词嵌入输入到Encoder模块中,这是NLP中的常用的操作,实际上Decoder部分输入的单词也要先生成对应的词嵌入(见下一个例子)。 得到的语义向量s当做初始状态h0输入到Decoder中,Decoder模块的输出并没有直接得到翻译结果,而是通过Softmax函数来生成,这也是NLP中的常用的操作。实际翻译过程就是这个样子,前面是为了让大家理解seq2seq的原理而把中间过程简化了。
    在这里插入图片描述

  2. 神经机器翻译(双层LSTM)
    这个例子跟上一个类似,只是编解码部分都用了双层LSTM(LSTM有两个隐藏层),_ 是语句起始和结束标记。
    在这里插入图片描述

  3. 生成对联
    在这里插入图片描述

  4. c当做每一步的输入
    这张图在前面讲生成变长序列的时候已经看到了,这也是一个翻译例子,这个例子跟前面不同的地方是Encoder生成的语义向量c当做Decoder部分每一步的输入。
    在这里插入图片描述

Attention机制

Attention机制在[下一篇博客]中,欢迎大家阅读!

标签:模型,Attention,语义,seq2seq,Encoder,输入,Decoder,LSTM,向量
来源: https://blog.csdn.net/weixin_38937984/article/details/101111619

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

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

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

ICode9版权所有