论文阅读:Dual Learning for Machine Translation

论文阅读:Dual Learning for Machine Translation

问题提出:

目前在机器翻译的领域,神经机器翻译(NMT)快速发展,取得了很好的效果,但是为了得到一个好的NMT的模型,需要大量的人工标记的训练
集即双语的语句对。 人工标记大量的数据费时费力,本文的目的就是提出一种方案(dual learning)来解决这个问题,并且可以得到相比于NMT模
型更好的效果。

思考:

作者观察到在机器学习的任务中,有许多任务是对偶存在的,比如:英汉互译。现实中我们往往分别考虑两个过程,即对于汉语翻译成英语进行一个模型的训练,
对于英语翻译成汉语进行另一个模型的训练。那这两个模型之间是否存在着什么关系呢?是否可以同时训练这两个过程,同时两者之间可以相互的促进?假如前面
两个问题是true的话,回到本文的初衷,新的模型又是如何解决大量标记数据的问题的呢?

思想:

Dual learning的整个过程可以看作两个代理人的交流游戏:
1. 第一个Agent 只懂得语言A,可以将语言A的信息通过一个有噪声的信道发送给第二个Agent,这个有噪声的信道可以使用一个翻译模型将语言A翻译成
第二个Agent懂得的语言B。
2. 第二个Agent只懂得语言B,她接收到第一个Agent发来的信息(已经被翻译成语言B),然后她会对该信息进行判断(比如语法是否正确,语句是否完整等),
注意她并不能准确的判断该信息的正确性,因为原始的信息对她来说是不可见的。之后她将此时的信息通过另一个有噪声的信道再发送回第一个Agent,该信道使用另一个翻译模型将语言B的信息转换为语言A。
3. 第一个Agent接收到B传回来的信息后,就与原始的信息进行比对,看两者的一致性。通过这个反馈(feedback),两个Agent都可以知道两个信道(两个翻译模型)是否执行的比较好(perform well)以及是否可以相互促进。
4. 当然也可以从第二个Agent开始。这两个Agent通过这个闭环的过程,根据反馈可以不断的提升两个翻译模型。
从上述描述中可以看出,尽管这两个Agent都没有与之标记的双语的标签,但是她们依然可以得到关于这两个翻译模型的反馈,并依据此反馈来提高模型的翻译能力。由此也可以看出,我们并不需要大量的双语对的训练集(为了加快模型的训练速度,也可以先使用少量的双语对训练集进行模型的训练——需要实验的论证)。

算法过程:

有两个单语言的集合DA和DB,分别是语言A的集合和语言B的集合,这里注意DA和DB并不需要相互匹配,甚至不需要含有部分的匹配。现在假定我们已经有了两个比较弱 的翻译模型,可以将语言A翻译成语言B,也可以将语言B翻译成语言A,我们的目标是使用单语言的集合来提高我们模型的翻译准确率(这里看出其实是不需要进行标记, 是一个无监督学习过程)。
假设DA包含NA个句子,DB包含NB个句子。定义 表示两个神经翻译模型,分别是这两个模型的参数。
假设我们已经有了两个训练好的语言模型,每个语言模型接受一个句子作为输入,然后输出一个真值(real value)来表示该语句是否是一个自然的语句(natural sentence),注意它只是判断一个句子是否正常,如是否符合语法,是否通顺等,并不是进行翻译。



第1行:算法的输入,数据集DA和DB,初始化后的翻译模型参数 (弱翻译器),语言模型
超参数,beam search算法的大小参数(size),学习率
第2行到第17行:循环过程直至算法收敛
第3行:t 表示算法的迭代次数,每经过一次迭代,t的值加上1
第4行:例句SA和SB分别来自于DA和DB
第5行:令s为SA(假定模型更新从A开始)
第6行:使用beam search算法,根据翻译模型生成K个句子
第7行到第11行:for循环,1—K
第8行:令语言模型对第K个例句的回报为
第9行:令第k个例句的交流回报为
第10行:令第K个例句的整个回报为
第12行:使用随机梯度下降策略计算的下降梯度
第13行:使用随机梯度下降策略计算的下降梯度
第14行:更新参数
第15行:令s为SB
第16行:返回第6行继续执行 (这里返回后,第8行的回报计算式子使用来计算,第9行的也要相应的更换)


实验验证:

实验的评测方法使用BLUE,baseline使用NMT和pseudo-NMT。

其中Large表示使用所有的数据集,Small表示使用整个数据集的10%,从表中可以看出,相比于baseline,有了很大的提高,尤其是
对于数据量相对较小时更加明显。

进一步的,本文使用一些手段对原有的三个模型从语句向量的构造,硬件条件等方面进行改进(如:利用主流的框架实现NMT,但保证GPU为单一变量),
得到下表:

结论依然不变。


拓展(extension):

本文述了对于两个对偶的任务,可以使用对偶学习(dual learning),但并不局限于两个任务,因为我们关心的是其中的反馈,
如果3个甚至更多个任务可以构成一个闭环,从理论上我们依然可以利用本文的思想(dual learning),使用无标签的数据进行每个模型的
训练。比如我们有一个英语语句X ,可以将其翻译成汉语Y,然后再翻译成法语语句Z,最后翻译成英语 W ,通过比较X和W我们就可以
指出这三个翻译模型翻译的准确率,问题解决的关键点是这个闭环过程中的反馈(feedback)。

猜你喜欢

转载自blog.csdn.net/cassiepython/article/details/74929801