every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog
neural machine translation by jointly learning to align and translate阅读与思考
作为transformer的前传,同时,作为在nlp中第一篇注意力机制相关文章,还是很有必要一读。
本文的主要贡献是打破了此前翻译中encoder-decoder需将句子变换到一个固定的长度,采用自适应方法。
作者:
时间: arxiv第一版时间为2014年
神经机器翻译是一种新兴的机器翻译方法,自从2013年提出的相关文章开始。与传统的基于短语的翻译系统(例如,Koehn等人,2003)不同,它由许多单独调谐的小子组件组成,神经机器翻译试图构建和训练一个单一的大型神经网络,该神经网络读取句子并输出正确的翻译。
关于翻译有两种,一种是2003年左右的phrase-based translation system,一种是2013年的neural machine translation
绝大多数神经机器翻译都属于encoder-decoder。encoder用于读取句子并将其编码为固定长度的向量。然后,解码器从编码向量输出翻译。整个编码器-解码器系统由“语言对”的编码器和解码器组成,共同训练以最大化给定源句子的正确翻译概率
encoder-decoder的特点是encoder将输入编码为一个固定长度的向量,再经过decoder解码
编码为一个固定长度的向量存在一个潜在的问题,在处理长句子时存在困难,尤其是实际应用中的句子比训练时的句子要长
为了解决这个问题,本文对encoder-decoder进行了扩展,引入“学习对齐和翻译”(learns to align and translate jointly) 。每次提出的模型在翻译中生成一个单词时,它(软)搜索源句子中最相关信息集中的一组位置,然后,该模型根据与这些源位置和之前生成的所有目标单词相关的上下文向量来预测目标单词。
这里的表述按现在的看法是“注意力机制”,在此之前作者是如何考虑到这个点的?应该也好理解,一个句子中单词和单词之前之间是“关联”的,借助这种“关联”进而优化我们的目标,扩展到cv中,图中的某个物体同样存在“关联”,但是杯子即可放在桌上也可以放在地上,这种关联应该只和邻近周围相关,随着距离的增长,这种相关性应该没有句子中表现的那么明显。
这种方法与基本编码器解码器最重要的区别在于,它不试图将整个输入句子编码为单个固定长度的向量。相反,它将输入的句子编码成一个向量序列,并在解码翻译时自适应地选择这些向量的子集。这使神经翻译模型不必将源句子的所有信息(无论其长度如何)压缩到固定长度的向量中。我们证明了这可以让模型更好地处理长句子
从直觉上看,这也是合理的。编码为一个固定长度更为“呆板”,自适应的选取更加灵活
本文表明了提出的方法比此前编码为固定的长度的方法更好。此外,定性分析表明,所提出的模型在源句和相应的目标句之间找到了语言上似是而非的(软)对齐
这里原文是a linguistically plausible (soft-)alignment,这里plausible有“似乎是合理的”和“可靠的”两种翻译,这里是两种截然相反的情感,是表述作者对找到的这种对齐不确定还是确定呢?同时,文中表述为“软对齐”,那么是否有应对齐,如果有,又该作何解释?
从概率的角度来看,翻译相当于在给定源句子x的情况下,找到一个使y的条件概率最大化的目标句子y,即 a r g m a x y p ( y ∣ x ) argmax_y p(y | x) argmaxyp(y∣x)。在神经机器翻译中,我们使用并行训练语料库拟合一个参数化模型来最大化句子对的条件概率。一旦翻译模型学习了条件分布,给定一个源句子,就可以通过搜索使条件概率最大化的句子来生成相应的翻译
最近,一些论文提出使用神经网络直接学习这种条件分布(例如,Kalchbrenner和Blunsom, 2013;Cho et al., 2014;Sutskever et al., 2014;Cho et al., 2014;加拿大和墨西哥,1997年)。这种神经机器翻译方法通常由两部分组成,第一部分编码源句子x,第二部分解码为目标句子y。例如,(Cho et al., 2014a)和(Sutskever et al., 2014)使用两个循环神经网络(RNN)将变长源句子编码为固定长度的向量,并将向量解码为变长目标句子。
尽管是一种相当新的方法,神经机器翻译已经显示出有希望的结果。Sutskever等人(2014)报道,基于长短期记忆(LSTM)单元的RNN的神经机器翻译在英法翻译任务上达到了接近传统基于短语的机器翻译系统的最先进性能。例如,将神经组件添加到现有的翻译系统中,对短语表中的短语对进行评分(Cho et al., 2014a)或对候选翻译重新排序(Sutskever et al., 2014),可以超越以前最先进的性能水平。
表明基于神经网络的翻译有不错的情景,13年才有人进行这方面的尝试,作者14年就跟进,更有可能13年也开始尝试了。神经网络应该是12年左右开始爆发,跟进速度杠杆的
在这里,我们简要描述了Cho等人(2014a)和Sutskever等人(2014)提出的底层框架,称为RNN Encoder Decoder,在此基础上,我们构建了一个可以同时学习对齐和翻译的新架构
在Encoder - Decoder框架中,编码器将输入句子向量 x = ( x 1 , ⋅ ⋅ ⋅ , x T x ) x = (x1,···,x_{Tx}) x=(x1,⋅⋅⋅,xTx)序列)读入向量c。最常见的方法是使用RNN,如:
c = q ( h 1 , . . . , h T X ) c = q({h_1,...,h_{T_X}}) c=q(h1,...,hTX)
其中 h t ∈ R n ht∈Rn ht∈Rn为时刻t的隐藏状态,c为隐藏状态序列生成的向量。 F F F和 q q q是一些非线性函数。例如,Sutskever等人(2014)使用LSTM作为 f f f和 q ( h 1 , ⋅ ⋅ ⋅ , h T ) = h T q ({h_1,···,h_T}) = h_T q(h1,⋅⋅⋅,hT)=h