Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >文本生成seq2seq框架

文本生成seq2seq框架

作者头像
felixzhao
发布于 2022-05-12 07:58:15
发布于 2022-05-12 07:58:15
6920
举报
文章被收录于专栏:null的专栏null的专栏

1. 概述

Seq2Seq是Sequence to Sequence的缩写,作用是将一个序列(sequence)映射成另一个序列(sequence)。文献[1]和文献[2]分别提出利用深度神经网络DNN实现端到端的Seq2Seq学习,将Seq2Seq应用于神经机器翻译(Neural Machine Translation,NMT),唯一不同的是在[1]中使用LSTM作为基础网络,而在[2]中则是使用的是RNN。在Seq2Seq框架中包含了两个模块,一个是encoder模块,另一个是decoder模块。这种同时包含encoder和decoder的结构与AutoEncoder网络相似,不同的是AutoEncoder模型是将输入通过encoder的网络生成中间的结果,并通过decoder对中间的结果还原,AutoEncoder的模型结构如下图所示:

而在Seq2Seq中,相同的是两者都包含了Encoder和Decoder,不同的是,在Seq2Seq中,输入与输出并不是相同的,而在AutoEncoder中,输入与输出是相同的。

2. Seq2Seq框架

2.1. Seq2Seq框架的概述

Seq2Seq框架最初是在神经机器翻译(Neural Machine Translation,NMT)领域中提出,用于将一种语言(sequence)翻译成另一种语言(sequence)。由于在Seq2Seq结构中同时包含了encoder和decoder的结构,通常Seq2Seq又被称为Encoder-Decoder结构,Seq2Seq的结构如下图所示:

在Seq2Seq结构中,Encoder和Decoder分别是两个独立的神经网络模型,用于对不同的文本建模,通常对序列化文本建模的方法如LSTM[1],RNN[2]等。Encoder通过神经网络将原始的输入{x1,x2,,xTx} 转换成固定长度的中间向量{c1,c2,,cl} ,Decoder将此中间向量作为输入,得到最终的输出{y1,y2,,yTy}

对于机器翻译NMT问题,从概率的角度分析,即对于给定输入x={x1,x2,,xTx} ,求目标输出y={y1,y2,,yTy} ,使得条件概率p(yx) 最大,即argmaxyp(yx)

2.1. Encoder

为了便于阐述,这里选取RNN[2](Recurrent Neural Network)作为Encoder和Decoder,一个典型的RNN结构如下图所示:

在RNN中,当前时刻t 的隐含层状态ht 是由上一时刻t1 的隐含层状态ht1 和当前时刻的输入xt 共同决定的,可由下式表示:

ht=f(ht1,xt)

假设在Seq2Seq框架中,输入序列为x={x1,x2,,xTx} ,其中, ,输出序列为 ,其中, 。在编码阶段,RNN通过学习到每个时刻的隐含层状态后,最终得到所有隐含层状态序列:

具体过程可由下图表示:

通过对这些隐藏层的状态进行汇总,得到上图中固定长度的语义编码向量 ,如下式所示:

其中 表示某种映射函数。通常取最后的隐含层状态 作为语义编码向量 ,即

2.2. Decoder

在解码阶段,在当前时刻 ,根据在编码阶段得到的语义向量 和已经生成的输出序列

来预测当前的输出的 ,其具体过程可由下图表示:

上述过程可以由下式表示:

简化可得:

其中 表示某种映射函数。在RNN中,上式可简化为:

其中 表示 时刻的输出, 表示Decoder中RNN在 时刻的神经元的隐含层的状态, 代表的是Encoder网络生成的语义向量。

3. Attention

上述的基于Encoder-Decoder的Seq2Seq框架成功应用在NMT任务中,但是在Encoder和Decoder之间的固定长度的语义向量 限制了Seq2Seq框架的性能。主要表现为固定长度的语义向量 可能无法完整表示整个序列的信息,尤其是对于较长的句子。为了解决长句子表示的问题,Bahdanau等人[3]在2016年在Seq2Seq框架中引入了Attention机制,同时将上述的Encoder阶段中的RNN替换成双向的RNN(BiRNN),即bidirectional recurrent neural network。

3.1. 带有Attention机制的Encoder

在[3]中的Encoder中,采用的是BiRNN,具体过程如下图所示:

对于BiRNN,其包含了两个阶段的RNN过程,分别为正向RNN和反向RNN,其中,正向RNN生成的隐含层状态序列为:

反向RNN生成的隐含层状态序列为:

对于 时刻的隐含层状态 通常是将正向和反向的隐含层状态concat在一起,即:

3.2. 带有Attention机制的Decoder

与上述的Decoder一致,这里的Decoder也是一个标准的RNN,其过程可由下式表示:

注意到此处与上面不一样的是这里的Encoder网络生成的语义向量不再是固定的,而是变化的。对于第 个词的Decoder过程中, 为:

其中,为归一化权重,其具体为:

