【论文】Sequence to Sequence Learning with Neural Networks
论文笔记: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模型在机器翻译问题上取得了不错的效果。
其在较长的句子上性能比较好。并且可以处理主动语态和被动语态。