A Study of Reinforcement Learning for Neural Machine Translation笔记

前言

刚刚开始研究这些,发现有的论文给的代码我跑不了,光看论文确实感觉很飘,就是你知道他什么意思,但是没有动手实现的话也就是浮于表面。我现在确实有点迷茫,一个是代码跑不通,每个人环境还不全一样,有的用theano,有的tensorflow,代码我看起来有点费劲,但我觉得又不能在还没搞清楚思路前就花太多时间在编代码上,但纯粹读论文又不踏实,我也很容易走神。索性通过写博客的方式加深对论文的理解。如果有大佬看见我的困惑,欢迎评论指点,谢谢。
论文地址:https://arxiv.org/abs/1808.08866
文中所给代码地址:https://github.com/apeterswu/RL4NMT

Overview

neural machine translation (NMT) 由于不需要heavily hand-crafted engineering efforts就能得到优异的表现而变得越来越流行。通常NMT被训练,输入source sequence和第 n 个 target token,最大化target sequence中第n+1个token的likelihood,这种方法叫做MLE。但这与BLEU这种sequence-level的评价度量不一致,一个token的错误对MLE这个方法来说并不严重,但从整个句子来看,很可能导致这个句子相当错误。
为了解决这种不一致,reinforcement learning (RL) 被采用了,并高效地提高了NMT表现。但将其高效地应用在real-world NMT系统这件事还没被之前的工作完成。
首先,因为他们大多基于浅的RNN模型,但要实现最好的表现,使用最近放出的深度模型就很必要。这片论文就结合了2017年放出的Transformer
其次,RL有许多众所周知的限制,比如 high variance of gradient estimation 和 objective instability,虽然之前提出了很多tricks,但对于如何在机器翻译中使用这些tricks仍然不清楚。
最后, monolingual datasets可以明显提高翻译质量,但还没人在NMT中结合RL与monolingual data。
因此此论文的主要贡献在于:

  1. 提供第一个对RL training不同方面的综合研究,目的是弄明白如何:1)设置有效的reward;2)用不同的 权值结合MLE与RL,从而稳定训练过程;3)降低variance of gradient estimation
  2. 提供一个新的方法,其可以在用 RL 训练 NMT 时,高效地利用来自source和target方面的、大规模的monolingual data
  3. 利用此文的发现与方法在一些翻译任务中得到当前最好的翻译质量。

Background

这部分就结合论文粗浅说一下。

Neural Machine Translation

典型的 NMT 模型基于注意力机制的encoder-decoder,首先 encoder 将 source sequence x = (x1, x2, …, xn)映射到一个连续表示的集合z = (z1, z2, …, zn)。然后decoder根据z逐个word token地生成句子 y = (y1, y2, …, ym),在step t选择给定x和 y<t = (y1,…,yt−1)概率最大的token yt,训练目标是最大化:
在这里插入图片描述
目前最好的encoder-decoder模型是Transformer。

Training NMT with Reinforcement Learning

RL使得NMT可以在训练时最优化评价。将NMT看做agent,action是vocabulary中的所有候选词,policy就是条件概率 p(yt | x, y<t),论文中说environment是

the previous words y<t and the context vector z available at each step t

我觉得有点问题。policy是p(yt | x, y<t),那么是不是state就是(x, y<t),state是environment在step t 的observation,那environment是不是又变成x和y<t了?
最终的reward在生成完整的句子 y^ 后通过BLEU计算得到,记做R(y^, y)。RL的训练目标是最大化期望reward:
在这里插入图片描述
Y是包含所有候选翻译句的空间,其大小根据vocabulary大小指数级增长,因此几乎不可能准确地最大化这个目标。实践中,REINFORCE 通常通过policy p(y|x)采样y^ 来估计整体的期望,导致目标变成最大化:
在这里插入图片描述
论文里RL训练就用这个。

Strategies for RL Training

由于gradient estimation和reward computation中的噪声,RL方法非常不稳定、不高效。这里就研究一下几个重要的稳定RL训练过程的方法。

Reward Computation

主要有两个重要的方面:如何采样训练实例y^ 与是否使用reward shaping。
如何采样y^ 有两个策略,首先是beam search,即先广度优先搜索得到top k个候选句,每个候选句每步保留top k个候选项,即下一步得到k*k个候选句,然后从中挑选top k个保留,重复下去。另一个是multinomial sampling,通过模型的输出分布进行 multinomial sampling,逐个产生word。beam search exploit学到的知识,multinomial sampling更专注于exploration。
由于只有生成一个完整的句子后才有reward,reward很稀疏,并且使用同样的reward更新句子中的每个token,所以训练会不高效。有一个策略是reward shaping,即时reward被定义为:
在这里插入图片描述
并且
在这里插入图片描述
这不会改变最优策略。
在这里插入图片描述
从实验结果看,multinomial sampling表现更好,猜测exploration在reward 计算中更重要。
用reward shaping可以获得稍微更好的表现。

Variance Reduction of Gradient Estimation

由于REINFORCE使用单一样本y^估计其期望,所以有很高的方差,可以在每个step t增加一个对该时刻平均reward的估计,叫做baseline reward,然后从未来的累加reward中减掉它:
在这里插入图片描述
如果与reward shaping一起用的话,就变成了:
在这里插入图片描述
这个baseline reward 可以通过采样许多句子算平均值,也可以用一个MLP学出来,后者也是论文中的做法。
在这里插入图片描述
实验中可以看出baseline reward 没什么帮助。原因或许是the probability mass on the target-side language space induced by the NMT model is highly concentrated, making the sampled y^ representative enough in terms of estimating the expectation。目标侧概率足够集中,使得采样的y^在预测期望时够具代表性。

Combine MLE and RL Objectives

简单的线性结合便有助于增加平稳性:
在这里插入图片描述
在这里插入图片描述
随着α的变化,表现略有变化,此实验中,α=0.3时表现最好。

RL Training with Monolingual Data

这部分讨论的所有设置是semi-supervised learning

With Source-Side Monolingual Data

Source-Side Monolingual Data缺少target sequence,我们利用模型本身进行自举。对于每个Source-Side Monolingual Data,我们用bilingual data训练过的NMT进行beam search,得到一个target sequence。然后通过multinomial sampling得到y^来计算reward。beam search确保了准确性,multinomial sampling提供了exploration,实现了exploration-exploitation trade-off。
在这里插入图片描述
结果证明,Source-Side Monolingual Data有帮助

With Target-Side Monolingual Data

source sequence x丢失,,所以y^也无法得到。文中使用back translation,即train一个反向翻译的NMT,然后用它得到假的x,然后将其与真正的 bilingual sentence 一起用于RL训练。
在这里插入图片描述
结果同样显示有帮助
以上两种在RL只用Monolingual Data时在测试集上的表现,与同时使用bilingual data的表现相差非常小

With both Source-Side and Target-Side Monolingual Data

将两者结合,通过sequential或者unified。前者有序地使用Source-Side and Target-Side Monolingual Data 训练RL模型。后者就是将它们都放在一起
在这里插入图片描述
用sequential方法时,RL用source-side monolingual data更能提高表现。
在这里插入图片描述
用unified方法时,表现得更好了,是表现最好的方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值