【论文】Sequence to Sequence Learning with Neural Networks

Feb 2, 2020· · 1 min read

论文笔记:Sequence to Sequence Learning with Neural Networks

主要内容

使用一个深度LSTM网络将输入序列映射到固定长度的向量,再使用另一个深度LSTM网络将该向量映射(decode)到目标序列。

背景

DNN在语音识别和视觉识别领域有非常好的效果,但是仅能用于输入和输出可以化为(encode)相同的固定规模(known and fixed)的向量。很多实际问题中输入和输出需要用未知长度的向量表示。

LSTM可以在具有长期时间相关性(long range temporal dependencies)的数据中具有比较好的学习效果,因此用于在输入序列和相应的输出序列之间进行学习。

同时通过在训练中反转输入序列引入短期依赖便于训练和优化。

实现方式

原理

使用单个RNN由给定输入序列$(x_1,x_2,...,x_t)$计算输出序列$(y_1,y_2,...,y_t)$的方法如下:

$h_t = sigm(W^{hx}x_t + W^{hh}h_{t-1})$、$y_t = W^{yh}h_t$。但是并不能用于不同长度的输入和输出序列。

因此使用两个LSTM取代两个RNN来实现长期时间相关性的学习。

在LSTM中使用条件概率的计算方法如下:

$p(y_1,...,y_{T'}|x_1,...,x_T) = \prod_{t=1}^{T'}p(y_t|v,y_1,...,y_{t-1})$,其中v是输入序列的一种表示。

具体实现中,使用两个深度LSTM网络,每个网络具有4层,用于训练的输入序列反转。

每个LSTM通过最大化对数几率进行训练,目标函数为$\frac{1}{|S|}\sum_{(T,S)\in \mathbb{S}} logp(T|S)$,其中$\mathbb{S}$为训练集。

预测时依据$\hat{T} = arg max_{\mathbf{T}} p(T|S)$,使用自左向右的Beam Search算法1得到翻译结果。

输入序列反转后,训练的性能提高(原文使用“最小时滞 minimal time lag”加以解释:输入序列和输出序列的开头几个单词的距离减小)。可以认为输出序列的前半部分正确率较高而后半部分表现比较差。

实现

使用WMT'14 英语-法语数据库进行训练。

每个LSTM网络有4层,每层1000个单元,每个数据使用1000维张量表示。

输入词汇量160000,输出词汇量80000。输出时使用8000输入的softmax。共有384M参数。

为了防止梯度爆炸,每一个batch训练结束后对梯度正规化。

评价

结果

训练结果使用BLEU打分,在WMT‘14数据库上得到37.0分

结果评价

使用深度LSTM网络实现的sequence到sequence模型在机器翻译问题上取得了不错的效果。

其在较长的句子上性能比较好。并且可以处理主动语态和被动语态。

参考