[关闭]
@Lucien 2016-09-27T00:40:03.000000Z 字数 7883 阅读 619

机器翻译最新进展


正文:

何中军:大家下午好!我今天上午来的时候觉得这个地方我是既熟悉又陌生,因为我上学的时候经常来这儿买书,但是我今天打车过来的时候我发现我找不着这个地方了,虽然我家离的也不远,但是一来发现已经完全不一样了。社会的进步是很快的,技术的进步也是非常快的。我讲一下机器翻译的进展,大家听到的比较火的就是神经网络的翻译。
做机器翻译的人可能都知道,前段时间一直比较流行的翻译技术叫SMT技术,是统计机器翻译,统计机器翻译是从什么时候开始的?大约是在上世纪90年代初,然后慢慢地发展,尤其是进入到2000年之后,进入到了一个发展的快车道,翻译质量也逐渐的得到了大家的认可。
SMT其实有很多方法,刚才晓光也说了,有短语的系统,也有语法的系统。
这是一个比较著名的国际评测,在德语和英文之间翻译的一个值。在2013年、2014年的时候,大家可以看一下,这两个系统并没有差很多。2015年的时候,NMT出现了,出现的时候比另外两个矮了一截,但是到了16年的时候比他们要过很多。
SMT发展了20多年,NMT才2年多的时间,据我了解,好几个著名的国际评测,NMT的系统都表现的特别好。无论是从技术上而言,还是从表现而言,我们多想看一看这个NMT为什么会这么厉害呢?为什么2年多的时间就可以取得这么好的成绩呢?
首先讲一下NMT的基本框架、主要思想;2、最近的一些进展,虽然也不远,也就发展了2年多,但是从目前,不管是工业界还是学术会议上来讲,铺天盖地的文章都是NMT的文章。所以还是有很多内容的,内容特别多,因为今天下午的时间也比较短,我也不会一一展开讲,基本上也是讲一些思想,如果大家想了解其中的一些技术细节,或者是具体的问题我们下面可以进行探讨。
我基本上总结了两大类,现在NMT系统发展的两个方向,一个是对网络本身的,因为它毕竟还是基于神经网络的,我对网络本身的模型、网络的算法等等的问题。2、从SMT中,是不是可以借鉴一些方法?因为SMT毕竟发展了这么多年,它还是有很多可借鉴之处的,我们可不可以拿过来放在NMT中,共同提高NMT的性能。最后是总结。
这是一个基本的框架(见PPT)。
包含了两部分:1、输入,通过一个编码器到隐藏,再通过编码器到解码语言。从X翻译到目标语言(Y),这里有一个参数,依赖的是原语言,还有依赖的语言单词。比如说我是做翻译的,原语言翻译,目标语言,我打一个比较通俗的比方说,我们这边做馒头,这边是小麦,这边是馒头,怎么做?比如说我以前要做思维对齐,要出短语,要训练,我要做馒头,我就要先收割小麦,脱谷、磨面,有了端到端的系统之后,所有的都不需要的,输入的是小麦,输出的是馒头,中间是什么?这就是网络。现在NMT输入的是原语言,输出的是目标语言,中间是什么?也是神经网络,参数自己调、自己学习。
它究竟做了什么事?这是一个韩国人写的东西,写的非常的详尽,大家也可以去看一下。他说的很清楚了,我们一块来看一下。他给他的翻译系统起了一个名叫Groundhog,刚才晓光讲的时候都是古埃及的,有什么金字塔、法老,还有圣经里的摩西,现在出来了一只小老鼠,这只小老鼠的性能好像超过了前面的那些人。
我们主要做了三件事情,第一步是什么?语言肯定是由一个一个的词组成的,一开始我们是处理词的。比如说这个词表有3个万词组成,在第一个位置上我就把这个位置标为一,其他的都是零。出现在第二个位置上,我就把这个位置标为一,其他都是零。
第二步是要进一步做成一个连续的向量,怎么来做?这是一个查表的过程,我这儿有一个举证,大家也比较熟悉。跟刚才的向量一乘,把一的那一列就给取出来了,其他的就没有了,因为其他的都是零。所以是可以做一个连续的向量。
主要是第三步,为什么叫神经网络呢?因为它有一个循环的状态。这个是已经转换过的。
循环的状态,我要一步一步的去预测一个状态,我们需要怎么来做?从左到右的句子,预测到最后该变成了这个红点,这个红点很重要。
我们用这个红点来表示整个原语言的句子,这个红点本身也是一个向量,大家可以认为是一个500的向量,这就代表原语言的句子。无论你这个句号有多长,我就把它压缩成一个向量了。
这个红点是原语言的向量,目标语言在减码的时候会用到它。
向量太抽象了,都是一堆数,你把这个句子印射成一堆数有什么意义?既然是一个向量了,我们也可以对向量进行操作,比如说算一算向量之间的距离,我们发现语意比较相近的句子,它的距离是比较近的,语义离的比较远的句子,向量计算出来的距离也是比较远的。向量就表达了句子之间的意思。
第二部分是解码,我要产生目标语言了,我已经把原语言变成一个向量了,我现在要产生目标语言。这个红点现在就代表原语言X。这也是要分三步,第一部也是原语言的,这里面依赖于三个向量,第一个是这个红点,第二个是目标语言的上一个词,再就是目标语言的前一个状态,神经网络的激活函数,我们就可以一个一个的产生目标语言的状态。
状态产生完之后我最终是要输出词的,我要利用这个状态计算每一个词的概率,目标语言也是3个词,我要计算这3万个词,在这个位置上每一个的概率是多大?这个位置上我要出现机器这个词了,可能机器出现的概率是0.3%,技术这个词出现的概率是0.2%,我显然选概率高的,我就把机器翻译出来放在这个位置上。
最后一步,是产生具体的词。这个有很多的方法,也是像晓光说的一样,一般是设置成5,或者是10都可以,维持着闭木(音)的大小,我选一个最高的句子,最后就成了目标语言了。
不太了解的人,理解起来还是有一点难度的,其实就是干了两件事,把这个变成一个向量,然后把向量解码成目标语言,所有语言的表示都变成一个响亮的表示,然后放在网络里去计算。
翻译说完了,刚才说了一个X、Y,还有一个C塔(音),C塔就是一个参数,它的目标函数是什么?这个我就不展开讲了,我要让这个公式取一个最大的值。标准的算法就是SGD。
现在还有一些问题,最典型的问题是,比如说一个词在传递的时候,随着网络往下走,距离变长,这个词所起的作用就会衰减,因为走得越长,对后面词的影响力就会越小。怎么来解决这个问题?大家现在普遍采用的有两种方法(见图),大家看这个图特别像电路图。给我的感觉而言,这个更像是一个滑动电阻器,这有两个门。
我们看这个R,如果这个R打开的话,这条通路就阻断了,计算H的时候,相当于只用了X这一个信息来计算,R等于零的时候,H就没有了,重置了。我控制多少个信息从前面传过来,传递的程度有多大,这样就可以解决上面的问题了,这也是大家现在普遍通用的一项技术。
神经网络有这么多的参数,大家普遍反映的问题是我的解码速度变慢了,慢了多少?大家现在普遍采用的还是GPU来算,左边是CPU的速度,右边是GPU的,大概差4倍的速度。一般大家还是愿意用GPU来做的,当数据量变大的时候,一台就不够用了,可能就需要用多台的CPU。
刚才讲的是基本的神经网络的框架、调码器。
现在再来看看在这个基础上最近的一些进展。现在已经成为了一个标配了,这是注意力机制,这是什么意思?其实是从图像和视觉处理借鉴过来的名词。什么叫注意力?一般的人眼光会立刻被这只狗吸引,这叫注意力,你为什么不注意草?你在拍照的时候也是一样的,你有一个聚焦,你有一个点,除非是艺术需要,我都是虚的,都对不上焦的这就要另说了,后面的模糊一点没关系,因为我要注意的是它。怎么把图片的注意力机制印射到翻译、语言上?
这个其实很像晓光说的对齐,其实这就是一个对齐的问题。我对齐的时候,比如说在美国,它跟其他的地方是没有发生关系的,我在翻译这个词的时候,其它的词我就可以不管,我可以把更多的能量放在跟它相关的词上,其它的词我就可以考虑的少一点。
为什么要加入注意力机制?是因为我们发现翻译长句子的时候,随着句子的增长,翻译的质量会下降。我把所有的原语言压缩成一个红点、一个向量,相当于是平均用力,句子长的时候,相当于能量该强的地方没有加强,能量该弱的地方没有减弱。
这里面是双向的,主要是从左到右一个一个的产生,最后到一个红点,落到红点上去,我现在把原语言的句子换一个顺序,从最后一个词开始,把这两个向量拼起来,比如说原来一个词的向量是500亿,现在是1000亿,直接拼起来,这个词义相当于是既考虑了前面的,又考虑了后面的,这是第一点。
2、我在算的时候,我预测每一个目标词的时候,我先计算这个词跟原语言词当中的哪些词发生了关系,比如说这个红线,这个圆圈里的加号,在这个线里面,有的比较粗,比如说我翻译美国的时候,这一块的能量就比较强,其他的能量就比较弱。
这个图更明显一些,有的线比较淡,有的线比较粗,这个很像SMT当中的粗运行。
加入了注意力机制以后,长句子的翻译明显就得到了改善,随着句子的增长,它的翻译质量并没有明显的降低。
这个是来源于图像,不仅用在语音翻译上,其实很多地方都可以用,比如说图像的处理上。有了端到端的系统之后,你可以做很多有意思的事情,比如说在原语言的输入端是一张图片,我现在要对图片产生一段说明,当我产生这一块的时候,我要跟它产生相应的文字,这样就可以产生一个从图片到文字的印射。
这幅图是一个编码在草地上,这幅图的白色代表的能量是越强的,我要产生“斑马”,这个词,到这儿产生完了,能量集中完了,就产生了“草”这个词。
视频其实也是一样的,视频是一针一针的图片。看一下这里,第一幅图片是锅,它的能量是很强的,深蓝色的是一条鱼,这是视频到一段文字的翻译。
2、最近研究比较多的,叫多任务,或者是多语言。什么叫多任务?多语言?是端到端的,中文翻译成英文,或者是中文范逸成日文,我们可以很自然的想到,中文可不可以同时翻译成日文、英文?我们来看这组图,这个很有意思,我在编码的时候我就用一个编码器,我翻译成英文,我用英文的,我翻译成日语的,我用日语的,这是一个对一对多的方式。
这幅图是对上一幅图进一步的解释,这样的好处是,我在原语言端可以共享原语言的解码器,比如说中文到英文可能有很多的语言,中文到日文的不太多,你都是中文,语义都是类似的,在中文这一块,我就都放在一起来学习,这样你在翻译中日语言的时候效果也会比较好。
大家来看一下这个效果,红线比蓝线提高了很多。这个图跟刚才的是类似的,这是论文的。
这是刚才我说的,为什么会翻译的更好?是语义的取决,比如说Crime这个词,我们可以向量的来计算相似的词,这样算的就会更准,比如说单一的模型,这个Crime翻译出来的语义也会是比较远的。
这是另外一个,葡萄牙语与英语的应用。
在这个基础上,大家又顺着这条线铺开了很多的工作,刚才那个工作是我们在15年的时候提出来的,现在就延着这个工作铺开了很多的工作,比如说谷歌的。既然是语言的翻译,是不是也可以做其他的工作?我同时做翻译,我做了翻译之外还可以同时做一些其他的工作?你既然是一对多,我可不可以多对一,多个编码器,一个解码器,可不可以?我把图像、语音都编码上去,然后我解码成语言,这也是可以的。
这个工作跟刚才的工作不一样了,这个工作是一个力度上的工作,NMT在提出来的时候就面临一个很大的问题,它模型太复杂了,所以它就要限制词条的数量,有很多的词是OOV,就是没有见过的词,没有见面过程的词怎么办?我不基于词可不可以?我基于字,汉语是字,拉丁文是基于字母,这样也是可以的。比如说这个Q,我可以把Q翻译成打伞,对应到目标语言也是可以的,这相当于是一个混合的翻译了。
刚才说了两个方向,一个是对网络本身的改进,对系统的一些改进,下面是说,从原来的SMT当中是不是可以借鉴一些方法,或者是一些思想,可以挪用过来?这当然也是可以的。
其实我们做了很多的实验,在小的语料当中的效果还是不错的,但是如果加大100倍、1000倍是不是还是这样的,这个就需要做很多的工作。
这个是OOV的问题,所有的人都被感染,热泪横流,横流没有被翻译出来,所以翻译成了UNK,对学术研究是没有问题的,但是要做到一个翻译系统,要上线面临广大用户的时候,这个问题是不可以人的。
2、漏词的问题比较严重,比如说各国、和结束就没有翻译出来。
3、我很难用到目标语言的语料,比如说语言模型我可以用单语言来选。一般说IMT的时候一般是双语料。为了解决这些问题,我们就把SMT的非cher(音)给拿过来,同时也把框架给拿过来。
对数线性模型我就不多说了。
在这里的非cher(音),在这里的这个是相当于保留了NMT自己本身的强处。下面的2、3、4分别是对应刚才的三个弱点来设计的。
我有一个短语表、一个词典,如果我发现这个横流没有翻译出来,翻译成UNK了,这怎么办?我发现是由横流翻译出来的,我就去短语表中去查一下对应的是哪些词,这样OOV的问题就解决了。
3、长度特征,这个是非常容易理解的,目标语言产生了几个词,他的特征就是几。比如说我这个句子是5个词,长度就是5,6个词长度就是6。所以,这个特征是奖励长一点的句子,缓解楼译问题。
最后一个是用单语料来训练的。网络发生了一点改变(见图)我们加了什么样的特征?绿色的线代表翻译模型特征,紫色的框代表长度特征,浅蓝色的代表语言模型。
效果呢?先看左侧,这是一个公开测试的效果,在Groundhog加上我们的翻译模型,后来再加上语言模型,就会有一个多点的提高。最后一行相当于是摩西(音),是基于短语的翻译系统。
这是Groundhog随着BM的增大,并没有什么明显的提升,但是加上这几个特征之后,随着BM的增大,是会有一些提升的,因为是会通过这些特征,把排序靠后的一些给提到前面来。
这个工作也是借鉴了SMT里面调参的方法,这也是大家关注比较多的一个工作,就是我们怎么来调、训练的问题。在这里我们起了一个名字,叫最小风险训练。就是把原来的目标函数做了一点改变,左侧的是原来IMT里的目标函数,右侧引入了这个评价机制。在MT中一般用B路(音)值来评价,我翻译出来之后,跟你训练中的语言要相比较,然后打一个分,把你评价的引入到目标函数来去进一步的调参。
这是调参的效果(见图)。大家可以简单看一下,这上面都是标准的测试仪,好一点的可能有5、6个点的提高,MRT是新提出来的方法,MRE是原来的方法。
这是另外一篇文章。这个文章也是借鉴了SMT的方法。做过SMT的人都知道,在做思维对齐的时候,我会做一个双向的,比如说中文到英文的翻译,我会做中文到英文的对齐,英文到中文的翻译。
NMT在做中英的时候,就是中文到英文,做英中的时候就是英文到中文。这个图太小了,大家可能看不太清,我把双向的对齐之后,无论是中英,还是英中,这个能量都比较集中了,说明我算的对齐准,对齐准了之后翻译的质量就会提高。
刚才说了,我们用单语的语料,我是把目标语言的语料用在训练语言模型上,这篇文章是在既在原语言端加语料,也可以在目标语言加语料。用了一个自编码系统。具体相关的文章我就不再展开讲了,大家感兴趣也可以去看文章。我主要想说的是从SMT当中有很多可以借鉴的东西。
这是百度的一些工作,我前面也讲了,我没有特别点名,下面是怎么做快速解码的。NMT除了做翻译之外,还可以做很多有趣的事情。
下面这个是写诗,这个有的同学也知道,诗也是一句一句产生的,你可以把上一句单成原语言,下面当成目标语言。这两首诗中,有一首是人写的,有一首是机器写的,大家猜一下哪一首是人写的,哪一首是机器写的?大部分人认为右边是人写的,但是实际上右边的是机器写的。这个测试做过很多遍。机器写的时候,大家觉得比较工整。
这篇文章我们在会议上也会做一个报告,有兴趣的话也可以参考一下这篇文章。这个在手机百度里也有,叫为你写诗,写出来的诗也还可以。送给你的男朋友、女朋友,或者是想送的朋友都可以。
今天讲了很多NMT相关的,我在讲的过程中可能有一些不太熟悉的东西,大家觉得比较难懂。NMT其实还是有很多吸引人的地方,正如我一开始所说的,在短短的2、3年之内,在一些著名的国际评测上,它的值超过了原来的评测系统。它是用了更多的全局信息,把X直接编码,对每一个词意、对语义的理解会更深。
另外有一个比较新的方法,也面临了很多的挑战。比如说我这个是语言模型,我这个是翻译模型,这就需要搭起一个桥梁。但是现在是一个黑盒子,全都是参数,你怎么去干预它?解决它?这都是一些很棘手的问题。
现在还缺少一些语言学的知识,原来我的语义分析是不是都还有用?是不是还可以用上。
最后一个是知识,有很多词是有歧意的,比如说Windows,在这儿是窗户,在机器上就是操作系统,你这怎么做?
说了这么多,对于机器翻译,我个人有一点自己不太成熟的看法,大家也可以参考一下,在这里跟大家分享一下。这个图我也说过很过次了,我们可以从三个维度来理解这件事。
红色的这条线是翻译的质量,这个箭头代表翻译质量很高。竖线代表语言的种类,世界上有多少种语言,可能数也数不清楚,几百种的也有,几千种的也有,有很多的语言。绿线代表叫做领域,比如说这个翻译的是跟口语相关的,有些人从事专利翻译,是专利相关的,新闻翻译,或者是科技文献的翻译。
最右上角的这个点,大家说这是什么?翻译质量很高,所有的语言、所有的领域都会翻,他是谁?只有一个人,就是上帝。它无所不知、无所不晓,显然,这是一个很理想的状态。人在什么地方?人在这个地方,我自己的一点个人看法。它的翻译质量可能很好,但是我只懂中文到英文的翻译,个别的翻译,并且我专注于某一个特定的领域,有些人可能是天才,很天才,我会几个领域的,甚至有几个人我会几种语言,但是你说有一个人会所有的语言吗?这肯定是不可能的,所以人是在这儿的。机器在什么地方?MT在什么地方?MT可能在那儿。我的翻译质量跟人相比还是有差距的,但是我可以做所有语言的翻译,只要你有语料,即使没有语料,我也可以通过一个方法给你构造出来一个方法给你翻译,先不说翻译的强弱,语言都可以翻,领域都可以翻,只要有语料就可以翻。个别比较强的系统,我在这儿,比如说新闻的领域,这个专门的领域这个特定的语言,会比普通的机器的翻译的好。
机器翻译最终怎么发展?肯定是往这个地方发展,这个箭头走多长,怎么走?这就需要大家一起来努力,我就讲这么多,谢谢大家!

