机器学习入门之Seq2Seq
小标 2018-09-29 来源 : 阅读 872 评论 0

摘要:本文主要向大家介绍了机器学习入门之Seq2Seq,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

本文主要向大家介绍了机器学习入门之Seq2Seq,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。


场景描述
作为生物体,我们的视觉和听觉会不断地获得带有序列的声音和图像信号,并交由大脑理解;同时我们在说话、打字、开车等过程中,也在不断地输出序列的声音、文字、操作等信号。在互联网公司日常要处理的数据中,也有很多是以序列形式存在的,例如文本、语音、视频、点击流等等。因此如何更好的对序列进行建模,一向是研究的要点。
2013年来,随着深度学习的发展,Seq2Seq(sequence to sequence,序列到序列)框架在机器翻译领域被大量采用,随后迅速影响到了上述的各领域,应用在了各类序列数据上。
 
问题描述
1. Seq2Seq的框架是什么?有哪些优点?
2. Seq2Seq在解码时,有哪些常用的方法?
 
背景知识假设:基本的深度学习知识。
该类问题的被试者:对RNN有一定的使用经验,或在自然语言理解、序列建模等领域有一定的经历。
 
解答与分析
1. Seq2Seq的框架是什么?有哪些优点?可以结合具体的应用场景进行分析。
在Seq2Seq框架提出之前,深度神经网络在图像分类等问题上取得了非常好的效果。在其擅长解决的问题中,输入和输出通常都可以表示为固定长度的向量,如果长度稍有变化,会使用补零等操作。然而许多重要的问题,例如机器翻译、语音识别、自动对话等,表示成序列后,其长度事先并不知道。因此如何突破先前深度神经网络的局限,使其可以适应这些场景,成为了13年以来的研究热点,Seq2Seq框架应运而生[1][2]。
Seq2Seq框架的核心思想是:通过深度神经网络将一个作为输入的序列映射为一个作为输出的序列,这一过程由编码输入与解码输出两个环节构成。在经典的实现中,编码器和解码器分别由一个RNN构成,其选择有传统RNN、LSTM、GRU等,这两个RNN是共同训练的。

上图[3]是Seq2Seq应用于机器翻译时的例子,输入的序列是一个源语言的句子,有三个单词A、B、C,编码器依次读入A、B、C和结尾符。 在解码的第一步,解码器读入编码器的最终状态,生成第一个目标语言的词W;第二步读入第一步的输出W,生成第二个词X;如此循环,直至输出结尾符。输出的序列W、X、Y、Z就是翻译后目标语言的句子。
在文本摘要时,输入的序列是长句子或段落,输出的序列是摘要短句。在图像描述生成时,输入是图像经过视觉网络的特征,输出的序列是图像的描述短句。在语音识别时,输入的序列是音频信号,输出的序列是识别出的文本。这些场景中,编码器或解码器会依据场景有不同的设计,大家在面试时可以结合自己的项目经历展开探讨。
 
2. Seq2Seq在解码时,有哪些常用的方法?
Seq2Seq最核心的部分是其解码部分,大量的改进也是在解码环节衍生的,因此面试时也常常问到。Seq2Seq最基础的解码方法是贪心法,即选取一种度量标准后,每次都在当前状态下选择最佳的一个结果,直到结束。贪心法的计算代价低,适合作为基础实现(baseline),并与其他方法相比较。很显然贪心法获得的是一个局部最优解,由于实际问题的复杂性,该方法往往并不能取得最领先的效果。
Beam search是常见的改进算法,它是一种启发式的算法。该方法会保存beam size(后面简写为b)个当前的较佳选择,然后解码时每一步根据保存的选择进行下一步扩展和排序,接着选择前b个保存,循环进行,直到结束时选择最佳的一个作为解码的结果。下图为b为2的示例:

在该例中,当前已经有解码得到的第一个词的两个选项:I和My。然后,将I和My输入到解码器,得到一系列候选的序列诸如I decided、My decision、 I thought等。最后,从后续序列中选择最优的两个,作为前两个词的两个选项。很显然,如果b取1,那么会退化为前述的贪心法。随着b的增大,其搜索的空间增大,获得的效果会提高,但需要的计算量也会增大。在实际的应用如机器翻译、文本摘要中,b往往会选择一个适中的范围如8~12。
解码时使用堆叠的RNN、增加dropout机制、与编码器之间建立残差连接等,也是常见的改进措施。大家在研究和工作中,可以依据使用场景,多查阅文献和技术文档,有针对的选择和实践。
在解码环节,另一个重要的改进是注意力机制[4],它的引入使得解码时,每一步可以有针对地关注与当前有关的编码结果,从而减小了编码器输出表示的学习难度,也更容易学到长期的依赖关系。注意力机制会在下一节做更加深入的探讨,敬请期待。此外,解码时还可以采用记忆网络(memory network)[5]等,从外界获取知识。
 
参考文献:
[1] Auli, Michael, et al. "Joint Language and Translation Modeling with Recurrent Neural Networks." EMNLP. 2013.
[2] Cho, Kyunghyun, et al. "Learning phrase representations using RNN encoder-decoder for statistical machine translation." EMNLP. 2014.
[3] Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. "Sequence to sequence learning with neural networks." NIPS. 2014.
[4] Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. "Neural machine translation by jointly learning to align and translate." ICLR. 2015.
[5] Sukhbaatar, Sainbayar, Jason Weston, and Rob Fergus. "End-to-end memory networks." NIPS. 2015.
 

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能机器学习频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程