自然语言生成任务,如文本摘要和图像标题的生成。seq2seq的模型原理

				版权声明:本文为博主原创文章,未经博主允许不得转载。					https://blog.csdn.net/Irving_zhang/article/details/78889364				</div><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css"><div id="content_views" class="markdown_views prism-atom-one-dark"><!-- flowchart 箭头图标 勿删 --><svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg><p>在李纪为博士的毕业论文中提到,基于生成的闲聊机器人中,seq2seq是一种很常见的技术。例如,在法语-英语翻译中,预测的当前英语单词不仅取决于所有前面的已翻译的英语单词,还取决于原始的法语输入;另一个例子,对话中当前的response不仅取决于以往的response,还取决于消息的输入。其实,seq2seq最早被用于机器翻译,后来成功扩展到多种自然语言生成任务,如文本摘要和图像标题的生成。本文将介绍几种常见的seq2seq的模型原理,seq2seq的变形以及seq2seq用到的一些小trick。</p>

我们使用x={x1,x2,…,xn}代表输入的语句,y={y1, y2, …, yn}代表输出的语句,yt代表当前输出词。在理解seq2seq的过程中,我们要牢记我们的目标是:


这里写图片描述(1)

即输出的yt不仅依赖之前的输出{y1, y2, …, yt−1},还依赖输入语句x,模型再怎么变化都是在公式(1)的约束之下。

seq2seq最初模型

最早由bengio等人发表在computer science上的论文:Learning Phrase Representations using RNN Encoder–Decoder
for Statistical Machine Translation。对于RNN来说,x={x1,x2,…,xt}代表输入,在每个时间步t,RNN的隐藏状态htht由公式(1)更新:

ht=f(ht1,xt)ht=f(ht−1,xt) (2)

其中,f代表一个非线性函数。这时htht就是一个rnn_size的隐含状态。然后需要通过一个矩阵W将其转成一个symbol_size的输出,并通过softmax函数将其转化为概率,然后筛选出概率最大的symbol为输出symbol。

这里写图片描述(3)

以上是rnn的基本原理,接下来介绍论文中的seq2seq模型:

这里写图片描述

模型包括encoder和decoder两个部分。首先在encoder部分,将输入传到encoder部分,得到最后一个时间步长t的隐藏状态C,这就是RNNcell的基本功能。其次是decoder部分,从上述模型的箭头中可以看出,decoder的隐藏状态htht和C三部分构成。即:

这里写图片描述(4)

由此我们的到了decoder的隐藏状态,那么最后的输出ytyt从图中也可以看得出来由三部分得到,y_{t-1}$和C,即:

这里写图片描述(5)

到现在为止,我们就实现了我们的目标(1)。

seq2seq的改进模型

改进模型介绍2014年发表的论文Sequence to Sequence Learning with Neural Networks。模型图:

这里写图片描述

可以看到,该模型和第一个模型主要的区别在于从输入到输出有一条完整的流:ABC为encoder的输入,WXYZ为decoder的输入。将encoder最后得到的隐藏层的状态ht输入到decoder的第一个cell里,就不用像第一个模型一样,而一个decoder的cell都需要ht,因此从整体上看,从输入到输出像是一条“线性的数据流”。本文的论文也提出来,ABC翻译为XYZ,将encoder的input变为“CBA”效果更好。即A和X的距离更近了,更有利于seq2seq模型的交流。

具体来说,encoder的过程如下图。这和我们之前的encoder都一样。

这里写图片描述

不同的是decoder的阶段:

这里写图片描述

得到了encoder represention,即encoder的最后一个时间步长的隐层ht以后,输入到decoder的第一个cell里,然后通过一个激活函数和softmax层,得到候选的symbols,筛选出概率最大的symbol,然后作为下一个时间步长的输入,传到cell中。这样,我们就得到了我们的目标(1)。

seq2seq with attention

