人工智能

基于强化学习的序列生成

2018-06-17  本文已影响173人  theoqian

在机器翻译、自动摘要、图像字母等序列生成问题中,训练通常优化的目标是整个序列生成的负log似然值即交叉熵损失函数,即最大化在给定前面的序列真值标记下一个时刻取真值标记的概率(称为Teacher-Forcing)。但是这种方法会导致训练和预测时的不匹配,因为在预测时,模型是根据有模型生成的序列预测下一个标记。这被称为曝光偏移(exposure bias),会使得序列生成过程中误差不断地累加。beam search 可以在预测时选取较优的序列,但是它的计算量会大大增加。
另一个问题是直接最大化似然估计不能保证生成的序列在常用的评价指标(如BLEU, ROUGE, METEOR or CIDEr)上表现出色。

可以直接优化评测指标,但由于序列的评测值对于模型的参数是不可导的,不能直接将评测值作为优化目标。于是,采用强化学习的方法,训练的目标是最小化如下所示的负奖励期望: 负奖励期望.jpg
这里w是生成的序列。根据 REINFORCE 算法目标函数对参数的梯度是: 梯度计算.jpg
为了使模型在训练时梯度的方差较小,对 REINFORCE 引入了 baseline:
强化学习 baseline.jpg

可以看到引入了 baseline 之后总的目标函数梯度是不变的,但是对于单个样本的梯度改变了,并且不同样本的梯度的方差变得小很多,这有益于最小批训练的收敛。可以直观的理解为:对于奖励大于baseline的序列模型会增加它生成的概率,对于奖励小于baseline的序列模型会抑制它生成的概率。

在序列生成任务中,可以将由前面真值标记贪心地生成下一时刻标记得到的序列作为 baseline:


序列生成损失函数.jpg

这里前一项为贪心得到的序列,后一项为根据模型输出概率采样得到的序列。
由于次强化学习任务的解空间非常大,如果直接最优化强化学习目标,训练时间将非常长很难收敛。所以一般会先使用最基本的方法最大化似然函数,使得参数收敛到一个较好的空间而不是一个随机初始化的空间。由于这时候序列预测的概率已经较好了,所以采样过程会在一个小得多的解空间中进行序列采样,这有益于强化学习目标函数的收敛。
也可以将似然函数与强化学习目标函数合成为一个函数进行优化:


混合 loss.jpg 极大似然 loss.jpg

参考文献:
1、A deep reinforced model for abstractive summarization
2、Self-critical Sequence Training for Image Captioning
3、Sequence level training with recurrent nerual network
4、Simple statistical gradient-following algorithms for connectionist reinforcement

上一篇 下一篇

猜你喜欢

热点阅读