论文阅读: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个句子。定义
和![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI4Ny8yZmIyMWEyYmRkZTA5N2JkY2IzNWY3NmE0N2I5Nzc5Zi5wbmc=)
表示两个神经翻译模型,![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU5MS9mZjQ4M2E5NDYyOTIzNjBiZmFkYTRmOWQ4ZjM5M2ZmNy5wbmc=)
和![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg5NC9hNDhiMGM2MzIwNTYwOTc0NWM3MjE2OGJhNjI1NjY0Ni5wbmc=)
分别是这两个模型的参数。
假设我们已经有了两个训练好的语言模型![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIyMC9lNWUyYmIwZGY4MzFhYjk0NDRjMTg4ZjM2ZDI0NTVmNC5wbmc=)
和![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc0OC9hOWFmNGZmZTgxODViMWNjNzZjZTZlMjYyNjFlMGZiYy5wbmc=)
,每个语言模型接受一个句子作为输入,然后输出一个真值(real value)来表示该语句是否是一个自然的语句(natural
sentence),注意它只是判断一个句子是否正常,如是否符合语法,是否通顺等,并不是进行翻译。
第1行:算法的输入,数据集DA和DB,初始化后的翻译模型参数
和![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg5NC9hNDhiMGM2MzIwNTYwOTc0NWM3MjE2OGJhNjI1NjY0Ni5wbmc=)
(弱翻译器),语言模型![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIyMC9lNWUyYmIwZGY4MzFhYjk0NDRjMTg4ZjM2ZDI0NTVmNC5wbmc=)
和![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc0OC9hOWFmNGZmZTgxODViMWNjNzZjZTZlMjYyNjFlMGZiYy5wbmc=)
,
超参数![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM5Ny84Njk2YTdjMmZkODYxMjE2MmUwMjcwMWI2MzI2NTY1NS5wbmc=)
,beam search算法的大小参数(size)![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE5MS9iZDJkYmYzMmZkZTU0MWMyM2QxOGMzNDhhMzRhOWFhNy5wbmc=)
,学习率![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIxMi81MTEwYTk0MjBiNzc3ZTM5MDlmYmZmYTU5MGUzZDc5Yy5wbmc=)
。
第2行到第17行:循环过程直至算法收敛
第3行:t 表示算法的迭代次数,每经过一次迭代,t的值加上1
第4行:例句SA和SB分别来自于DA和DB
第5行:令s为SA(假定模型更新从A开始)
第6行:使用beam search算法,根据翻译模型
生成K个句子![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIwNS84Y2VjYzI2OTQ1MTU5MzM5NGJhODdhMmYzMWU4Mjk3NS5wbmc=)
![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=)
第7行到第11行:for循环,1—K
第8行:令语言模型对第K个例句的回报为![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYzMy8zZTA4ZmM3N2Y1ODBkNjU2MjFjOGI5ZTM5OGI5ZGI0OS5wbmc=)
![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=)
第9行:令第k个例句的交流回报为![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzMxMi8zY2NhOTg3YzE0NmIxMThjMzY5YWVmNTBlYmUzY2I4MC5wbmc=)
![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM4NS8wN2VkYTk3YTg0N2M4MWZkMzM1MDU0YmVjZjUyYjJiOS5wbmc=)
![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=)
![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=)
第10行:令第K个例句的整个回报为![论文阅读:Dual Learning for Machine Translation 论文阅读:Dual Learning for Machine Translation](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU5NS8zNGM1NjlkZjJjMmM2OWFhNmI0YTJmZGE3NTA2MDNhMy5wbmc=)
第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)。