我们前面提到,距离decoder的第一个cell越近的输入单词,对decoder的影响越大。但这并不符合常理,这时就提出了attention机制,对于输出的每一个cell,都检测输入的sequence里每个单词的重要性,即论文NEURAL MACHINE TRANSLATION
BY JOINTLY LEARNING TO ALIGN AND TRANSLATE。attention在NMT基于seq2seq的改进模型再进行改进,原理如下:

这里写图片描述

上图中,encoder和decoder都发生了变化。首先说encoder,使用了双向RNN,因为希望不仅能得到前向的词的顺序,还希望能够得到反向的词的顺序。使用hjhj→

再说decoder。我们再来回顾一下我们的目标公式(1):


这里写图片描述

对于加入attention机制的seq2seq,每一个输出为公式(6)。即对于时间步i的输出yi,由时间步i的隐藏状态si,由attention计算得到的输入内容ci和上一个输出yi-1得到。

这里写图片描述(6)

其中si是对于时间步i的隐藏状态,由公式(7)计算。即对于时间步i的隐藏状态,由时间步i-1的隐藏状态si-1,由attention计算得到的输入内容ci和上一个输出yi-1得到。

这里写图片描述(7)

通过以上公式可以看出,加入attention的seq2seq比之前的seq2seq多了一个输入内容向量ci,那么这个ci是怎么得来的呢?和输入内容以及attention有什么关系呢?我们接着看公式(8):

这里写图片描述(8)

即,对于decoder的时间步长i的隐藏状态si,ci等于Tx个输入向量[1,Tx]与其权重αijαij由公式(9)得到:

这里写图片描述(9)

其中,eij由公式(10)得到:

这里写图片描述(10)

总结一下,对于时间步i的隐藏状态si,可以通过求时间步i-1的隐藏状态si-1、输入内容的编码向量ci和上一个输出yi-1得到。输入内容编码ci是新加入的内容,可以通过计算输入句子中每个单词的权重,然后加权求和得到ci。直观解释这个权重:对于decoder的si和encoder的hj的权重\alpha_{ij}$,就是上一个时间步长的隐藏状态si-1与encoder的hj通过非线性函数得到的。这样就把输入内容加入到解码的过程中,这和我们人类翻译的过程也是类似的,即对于当前输出的词,每一个输入给与的注意力是不一样的。

seq2seq with beam-search

在测试阶段,decoder的过程有两种主要的解码方式。第一种方法是贪婪解码,它将在上一个时间步预测的单词feed给下一步的输入,来预测本个时间步长的最有可能的单词。

但是,如果有一个cell解码错了词,那么错误便会一直累加。所以在工程上提出了beam-search的方法。即在decoder阶段,某个cell解码时不只是选出预测概率最大的symbol,而是选出k个概率最大的词(例如k = 5,我们称k=5为beam-size)。在下一个时间步长,对于这5个概率最大的词,可能就会有5V个symbols(V代表词表的大小)。但是,只保留这5V个symbols中最好的5个,然后不断的沿时间步长走下去。这样可以保证得到的decode的整体的结果最优。

参考文献:

(1)Learning Phrase Representations using RNN Encoder–Decoder
for Statistical Machine Translation

(2)Sequence to Sequence Learning with Neural Networks

(3)NEURAL MACHINE TRANSLATION
BY JOINTLY LEARNING TO ALIGN AND TRANSLATE

(4)seq2seq with beam-search

(5) 从头实现一个深度学习对话系统–Seq-to-Seq模型详解

(6) seq2seq学习笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

史上最简单的决策树模型讲解

从前 从前&#xff0c;小夕种了一棵树&#xff0c;种在了小夕的小屋后面~ 为什么要种这棵树呢&#xff1f;因为呀&#xff0c;它可以帮小夕总结历史经验&#xff0c;然后帮小夕对当前的局势做出决策~这样小夕就可以安心给大家写文章啦~ 这棵树是这样的。 一开始&#xff0c;小夕…

听觉器官是高阶元分类“革命性证据”

