教程 | 将注意力机制引入RNN,解决5大应用领域的序列预测问题 2017-08-02 11:17 来源:机器之心 原标题:教程 | 将注意力机制引入RNN,解决5大应用领域的序列预测问题 选自MachineLearningMastery 作者:Jason Brownlee 参与:Nurhachu Null、路雪 编码器-解码器结构在多个领域展现出先进水平,但这种结构会将输入序列编码为固定长度的内部表征。这限制了输入序列的长度,也导致模型对特别长的输入序列的性能变差。将注意力机制引入循环神经网络帮助解决这一局限性。该方法可用于多个领域的序列预测中,包括文本翻译、语音识别等。 编码器-解码器结构流行的原因是它在众多领域展现出了当前最高水平。这种结构的局限性在于它会将输入序列编码为固定长度的内部表征。这限制了输入序列的长度,并且导致模型对特别长的输入序列的性能变差。 在这篇博客中,我们将发现可以在循环神经网络中采用注意力机制(attention mechanism)来克服这种局限性。 读完这篇博客,你会知道: 编码器-解码器结构和固定长度内部表征的局限性 让网络学会针对输出序列的每一项去注意输入序列中对应位置的注意力机制 带有注意力机制的循环神经网络在文本翻译、语音识别等 5 个领域中的应用。 长序列的问题 在编码器-解码器循环神经网络中,一系列长短期记忆网络(LSTM)学习将输入序列编码为固定长度的内部表征,另一部分长短期记忆网络读取内部表征并将它解码到输出序列中。这种结构在困难的序列预测问题(例如文本翻译)中展示出了当前最先进的水平,并迅速成为了主导方法。例如,下面这两篇论文: 使用神经网络的序列到序列学习(Sequence to Sequence Learning with Neural Networks, 2014) 使用 RNN 编码器-解码器学习短语表征,用于统计机器翻译(Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation, 2014) 编码器-解码器结构仍然能够在很多问题上实现优秀的结果。然而,它受到了一个限制,即所有的输入序列都被强制编码成固定长度的内部向量。这一局限性限制了这些网络的性能,尤其是考虑到比较长的输入序列时,例如文本翻译中的长句子。 「这种编码器-解码器方法的一个潜在问题是神经网络需要把源句子中的所有必要信息压缩成一个固定长度的向量。这使得神经网络在处理长句子,尤其是比训练语料长的句子时会比较困难。」 ——Dzmitry Bahdanau, et al.,Neural machine translation by jointly learning to align and translate, 2015 序列中的注意力机制注意力机制是一个将编码器-解码器结构从固定长度的内部表征中解放出来的方法。它通过保持 LSTM 编码器对输入序列每一步的中间输出结果,然后训练模型学习如何选择性地关注输入,并将它们与输出序列中的项联系起来。换句话说,输出序列中的每一项都取决于输入序列中被选中的项。 「论文中提出的模型在翻译的时候每生成一个词,就会在源句子中的一系列位置中搜索最相关信息集中的地方。然后它会基于上下文向量以及这些源文本中的位置和之前生成的目标词来预测下一个目标词。」「……该模型将输入语句编码成向量序列,并在解码翻译的时候适应性地选择这些向量的子集。这使得神经翻译模型不必再将各种长度的源句子中的所有信息压缩成一个固定长度的向量。」 ——Dzmitry Bahdanau, et al., Neural machine translation by jointly learning to align and translate (https://arxiv.org/abs/1409.0473), 2015 虽然这样做会增加模型的计算负担,但是会形成目标性更强、性能更好的模型。此外,模型还能够展示在预测输出序列的时候,如何将注意力放在输入序列上。这会帮助我们理解和分析模型到底在关注什么,以及它在多大程度上关注特定的输入-输出对。 「论文提出的方法能够直观地观察到生成序列中的每个词与输入序列中一些词的(软)对齐关系,这可以通过对标注权重的可视化来实现……每个图中矩阵的每一行代表与标注相关联的权重。由此我们可以看出在生成目标词时,源句子中的哪一个位置受到了重视。」 (责任编辑:本港台直播) |