神经网络中的Attention-2.Sequence-to-Sequence (Seq2Seq)

在之前的文章中,介绍了注意力机制,并概述了它的(不那么短的)历史。在这篇文章中,将解释Sequence-to-Sequence (Seq2Seq)架构,它带来了神经机器翻译的重大突破,并推动了Attention的发展。

图片

动机-序列问题

深度神经网络是在各种任务中对非线性数据进行建模的高效工具。在图像分类、句子分类等多种任务中,深度神经网络已被证明是有效的。然而,传统的架构,如多层感知机,在建模序列,如信号和自然语言的效率较低。因此,Seq2Seq被提出来将序列输入映射到序列输出。Seq2Seq可以处理变长向量,将其映射为变长向量。

考虑Seq2Seq在机器翻译任务中的经典应用,即将法语句子(源)翻译成英语句子(目标)。请注意,源句子在单词(或字符)方面有不同的长度。第一句法语“On y va”(翻译成英语“Let’s go”)有三个单词,或者第二句、第三句和第四句分别有四个、五个和六个单词。此外,目标单词的数量也不是固定的——在本例中可以是2到6个单词。

图片

机器翻译的另一个潜在问题是源(和目标)词常常相互依赖。例如,当我们看到句子开头的单词“I”时,我们更有可能把“am”看作第二个单词,而不是“are”。相反,如果我们看到“You”,我们很可能看到“are”而不是“am”。因此,模拟一个句子中不同单词(和字符)之间的时间依赖性是很重要的。

而且,源词和目标词之间有依赖性。换句话说,源词更有可能与目标词中的某些词相关。例如,第二个法语句子中的“Pour”与英语句子中的“For”更一致,“la”与“the”更一致,以此类推。Alignment modelswith attention 中有更深入的讨论。

Seq2Seq架构

因此,Seq2Seq被提出用来建模具有时间依赖性的变长源输入。Cho etal. (2014)是基于序列的神经机器翻译的前沿研究之一。它们的RNN编解码器体系结构由两个递归神经网络组成,即编码器和解码器。

图片

编码器和解码器都由多个递归神经网络(RNN)神经元组成,如LSTM神经元和GRU神经元。神经元的数量因不同实例而异,以考虑到不同的源单词和目标单词的数量。每个RNN神经元都有多个输出,以建立输入向量之间的依赖关系。除了序列输出,LSTM神经元有隐藏的神经元状态,GRU神经元有隐藏的状态。有关RNN结构的更多信息,请参阅RNN tutorial with Pytorch.

图片

编码器的最终隐藏状态,c,作为对编码器输入的总结,也就是源句子。换句话说,来自源句子的信息被提取到一个具有固定维数的向量中。在解码器中,c与之前的隐藏状态和目标词一起,作为RNN的输入。因此,第t层的隐藏状态计算如下(f是此处的RNN操作)。

图片

每一步t的输出是在这一步用激活函数g预测某个单词的概率。

图片

然后,对计算的概率进行softmaxed 处理,以找到预测概率最高的单词。

图片

继Cho et al. (2014)之后,Sutskever et al. (2014) 提出了类似于LSTM的RNN编码器-解码器的深度学习体系结构。因此,我们称RNN模型的变体映射序列到带有编码器和解码器Seq2Seq的序列。

在这篇文章中,我介绍了Seq2Seq及其整体架构。在下一篇文章中,我将详细解释Seq2Seq架构,同时使用Pytorch实现它。感谢您的阅读。

欢迎关注我的微信订阅号,上面有更多深度学习的系列文章。

 

参考文献

  • Cho et al. (2014)

  • Sutskever et al.     (2014)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值