来源&#xff1a;中国科学报反刍类的内耳几何形态学分析及系统发育示图。Laura Dziomber/绘化石研究的第一步是通过形态特征鉴定身份&#xff0c;厘清物种的亲缘关系&#xff0c;但这种方法并不完美。那些长相相似的也许“八竿子打不着”&#xff0c;而毫无共同特征的却是“亲属…

机器学习从理论到工程的第二步-开发环境与工具篇

在《第一步-编程语言篇》中&#xff0c;小夕为大家较为详细的介绍了做机器学习&#xff08;及其相关应用方向&#xff09;的编程语言的选择问题&#xff0c;这一篇便是小夕为大家推荐的各个编程语言的开发环境/工具。习惯性扫盲开篇。鉴于可能有部分同学的软件开发经验稍有欠缺…

干了一年“元宇宙”,Meta亏了300亿美金

来源&#xff1a;青投创新编辑&#xff1a;Leon"Facebook更名成Mate&#xff1a;从社交媒体转型为“元宇宙”&#xff0c;但前景并不乐观。一年前&#xff0c;Meta在元宇宙上高歌猛进。该公司刚刚完成了从Facebook到Meta的品牌重塑。正如马克扎克伯格&#xff08;Mark Zuc…

机器学习从理论到工程的第二步-开发环境与工具篇(下)

好啦~继续昨天的《第二步——开发环境与工具篇&#xff08;上&#xff09;》~其实有点尴尬啦&#xff0c;本来想一篇讲完的&#xff0c;结果小夕太啰嗦了&#xff0c;还没有开始讲正文&#xff0c;就写了快2000字了。。。所以说&#xff0c;这一篇是上一篇的正文。。。matlab就…

阿里-2019算法岗笔试编程题-kmp匹配

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/details/82503724 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_…

IBM量子处理器,将突破1000位

来源&#xff1a;半导体行业观察IBM的CONDOR是世界上第一台拥有超过1000个量子比特的通用量子计算机&#xff0c;它将于2023年首次亮相。预计这一年IBM还将推出Heron&#xff0c;这是该公司表示可能对其有所帮助的新型模块化量子处理器群中的第一个到2025年生产出超过4000个量子…

ChatGPT到底有多聪明?我测试了ChatGPT的数学能力

来源&#xff1a;AI前线译者&#xff1a;马可薇 人人都听说过最新&#xff0c;也是最复杂的聊天机器人 chatGPT。而众所周知&#xff0c;它在英文文学等“软话题”方面甚是熟练&#xff0c;所以我决定测试它在数学这类“硬话题”方面的表现。你可能不知道&#xff0c;但我是有…

从朴素贝叶斯到贝叶斯网

回顾在文章《朴素贝叶斯》中&#xff0c;小夕为大家介绍了朴素贝叶斯模型的基本知识&#xff0c;并且得出了朴素贝叶斯是利用联合概率P(x1,x2,x3...xn,y)来确定某个样本为某个类别的概率&#xff0c;进而利用最大后验概率&#xff08;MAP&#xff09;来决策类别。也就是说&…

2022年,谁在数学史上永远留下了姓名

来源&#xff1a;新智元这一年&#xff0c;数学领域有什么大事&#xff1f;Quanta Magazine做了一份全年总结。我们可以把数学家想象成考古学家——他们煞费苦心地拂去世界隐藏结构上的灰尘。起来很吸引人&#xff1f;“你的起点并不重要&#xff0c;但要眼光长远&#xff0c;了…

神经网络激活函数=生物转换器?

啊~昨晚躺了一个小时竟然没有睡着&#xff0c;美容觉泡汤了...于是竟然大半夜起来写了这篇文章在《逻辑回归到神经网络》中&#xff0c;小夕让神经网络冒了个泡。在《一般化机器学习与神经网络》中&#xff0c;将神经网络这一火热的模型强制按回机器学习一般框架里。在《BP算法…

