Transformer新型神经网络在机器翻译中的应用 | 公开课笔记
嘉宾 | 于恒
来源 | AI科技大本营在线公开课
编辑 | Jane
于恒:直播间的朋友大家好!欢迎大家来到本次AI科技大本营公开课,我是本次讲师于恒。
在讲课开始之前先简短的做个自我介绍,我是博士毕业于中国科学院计算技术研究所,方向是机器翻Q : } 译的方S q N j ?向,目前- B # ( { p ,在阿里巴巴翻译平台担任翻译模型组负责人,主要是为阿里巴巴的跨境电商贸易提供丰富- R ] e j ] 5的语言支持,让跨境贸易没有语言障碍。
今天非常高兴受到CSDN AI科技大本营的邀请,给大家分享自己在机器翻译方面的研究和工作。大家可以看到我PPT下面的几个! . 2 LOGO,我们翻译团队是属于阿里巴巴机器智能技术实验室,中间是阿里翻译的 L9 H * i Q ogo和我们的口号| I U J U“Translate and Beyond”。
这次分享的题目5 ; 1是“Transformer新型神经网络在机器翻译中的应用”M ! P V k % d。
关注AI的同学最近应该会看到,机器翻译是一个比较活跃的领域,很多大公司都争先推出了自己的机器翻译服务,包括还有一些机器翻译的硬件已经在市场上投放,Z 9 ,比如翻译笔。
产业的兴旺离不开背后技术的巨大进步,从今天的课程当中,我会给大家介绍背后技术的神秘面纱,然后对Transformer这个神经网络做深入的解析。
神经网络机器翻翻译是目前比较主流的机器翻译方法,它是“Sequence to Sequence”model,也就是% O V w x : f V端到端的翻译框架。如左图所示,我们输入一个待翻译的句子,通过神经网络编码器,去把这个句子的信息编; @ U S ) 8 g码成I K n中间状态,就是这个图中红色的部分,它用数值的隐层来表示。经过中间状态、经过神经网{ 2 ! z y Z B络解码P z : j w器去生成对应的翻译,是编码、解码的过程。翻译的知识和参数都是由神经网络自动进行学习的,它省去了之Y Z J = 7 z V V F前传统方法之前的人工干预模块,使整个翻译过程统一化,并且简洁。
随着深度学习发展带来的红利,这个翻译模型的性能有显著z H j提升。如右图所示,这是谷歌翻译当时Release的数据,传统的是基于短语的翻译系统,翻译的性能远低于基, R i d D O W 3于神经网络的翻译,就是那根绿色的线。并且神经网络的翻译在某些语项上是接近人类的水平。我们还a ~ p h y c可以注意到,在“英语到西] H ( z语”、“英语到法语”,同样是拉丁语系的翻译上,神经网络的翻译和human的gap比较小,在“英语到汉语”这两者语言差异比较大的、翻译难度大的语种上gap比较K + ] b = ;大,所以神经网络仍然有比较大的进步空间。这是目前神经网络目前. % K翻译的总体质量情况。
它背后的技术是怎样呢A A L ? M P ( - h?从这个图可以大概看出来传统的基于RNN的“Sequece to Sequence”model是怎么运行的,这个例子是一个“英文到中文”的翻译,英文“Economicgrowth has slowed down in recent years”通过这个循环的RNN神经网络去逐词读入源端的句子,最终把它编码成红色那个点隐层的信息,根据这个隐层的信息输入到另外一个目标端的循环神经网络,然后逐词生成Q + o _中文的翻译“近几年经济发展变慢r W w e o了。</s>”这里的</s>是一个句子结束符的表示,生成的过程在句子末尾添加这样一个标志表示翻译过程结束B u n i A Y 6了。
传统的RNN神经网络结构是可以处理任意长度的输入,它非常适合于自然语言5 x K的建模,所以它在一段时间内占据了整个神经网络中的主z a T流。随着学术的发展,我们也会看到RNN有些不足,它的缺点主要有两点:第一点,RNN序列的特性导致其非常难~ Z o以并行化,从上图可以看出,如果把RNN展开~ Q Z e H来是一个序列型的网络,比如我要得到Xp d Z I F H y4的结果时,必须先计算出X0-X3的结果,这样的串行关g Q D系使它的并行度非常低。举一个例子,谷歌的GNMT的神经网络系统,它是需要96块GPU卡训练% - Q一周的时间才能完成一个模型的训练。96块GPU卡对于一个研究机构或者小公司来说是个巨大的开销,基本是负担不起的,并h 4 O ? h且还要训练一周的时间,所以RNN特性使整体模型训练速度非常慢、成本非常高。
另外在RNN训练中,RNN的网络结构对于长距离和层o C 6 R (级化的依赖关系难以建立,比如句法信息、指代信息的关系,由于它只是一个单一的序% M S W列 ,所以它很难对这些关系进行建模。举个例子,“The dog didnL o [ k’t cross street because it wastoo tired”,当我们看到“tired”的时候知道这个it指dog 。如果把最后^ ` I t + n l一个词换了,| H -“Th^ T S D | c h的一个序列的LSTM的网络。并且我们需要能够对指代信息丰富的上下文进行建模,这需要Self-Attention、MulQ ~ 1 M ! H Iti-head Attention这样# S x T h m K } O的技术。左边这个演示的是TransformeG , - ? ] % P阿里翻译过来的,所以我会从工业实践的角度对Transf t E x & |former进行介f R H & . P绍。我们最近| U ~ c参加了WMT2018全球机器翻译评测,拿到了比较好的结果。
▌一、对网络结构进行解析
Transformer这个网络命名,TranR k & g F isformer在英文C ] . C O翻译过来有变: y = M o U t形金刚的意思,我想当时作者也是希望借助强大的变形金刚赋予这个网络更强的力量。
如果我们用放大镜高维度解析这个网M v o 1 2 X [ w络,拆开之后它仍然是“Sequence to Sequence”框架进行H s ~ X G ~ F的,它分Encodu , % ( m A wer和Decoder两部分。我们再进一步细化的话,这个图包含很多信息。首先,我M 9 - m ( p z I们看到Encoder有6层,Decoder也有6层,为什么要有多个层?从Encoder的角度,低层的Encoder是表层的词法信息,逐步向上进行抽象之后,在上| l 0 2 $ e G 0 Y层将表示抽象语义信息。Encoder部分还在最上层连了几条线到每+ ( f 1 h [ C z j个Encoder的部分,这就是刚w P W 8 j & [ ? $才谈到At[ $ J p Ktention的部分,Decoder的网络中和Encoder也有信息传递和交| / ` ( : =互的。最后一个特点是Decoder和# $ ? = n M E 7Encoder画的大小是一样的,因为它们层的维度大小是一样的。这个图表达了以上这些? f w ^ K $信息。
多层的神经网络结构能够对句子层级化信息进行建模S 2 ) x { v,如果我们更精细的去看每一层的结构,就会发现这样的情况:Encode分两个子网络部分,第一个是Self-Attention,第二个部分是$ : . Z p % &Feed Forward,大家比较熟悉,就是传统的前馈神经网络,我们摒弃了H ) ` a 2 ^ q 8 I传统的并行化比较低,而且O s M /比较简单且高度并行化Y c 4 m ; &的前馈神经网络。
Self-Attention是自注意力机制层,表征句子当中不同位置词之间的关系,是我们前面提到的it和street 或dog) $ c | e I n之间的依赖关系。Decoder层比Encoder层多一个子网络,就是Encoder-Decoder Attention,它是源端到目标端的注意力机制,对源端词到目标端的助理机制,不是源端到目标端词的依赖关系,- O f ? n V b o 2用到翻译里F ~ a G w | J +是说这个源端待翻译的词和源端生成翻译词之间的依赖关系。
我们如果进一步对Encoder部分进行细化,它长成这样。我们输入代翻译词是“Thinking Machines”,先会去查找这两个词分别表示成词向量的形式,再经过Self-Attention层得到Attention的输出,再经过Feed Forward自动生成Encoder1的输出,Encoder1的输出作为Encoder2~ $ A $的输入,这样以此类推,6层一直拼到上面去。在整个Encoder网络中,Fee3 Z } W g o Rd Forward是大家比较熟悉的部分,但应该大多数C w k c y . ` a Z观众的情况并不太了解Attention,因为它是神经网络机器翻译中提出的概念,在其他的网络这种概念并不常见。
下面我们对Attention这个概念给大家进行进一步剖析,什么是Atteq ^ f j [ b v g P的角度,它是表示词与词之间的n = : c I 5 p 3 T关] d Z z Z ` / z S联关系,像下图所示,这是一个Self-Attention的示意,它这个f h * % 4 m i Rit会和其他位置的词发生关系,颜色越深的是说关系越紧密,从中图中看到它很正确的关联到了animal它实际指代的一个词。
从机器学# P Q o , K 展性更高、并行度更高的AS d d 4 2 / W attention计算方式,它把Attention看作一个基于内容的查询的过程,content{ r G K ; Z S + based query,它d n @ P w F X i J会设置3个vector:QueryVector、Key Vector、Value VecM u & utor。并且每o ) @ N一个Vector都是通过它的input embedding和权重的矩阵相乘得到的。我们利用这个Q、K、V进行各种数值的计算,最终r ` z K * A &得到Attentionscore。这个计算过程是相对复杂的。
我们用一个例子来给大家演示一下具体: @ x / & 6 R L +的Attet 6 c 4 h , X ~ntion是怎么计算的。如果我们计算{ 6 p # y Z w F“Thinking”这个词3 Z # ] Y m ! R !,用Self-Attention的话,首先会用它的Query Vector乘以K的向量,如果计算和第二个位置的attention是乘以T2的矩阵得到一个score,这个! c V x fscore再去和它维度的平根根7 @ y ^ @进行相除,这个相除有数学上的含义,能够使它回传的梯度更加稳定,除完后得到一个数值进行softmax,所有Attentio o U Cn都是正数并且相加之和O X 6 + #等于1,这是从数学正确上考虑,并且最终得到概率这个值是去定义每C & { V p . m j一个词在当前位置的表现力。Softmax之后,我们会用softmax得到的乘以它VaY r s glue的矩阵,这样实际得到D B l ) g KAttentiI i X son的值,最后会把不同位置得到Attention的score加到一起,形成当前位置Attention的Vector,就是Z1,加B ~ l V } + ` x 3上逐词计算的话就得到所有位置的Attentic & . h s K R s Qon。
刚才说到的是一个基于向量之间的运算,但是根据提到Transformer系统W e A / 6 7是一个高l % + h b 8度并行化的系统,所以我们I z Y % z * {有j Y X 5 u S一个很好的并行策略,就是基于将Vector计算变成基于矩阵的运算,因为我们在Encoder时所有的词都是并行( g x u } S {计算,我们把所有词的词响亮拼在一起形成矩阵,用这个矩阵和! j K a 8它的Q、K、V的权重矩阵进行相乘,方便得到Q、K、V矩阵,Q、K、V矩阵用一个公式表示数值操作,就得到Attention的矩阵,这是一个高度并行化的操作,可以通过一步运算直接完成的,这个在GPU上很容7 q | U j 6 b F易、速度很快。
这是Attention的一种计算方法,我们对计算方法进行了拓展,提出了“m - v % VMulti-head Attention”的方式,就是“多头”Attention,我们设置多个Q、K、V矩阵和它实际值的矩阵。它这样设计是有两种好处,第一种好处是它的可训练参数更多,能提升模型能力,去考虑到E c 7 , ! F不同位置的Attention,另一个好处是对于这个0 { g Z M f TAttention赋予了多个子空间。这个从机器学习的角度1 x , A R i S e来说,首先参数变多了,拟合数据的能力变强了。从语言学是这样的,不同的子空间可以表示不一样的关联关系,比如一个子空间是表示指代的Attention,另一个子空间可以表示依存的Attention,另一个子空间表示其他句法信息的Attention,它能够综合表示各种各样的位置之间的关联关系,这样极大的提升了Attention的表现能力,这是传统的RNN、LST( c T dM系统当中所不具备的,也是最终实验时会对性能有巨大影响的一个工作。
举个( M E ] 0 ` ^ &例子,比如我们有8个“Multi-headAttention”,输入一个“X”会计算出8个权重Ac B - ttentione X 6 { ` K输出的矩阵。那这8个矩阵怎么用呢?我们还需要把8个矩阵拼起来,然后用一个降维矩阵对它进行矩阵操作,把它压缩到一个我们能够相对接受的大小,对于信息进行压缩,这样可y ; W & 3 ~以避免后面矩阵操作维度过大导致整个开销比较大。所以它最终会压缩到一个比较小的维度y o s 9 D p S A !。
以上就是Transformer当中Attention机制的计算,从Big picture来看,它分几个部分:第一个部分是我们找到输入的句子,第二个部分去生成它的词向量的表示,并把它拼在一起,拼成matrices,这个matrices去和Q、K、V的权重矩阵进行数值运算,f ! c Y o得到Q、K、V三个矩阵的数值,三? % }个矩阵的数值通过之前的公式得到Mj 1 b Zulti-head Attention的值,Mu( 0 N s ! Z ilti-head Attention拼在一起,通过一个降维矩阵,最终压缩到我们觉得比较合适的一个维度,来作为Attention子网络的输出。
以上是Attention的主要内容,当然,Transformer还有其他的网络,也可以给大家介绍一下。“Positional Encoding”是对于这个序列中每一个位置进行建模。
刚刚提到完全并行的矩阵操作时,大家可能会有一个疑问:这个不是一种指代模型吗?= S n U R X % b D之间位置不考虑了,但不同位置在翻译中是很重要的关系,就是哪个词在哪个词前面,前后关系有非常大的意义。我们通过这个“Positional Encoding”去对位置进行建模。具体的时间、方法,我y a $们对每一个词的embZ 5 _ eedding会加一个基于位置的embedding,S1会加一个T1,这个T1是和它的位置相关,位置就是编码第0个位置, ; , y x、第C W * { ` X 01个位置,依次打下去。这个T P 2 D n z O L这样的,它通过这个数值加到原始的embeddingV $ A r I o |上面,使这个em# & Rbedding天然具有了它的位置的信息,在后面建模过程中我们会考虑每个词位置的信息。
另外一个是直连层网络“Residual connection”,了解的同学D ^ 3 |知道“Residual connection”是对于较U b D 8 . B为深层的神经网络有比较好的作用K 9 3 + | M |,比如网络层很深时,数值的传播随着weight不断的减弱,“ResiduG F :al connection”是从输入的部分,就是图中虚线的部N . 1 * Z $ F } W分,实际连到它输出层的部分,把输入的H D ^ G P Z ;信息原封不动copy到输出的部分,减少信息的损失。“layer-normaliza4 i x |tion”这种归一化层是为了防止+ 5 n在某些层中由于某些位置过大或者过小导致数值过大或过小S C b ?,对神经网络梯度回传时有训练的( r 5 $ L V问题,保证训练的稳定性,这是神经网络设计当中两个比较常用的case,基h [ } ~ 8本在每个子网络后面都要加上“layer-normalization”、加上“Residual[ 1 L t O connection”,加上这两个部分能够使深层神经网络训练更加顺利。这是另一个主要的细节a G K。
小结一下,刚才对神经网络做了比较详细的解释,它如下图所示,图里面画了两层的Encoder和A V t o & | .Decoder,曾底层的词的输入到embedding的输入,X1、X2,加上“Positional Encoding”的输入,输入到第一个Encoder当中,经过self-Atte{ F E ) E / A `ntion层,直连的“Residual connection”和归一化y Y s o y层,得到的输出再去输入到前馈神经网络R N r y q ~中,前馈神经网络出来之后再经过直连层和归一化层,这样就完成了一个Encoder部分,再以这个; c b E x ) O ^输入到第二个EncodL v 7 ? xer之后,它会把第二个Encoder的输出作为第一个Decoder的输入,也是依次进行上面的过程。
这个图中有一个细节需要大家注意,目标端的A2 3 6 5 Zttention注意力机制是m ( k R } ~一个masked注意力机制,为什么?比如在机器翻译当中,在源端能够看到所有J [ { C {的词,但如果你目标端生成翻译时是自左上右,生成翻译时能够看到前面已经生成词的信息,看不到后面层的,这是目标端Attention和源端Attention比较大的区别,所以在目标端所有的Attention都是加Masked的,这个M* { c ? _asked相当于把后面不该看到的信息J X G ; C屏蔽掉,这是Transformer networ` I Kk的小结。
▌二、基于Transformer的机器翻译系统q P ; U % c x
Transformer的网络是怎= ) ; ^么用到机器翻译里的?Encoder端是源端的法语句子,目标端是英语的句子,随着时序的不断进行,每次生成一个词的翻译,最终它会生成一个<EOS>的符号,这个符号表示整个解码过程结束2 V ? Z了。
它是怎么生成每一个词的翻译呢?因为我们知道$ 7 WDecoder最上层的输入也是一个隐层,是2048或者1024的隐层。那么这个隐层是怎么对应到输出的那个词呢?后面的网络是这b ? 0 x样的。首先,我们对每种语言会有一个固定的词表,比如这个语言到底有多少个词,比如中文里有2= i Q _ l万词、3万词、5万词。对网络隐层会先过一个N h U n线性的投射层,去把它投射到一个词表大小的向量维度,形成一个词表大小向量,我们在这个向量基础上做softmax,把它转成概率。譬如是3万的词y ` L , G,去选取里面概率最大的那个词作为我们实际的输出,这里面第五位是最大的,它会输出一个am,这样就达到了通过Encoder输出隐层来去实际生, ! . c ! = : : J成一个词翻译的效果。
另外一个部分是神经网络优化V X * G w $目标,在神经网络训练的过程中是需要平行语料的,所谓平行语料是源端和目标端都需要有。我们训练I { & 9 1 4 0的目标是使神经网络生成这个翻译的概率分布尽量去贴合实际参考答案的概率o 3 I 9 H 1分布。右边这个图我们希望它生成的概率分布,对o ( L f & A于那个句子在第一个PosZ m % Q { ;ition的时候希望i的概率是最大M r i $ i w b f d的,第二个希望am是最大的,以此类推。但这是训练好的,一开始训练时是随机处理化的概率分布,经过几千万句子的不断训练,会得到这样一个比较好的分布。
它的训练优化目标是概率的交叉熵cross entropy,以crossentropy作为梯度更新的优化目标。(上图)左边这v ~ s O g =个图优化目标[ o 9 7 O C m @的loss相当于它训练的轮数,因为是entroZ v 0pk S h o X m c G ay,所以是稳定下降的过程。相应的,翻译的评价目标Bleu值是匹配度加权的分数,Bleu值越高越好,它随着训练过程的进` Y 7 l k s x 6 G行会有一个逐步向上升的过程。训练的优化目标就是这样的,通过交叉熵的优化来达到Bleu,就能翻译效果优化的过程。
我们看看Transformer的结果是什么样的,回到最开始的例子,用Trans网络对于句子的Attentioc e # B I X E A yn进行了分析。得到了比较有意| p R $ K思的结果,(下图)左边v ; 1 n @ 7这个句子,当最后一个词是too tired的时候,it所对应到的注意力机制最多的部分是animal,这是它对应到正确的部1 = A : n 5 h 2 D分,如果最后一个词是wide的时候它对到street是最多的。这样就非常有意思,Attention其实确实能够建模到比较难的指代消解问题,j | F这也是比较好的,超越之前RNN和STLM的,就是Attention表示能力更强。
(上图)右边, V 7 f N o常敏感的网络,我们当时尝试了各种各样的训练方法,试了异步梯度更新、同步梯度更新等不同的分布式训练策略。我们最终发现是基于同步的Adamd & j j l 6 |,对于多机多卡是得到性能最稳定的一个更新方式。
这种方式在谷歌开源的那个Transformer系统和其他比较开源的Transformer系统中,大多数都是用这样的方式来进行多机多卡训练的。这个背后理论上也没有很好的解释为什么这个对于Tr6 F hansformer是更好的,主o = d V m要是通过大量的实验去得到的一个结果,大家如果有多机多卡} 3 B y v的训练需求,最好考虑基于同步梯度更新的Adam算法。
另外一个是跟机器翻译很相关的问题,通常GPU显存有固定的大小,比较差的卡是4个G、2 # 0几个G,好的卡可能有12个G、24个G。对于TransfQ { g F D l _ o +ormer而言,有些人做过实验,你如果训练时开更大Batch size,训练的效果会更好y c _ | ( X `。这就带来一个问题,你如果想开大的Batch size的话,一个句子里面的长度就会很有限,因为你显存就那6 T ` 0 S ! B么大。假设长度设成40的话,那我Batch能开400或者500,如果我要开到800 Batch的话,能容纳的句子长度就会变小。这是一个搏弈的问题,因为硬件的限制导致你= $ h x =不得不做这个Tradeoff。
之前我们在TensorFlow低版本的时候都是$ k 8 % 0 # a % n不支持,只能用刚刚的方法。但是从tensorN H s # Mflow1. B _ ! ! k5以后,它引入了一个“Dynamic Batching”的机制,这是tenu @ gsorflow的更新带来的变化,它会把原来写死的固定长度的图,用图中循环的方式表述,这样它可以支持动态的计算图,k * 9 K v l u E 4了解tensorflow的同学会比较清楚。通过用了这种机制之后,我们可以动态的改变这- , X W个batchsize,好处是当我们训练这个句长比N e ~ ^ }较长的时候,就可以动态的把batch size缩小 。这样可以在训练的时候覆盖更长的句子u 3 |,长的句子在翻译的案例中都有,比如U 3 K电商描述或者新闻都- c u t ) h / u有很长的句子} / 1,这样我们就能得到更多的训练语料,训练语料使用更加充分,对我们生产时性能得到很大的提升。
另外一个是“Moving average”机制,这个可能也是比较专业的一个说法,它能保证训练的稳定_ v @ 5 - U l性。它主要的做法是,在训练比如5000个保持一个模型,中间模型有一个滑动* t s u B的窗口,每次计算时会把窗口内所有的模型D ( w y ! ^示自身翻译实力的一个平台,2018年有很多霍普金斯大学、爱丁堡大学、亚琛工业T l _ M E @ a I 大学、马里兰大学、微软、腾讯等k m a很多机构参与,我们也取得了比较好的成绩。阿里巴巴翻译团队在WMT2018上“英文到中文”、“英文到俄罗斯语”、“英文到土耳其语”5个语项上获得了第一名的成绩,这个? 9 B _ K 4图也是最终比赛的冠军图。
从这个竞赛可以反映出一个特点,就是Transformer在2018年竞赛中已经获得3 ` D _ M i G非常普遍的认同,80%以& E c 2 8上的系统都是采用Transformer,这是个非常惊喜的改变。在2017年WMT评测时大多数系统是基于RNN和LSTM的系统,包括最终获得冠军的系统也是基于这个的。仅K b a &仅过Q 3 J % x ^ / 8 `了一年时间,各大机构都争先使用的Transformer。这个是系统描述的图,参赛的几个系统当中大多数都有Transformer的关键词,还有一些其他一些基于RNN等a S 7 : & K u系统是凤毛麟角的。所以Trar Y U insformer网络在机器翻译领域已i { N ] ) v y经受到广泛的认可。
这里给大家推荐几个比较好用的基于开源的机器翻译Transformer系统,在开源时代方便大家更好的学习,你有足够的语料,通过这些开源的机器翻* y r _ 5译工具也可以搭建一个性能比较好的机器翻译引擎。主要推荐三个,第E i X一个是Marian,是Z G w R y爱丁堡大学公开的开源工具,非常好用;第二个是 Nematus,也是爱丁堡大学开发的;第三个是 Sockeye,是亚马逊推出的机器翻译工具。感兴趣的同学可以去网上下载并使K S A 4 ` f用这些工具去学习,看它里面的代码是如何实现的。
回到竞赛的部分,Transformer从竞赛的角度有+ s ^ z A $ k )哪些经验?我这里分享了几点,做评测跟做工程很不一样,评测是限定的数据级,在限定的数据级上达R p V ! A Y _到极S _ g I T @ r U致的效果,我觉得有四点:
- 第一,精细的数据过滤和筛选,不会投入大量的精力用于基础语料集合确定,主O ; k . x C , & !办方会给你一个语料集合,但这个语料集合里有一些噪音或者不好的语料,怎么通过各种规则、分类模型选择或者基于n-gram过滤等e E l 7 6 ) 0等,去选择一个比较好的技术语料集合,这是花大力气做的,因为如果底层技术都不好的话,训练出来的上层建筑肯定是不行的。
- 第二,相信统计的力量。这是神经网络模型一个新的特点,成绩比较好的单位都训练很多模型,并且用很多策略训练不同的模型,最终用这些不同的模型去进行Ensemble learning或者进行组合,最w ^ - h G f e终输出一个最好的系统。比如阿里可能会做100多个系统,采用Ensemble learning的方式。这也是成本越来越大的问题,为了达到更好的性能,我们需要介入更多GPU资源支持更多模型的训练,最后去达到这种微小几个点的性能提升` p + 3 B @ A。
- 第三,尽量用更多参数去合数据和领域,因为它的数据和领域都是很限定的,所以你需要去用更多的方法、更多的策略去拟a ? E d m B合策略,比如Modelfine-tuning的策略,做微调的策略,你可以筛a M s选更适合这个领域或者更拟合这个开发测试集的数据,去对你的model去进行finep t K V R v-tunind 0 + & = G Pg。另外,还可以做global features去做R5 # v s U f !e-ranking,R{ x re-ranking也是对性能有一定提升的点,你在翻译时可能只看到部分信息,但是当你的翻译都生成之后,可以提取更多双语的信息,去对开发集调一个更好的模型。
- 第四,尽可能用更多信息,因: W ! 8 5 V k为主办方提供双语料的同时] l 5 g B (会提供大量的单语料,单语料可以有不同的方式,比如用Back-Translation的方式把它翻译回来,然后加入到你的模型里作为伪语料,伪的生成的 ] ` S . K } `双语语料加入B ` - J # [们还有哪些地方缺失了?
这是我参考微软刘教授的报告,我读完他的报告之后比较认同的几个观点:
第一个问题,我们在训练过程中提到优化目标是最大概率的i . * z 5优化目标,但是我们实际在去评价翻译质量时是用bleu去衡量的,这样等于优化目标和衡量的目标是不一致的,这样会带来一个显然的问题,就是优化目标和实际目标之间总是会存在差异的。给大家推荐两个可能的解决方案:第一个是MRT,ACL2015年提出的工作,: l S | P ) [ p把bleu值加入到神经网络优_ 4 d { Q化目标方向之中。第二个是NAACL2018年的工作,利用GAN网络,用对抗网络的形式去对优化目标进行表示,这样也是能够使训练的优化目标和实际的评价目标能够一致的一种方式。
第二个问题,它还是需要大量的平行语料的数据,也就是标注数据。这个是对于一些小语种语言,比如东南亚的小语种平行语料是很稀缺的资源,m I t Y如何对这些资源稀缺的语言搭建更好的翻译系统呢?目V k ! H前有两个方向,一个是Unsupervised neural machineTranslationN ( X @ W n,这个做得比较好的是Facebook,目前走得比较远,它是利用完全非平行单语的语料去训练机u / + H N器翻译系统,目前性能还不足够好,但它仍然在发展过程中。另外,微软也提出W V _ J m `结合到一起,是个更好的解决方案。
第四个问题,由于Transformer它Attention的数据运算是比较复杂的,在生成翻译解码的阶段A 1 q D [ t J比较慢的,这是由于Attention的构造而导致的。这里给大家推荐的是基于AverageAtM - 0 / @ | _ } W x如谷歌提出的Self-Attention。从我个人观点$ ] / n来说,它在Attention计算上不然Transformer,所以它可能掺杂这个部分D x O h 8。
另外,Facebook没有投入更多人力去优化这个,而Transformer从一开始Q W % { ( ^到后面迭代了很多版本,一开始性能可能不是那么好,但后来谷歌持续投入、维M W K z a 5 8 1护、不断升级,从去年6月份提出开始一直到12份都有代码的更新 ,包括其他的像发8 P l M电报大学| @ b | m Q 9 ;也都跟踪这个方向,众人拾柴火焰高,大家不断投入这个领域,能够把这个越做越8 8 _ j . / f - G k l 8 ~Attention的输入。
Q:问了一个和阿里相关的:“阿里做电商描述训练的时候,如何解决领域内% ! S H _ ^ _ K数据不足的问题”?
A:这是个比较具体的问题,首先,m I * * @电商场景是阿里的一个重要场景,我们做电商时会收集一部分电商类的数据,阿里巴巴内部也有淘宝比较丰富的数据。有了这个以后会有基于n-k f ngram或者基于分布式的筛选模块,基于这些之前互联网上收集到的大规模语料库中筛选相关的句子,得到q ^ k ` x ] _ u 2充足的领域内的语料,领域内的训练语料应该越多越好。
Q:推荐一下深度学习、机器翻译方面的好书。
这个可以给大家G 8 c q k ;推荐最近邓老师和清华大学刘老师合作发表的一部英文书,叫《Deep Learning in Natural Language Processi9 6 , p +ng》,邓老师是语音` P M k s识别方向的大牛,任老师是机器翻译、自然语言处4 B S O `理方面的大牛,这本书是2018| } P # X I 9年最新出版的,这本书会包含最新的机器翻译、神经网络内容,大家有兴趣的话可以考虑一下。
今天的讲座基本就到这里了,非常感谢大家的参与!
——【完】——
随着AI技术产品的快速迭代,正不断融入各行各业,创造新业态、培育新增长、引领新发展。作为技术背后的赋能者——开发者,通过一行行代码将世界变得丰富多彩。为了让大家更好地了解开发者,CSDN社区将发起“开发者与AI大调查”活动。
感谢您百忙之中参与「百万人学AI」第一期调查,耽误您2分钟时间完成以下问题。报告电子刊预计在2020年6月底通过CSDN官方渠道公布,调研报告结果也将以电子刊的形式发送到您的邮箱中。
问卷填写结束后,您将k ( -获得价值299元的「2020 AI 开发者万人大会」在线直播门票一张。
再次感谢您T 7 n ) n c u S n对本次调查给予的支持。联系人邮箱:jingqi@csdn.net
请您准确填写您的联系方式,以便与您联系获奖事宜:
百万人学AI--开发者与AI大调查百万人学AI--开发N G H E $ 者与AI大调查百万人学AI--开发者与AI大调查
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
叮咚~你被福利砸中了!现在起,「2020 AI开发者万人大会」299门[ f `票免费送!进入报名页面2020 AI 开发者万人大会(线上直播门票)-IT培训直播-CSDN学院2,点击“立即报名”,结算时使用优惠码“AIP1410”,价格就会变为“0\"元!康忙北鼻~~~!