Slip the surly bonds of earth, to touch the face of God

[论文解读] Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks

谷歌的几位大牛2015年发表在NIPS上的论文,原文链接:https://papers.nips.cc/paper/5956-scheduled-sampling-for-sequence-prediction-with-recurrent-neural-networks.pdf

这个Scheduled Sampling也用在了他们的MSCOCO2015的image caption competition上了,针对的问题是使用RNN或者LSTM进行sequence prediction比如机器翻译、图像描述时,基本的流程是使用网络当前的状态和前一次的目标token来进行预测下一次的目标token,但是在inference(测试)时,真实的前一次目标token并不知道,
只能使用模型生成的token,这样就造成training和inference时使用了不同的模型。

《[论文解读] Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks》

作者image captioning的NIC(https://arxiv.org/abs/1411.4555)模型,使用了LSTM进行sequence prediction。

模型介绍

作者首先介绍了RNN模型
总体思路是计算在输入X(静态或动态,图像或语句)情况下,输出Y(动态语句)的概率:

$$
\log P(Y|X) = \log P(y_1^t|X) = \sum_{t=1}^T \log P(y_1^{t-1},X)
$$
下面一行代表在给定生成单词\(y_1\)到\(y_{t-1}\)和输入X的情况下\(y_t\)出现的概率之和。T是语句长度。
加上模型参数$\theta$,等式表示为

$$
\log P(y_t|y_1^{t-1},X;\theta) = \log P(y_t|h_t;\theta)
$$
其中,隐藏层状态\(h_t\)可以用下式计算

$$
h_t=\begin{equation}
\begin{cases}
f(X;\theta)& \text{if t=1}\\
f(h_{t-1},y_{t-1};\theta)& \text{otherwise}
\end{cases}
\end{equation}
$$
也就是说,隐藏层由f作用在上一层隐藏层和上一个输出(这次的输入)上得到。通常f是一个非线性映射。

训练目标就是找到使得输出结果在模型上最大化概率的参数

$$
\theta^* = \arg \max_\theta \sum_{(X^i,Y^i)} \log P(Y^i|X^i;\theta)
$$
在测试(Inference)阶段,同样模型需要\(y_{t-1}\)的真实输出和$x_t$的真实输入作为输入寻找\(y_t\),然而因为没有groundtruth,真实的\(y_{t-1}\)不知道,只能选择模型生成的概率最高的输出,或者在可能的输出中抽样。

因为要找出概率最高的输出代价很高——随着序列大小增大,可能的输出组合会呈指数增长。因此需要一个BeemSearch,就是每次只记录最可能的k个输出组合,不用记录全部的输出组合。

弱点

显然在Inference阶段,模型的输入跟训练阶段是有区别的,而且如果在t-1时刻输出了一个比较糟糕的结果,因为不知道真实的输出是什么,模型只能根据这个糟糕的结果去预测t时刻的输出,那么很可能在状态空间中越走越远,输出越来越糟糕。

解决方案——Schedule Sampling

如果我们无法在Inference阶段把模型做得同trian阶段一样,那么就把trian阶段的模型做的更像inference阶段一些。简单说就是train阶段时,输入的\(y_{t-1}\)有\(\epsilon_i\)的概率使用真实的输出值,还有另一半概率使用inference阶段那样的模型生成值。

《[论文解读] Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks》

图中每个时刻,都像抛硬币一样决定使用sampled \(y_{t-2}\)还是true \(y_{t-2}\)。显然这个\(\epsilon_i\)为1时同以前的训练一样,为0时模型则完全同inference阶段一样。直观感受的话,在训练初期,$\epsilon_i$应该大一些,因为要更多地学习真实值来构建模型,在训练末期,\(\epsilon_i\)应该小一些,因为要使得模型更像inference阶段。因此,作者提出了三种decay策略:

《[论文解读] Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks》

实验结果

image captioning

《[论文解读] Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks》

Constituency Parsing

《[论文解读] Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks》

还有一个Speech Recognition的实验,因为模型有些变动,没有仔细看。

总体来讲,这个Scheduled Sampling很好理解,确实有它一定的道理,但是对于模型来讲并没有改动到本质的东西。不过作为一个现有RNN、LSTM的优化方案,得到的预测能力提升还是值得肯定的。

点赞

发表评论

电子邮件地址不会被公开。