主持人:谢谢何博士,讲的非常精彩,尤其是最后这张图,印象非常的深刻。大家现在可以提问了。

提问:何老师,我想问一下,是把一种语言翻译成多种语言的这种方式,我想问一下,在表示原语言的时候,是通过什么样的方式学习的?是在单独的模型中学习的吗?像这种语料的确是比较少的,就是一种语言对多种语言的语料不是很多。
另外一个,一般来说,在输入和输出的时候,是以一个句子还是以一个段落还是一整篇文章作为输出和输入的?
再一个问题是,你们会不会把已经翻译的直接检索出来提供给用户,TM的大小是多少?

何中军:第一个问题是训练问题,其实它的训练跟一般的端到端、一对一的是一样的,中英、中韩的这个语料输入进去,原语言端都还是一个编码器。
训练语料是第二步了,是一个句子还是段落,现在都是一个一个的句子,即使是一个段落,我也会拆分成句子。
你说的TM的问题,刚才晓光已经说了,相当于百度翻译是一个整体的多策略的融合,我们也会用到这样的技术。谢谢!

提问:何老师您好!我问的还是刚才那位同学问的问题,针对多种语言训练的时候,对齐是怎么做的?因为不同的语言的对齐是不一样的。

何中军:刚才那篇文章里没有说到对齐的问题,我也没有讲,这个问题我建议你看另外一篇文章,待会儿我可以把那篇文章的链接发给你,你也可以去看一下。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注