encoder-decoder

encoder-decoder

The Encoder

encoder-decoder

编码器是一个RNN,它按顺序读取输入序列x的每个符号。当它读取每一个符号时,RNN的隐藏状态根据式(1)发生变化,读取序列的结束(用一个序列结束符号表示)后,RNN的隐藏状态是整个输入序列的汇总c。

encoder-decoder

The Decoder

该模型的解码器是另一个RNN,它通过预测给定隐藏状态h的下一个符号yt来训练生成输出序列。通过训练预测序列中的下一个符号,RNN可以学习序列上的概率分布。在这种情况下,每个时间步t的输出是条件分布p(xtxt1,...,x1)p(x_t|x_{t-1},...,x_1).例如,可以使用softmax**函数输出一个多项分布(1-of-K编码)

encoder-decoder
对于所有可能的符号j = 1;…;K,其中wj为权矩阵W的行。通过结合这些概率,我们可以计算出序列x的概率

encoder-decoder
因此,decoder在t时刻的隐藏状态计算为:

encoder-decoder

类似地,下一个符号的条件分布是

encoder-decoder

对于给定的**函数f和g(后者必须产生有效的概率,例如使用softmax)。

提出的RNN的两个组成部分编码器-解码器联合训练,以最大限度地提高条件对数似然

encoder-decoder
每个(xn;yn)是训练集中的一个(输入序列,输出序列)对。

一旦训练了RNN编译码器,该模型可以用两种方式使用。一种方法是使用该模型生成给定输入序列的目标序列。另一方面,该模型可用于对给定的输入和输出序列进行评分,分数只是一个概率pθ(yx)p_\theta(y|x)

2.3自适应记忆和遗忘的隐藏单位

除了提出一种新的模型体系结构外,我们还提出了一种新型的隐藏单元,它由LSTM单元驱动,但计算和实现起来要简单得多。图2给出了所提出的隐藏单元的图形化描述。

encoder-decoder

让我们来描述第j个隐藏单元的**是如何计算的。首先,计算复位门rj

encoder-decoder

其中σ\sigma是 logistic-sigmoid函数,[.]j表示向量的第j个元素。x和ht-1分别表示输入和前面的隐藏状态。Wr和Ur是需要学习的权重矩阵。类似地,

更新门zj的计算方法为encoder-decoder

单元hj的实际**

encoder-decoder

encoder-decoder
在这个公式中,当重置门接近0时,隐藏状态被强制忽略以前的隐藏状态,并仅使用当前输入重置。这有效地允许隐藏状态在将来删除任何不相关的信息,从而允许更紧凑的表示。

另一方面,更新门控制从前一个隐藏状态转移到当前隐藏状态的信息量。这类似于LSTM网络中的记忆单元,帮助RNN记住长期信息。此外,这可能被认为是一个泄漏集成单元的自适应变体(Advances
in optimizing recurrent networks.)

由于每个隐藏单元都有单独的重置和更新门,每个隐藏单元将学习在不同的时间尺度上捕获依赖项。那些学习捕获短期依赖项的单元往往会有经常活动的重置门,而那些捕获长期依赖项的单元则会有经常活动的更新门。在我们的初步实验中,我们发现使用这种带有控制单元的新单元是至关重要的。我们无法得到有意义的结果与一个经常使用的tanh单位没有任何门控。

3 Statistical Machine Translation

在一个常用的统计机器翻译系统(SMT)中,该系统(尤其是译码器)的目标是找到一个给定源句e的译文f,使之最大化

encoder-decoder

其中右边第一项称为翻译模型,后面一项称为语言模型(Europarl: A parallel corpus for statistical machine translation.)

然而,在实践中,大多数SMT系统将log p(f | e)建模为具有附加特征和相应权重的对数线性模型:

encoder-decoder

其中fnf_nwnw_n分别为第n个特征和权值,Z(e)是不依赖于权值的归一化常数。