Dual Learning for Machine Translation

源码:https://github.com/yistLin/pytorch-dual-learning

本文作者提出了对偶学习可以更高效的利用单语数据。利用这种对偶学习,单语数据可以扮演和平行语料一样的角色,同时减少训练阶段对平行语料的依赖。具体来说,翻译模型的对偶学习可以描述成以下两个agent的游戏。

  1. 第一个agent只会A语言,他把一个用A语言写的信息通过有噪声的通道传给第二个agent,这个通道用翻译模型把A语言转换成B语言。
  2. 第二个agent只会B语言,他收到了翻译成B语言的信息。接着他检查信息然后告知第一个agent这是否是B语言。最后他将收到的信息通过另一个带噪声的通道传回第二个agent,通道用翻译模型将B语言翻译成A语言。
  3. 在收到第二个agent的信息后,他首先检查信息然后告知第二个agent收到的信息是否和他原本的信息一致。通过这种反馈,两个agents都可以了解两个交流通道(和两个翻译模型)的表现情况,因此可以进一步提升它们。
  4. 这个游戏当然也可以从第二个agent开始,跟如上的过程对称。
  • NMT的对偶学习

    对于单语语料 D A D_A DA 包含 N A N_A NA个句子,单语语料 D B D_B DB 包含 N B N_B NB个句子,这两个语料可以没有任何关系。 P ( . ∣ s ; Θ A B ) P(.|s;\Theta_{AB}) P(.s;ΘAB) P ( . ∣ s ; Θ B A ) P(.|s;\Theta_{BA}) P(.s;ΘBA) 是两个弱神经翻译模型。

    假设我们已经有两个训练好的语言模型 L M A ( . ) LM_A(.) LMA(.) L M B ( . ) LM_B(.) LMB(.) (由于有单于语料,所以很容易得到,也可以用 D A D_A DA D B D_B DB 训练),每个语言模型将句子作为输入,输出一个实数代表句子属于当前语言的自信程度。

    开始时,将 D A D_A DA中的句子 s s s 送入翻译模型中,得到 s m i d s_{mid} smid 作为中间翻译的输出。这个中间过程有一个及时的奖励(reward) r 1 = L M B ( s m i d ) r_1=LM_B(s_{mid}) r1=LMB(smid) ,代表句子为语言B的自信程度。得到了 s m i d s_{mid} smid 以后,我们用 s s s可以从 s m i d s_{mid} smid 中recoverd的log probability作为communication奖励(we will use reconstruction and communication
    interchangeably)。数学表示为 r 2 = l o g ( P ( s ∣ s m i d ; Θ B A ) r_2=log(P(s|s_{mid};\Theta_{BA}) r2=log(P(ssmid;ΘBA)

    简单的将LM reward和communication reward做一个线性组合的到最终奖励,e.g. r = α r 1 + ( 1 − α ) r 2 r=\alpha r_1+(1-\alpha)r_2 r=αr1+(1α)r2。然后用policy gradient methods 最大化奖励(强化学习中经常会用到)

    用下面两个公式计算 Θ A B \Theta_{AB} ΘAB Θ B A \Theta_{BA} ΘBA的梯度

    算法流程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kYWjNn1R-1615339434402)(/Users/siyulai/Library/Application Support/typora-user-images/image-20210308185127663.png)]

  • 实验结果(略)

  • 讨论

    • 对偶训练不一定只用于nmt,有对偶性的任务都可以对偶训练。

      比如speech recognition versus text to speech

      image caption versus image generation,

      question answering versus question generation

      search (matching queries to documents) versus keyword extraction (extracting
      keywords/queries for documents)

    • 对偶训练不只限制两个任务。核心方法就是形成一个闭合的回路,通过比较最终的输出和输入的区别,捕捉反馈信号。

      比如对英语句子,首先将它翻译成中文,然后再翻译成法语,最后翻译回英文。两个英文之间的相似性表示了三个翻译模型的有效性。这个叫close-loop learning

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值