【dual learning】——Dual Learning for Machine Translation

本文主要描述的是NMT中的一些Dual learning的方法,其中主要是基于半监督和无监督下的场景。

1.简单回顾back-translation的方法:

回译法最初被提出的背景是,如果我们有少量的对齐语言对数据集 D H = ( X , Y ) D_H=(X,Y) DH=(X,Y),以及大量的目标语言的单语语料 Y ˉ \bar Y Yˉ,需要训练翻译模型 θ X Y \theta_{XY} θXY,建立映射 X → Y X \to Y XY。为了利用这些单语语料,我们可以利用对齐的语言对 ( Y , X ) (Y,X) (Y,X),训练翻译模型 θ Y X \theta_{YX} θYX,将单语语料 Y ˉ \bar Y Yˉ翻译为 X ˉ \bar X Xˉ,相当于一种数据增强方法,我们利用伪语料对 D S = ( X ˉ , Y ˉ ) D_S=(\bar X,\bar Y) DS=(Xˉ,Yˉ)和真实的语料对 ( X , Y ) (X,Y) (X,Y)训练模型 θ X Y \theta_{XY} θXY。实际上,这样做相当于:
求解模型 θ X Y ∗ \theta_{XY}^* θXY,使得:
m a x θ ∑ ( x , y ) ∈ D H P ( y ∣ x ; θ ) + ∑ ( x ˉ , y ˉ ) ∈ D S P ( y ˉ ∣ x ˉ ; θ ) \mathop{max}\limits_{\theta} \sum_{(x,y) \in D_H} P(y|x;\theta) + \sum_{(\bar x,\bar y) \in D_S} P(\bar y| \bar x;\theta) θmax(x,y)DHP(yx;θ)+(xˉ,yˉ)DSP(yˉxˉ;θ)

注意,这里我们要求目标语料有大量单语语料,原因很可能是翻译过程的 d e c o d e r decoder decoder实际上比 e n c o d e r encoder encoder面临的难度更大,因为前者需要将密集信息一一解码出来,很容易连续犯错;如果此时我们的评价指标更加迷惑,是一些翻译出来的语料,那么模型错误的传播可能更加厉害。此外,显然这里的翻译出来的伪语料,也需要经过筛选,排除一些低质量的数据。

2.Principle of Dual Reconstruction

在这里插入图片描述
这里以机器翻译为例,说明半监督条件下的Dual learning。
图中Bob只说语言X,Alice只说语言Y,并且有两个翻译模型。实际上,我们并不确保两个机器翻译模型的正确性。但是我们至少可以通过以下手段判断翻译模型是否存在问题:
1.Bob向模型 f f f说一句话 x x x,因此得到了 y ˉ = f ( x ) \bar y=f(x) yˉ=f(x)
2.Alice看到了 y ˉ \bar y yˉ,利用模型 g g g,得到 x ˉ = g ( y ˉ ) \bar x=g(\bar y) xˉ=g(yˉ),发送给Bob;
3.此时,由于Bob作为精通本语言的人,Bob只需要比较一下 x ˉ \bar x xˉ x x x的区别,就知道模型翻译的质量。

对于模型的优化,可以认为是最小化如下的重建损失:
Δ ( x , g ( f ( x ) ) ) \Delta(x,g(f(x))) Δ(x,g(f(x)))
Δ ( y , f ( g ( y ) ) ) \Delta(y,f(g(y))) Δ(y,f(g(y)))
这公式被称作是deterministic dual reconstruction

具体到NMT中,相当于最大化重建概率,或者说最小化负log可能性,如下所示:
m i n f , g − l o g P ( x ∣ f ( x ) ; g ) m i n f , g − l o g P ( y ∣ g ( y ) ; f ) \mathop{min}\limits_{f,g} -logP(x|f(x);g) \\ \mathop{min}\limits_{f,g} -logP(y|g(y);f) f,gminlogP(xf(x);g)f,gminlogP(yg(y);f)
以上两式又被称作:probabilistic dual reconstruction principle

3.DualNMT 算法形式化表示:

3.1 输入:

包含单语语料 M x M_x Mx M Y M_Y MY;初始的两个翻译模型,其参数表示为 θ X Y \theta_{XY} θXY θ Y X \theta_{YX} θYX,然后是两个语言模型(用于评估概率,相当于两个专家的人) P ( x ) P(x) P(x) P ( Y ) P(Y) P(Y),以及超参数 α \alpha α、beam search 的大小 K K K,学习率 γ 1 , t , γ 2 , t \gamma_{1,t},\gamma_{2,t} γ1,t,γ2,t

3.2 步骤:

