2013年,NalKalchbrenner和PhilBlunsom提出了一种用于机器翻译的新型端到端编码器-解码器结构[4]。该模型可以使用卷积神经网络(CNN)将给定的一段源文本编码成一个连续的向量,然后再使用循环神经网络(RNN)作为解码器将该状态向量转换成目标语言。他们的研究成果可以说是神经机器翻译(NMT)的诞生;神经机器翻译是一种使用深度学习神经网络获取自然语言之间的映射关系的方法。NMT的非线性映射不同于线性的SMT模型,而且是使用了连接编码器和解码器的状态向量来描述语义的等价关系。此外,RNN应该还能得到无限长句子背后的信息,从而解决所谓的「长距离重新排序(longdistancereordering)」问题[29]。但是,「梯度爆炸/消失」问题[28]让RNN实际上难以处理长距依存(longdistancedependency);因此,NMT模型一开始的表现并不好。
一年后的2014年,Sutskeveretal.和Choetal.开发了一种名叫序列到序列(seq2seq)学习的方法,可以将RNN既用于编码器也用于解码器[5][6],并且还为NMT引入了长短时记忆(LSTM,是一种RNN)。在门机制(gatemechanism)的帮助下(允许在LSTM中删除和更新明确的记忆),「梯度爆炸/消失」问题得到了控制,从而让模型可以远远更好地获取句子中的「长距依存」。
LSTM的引入解决了「长距离重新排序」问题,同时将NMT的主要难题变成了「固定长度向量(fixed-lengthvector)」问题:如图1所示,不管源句子的长度几何,这个神经网络都需要将其压缩成一个固定长度的向量,这会在解码过程中带来更大的复杂性和不确定性,尤其是当源句子很长时[6]。
尽管NMT已经在特定的翻译实验上取得了惊人的成就,但研究者还想知道能否在其它任务上也实现这样的优良表现,以及NMT是否确实能取代SMT。因此,Junczys-Dowmuntetal.在「UnitedNationsParallelCorpus」语料库上进行了实验,该语料库包含15个语言对和30个翻译方向;而通过BLEU分数(一种自动评估机器翻译的方法,分数越高越好[33])对实验结果的测定,NMT在这所有30个翻译方向上都得到了与SMT媲美或更好的表现。此外,在2015年的WorkshoponStatisticalMachineTranslation(WMT)比赛上,来自蒙特利尔大学的这个团队使用NMT赢得了英语-德语翻译的第一名和德语-英语、捷克语-英语、英语-捷克语翻译的第三名[31]。
与SMT相比,NMT可以联合训练多个特征,而无需先验的领域知识,这可以实现zero-shot翻译[32]。除了更高的BLEU分数和更好的句子结构,NMT还有助于减少SMT上常见的形态学错误、句法错误和词序错误。另一方面,NMT还有一些需要解决的问题和挑战:训练和解码过程相当慢;对同一个词的翻译风格可能不一致;在翻译结果上还存在「超出词汇表(out-of-vocabulary)」的问题;「黑箱」的神经网络机制的可解释性很差;训练所用的参数大多数是根据经验选择的。
其它科技巨头也都各有动作。比如亚马逊刚在7月份发布了他们使用MXNet的NMT实现[13];微软在2016年谈论过他们对NMT的应用,尽管目前还未披露进一步的技术细节[27]。IBMWatson(机器翻译领域的老将)、英伟达(人工智能计算的领军者)和SYSTRAN(机器翻译先驱)[35]全都或多或少地参与到了NMT的开发中。在东亚地区,中国这个人工智能领域的新星正在升起,百度、网易有道、腾讯、搜狗、讯飞、阿里巴巴等许多公司甚至已经部署了NMT。它们全都拼尽全力想在机器翻译的下一轮演进中取得竞争优势。
数据集
nmt/scripts/download_iwslt15.sh/tmp/nmt_data这个bash脚本会下载出四套越南语与英语的语料文件分别作为:训练集(train,用来训练模型),开发集(dev,类似验证集,用来评估模型准确度,防止过拟合),测试集(test,用来测试模型的最终效果),以及词汇库(vocab,由语料库里提取出的单词组成,通常选取语料中出现频率最高的30,000个词汇以获得更好的性能)
训练
训练过程中,会有log显示训练进程的概况,示例如下:
当然我们也可以使用命令打开Tensorboard来更生动地查看模型训练的情况:
tensorboard--port22222--logdir/tmp/nmt_model/TensorBoard
TensorBoard是TensorFlow內建的可视化工具,我们可以通过观测其中特定参数的图像走势(在我们这个实验中位于“SCALARS”标签下,参考图1)来理解、调试以及优化训练模型。例如说,如果我们看到“dev_ppl”(指的是开发集的混淆度-perplexity,越低越好)这个指标接近于0或者在某一个值附近波动了很久(与此同时,“dev_bleu”这个参数也应当开始稳定在某一个值附近了),那意味着保持这样的参数继续训练下去不会再有太大意义了,此时通常可以选择:1.调整参数如learningrate继续训练;2.停止训练,存储模型。
除此以外,TensorBoard还可以自动生成一个名字域的图像(在“GRAPHs”标签下查看)可以帮助用户理解当前的模型结构
翻译/推理
我们的首次尝试是在个人笔记本电脑上进行的,但考虑到真正的训练耗时较长且会需要一个相对稳定的环境,所以我们的训练很快就转到了一个服务器上(仅包含CPU,没有GPU)。
训练会在达到我们预设的步数后自动停止,我们也可以如前文提到的一样在观察到收敛的时候提前停止训练。在训练结束后,可以使用训练好的模型进行翻译任务,而这个翻译过程又可以被称之为推理/解码。只要已经有存储档案(一个.ckpt文件,会在每次验证步骤之完成时自动生成),翻译推理也可以在训练过程中进行。
这个最基础的模型在我们的服务器上跑了大约6个小时,最终的bleu分数停留在1.2左右。至此,我们成功地将“训练一个神经机器翻译模型”的基本流程流程走了下来,而我们推测导致最终的bleu分数如此低的原因可能有两个:
调整与改进
为了提高翻译模型的、构建更先进的神经机器翻译器,我们首先尝试了加入“注意力机制”(超参数设置中“attention=scaled_luong”)然后在同个语料上进行训练,这时bleu分数从1涨到了5。这算是一个提升但仍旧是一个较低的水平。真正的突破发生在我们精调了超参数之后。我们根据教程“benchmark”部分的设定,除了保留LuongAttention之外,超参数num_units从128提升到了512,learningrate设置为前8000步保持1.0,8000步后开始每1000步减半。总的训练步数保留为12,000(大约12个epochs),详情见下表。在这样的改动下对同个语料库进行训练,最终训练好的模型bleu分数跃升至24。这基本是一个我们想要看到的结果,也与教程里的说明比较一致(平均23.3分),我们的实验重现也至此告一段落。
鉴于我们已经依照教程实现了较为理想的越-英神经机器翻译,接下来自然就进入到了英中翻译的实现探索,而这里的首要任务便是找到一个合适的语料/数据集。经过一番探索,我们最终锁定了CWMT/WMT'17[38]官方推荐的英中平行语料库之一“casict2015”。这个语料库包含了200万个英中语句对(sentencepair),我们用它作为训练集。至于开发集和测试集,由于WMT'17比赛官方使用的devdataset和testdataset里有包含中英语句对,因此我们可以直接使用。
预处理
前三个预处理均使用“mosesdecoder”实现,这是目前最为流行的一个开源统计机器翻译工具-Moses中包含的[51]。最后一个预处理-子词拆分是通过学习词语的“字节对编码”(BytePairEncoding-BPE)压缩算法进行的,词汇库(vocabulary)在这之后生成。
训练,翻译,与改进
与我们在预处理时采取的策略类似,我们对于这里涉及到的超参数设置都是基于教程里的英德翻译设置(存储于repo的文件“wmt16.json”)而定的。由于仅使用CPU做计算,整个训练过程非常缓慢,且我们的最终训练出的模型只取得了不到1的bleu分数。为了加快训练进程以更有效地调整模型,我们开始使用亚马逊的AWS云服务(EC2)作为我们的训练平台(包含NVIDIAGRIDK520GPU),因为GPU特别适用于大量词汇库或大隐藏层情况下的运算。请注意,在设置环境时需要安装GPU版本的TensorFolow,如果在使用普通游戏显卡的个人计算机上运行,还需要额外安装合适版本的CUDA/cuDNN等工具包[41]。
在AWS平台设置好之后,我们首先再次尝试了越南语-英语的训练和翻译,同样语料与参数设置的情况下,成功训练出了一个可取得bleu大约25分的模型,这与我们上次的成功实验结果基本一致,而训练的速度则比先前在CPU服务器上训练时快了一倍。
在确认一切设置无误之后,我们从以下几个方面入手开始了中英翻译的改进实验:
讨论
上述实验结果反映,我们训练出最好的模型也只能取得一个bleu5分左右的成绩,这离一个有可读性的神经机器翻译器(bleu分数通常在20以上)还有不小距离,为了取得更好的成绩,我们有两条路线可走:
由于前面在GNMT上测试的中英翻译效果并不理想,为了改进英中神经机器翻译的性能,我们决定给其他的神经机器翻译框架一些机会,测试了THUMT、OpenNMT、以及Tensor2TensorTransformers(来自“AttentionisAllYouNeed”)三个框架,最后根据学习到的知识回归GNMT。
我们采用统一的语料来测试所有框架,且所有的实验都在同一平台上运行,具体细节如下:
实验平台:AmazonAWSEC2,p2instance
mosesdecoder/scripts/tokenizer/tokenizer.perl-q-a-lenmosesdecoder/scripts/tokenizer/tokenizer.perl-q-a-lzhmosesdecoder/scripts/training/clean-corpus-n.perl超参数设置
超参数的设置可在“THUMT/config/THUMT.config”文件中修改,我们大部分使用默认设置,仅有以下几项参数我们第一次实验使用了不同的参数,而后在第二次实验调整到了与建议参数几乎相同的设置。
实验结果
【实验1】使用MLE(MaximumLikelihoodEstimation,最大似然估计)跑到23W步左右时开始出现Nah故障(如下),bleu分数停在10分多;
[31Aug17:23:22DEBUG]iteration234648:cost=nan,grad_norm=nan,iter_time=0.767,total_time:70.337hr[31Aug17:23:23WARNING]ThereisanNaN!我们紧接着读取最近的一个checkpoint使用MRT(MinimumRiskTraining,最小风险训练)继续跑了3W步左右分数稳定在11.6分上下便不再增长了。
【实验2】后来我们根据官方指导修改了超参数设置,起步效果好于实验1,但很快bleuscore便不再增长,最终因停留在8.43太久而被程序自动终止了训练(如下),与实验1不同的是这次实验并没有出现NaN故障
[03Sep21:02:12INFO]iter140000:8.43[03Sep21:02:12INFO]Done![03Sep21:02:12INFO]Noimprovementfor100000iterations.Stoptraining.[03Sep21:02:12INFO]Savingmodelandstatus[03Sep21:02:19INFO]Thetrainingiscompleted.这里也可以看出THUMT的设置是100,000个iteration没有improvement的情况下训练会自动停止。
在实验过程中,我们不可避免地产生了一些问题和疑惑,都幸运地得到了来自清华THUMT开发团队的刘洋教授和张嘉成博士的解答,主要经验体现在如下几个方面:
关于数据集
除了语料库本身的选择之外,开发集和测试集的选择方面也有一定的弹性。一方面,开发、测试和训练集可以与训练集一起直接从一个统一的大语料里划分出来;另一方面,可以从别处另外选取相对独立的小语料作为开发和测试集。学术方面一般建议第一种方法保证测试集质量的同时方便不同实验配置下的横向比较。而据THU学者表示,他们在中英翻译的任务上“通常会采用nist2002~nist2008中英评测集,这个测试集在翻译研究中比较常用,并且其每句中文对应4句英文参考译文,评测会更为准确。使用多参考译文情况下评测的BLEU值从数值上会比使用单参考译文会高很多。”所以对于有条件的用户或学者,还是推荐在这些数据上进行测试。
关于预处理
分词(tokenization)、数据清理(dataclearn)、小写化处理(lowercase)均是常规的预处理步骤。BPE作为英文subword的工具,这里我们并没有使用,一是考虑到其比较耗时,二是不确定其对中文翻译效果的影响程度;而据THU学者表示,“BPE在某些情况下可能会有点帮助,不过提升不关键。”这些均可以在数据进入THUMT系统之前作为预处理步骤进行,因此其官方手册里也并未提及。
关于超参数设置
这里我们首先想谈的是batchsize这个通常受硬件性能制约而又会很大程度上影响翻译质量的超参数。起初,我们的实验使用的是亚马逊AWS的g2实例,显存只有3G,当时我们使用THUMT在另一个数据集(ncv12)上只跑到了bleu5分多的成绩;升级GPU后由于显存增大,我们换了更大的UM-corpus同时将batchsize从4调整到了16,才有了前面的结果。我们由此推测影响结果的原因很可能在于①语料库变大了或者②batchsize增大了。而根据清华学者的经验,“batchsize太小(比如小于10或20)会严重损害翻译质量,但是batchsize也不是越大效果越好,80的batchsize足够了,继续增加对BLEU值影响不大。”
另一个值得一提的超参数是AdamAlpha,这其实就是使用Adamoptimizer时的学习率learningrate。THUMT中并没有使用其他框架中常见的衰减机制,而是用了冷启动(即没有设置adamalphadecay),因此训练初期的adamalpha会很低,然后在几千个iteration内逐渐恢复到配置中设置的数值。据THU研究者说明“这样会一定程度上缓解出现NAN的情况,不过并不能根治。NAN的出现和数据、超参数都有一定的关系,同时也具有一定的随机性(相同配置的两次实验可能一次出现NAN,一次不出现NAN),目前我们还没有办法准确地追踪到NAN出现的问题根源。下一个版本的THUMT中会增加dropout的功能,据我们观察dropout也能一定程度上减少NAN的出现。”同时他们也确认了正在对带衰减的方法进行实验,如果有效的话会加入到新版本THUMT中。
关于其他超参数的设置,我们在第二次实验的设置基本就是对前人实验的一个总结,初学者摸不清内在原理的时候可以考虑直接沿用,通常可以取得不错的效果。
结论
使用THUMT后,我们在中英翻译的道路上将最高Bleu分提升到了两位数,最高11.6分;而由于THUMT实验指导的步骤清晰明确,参数设置也统一,其开发团队在自己的数据集上是可以轻松取得20以上的高分的;因此我们目前认为最有可能导致低分的问题出在前期语料库本身的选择上,THU研究者也指出:“①有条件的话使用公开的、常用的开发测试集;②“有可能在前4000句中集中出现数据质量不高或数据bias的问题,可以将抽取方法改为从全数据中随机抽1000条”;③“MRT应该选择一个开发集上BLEU值最高的点开始训,而不是最近的一个checkpoint”
OpenNMT是由Harvard和SYSTRAN合作开发的一个开源神经机器翻译工具,会考虑OpenNMT主要是由于其流行度。该工具基于Torch/PyTorch开发,有着广泛的受众以及活跃的社区。
Tokenization/分词、clean同THUMT,直接调用了mosesdecoder,而lowercase我们直接在OpenNMT自带的“preprocess.py”中进行了设置,划词并生成训练和开发集
pythonpreprocess.py\-lower\-train_src~/um_data/zh-en-training/train.tok.clean.en\-train_tgt~/um_data/zh-en-training/train.tok.clean.zh\-valid_src~/um_data/zh-en-training/dev.tok.clean.en\-valid_tgt~/um_data/zh-en-training/dev.tok.clean.zh\-save_datadata/zh-en超参数设置
由于我们测试的目的是对比不同NMT系统能力的差异,因此超参数主要参考THUMT中最终得出的标准进行设置,主要的参数设置如下:
-layers2\-word_vec_size620\-rnn_size1000\-brnn_mergeconcat\-batch_size80\-epochs20\//这里每个epoch的步数是自动的-optimadam\-max_grad_norm5\-dropout0.2\-learning_rate0.0005\-learning_rate_decay0.998\-start_decay_at10\//从epoch10开始递减learningrate实验结果
翻译:
pythontranslate.py\-modelzh-en-model_acc_40.61_ppl_41.60_e3.pt\-src~/um_data/zh-en-training/dev.tok.clean.en\-outputoutput.zh\-beam_size10-batch_size10-max_sent_length80调用mosdecoder计算Bleuscore:
mosesdecoder/scripts/generic/multi-bleu.perl实验结果基本与THUMT相似,经过若干epoch(这里epoch自动被设置为约18000steps),得到的结果是:
Tensor2Tensor(T2T)是一个相对特殊的library,不同于前面使用过的基于两个RNN的GNMT、THUMT、和OpenNMT,T2T是完全基于attention机制的,详情可以参考"AttentionIsAllYouNeed"这篇paper[12]。
环境配置
因为是完全不一样的framework,所以需要先配置环境,可以直接pip安装tensorflow和tensor2tensor
#Installswithtensorflow-gpurequirementpipinstalltensor2tensor[tensorflow_gpu]或
#Installswithtensorflow(cpu)requirementpipinstalltensor2tensor[tensorflow]安装之后通过`t2t-trainer—registry_help`看到各种配置好的任务,这里由于t2t是一个可以用于多种不同任务的framerwork(除机器翻译外,还可用于摘要、图像生成等任务),因此需要专门针对我们的需求配置任务,而tensor2tensor自身由社区添加了以wmt17为基础的英中翻译任务,使用的是我们先前尝试过的NC-v12语料,我们没有直接对其进行测试。而是依据其代码(tensor2tensor/tensor2tensor/data_generators/wmt.py)并参考了之前THUMT测试的参数进行设置,使用UM-corpus数据进行了测试,便于对比。
使用类装饰器`@registry.register_problem`添加试验任务,以及函数装饰器`@registry.register_hparams`添加试验超参数。
之后在文件夹中添加`__init__.py`并import相对应文件,再次使用指令`t2t-trainer—registry_help`即可看到自定义试验以及超参数组:
HParams:translate:*translate_enzh_hparams_thumt...Problems:translate:*translate_en_zh实验的环境配置至此完成,具体可设置的超参数组可以参考`tensor2tensor/tensor2tensor/layers/common_hparams.py`和`tensor2tensor/tensor2tensor/models/transformer.py`
这里的划词部分我们可以通过自定义classProblem中的methodgenerator函数来实现:
defgenerator(self,data_dir,tmp_dir,train):source_vocab_size=self.targeted_vocab_sizetarget_vocab_size=self.targeted_vocab_sizesource_vocab=generator_utils.get_or_generate_txt_vocab(data_dir,'vocab.%d.en'%source_vocab_size,source_vocab_size,['train.tok.clean.en'])target_vocab=generator_utils.get_or_generate_txt_vocab(data_dir,'vocab.%d.zh'%target_vocab_size,target_vocab_size,['train.tok.clean.zh'])returnbi_vocabs_token_generator(os.path.join(data_dir,'train.tok.clean.en'),os.path.join(data_dir,'train.tok.clean.zh'),source_vocab,target_vocab,EOS)调用工具t2t-datagen生成相应数据集:
t2t-datagen\--t2t_usr_dir=~/t2t\--data_dir=~/zh-en-training\--tmp_dir=/tmp\--problem=translate_en_zh训练与结果
在尝试过不同的framework后,我们对NMT的整体理解以及参数设置有了一个更加深入的认识,鉴于尝试不同框架并没有带来显著的提升(THUMT是其中效果最好的),我们决定带着学习到的参数设置知识,回到GNMT的训练,尤其是在我们更新了运行平台,可以匹配大部分同类实验参数设置的情况下。
实验依旧采用UM-corpus,进行如下预处理。
--中文分词命令:
OpenNMT/tools/tokenize.lua-segment_alphabet_change-segment_alphabetHan
OpenNMT/tools/tokenize.lua-segment_alphabet_change
超参数设置
实验的超参数设置如下,基本参照THUMT的推荐设置
--num_units=620--num_layers=2--batch_size=64--encoder_type=gnmt--attention=scaled_luong--attention_architecture=gnmt_v2--unit_type=lstm--pass_hidden_state=true--optimizer=adam--learning_rate=0.0005--num_train_steps=150000--colocate_gradients_with_ops=true--init_op=uniform--init_weight=0.1--forget_bias=1.0--num_buckets=5--beam_width=10--dropout=0.2--length_penalty_weight=1--max_gradient_norm=5实验结果与讨论
可以看出,在模型原理相差不大的情况下,参数的设置以及语料的选择对训练的结果着实影响巨大,而最初我们效果不理想的原因可能二者兼有。此外,这些工具包的不断的自我更新也可能是导致翻译质量差距的原因之一。例如我们在GNMT实验中就曾遇到过同样设置第一次运行报错第二次运行成功的情况,而THUMT也在近期发布了其基于TensorFlow的实现并作为主推,相信可以取得更好的翻译效果。鉴于我们对目前总结出的参数设置已经比较有信心了,如果想要进一步提高模型的翻译质量,下一步还能比较容易做到的则是更换并扩大训练用语料。因此,有在上述基于包含2.2M句对的UM-Corpus实验的基础上,我们尝试了一个更大的数据集(AIChallenger[52],共9,903,244个语句对),并保持其他所有参数设置与先前一致,短暂的训练后确实也取得了一个更高的分数(如下)。
在高速发展和高度竞争的环境中,NMT技术正在取得显著的进展。在最近的ACL2017会议上,机器翻译类别下接收的15篇论文全都与神经机器翻译有关[34]。我们可以看到NMT还将在许多方面得到不断完善,其中包括:
因此,我们有足够的理由相信NMT还将取得更大的突破,还将替代SMT逐渐发展成主流的机器翻译技术,并在不久的将来让全社会受益。
Onemorething
为了帮你了解NMT的神奇之处,我们列出了一些NMT的开源实现,它们使用了不同的工具:
如果你有兴趣进一步了解NMT,我们鼓励你阅读参考文献中列出的论文:[5][6][7]是必读的核心论文,能帮你了解什么是NMT;[9]是NMT的机制和实现的全面展示。此外,在机器之心最近发布的《人工智能技术趋势报告》中,机器翻译也是一个重要篇章。
[1]Russell,S.,&Norvig,P.(2003).ArtificialIntelligence:AModernApproach.
[2]Neco,R.P.,&Forcada,M.L.(1997,June).Asynchronoustranslationswithrecurrentneuralnets.InNeuralNetworks,1997.,InternationalConferenceon(Vol.4,pp.2535-2540).IEEE.
[3]Bengio,Y.,Ducharme,R.,Vincent,P.,&Jauvin,C.(2003).Aneuralprobabilisticlanguagemodel.Journalofmachinelearningresearch,3(Feb),1137-1155.
[4]Kalchbrenner,N.,&Blunsom,P.(2013,October).RecurrentContinuousTranslationModels.InEMNLP(Vol.3,No.39,p.413).
[5]Sutskever,I.,Vinyals,O.,&Le,Q.V.(2014).Sequencetosequencelearningwithneuralnetworks.InAdvancesinneuralinformationprocessingsystems(pp.3104-3112).
[6]Cho,K.,VanMerrinboer,B.,Gulcehre,C.,Bahdanau,D.,Bougares,F.,Schwenk,H.,&Bengio,Y.(2014).LearningphraserepresentationsusingRNNencoder-decoderforstatisticalmachinetranslation.arXivpreprintarXiv:1406.1078.
[7]Bahdanau,D.,Cho,K.,&Bengio,Y.(2014).Neuralmachinetranslationbyjointlylearningtoalignandtranslate.arXivpreprintarXiv:1409.0473.
[9]Wu,Y.,Schuster,M.,Chen,Z.,Le,Q.V.,Norouzi,M.,Macherey,W.,...&Klingner,J.(2016).Google'sneuralmachinetranslationsystem:Bridgingthegapbetweenhumanandmachinetranslation.arXivpreprintarXiv:1609.08144.
[10]Gehring,J.,Auli,M.,Grangier,D.,&Dauphin,Y.N.(2016).Aconvolutionalencodermodelforneuralmachinetranslation.arXivpreprintarXiv:1611.02344.
[11]Gehring,J.,Auli,M.,Grangier,D.,Yarats,D.,&Dauphin,Y.N.(2017).ConvolutionalSequencetoSequenceLearning.arXivpreprintarXiv:1705.03122.
[12]Vaswani,A.,Shazeer,N.,Parmar,N.,Uszkoreit,J.,Jones,L.,Gomez,A.N.,…&Polosukhin,I.(2017).AttentionIsAllYouNeed.arXivpreprintarXiv:1706.03762.
[14]Jean,S.,Cho,K.,Memisevic,R.,&Bengio,Y.(2014).Onusingverylargetargetvocabularyforneuralmachinetranslation.arXivpreprintarXiv:1412.2007.
[15]Luong,M.T.,Sutskever,I.,Le,Q.V.,Vinyals,O.,&Zaremba,W.(2014).Addressingtherarewordprobleminneuralmachinetranslation.arXivpreprintarXiv:1410.8206.
[16]Sennrich,R.,Haddow,B.,&Birch,A.(2015).Improvingneuralmachinetranslationmodelswithmonolingualdata.arXivpreprintarXiv:1511.06709.
[17]Cheng,Y.,Xu,W.,He,Z.,He,W.,Wu,H.,Sun,M.,&Liu,Y.(2016).Semi-supervisedlearningforneuralmachinetranslation.arXivpreprintarXiv:1606.04596.
[18]Dong,D.,Wu,H.,He,W.,Yu,D.,&Wang,H.(2015).Multi-TaskLearningforMultipleLanguageTranslation.InACL(1)(pp.1723-1732).
[19]Wang,M.,Lu,Z.,Li,H.,&Liu,Q.(2016).Memory-enhanceddecoderforneuralmachinetranslation.arXivpreprintarXiv:1606.02003.
[20]Sennrich,R.,&Haddow,B.(2016).Linguisticinputfeaturesimproveneuralmachinetranslation.arXivpreprintarXiv:1606.02892.
[21]Tu,Z.,Lu,Z.,Liu,Y.,Liu,X.,&Li,H.(2016).Modelingcoverageforneuralmachinetranslation.arXivpreprintarXiv:1601.04811.
[22]Shen,S.,Cheng,Y.,He,Z.,He,W.,Wu,H.,Sun,M.,&Liu,Y.(2015).Minimumrisktrainingforneuralmachinetranslation.arXivpreprintarXiv:1512.02433.
[23]Mnih,V.,Heess,N.,&Graves,A.(2014).Recurrentmodelsofvisualattention.InAdvancesinneuralinformationprocessingsystems(pp.2204-2212).
[25]Cohn,T.,Hoang,C.D.V.,Vymolova,E.,Yao,K.,Dyer,C.,&Haffari,G.(2016).Incorporatingstructuralalignmentbiasesintoanattentionalneuraltranslationmodel.arXivpreprintarXiv:1601.01085.
[26]Hitschler,J.,Schamoni,S.,&Riezler,S.(2016).Multimodalpivotsforimagecaptiontranslation.arXivpreprintarXiv:1601.03916.
[28]Pascanu,R.,Mikolov,T.,&Bengio,Y.(2013,February).Onthedifficultyoftrainingrecurrentneuralnetworks.InInternationalConferenceonMachineLearning(pp.1310-1318).
[29]Sudoh,K.,Duh,K.,Tsukada,H.,Hirao,T.,&Nagata,M.(2010,July).Divideandtranslate:improvinglongdistancereorderinginstatisticalmachinetranslation.InProceedingsoftheJointFifthWorkshoponStatisticalMachineTranslationandMetricsMATR(pp.418-427).AssociationforComputationalLinguistics.
[30]Junczys-Dowmunt,M.,Dwojak,T.,&Hoang,H.(2016).Isneuralmachinetranslationreadyfordeployment.Acasestudyon,30.
[31]BojarO,ChatterjeeR,FedermannC,etal.Findingsofthe2015WorkshoponStatisticalMachineTranslation[C].TechWorkshoponStatisticalMachineTranslation,2015.
[32]Johnson,M.,Schuster,M.,Le,Q.V.,Krikun,M.,Wu,Y.,Chen,Z.,…&Hughes,M.(2016).Google』smultilingualneuralmachinetranslationsystem:enablingzero-shottranslation.arXivpreprintarXiv:1611.04558.
[33]Bartolome,Diego,andGemaRamirez.「BeyondtheHypeofNeuralMachineTranslation,」MITTechnologyReview(May23,2016),bit.ly/2aG4bvR.
[35]Crego,J.,Kim,J.,Klein,G.,Rebollo,A.,Yang,K.,Senellart,J.,…&Enoue,S.(2016).SYSTRAN』sPureNeuralMachineTranslationSystems.arXivpreprintarXiv:1610.05540.
[36]Zhang,J.,Ding,Y.,Shen,S.,Cheng,Y.,Sun,M.,Luan,H.,&Liu,Y.(2017).THUMT:AnOpenSourceToolkitforNeuralMachineTranslation.arXivpreprintarXiv:1706.06415.
[37]Papineni,K.,Roukos,S.,Ward,T.,&Zhu,W.J.(2002,July).BLEU:amethodforautomaticevaluationofmachinetranslation.InProceedingsofthe40thannualmeetingonassociationforcomputationallinguistics(pp.311-318).AssociationforComputationalLinguistics.
[39]Sennrich,R.,Haddow,B.,&Birch,A.(2015).Neuralmachinetranslationofrarewordswithsubwordunits.arXivpreprintarXiv:1508.07909.
[44]Sennrich,R.,Birch,A.,Currey,A.,Germann,U.,Haddow,B.,Heafield,K.,...&Williams,P.(2017).TheUniversityofEdinburgh'sNeuralMTSystemsforWMT17.arXivpreprintarXiv:1708.00726.
[45]Zhang,B.,Xiong,D.,&Su,J.(2016).RecurrentNeuralMachineTranslation.arXivpreprintarXiv:1607.08725.
[47]Su,J.,Tan,Z.,Xiong,D.,Ji,R.,Shi,X.,&Liu,Y.(2017).Lattice-BasedRecurrentNeuralNetworkEncodersforNeuralMachineTranslation.InAAAI(pp.3302-3308).
[48]Tu,Z.,Liu,Y.,Shang,L.,Liu,X.,&Li,H.(2017,February).NeuralMachineTranslationwithReconstruction.InAAAI(pp.3097-3103).
[49]Chen,H.,Huang,S.,Chiang,D.,&Chen,J.(2017).ImprovedNeuralMachineTranslationwithaSyntax-AwareEncoderandDecoder.arXivpreprintarXiv:1707.05436.
[50]Tu,Z.,Lu,Z.,Liu,Y.,Liu,X.,&Li,H.(2016).Coverage-basedneuralmachinetranslation.
由来自世界各地的专业分析师为你解读前沿进展,技术热点和经典论文。我们的分析师团队由来自于各大名校的硕士和博士,以及一线研究机构的研究员组成。
约书亚·本希奥(法语:YoshuaBengio,1964年-)是一位加拿大计算机科学家,因人工神经网络和深度学习领域的研究而闻名。YoshuaBengio于1991年获得加拿大麦吉尔大学计算机科学博士学位。经过两个博士后博士后,他成为蒙特利尔大学计算机科学与运算研究系教授。他是2本书和超过200篇出版物的作者,在深度学习,复现神经网络,概率学习算法,自然语言处理和多元学习领域的研究被广泛引用。他是加拿大最受欢迎的计算机科学家之一,也是或曾经是机器学习和神经网络中顶尖期刊的副主编。
谷歌大脑阿姆斯特丹研究实验室研究科学家和联合创始人,曾在DeepMind担任深度学习方面的研究科学家,参与过AlphaGo的研究。研究领域:神经机器翻译、卷积句子和序列模型、RNN架构,以及图像、视频、音频的生成模型。
深度学习(deeplearning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。
线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为0,则相应的特征对模型来说没有任何贡献。
在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligentagent)
一个信息中心,用于显示在执行一个或多个TensorFlow程序期间保存的摘要信息。
在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。
极大似然估计是统计学中用来估计概率模型参数的一种方法
在机器学习中,提前停止是一种正则化形式,用于在用迭代方法(例如梯度下降)训练学习器时避免过度拟合。这种方法更新了学习器,使其更好地适合每次迭代的训练数据。这提高了学习器在训练集之外的数据上的表现。但是,提高学习器对训练数据的适应性是以增加的泛化误差为代价的。提前停止规则提供了在学习器开始过度训练之前可以运行多少次迭代的指导。提前停止规则已经在许多不同的机器学习方法中使用,理论基础不尽相同。
TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google相册和搜索,其中许多产品曾使用过其前任软件DistBelief。
张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在维空间内,有个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。
验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(devset)。
机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。
(人工)神经网络是一种起源于20世纪50年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中RNN又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。
映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。
语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文"textcorpus"的涵意即为"bodyoftext"。
先验(apriori;也译作先天)在拉丁文中指“来自先前的东西”,或稍稍引申指“在经验之前”。近代西方传统中,认为先验指无需经验或先于经验获得的知识。先验知识不依赖于经验,比如,数学式子2+2=4;恒真命题“所有的单身汉一定没有结婚”;以及来自纯粹理性的推断“本体论证明”
过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。
MXNet是开源的,用来训练部署深层神经网络的深度学习框架。它是可扩展的,允许快速模型训练,并灵活支持多种语言(C++,Python,Julia,Matlab,JavaScript,Go,R,Scala,Perl,Wolfram语言)
自然语言处理(英语:naturallanguageprocessing,缩写作NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。
沃森是能够使用自然语言来回答问题的人工智能系统,由IBM公司的首席研究员DavidFerrucci所领导的DeepQA计划小组开发并以该公司创始人托马斯·J·沃森的名字命名。
衡量概率分布或概率模型预测样本能力的一个度量单位,其可以被用来比较概率模型的好坏,值越低表示在预测样本方面的效果越好。
优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer,AdagradOptimizer,MomentumOptimizer(tensorflow下的优化器包)等等这些算法。
语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。