其中, 表示的是第 个输出前一个隐藏层状态 与第 个输入隐层向量 之间的相关性,可以通过一个MLP神经网络进行计算,即:

其具体过程可由下图表示:

这里的Attention机制对所有的编码器隐含层状态 都分配了权重,表示的是输出与编码器中每个隐含层状态的相关关系。

4. 总结

与原始的Encoder-Decoder模型相比,加入Attention机制后最大的区别就是原始的Encoder将所有输入信息都编码进一个固定长度的向量之中。而加入Attention后,Encoder将输入编码成一个向量的序列,在Decoder的时候,每一步都会选择性的从向量序列中挑选一个集合进行进一步处理。这样,在产生每一个输出的时候,都能够做到充分利用输入序列携带的信息。

参考文献

[1] Cho K, Merrienboer B V, Gulcehre C, et al. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation[J]. Computer Science, 2014.

[2] Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks[C]//Advances in neural information processing systems. 2014: 3104-3112.

[3] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.

[4] 深度学习中的注意力机制

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Neural Machine Translation 论文阅读
这是2015年发表在ICLR上的论文,也是NLP中Attention机制的开山之作,Attention机制是为了解决一般的RNN Encoder-Decoder对长句子表现不佳的问题而设计的。从论文题目中我们可以看到,作者希望通过Attention机制将输入句子input和输出句子output进行"对齐"(SMT中也有所谓的词对齐模型)。但是,由于不同语言的句法语法结构千差万别,想将源句子与翻译句子严格的对齐是很困难的,所以这里的对齐实际上是软对齐(soft-alignment),也就是不必将源句子显式分割,因而又被形象地称为注意力机制(Attention Mechanism)
mathor
2020/03/17
7920
Transformer的基本原理
Seq2Seq[1]框架最初是在神经机器翻译(Neural Machine Translation,NMT)领域中提出,用于将一种语言(sequence)翻译成另一种语言(sequence)。其结构如下图所示:
felixzhao
2022/09/26
1.2K0
深度学习:Seq2seq模型
http://blog.csdn.net/pipisorry/article/details/78258198
用户7886150
2020/12/28
8040
RNN
循环神经网络(RNN)是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其他神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。而前馈网络是一种静态网络,不具备记忆能力。
hotarugali
2022/03/09
1.4K0
RNN
Seq2Seq与注意力机制
在基于词语的语言模型中,我们使用了循环神经网络。它的输入时一段不定长的序列,输入却是定长的,例如输入:They are,输出可能是watching或者sleeping。然而,很多问题的输出是不定长的序列。以机器翻译为例,输入是一段英文,输出是一段法语,输入和输出皆不定长,例如
mathor
2020/04/10
6370
从Seq2seq到Attention模型到Self Attention(一)
近一两年,注意力模型(Attention Model)是深度学习领域最受瞩目的新星,用来处理与序列相关的数据,特别是2017年Google提出后,模型成效、复杂度又取得了更大的进展。以金融业为例,客户的行为代表一连串的序列,但要从串行化的客户历程数据去萃取信息是非常困难的,如果能够将self-attention的概念应用在客户历程并拆解分析,就能探索客户潜在行为背后无限的商机。然而,笔者从Attention model读到self attention时,遇到不少障碍,其中很大部分是后者在论文提出的概念,鲜少有文章解释如何和前者做关联,笔者希望藉由这系列文,解释在机器翻译的领域中,是如何从Seq2seq演进至Attention model再至self attention,使读者在理解Attention机制不再这么困难。
量化投资与机器学习微信公众号
2018/10/25
1.8K0
从Seq2seq到Attention模型到Self Attention(一)
Seq2Seq、SeqGAN、Transformer…你都掌握了吗?一文总结文本生成必备经典模型(一)
 机器之心专栏 本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。 本文将分 2 期进行连载,共介绍 10 个在文本生成任务上曾取得 SOTA 的经典模型。 第 1 期:Seq2Seq(RNN)、Seq2Seq(LSTM)、Seq2Seq+