1.Set t=0
2.重复以下步骤,直到翻译模型收敛:t=t+1
3.从 M x M_x Mx M y M_y My中,分别采样两句(batch)句子;
4.设当前翻译的句子(batch)s为 s x s_x sx
5.使用模型 θ X Y \theta_{XY} θXY使用beam search的方法生成K个句子 s m i d , 1 , . . . , s m i d , K s_{mid,1},...,s_{mid,K} smid,1,...,smid,K
6.对于以上这K句句子遍历,并做以下操作: k = 1 , . . . , K k=1,...,K k=1,...,K:
7.使用语言模型,计算句子k的评价分数 r 1 , k = P Y ( s m i d , k ) r_{1,k}=P_Y(s_{mid,k}) r1,k=PY(smid,k)
8.计算对句子k重建奖励 r 2 , k = l o g P ( s ∣ s m i d , k ; θ Y X ) r_{2,k}=logP(s|s_{mid,k};\theta_{YX}) r2,k=logP(ssmid,k;θYX)
9.计算总的评价 r k = α r 1 , k + ( 1 − α ) r 2 , k r_k=\alpha r_{1,k}+(1-\alpha)r_{2,k} rk=αr1,k+(1α)r2,k
10.结束对K句句子的遍历
11.计算对于 θ X Y \theta_{XY} θXY的梯度:
∇ θ X Y E ~ [ r ] = 1 K ∑ k = 1 K [ r k ∇ θ X Y l o g P ( s m i d , k ∣ s ; θ X Y ) ] \nabla_{\theta_{XY}} \tilde E[r]={1 \over K}\sum^{K}_{k=1}[r_k \nabla_{\theta_{XY}}logP(s_{mid,k}|s;\theta_{XY})] θXYE~[r]=K1k=1K[rkθXYlogP(smid,ks;θXY)]
12.计算对于 θ Y X \theta_{YX} θYX的梯度:
∇ θ Y X E ~ [ r ] = 1 K ∑ k = 1 K [ r k ( 1 − α ) ∇ θ Y X l o g P ( s ∣ s m i d , k ; θ Y X ) ] \nabla_{\theta_{YX}} \tilde E[r]={1 \over K}\sum^{K}_{k=1}[r_k (1-\alpha)\nabla_{\theta_{YX}}logP(s|s_{mid,k};\theta_{YX})] θYXE~[r]=K1k=1K[rk(1α)θYXlogP(ssmid,k;θYX)]
13.对于模型的似然优化,因此做梯度上升:
θ X Y ← γ 1 , t ∇ θ X Y E ~ [ r ] θ Y X ← γ 2 , t ∇ θ Y X E ~ [ r ] \theta_{XY} \gets \gamma_{1,t} \nabla_{\theta_{XY}} \tilde E[r] \\ \theta_{YX} \gets \gamma_{2,t} \nabla_{\theta_{YX}} \tilde E[r] θXYγ1,tθXYE~[r]θYXγ2,tθYXE~[r]
14.将句子(batch)s换为 s y s_y sy,重放上述操作,注意翻译模型和语言模型要换成是对偶的。

3.3 解释:

上述算法算是在一个半监督的模式下进行的,并不要求 M X M_X MX M Y M_Y MY两个语料库是parallel的,这个和back-translation的方法又不一样了。
首先,其中的两个语言模型都必须预先训练好,因为他们作为“人类专家”,必须要有坚固的知识;他们接受整个句子或者是句子的一部分,然后对句子的自然程度进行打分。

其次,这里的模型优化是基于强化学习的 p o l i c y g r a d i e n t policy gradient policygradient方法,这是由于在产生句子的这一步,是有采样过程的,使得梯度往往无法传播,因此采用启发式的policy gradient近似,可以得到很好的效果。相关内容可以查看rollout policy或者textGAN之类的内容。作者推荐的文献是: Policy gradient methods for reinforcement learning with function approximation一文。

这里对于 X → Y ˉ → X ˉ X \to \bar Y \to \bar X XYˉXˉ的情况,对于 θ X Y \theta_{XY} θXY采用的分数是 r 1 , r 2 r_1,r_2 r1,r2两者的线性插值,可以理解,但是 θ Y X \theta_{YX} θYX只考虑 1 − α 1-\alpha 1α部分,直观理解就是要和 θ X Y \theta_{XY} θXY模型对齐,避免二者学习进度不均衡。

此外,这里使用beam search的考虑,可能是因为单个句子的随机梯度下降可能带来的采样误差比较大,因此选择K个概率较高的句子。

最后,我们也可以看到,算法实际上是具有较强的一般性的,因此可以应用到类似的其他任务上。而且,也未必设两个任务构成的一个loop,可以是多个任务的loop,如 a 1 → a 2 → . . . → a n → a 1 a_1 \to a_2 \to... \to a_n \to a_1 a1a2...ana1

4.比较

和回译法比较,利用Dual training的方法其实构建了一个回环,使得不同方向的模型都能够得到更新,而是用back-translation的方法只更新了我们需要的模型,但是没有更新新构造的回译模型,不能够持续的提高数据的质量。而且Dual training可以利用其它单语的知识,基于无监督的方式进行训练,因此实际上比回译法的应用范围更广。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值