从Encoder到Decoder实现Seq2Seq模型

首发于机器不学习关注专栏写文章从Encoder到Decoder实现Seq2Seq模型天雨粟模型师傅 / 果粉​关注他300 人赞同了该文章更新&#xff1a;感谢Gang He指出的代码错误。get_batches函数中第15行与第19行&#xff0c;代码已经重新修改&#xff0c;GitHub已更新。前言好久没有更新专…

市场增速超20%,国产操作系统“浴火重生” | 解读操作系统的 2022

作者 | 凌敏 本文是“2022 InfoQ 年度技术盘点与展望”系列文章之一&#xff0c;由 InfoQ 编辑部制作呈现&#xff0c;重点聚焦操作系统领域在 2022 年的重要进展、动态&#xff0c;希望能帮助你准确把握 2022 年操作系统领域的核心发展脉络&#xff0c;在行业内始终保持足够的…

线性代数应该这样讲(二)

在《...&#xff08;一&#xff09;》中&#xff0c;小夕从映射的角度讲解了矩阵及矩阵运算&#xff0c;这也是机器学习中看待矩阵的非常重要的视角。另一方面说&#xff0c;矩阵当然也是用于存储数据的数据结构&#xff0c;这也是最好理解的形式。另外还可以看做是一个线性方程…

2023将至,Bengio等大佬年度展望!懂理性的AI模型要来了?

来源&#xff1a;新智元【导读】2022年对AI来说注定是不平凡的一年&#xff0c;这不吴恩达、Bengio等一众圈内大佬在接受DeepLearning.ai的采访中都展望了2023年AI的发展趋势&#xff0c;还分享了自己的科研小故事。还有1天&#xff0c;2022年就要过去了。此前我们报道了吴恩达…

【NLP】Attention Model(注意力模型)学习总结

【NLP】Attention Model&#xff08;注意力模型&#xff09;学习总结郭耀华发表于郭耀华‘s Blog订阅294在这篇文章中&#xff1a;1. 什么是Attention机制&#xff1f;2. 先了解编码-解码框架&#xff1a;Encoder-Decoder框架3. Attention Model4. Attention机制的本质思想5. S…

杂谈机器学习的几个应用场景

在上一篇文章末尾&#xff0c;小夕提到了“机器学习是实现自然语言处理的正确道路”。其实确实如此&#xff0c;纵观整个自然语言处理的发展史&#xff0c;也是纵观整个人工智能的发展史&#xff0c;从诞生到现在&#xff0c;机器学习不仅是在理论和工程上实现自然语言处理的目…

2022年度十大AI技术盘点:AIGC风暴来袭,自动驾驶后会无期?

来源&#xff1a;AI科技大本营翻译 & 整理&#xff1a;杨阳“科学不能告诉我们应该做什么&#xff0c;只能告诉我们能做什么。”——让-保罗萨特《存在与虚无》这一年&#xff0c;AI又有哪些前沿技术突破呢&#xff1f;通过汇总梳理2022年10大AI技术&#xff0c;AI科技大本…

从逻辑回归到受限玻尔兹曼机

在那很久很久以前&#xff0c;可爱的小夕写了一篇将逻辑回归小题大做的文章&#xff0c;然后在另一篇文章中阐述了逻辑回归的本质&#xff0c;并且推广出了softmax函数。从那之后&#xff0c;小夕又在一篇文章中阐述了逻辑回归与朴素贝叶斯的恩仇录&#xff0c;这两大祖先级人物…

Peacock:大规模主题模型及其在腾讯业务中的应用-2015

Peacock&#xff1a;大规模主题模型及其在腾讯业务中的应用 作者&#xff1a;赵学敏 王莉峰 王流斌 孙振龙 严浩 靳志辉 王益 摘要 如果用户最近搜索了“红酒木瓜汤”&#xff0c;那么应该展示什么样的广告呢&#xff1f;从字面上理解&#xff0c;可能应该返回酒水或者水果类广…