- PaperWeekly 2016.08.05 第一期
- PaperWeekly 第二期
- PaperWeekly 第三期
- PaperWeekly 第四期 - 基于强化学习的文本生成技术
- PaperWeekly 第五期 - 从 Word2Vec 到 FastText
- PaperWeekly 第六期 - 机器阅读理解
- PaperWeekly 第七期 -- 基于 Char-level 的 NMT OOV 解决方案
- PaperWeekly 第八期 - Sigdial2016 文章精选(对话系统最新研究成果)
- PaperWeekly 第九期 -- 浅谈 GAN
- PaperWeekly 第十期
- PaperWeekly 第十一期
- PaperWeekly 第十二期 - 文本摘要
- PaperWeekly 第十三期--最新文章解读
- PaperWeekly 第十四期 - TTIC 在 QA 任务上的研究进展
- PaperWeekly 第十六期 - ICLR 2017 精选
- PaperWeekly 第十七期 - 无监督/半监督 NER
- PaperWeekly 第十八期 - 提高 seq2seq 方法所生成对话的流畅度和多样性
- PaperWeekly 第十九期 - 新文解读(情感分析、机器阅读理解、知识图谱、文本分类)
- PaperWeekly 第二十期 - GAN(Generative Adversarial Nets)研究进展
- PaperWeekly 第二十一期 - 多模态机器翻译
- PaperWeekly 第二十二期 - Image Caption 任务综述
- PaperWeekly 第二十三期 - 机器写诗
- PaperWeekly 第二十四期 - GAN for NLP
- PaperWeekly 第二十五期 - 增强学习在 image caption 任务上的应用
- PaperWeekly 第二十六期 - 2016 年最值得读的 NLP paper 解读(3 篇)+在线 Chat 实录
- PaperWeekly 第二十七期 | VAE for NLP
- PaperWeekly 第 28 期 | 图像语义分割之特征整合和结构预测
- PaperWeekly 第 29 期 | 你的 Emoji 不一定是我的 Emoji
- PaperWeekly 第 30 期 | 解读 2016 年最值得读的三篇 NLP 论文 + 在线 Chat 实录
- PaperWeekly 第 31 期 | 远程监督在关系抽取中的应用
- PaperWeekly 第 32 期 | 基于知识图谱的问答系统关键技术研究 #01
- PaperWeekly 第 33 期 | 基于知识图谱的问答系统关键技术研究 #03
- PaperWeekly 第 34 期 | VAE 在 chatbot 中的应用
- PaperWeekly 第 35 期 | 如何让聊天机器人懂情感 PaperWeekly 第 35 期 | 如何让聊天机器人懂情感
- PaperWeekly 第 36 期 | Seq2Seq 有哪些不为人知的有趣应用?
- PaperWeekly 第 37 期 | 论文盘点:检索式问答系统的语义匹配模型(神经网络篇)
- PaperWeekly 第 38 期 | SQuAD 综述
- PaperWeekly 第 39 期 | 从 PM 到 GAN - LSTM 之父 Schmidhuber 横跨 22 年的怨念
- PaperWeekly 第 40 期 | 对话系统任务综述与基于 POMDP 的对话系统
- PaperWeekly 第 41 期 | 互怼的艺术:从零直达 WGAN-GP
- PaperWeekly 第 42 期 | 基于知识图谱的问答系统关键技术研究 #04
- PaperWeekly 第 43 期 | 教机器学习编程
- PaperWeekly 第 44 期 | Kaggle 求生
- PaperWeekly 第 45 期 | 词义的动态变迁
- PaperWeekly 第 46 期 | 关于远程监督,我们来推荐几篇值得读的论文
- PaperWeekly 第 47 期 | 开学啦!咱们来做完形填空:“讯飞杯”参赛历程
- 深度强化学习实战:Tensorflow 实现 DDPG - PaperWeekly 第 48 期
- 评测任务实战:中文文本分类技术实践与分享 - PaperWeekly 第 49 期
- 从 2017 年顶会论文看 Attention Model - PaperWeekly 第 50 期
- 深入浅出看懂 AlphaGo Zero - PaperWeekly 第 51 期
- PaperWeekly 第 52 期 | 更别致的词向量模型:Simpler GloVe - Part 1
- PaperWeekly 第 53 期 | 更别致的词向量模型:Simpler GloVe - Part 2
- 基于神经网络的实体识别和关系抽取联合学习 | PaperWeekly #54
PaperWeekly 第二十五期 - 增强学习在 image caption 任务上的应用
引言
第二十二期的 PaperWeekly 对 Image Captioning 进行了综述。今天这篇文章中,我们会介绍一些近期的工作。(如果你对 Image Captioning 这个任务不熟悉的话,请移步二十二期)
Image Captioning 的模型一般是 encoder-decoder 的模型。模型对$p(S|I)$进行建模,$S$是描述,$I$是图片。模型的训练目标是最大化 log 似然:$max_thetasum_i log P(S_i|I_i, theta)$。
然而使用最大似然训练有两个问题:
1、虽然训练时最大化后验概率,但是在评估时使用的测度则为 BLEU,METEOR,ROUGE,CIDER 等。这里有训练 loss 和评估方法不统一的问题。而且 log 似然可以认为对每个单词都给予一样的权重,然而实际上有些单词可能更重要一些(比如说一些表示内容的单词)。
2、第二个问题为 Exposure bias。训练的时候,每个时刻的输入都是来自于真实的 caption。而生成的时候,每个时刻的输入来自于前一时刻的输出;所以一旦有一个单词生成的不好,错误可能会接着传递,使得生成的越来越糟糕。
如何解决这两个问题呢?很显而易见的想法就是尽量使得训练和评估时的情形一样。我们可以在训练的时候不优化 log 似然,而是直接最大化 CIDER(或者 BLEU,METEOR,ROUGE 等)。并且,在训练时也和测试时一样使用前一时刻的输入,而不是全使用 ground truth 输入。
然而这有什么难点呢?第一,CIDER 或者这一些 metric 并不是可直接求导。(这就是为什么在分类问题中,我们把 0-1 error 近似成 log loss,hinge loss 的原因)。其次从前一时刻输出获得后一时刻的输入涉及到采样操作,这也是不可微的。为了能够解决这些不可微的问题,人们就想到了 Reinforcement learning。
RL 基本概念
RL 中有一些比较重要的基本概念:状态(state),行为(action),回报(reward)和决策(policy)。决策是一个状态到动作的函数,一般是需要学习的东西。拿打游戏的例子介绍 RL 最简单。如果说是玩 flappy bird,RL 要学习的就是在什么位置跳,能使得最后得到的分数越高。在这个例子里,最后的分数就是回报,位置就是状态,跳或者不跳就是行为,而什么时候跳就是学到的策略。
如果放在 Image captioning 中,状态就是你看到的图片和已生成的单词,而动作就是下一个单词生成什么,回报就是 CIDER 等 metric。
相关文献
最近已经有很多工作将 RL 用在 NLP 相关的问题上。[1]第一次将 REINFORCE 算法用在 image caption 和 seq2seq 问题上。[5]将使用了更先进的 RL 算法 — Actor-critic — 来做 machine translation 上。[2,4]将[1]的算法进行稍许改进(仍旧是 REINFORCE 算法),使用在了 image captioning 上。[3]将 REINFORCE 用在序列生成 GAN 中,解决了之前序列生成器输出为离散不可微的问题。[6]将 RL 用在自然对话系统中。这篇文章中我们主要介绍[1,2,4]。
RL 算法背景
这三篇文章使用的是 REINFORCE 算法,属于增强学习中 Policy Gradient 的一种。我们需要将 deterministic 的策略形式 $a=pi(s,theta)$转化为概率形式,$p(a) = pi(a|s, theta)$。Policy Gradient 就是对参数$theta$求梯度的方法。
直观的想,如果我们希望最后的决策能获得更高的 reward,最简单的就是使得高 reward 的行为有高概率,低 reward 的行为有低概率。所以 REINFORCE 的更新目标为
$$max_{theta} sum R(a,s)log pi(a|s, theta)$$
$R(s,a)$是回报函数。有了目标,我们可以通过随机梯度下降来更新$theta$来获得更大的回报。
然而这个方法有一个问题,训练时梯度的方差过大,导致训练不稳定。我们可以思考一下,如果 reward 的值为 100 到 120 之间,现在的方法虽然能更大地提高 reward 为 120 的行为的概率,但是也还是会提升低 reward 的行为的概率。所以为了克服这个问题,又有了 REINFORCE with baseline。
$$max_{theta} sum (R(a,s) - b(s))log pi(a|s, theta)$$
$b(s)$在这里就是 baseline,目的是通过给回报一个基准来减少方差。假设还是 100 到 120 的回报,我们将 baseline 设为 110,那么只有 100 回报的行为就会被降低概率,而 120 回报的行为则会被提升概率。
三篇 paper
第一篇是 FAIR 在 ICLR2016 发表的[1]。这篇文章是第一个将 RL 的算法应用的离散序列生成的文章。文章中介绍了三种不同的方法,这里我们只看最后一种算法,Mixed Incremental Cross-Entropy Reinforce。
大体的想法就是用 REINFORCE with baseline 来希望直接优化 BLEU4 分数。具体训练的时候,他们先用最大似然方法做预训练,然后用 REINFORCE finetune。在 REINFORCE 阶段,生成器不再使用任何 ground truth 信息,而是直接从 RNN 模型随机采样,最后获得采样的序列的 BLEU4 的分数 r 作为 reward 来更新整个序列生成器。
这里他们使用 baseline 在每个时刻是不同的;是每个 RNN 隐变量的一个线性函数。这个线性函数也会在训练中更新。他们的系统最后能比一般的的 cross extropy loss,和 scheduled sampling 等方法获得更好的结果。
他们在 github 开源了基于 torch 的代码,
第二篇论文是今年 CVPR 的投稿。这篇文章在[1]的基础上改变了 baseline 的选取。他们并没有使用任何函数来对 baseline 进行建模,而是使用了 greedy decoding 的结果的回报作为 baseline。他们声称这个 baseline 减小了梯度的 variance。
这个 baseline 理解起来也很简单:如果采样得到句子没有 greedy decoding 的结果好,那么降低这句话的概率,如果比 greedy decoding 还要好,则提高它的概率。
这个方法的好处在于避免了训练一个模型,并且这个 baseline 也极易获得。有一个很有意思的现象是,一旦使用了这样的训练方法,beam search 和 greedy decoding 的结果就几乎一致了。
目前这篇文章的结果是 COCO 排行榜上第一名。他们使用 CIDEr 作为优化的 reward,并且发现优化 CIDEr 能够使所有其他 metric 如 BLEU,ROUGE,METEOR 都能提高。
他们的附录中有一些 captioning 的结果。他们发现他们的模型在一些非寻常的图片上表现很好,比如说有一张手心里捧着一个长劲鹿的图。
第三篇论文[4]也是这次 CVPR 的投稿。这篇文章则是在$R(a,s)$这一项动了手脚。
前两篇都有一个共同特点,对所有时刻的单词,他们的$R(a,s)$都是一样的。然而这篇文章则给每个时刻的提供了不同的回报。
其实这个动机很好理解。比如说,定冠词 a,无论生成的句子质量如何,都很容易在句首出现。假设说在一次采样中,a 在句首,且最后的获得回报减去 baseline 后为负,这时候 a 的概率也会因此被调低,但是实际上大多数情况 a 对最后结果的好坏并没有影响。所以这篇文章采用了在每个时刻用$Q(w_{1:t})$来代替了原来一样的$R$。
这个$Q$的定义为,
$Qtheta(w{1:t}) = mathbb{E}{w{t+1:T}}[R(w{1:t}, w{t+1:T})]$
也就是说,当前时刻的回报,为固定了前 t 个单词的期望回报。考虑 a 的例子,由于 a 作为句首生成的结果有好有坏,最后的 Q 值可能接近于 baseline,所以 a 的概率也就不会被很大地更新。实际使用中,这个 Q 值可以通过 rollout 来估计:固定前 t 个词后,随机采样 K 个序列,取他们的平均回报作为 Q 值。文中 K 为 3。这篇文章中的 baseline 则跟[1]中类似。
从实验结果上,第三篇并没有第二篇好,但是很大一部分原因是因为使用的模型和特征都比较老旧。
总结
将 RL 用在序列生成上似乎是现在新的潮流。但是现在使用的大多数的 RL 方法还比较简单,比如本文中的 REINFORCE 算法可追溯到上个世纪。RL 本身也是一个很火热的领域,所以可以预计会有更多的论文将二者有机地结合。
参考文献
[1] Ranzato, Marc’Aurelio, Sumit Chopra, Michael Auli, and Wojciech Zaremba. “Sequence level training with recurrent neural networks.” arXiv preprint arXiv:1511.06732 (2015).
[2] Rennie, Steven J., Etienne Marcheret, Youssef Mroueh, Jarret Ross, and Vaibhava Goel. “Self-critical Sequence Training for Image Captioning.” arXiv preprint arXiv:1612.00563 (2016).
[3] Yu, Lantao, Weinan Zhang, Jun Wang, and Yong Yu. “Seqgan: sequence generative adversarial nets with policy gradient.” arXiv preprint arXiv:1609.05473 (2016).
[4] Liu, Siqi, Zhenhai Zhu, Ning Ye, Sergio Guadarrama, and Kevin Murphy. “Optimization of image deion metrics using policy gradient methods.” arXiv preprint arXiv:1612.00370 (2016).
[5] Bahdanau, Dzmitry, Philemon Brakel, Kelvin Xu, Anirudh Goyal, Ryan Lowe, Joelle Pineau, Aaron Courville, and Yoshua Bengio. “An actor-critic algorithm for sequence prediction.” arXiv preprint arXiv:1607.07086 (2016).
[6] Li, Jiwei, Will Monroe, Alan Ritter, Michel Galley, Jianfeng Gao, and Dan Jurafsky. “Deep reinforcement learning for dialogue generation.” arXiv preprint arXiv:1606.01541 (2016).
作者
罗若天, TTIC 博士生 研究方向 CV+NLP
博客 :
专栏 :
github :
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论