https://arxiv.org/pdf/1611.00179.pdf
用于机器翻译的双重学习
Github:https://github.com/microsoft/DualLearning
https://github.com/yistLin/pytorch-dual-learning
论文提出一种双重学习机制,可以从无标记的数据中自动学习,解决了人工标记的数据瓶颈。机器翻译都有含有双重任务:如En→Fr(primal)、Fr→En(dual),即使没有人工标记的参与,原始任务和对偶任务也可以形成一个闭环,能够产生信息反馈信号并训练翻译模型。在双重学习机制中,使用一个智能体Agent表示原始任务模型、另一个Agent表示对偶任务模型,然后通过强化学习使它们互相训练。基于这一过程中产生的反馈信号(如模型输出的似然函数、原始和对偶翻译后原句的重构误差),迭代更新这两个模型直至收敛(策略梯度法)。此方法对En↔Fr的翻译效果很好;特别地,通过学习单语数据(含10%的双语数据用于warm start),可以获得与完整双语数据训练的NMT相当的准确率。
dual-NMT
1. Agent 1只理解语言A,将语言A的信息通过一个有噪声的通道发送给Agent 2,该通道使用一个翻译模型将消息从语言A转换为语言B。
2. Agent 2只理解语言B,接收到翻译为B的信息后,检查并通知Agent 1(Agent 2可能无法核实翻译的正确性,因为无法看到最初的信息)。然后通过另一个有噪声的通道将接收到的消息发送回Agent 1,该通道使用另一个翻译模型将接收到的消息从语言B转换回语言A。
3. Agent 1收到来自Agent 2的消息后,将检查并通知Agent 2其所接收的消息是否与原始消息一致。通过反馈,两个Agent可以得知这两个翻译模型的表现是否良好,并进行相应的改进。
4. 也可以从Agent 2开始,使用语言B作为原始消息,过程同上。
对于两个单语语料库 、
,分别包含
个语言A的句子、
个语言B的句子,这两个语料库可以没有任何关系。
两个(弱)翻译模型 、
,
和
为模型参数。
假定已经有两个训练好的语言模型 、
(它们只需要单语数据库因而很容易实现),对于
中的句子s,令
表示中间的翻译输出,即时的LM奖励reward
表示输出在语言B中的自然度;使用
恢复得到的s的条件概率的对数作为通信的奖励
。
令总奖励为LM奖励和通信奖励的线性组合:,由于奖励可以被认为是
的函数,可以使用强化学习中广泛使用的策略梯度方法实现奖励最大化。
根据 采样得到
,计算关于
和
的奖励的期望 E[r],由策略梯度定理有:
贪婪生成top-K个 ,使用beam search结果的平均值来近似真实梯度。
实验结果
在只有10%双语数据的情况下,dual-NMT在Fr→En任务中可以达到与使用100%双语数据普通NMT相当的翻译精度。
算法的自我重构:对于测试集的每个句子,使用模型来回翻译它,然后使用BLEU score计算翻译后的句子与原句的得分。
未来的工作
双重学习并不局限于两个任务,关键思想是形成一个闭环,通过比较原始输入和最终输出来提取反馈信号。因此,如果两个以上的相关任务可以形成一个闭环,那么就可以从未标记的数据中改进每个任务的模型。例如,对于一个英文句子x,可以先把它翻译成中文句子y,然后把y翻译成法文句子z,最后再把z翻译成英文句子x'。x和x'之间的相似度可以反映出三种翻译模型在循环中的有效性;再次应用策略梯度方法,根据循环中的反馈信号对三种模型进行更新和改进。作者将这种广义的对偶学习称为闭环学习,并将在未来测试其有效性。