机器之心
2023/03/29
1.2K0
Seq2Seq、SeqGAN、Transformer…你都掌握了吗?一文总结文本生成必备经典模型(一)
TeaForN:让Teacher Forcing更有"远见"一些
本文介绍Google新提出的一种名为"TeaForN"的缓解Exposure Bias现象的方案,来自论文《TeaForN: Teacher-Forcing with N-grams》,它通过嵌套迭代的方式,让模型能提前预估到后N个token(而不仅仅是当前要预测的token),其处理思路上颇有可圈可点之处,值得我们学习
mathor
2021/07/08
1K0
Constituency Parsing with a Self-Attensive Encoder 论文解读
之前没咋涉略过 parsing 部分,最近有用到,遇到一个实现的很不错的库:benepar,无论是速度、代码还是性能上,伯克利出品。而本文要讲的论文就是 benepar 的参考论文,代码和论文作者都是一个人:Nikita Kitaev,论文发表于 ACL 2018。代码还参考了作者的另一篇论文:Multilingual Constituency Parsing with Self-Attention and Pre-Training。
Alan Lee
2020/11/24
4560
Constituency Parsing with a Self-Attensive Encoder 论文解读
从Seq2seq到Attention模型到Self Attention(二)
系列一介绍了Seq2seq和 Attention model。这篇文章将重点摆在Google於2017年发表论文“Attention is all you need”中提出的 “”The transformer模型。”The transformer”模型中主要的概念有2项:1. Self attention 2. Multi-head,此外,模型更解决了传统attention model中无法平行化的缺点,并带来优异的成效。
量化投资与机器学习微信公众号
2018/10/25
2.4K0
从Seq2seq到Attention模型到Self Attention(二)
从Encoder到Decoder实现Seq2Seq模型(算法+代码)
知乎专栏:机器不学习 作者:天雨栗 | 蚂蚁金服 | 数据算法 已授权刊登 前言 好久没有更新专栏,今天我们来看一个简单的Seq2Seq实现,我们将使用TensorFlow来实现一个基础版本的Seq2Seq,主要帮助理解Seq2Seq中的基础架构。 最基础的Seq2Seq模型包含了三个部分,即Encoder、Decoder以及连接两者的中间状态向量,Encoder通过学习输入,将其编码成一个固定大小的状态向量S,继而将S传给Decoder,Decoder再通过对状态向量S的学习来进行输出。 图中每一
量化投资与机器学习微信公众号
2018/01/30
2.8K0
从Encoder到Decoder实现Seq2Seq模型(算法+代码)
深度学习教程 | Seq2Seq序列模型和注意力机制
本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整理所得,对应的课程视频可以在这里查看。
ShowMeAI
2022/04/15
8380
深度学习教程 | Seq2Seq序列模型和注意力机制
如果你看了好多文都没有看懂Attention
有一些推送中无法渲染的特殊符号,我会以LaTeX符号代替,会有轻微阅读不便,请各位谅解!
学弱猹
2021/08/09
6200
干货 | 元旦,一起NLP!(下)
0.Roadmap 1. 模型 | 语言模型与词嵌入 2. 模型 | LSTM 3. 盘点 | 那些顶级会议 4. 模型 | Seq2Seq 和 Attention机制 看上去和CV存在不小的差别。以我粗浅地理解,主要原因有以下两点: 1)对输入的处理不同。 我们知道,计算机不认识一个单词,不懂得它的意思,也不知道它和哪些词意思相关联,和另外哪些词经常一起出现。 所以,对于自然语言的处理需要首先将词语表示为向量的形式(Word2Vec, GloVe等),再把一个个词向量拼接为句子(Recursive & R
AI科技评论
2018/03/14
7510
干货 | 元旦,一起NLP!(下)
斯坦福NLP课程 | 第8讲 - 机器翻译、seq2seq与注意力机制
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/05/10
7900
斯坦福NLP课程 | 第8讲 - 机器翻译、seq2seq与注意力机制
从 Encoder 到 Decoder 实现 Seq2Seq 模型
前言 好久没有更新专栏,今天我们来看一个简单的Seq2Seq实现,我们将使用TensorFlow来实现一个基础版本的Seq2Seq,主要帮助理解Seq2Seq中的基础架构。 最基础的Seq2Seq模型
AI研习社
2018/03/16
1.5K0
从 Encoder 到 Decoder 实现 Seq2Seq 模型
AI/机器学习常用公式的LaTex代码汇总
在写AI/机器学习相关的论文或者博客的时候经常需要用到LaTex的公式,然而作为资深“伸手党”的我在网上搜索的时候,居然没有找到相关现成资源@-@
blmoistawinde
2020/05/26
3.5K0
Seq2Seq模型的构建
Seq2Seq是指一般的序列到序列的转换任务,特点是输入序列和输出序列是不对齐的,比如机器翻译、自动文摘等等。
故事尾音
2019/12/16
1.4K0
Seq2Seq模型的构建
论文阅读:《Neural Machine Translation by Jointly Learning to Align and Translate》
https://blog.csdn.net/u011239443/article/details/80521026 论文地址:http://pdfs.semanticscholar.org/071b/16f25117fb6133480c6259227d54fc2a5ea0.pdf
小爷毛毛_卓寿杰
2019/02/13
1.2K0
论文阅读:《Neural Machine Translation by Jointly Learning to Align and Translate》
神经网络 Attention
Attention机制:又称为注意力机制,顾名思义,是一种能让模型对重要信息重点关注并充分学习吸收的技术.通俗的讲就是把注意力集中放在重要的点上,而忽略其他不重要的因素。其中重要程度的判断取决于应用场景,根据应用场景的不同,Attention分为空间注意力和时间注意力,前者用于图像处理,后者用于自然语言处理.
为为为什么
2022/08/06
8160
神经网络 Attention
相关推荐
Neural Machine Translation 论文阅读
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档