金山集团 AI Lab 组队参加了 AI Challenger 2018 全球挑战赛的英中机器翻译项目,并且获得冠军。 

AI Challenger 2018 主题为"用 AI 挑战真实世界的问题",是目前国内规模最大的科研数据集平台、最大非商业化竞赛平台,最关注前沿科研与产业实践相结合的数据集和竞赛平台,也是 2018 年度中国超高水准的 AI 竞赛。本次比赛使用的数据总量达到 1300 万句对,其中具有上下文情景的中英双语数据达到 300 万句对,相比去年大幅扩容。

在此,参赛团队就技术和经验做一些分享,希望对大家有帮助。

工具介绍

机器翻译的开源库很多,比如 OpenNMT、FairSeq 和 tensor2tensor 等,我们主要是基于 tensor2tensor 等工具库进行的程序实现。它是 Google 基于 TensorFlow 开发的高级库,内置了许多经典模型,开发调试比较方便。

我们使用了 3 台 V100 GPU 服务器1 台 32 核的 CPU 服务器作为主要的实验设备。

我们选用 Transformer 模型作为我们的 baseline 模型。

数据清洗

优质的数据不管在哪个领域下都是有益的。对于一个任务来说,我们首先要进行的就是数据的分析及清洗。数据清洗的一个通常操作就是去除重复数据,原始语料中存在着 6.56% 的重复,共约 90w 个样本,对这些样本我们进行了去重操作,一般直接删去即可。

另外我们对源句子与目标句子长度比例进行了检测,当长度比超过一定的阈值时我们就将对应的平行语句对进行删除。

同时我们还注意到有一部分语料存在着对齐错误,对此我们使用了 giza++ 对训练数据进行了对齐并获得一份双语词典。使用获得的双语词典我们就可以对平行语料进行漏翻检测,通常我们会对语料的漏翻程度进行打分,分值超过一定阈值时,我们就会删除对应的语料。

下表可以看到,分值越低,删除的语料越多,结果有了些许提升。

数据增广

在本次比赛中,我们使用了两种数据增广手段,分别是回译和交换。

NMT 中用回译的方法扩充语料是常用的数据增广技术,见 Facebook 在 WMT18 英译德的冠军论文 Understanding Back-Translation at Scale [1]。在该论文中,仅依靠回译生成的语料做数据增广就能将 BLEU 提高 1 至 2 个点。

在回译时,我们基于现有语料训练了一个从目标语言到源语言(中翻英)的翻译模型。将目标语言语料输入该模型就能获得对应的源语言语料,将二者结合后就得到了新的平行语料。当然,在 Facebook 的论文中,他们使用了 226M 的单语语料去生成数据。

本次比赛不允许使用外部数据,所以我们直接使用原始预料中的中文部分进行生成。但是,这种方法会存在一个问题,就是新的平行语料与原始语料可能存在重复。针对这个问题,我们在解码端加入了一定的随机噪声,从而避免了这种情况。

我们还使用了交换的方法,将原始语料中的英文语料的相邻的词都交换了一遍。其实,把交换作为数据增广的手段有些牵强。交换的实际目的是为了增强模型的抗噪能力,但是我们还是通过交换语料的语序扩充了实验数据,所以把它算作数据增广的一种手段。

从表格中可以看到两种方法单独使用时都有了一定的提升,说明数据增广技术还是有一定效果的。

但是需要注意的就是两种方法同时使用时效果会有一些下降。

模型改进


获得语料后,我们就开始尝试在模型层面进行一些改进。

在分词实验时,我们共使用了三种分词方法,分别是 tensor2tensor 中默认的分词方式,还有基于 character 级别的分词和使用 SentencePiece 的分词,后两种分词方法较第一种均有 1 个 bleu 值的提升。

我们还使用了 relative transformer,这个模型在 transformer_big 参数条件下提升了 0.3 个 bleu 值。模型细节详见 Self-Attention with Relative Position Representations [2]。

基于 transformer,我们提出了一种新的模型结构,叫做 layer-attention。

 模型结构图

该模型,在 transformer_big 参数下,在 newstest2014_ende 上面提升了 0.9 个 bleu 值。上图为原始的 transformer,从图中我们可以看到 transformer 是将 encoder 端最后一层的信息直接输出给 decoder 端。

而我们的改进,是将 encoder 端所有层的输出进行了加权求和,然后将求和后得到的结果输入到 decoder 端中因为时间原因,我们并没有在本次比赛的测试集数据上单独测试该模型的效果,而是将其使用在了最后的 rerank 中。

另外,在本次比赛给出的数据集中,约有 300w 的语料包含上下文信息,为了使用这些信息,我们使用了一种可以将上下文信息引入的模型叫做 contextual trasformer,模型结构见下图。

具体细节及实验设置见论文 Improving the Transformer Translation Model with Document-Level Context [3]。该模型在 transformer_base 条件下有了 0.5 个 bleu 的提升。

Contextual Transformer 就是在原始 transformer 的基础上引入了额外的 context encoder,并且在 transformer 的 encoder 和 decoder 端加入了 Context Attention 层。

这种结构增加了模型捕捉上下文信息的能力,并且因为依旧使用的 multihead 并行计算,所以训练和解码速度并没有下降很多。

Finetune

finetune 就是使用少量的语料进行预训练模型的微调。如果使用过预训练的语言模型(如 ELMo,GPT 或 BERT),那么对于 finetune 就不会陌生。本次比赛中,我们使用与测试语句相似的句子作为 finetune 语料,在现有模型基础上进行微调。 

我们对测试语料与训练语料进行了相似度打分并排序,从中选取出了与每句测试语句相似度最高的训练语料作为最终的 finetune 语料。

从表格的第一行我们可以看到,测试语句中 Send them to these foreign places” 与微调语料 a1 只有最后的符号不同。而第二行中的测试语句 the necessary excitation, even using crude natural crystals. 为两个微调语料 b1 和 b2 的结合。

经过这样的 fineune 训练后,我们的模型对于测试集的数据势必有所倾向。finetune 后的翻译表现也验证了我们的猜想。

从表格中第一行可以发现,Her secret is putting butter under the skin. 这句话的正确意思是她的秘诀是在鸡皮下面抹黄油。但是在微调前,我们得到的释义是她的秘诀是把黄油涂在皮肤上。而在 finetune 后我们得到了正确的释义把黄油粘在鸡皮上。这也说明 finetune 可以帮助我们获得了一些词在某些语境下的正确释义。

而第二行中,方括号内的语句 [Woman On P. A.],在 finetune 前并没有被翻译,但是经过 finetune 后可以看到我们获得了该句的翻译,[P.A.上的女人] ,可见 finetune 也可以帮助我们降低漏翻的概率。

Rerank

通过前面介绍的不同方法和尝试,我们获得了很多不同的模型。这些模型有的训练数据集不同,有的分词方式不同,有的模型结构不同,有的还进行了 finetune。我们将这些模型都做保留,目的就是为了保持不同模型的差异性,用于进行后续的 rerank 实验。

在我们得到的所有结果中,他们的分值表现各不相同,但是势必会存在这样一种情况,BLEU 值较高的结果文件中也会出现翻译不好的语句,而 BLEU 值较低的文件中同样也会出现翻译比较好的语句。

我们的目标就是将尽可能多的的翻译较好的语句筛选出来,组成最终的结果。为此我们进行了一些尝试。

我们将解码时返回的 beam_score 作为排序分值依据,但是不同的模型有不同的表现,所以就很难在统一的度量下进行排序。所以针对不同的模型我们引入了不同的权重。使用 beam_score×weight 作为每个翻译结果的最终分值,通过筛选获得了最终的结果。

因此,如何去获得准确的权重成为了一个问题。我们首先通过人工调整尝试性地给出了一份权重值,但是显然,对于 16 个模型来说,仅依靠人工调参无法遍历整个权重参数搜索空间。于是我们想到了贝叶斯调参。我们使用贝叶斯调参搜索出了一些权重参数,但是相较我们手动调整的参数提升并不是很大。

于是我们提出了一种新的随机参数搜索方案,如下图所示。我们首先给出权重参数 U 和随机搜索参数 P,然后使用 U 获得了结果文件 Y。基于 U 和 P 通过随机搜索函数获得了新的参数 U’,基于 U’ 获得了新的结果文件 Y’,比较 Y 和 Y’ 的分值情况,我们选择保留最好结果所对应的权重参数。

我们最后选用在验证集上表现最好的参数,使用在了测试集上。

下图为最终的结果从各个模型中抽取的数量分布,从图中可以看到 valid,testA,testB 抽取的分布是大致一样的,这也证明了我们 rerank 方法是稳定且有效的。

从图中我们还发现主要从 3 个模型中进行了抽取,分别是基于 Character 级别的,基于 context,基于 SentencePiece 和 finetune 的。

从抽取分布图可以看出,从 finetune 的模型中抽取的数据并没有想象的那么多,对此我们进行了另外的尝试。我们利用投票机制,首先使用 finetune 的模型进行投票,将 finetune 模型中大部分相同的语句直接抽取出来作为最终的结果,剩余的结果依旧使用随机参数搜索方案进行抽取。

此外除却上面的 beam_score * weights 方案,我们还尝试使用语言模型对翻译的句子进行打分,然后选取分值最高的句子。但是该方法效果略差于前两者,所以最终我们选择使用第一种方案,即按照 beam_score * weights 作为最终的排序依据。

结语

金山集团 AI Lab 组建只有不到两年,是一只年轻的队伍,我们会持续在机器翻译等领域深入研究,希望对 AI 业界有所贡献。

参考文献

[1] Sergey Edunov, Myle Ott, Michael Auli, David Grangier. Understanding Back-Translation at Scale. EMNLP 2018.

[2] Peter Shaw, Jakob Uszkoreit, Ashish Vaswani. Self-Attention with Relative Position Representations. NAACL 2018.

[3] Jiacheng Zhang, Huanbo Luan, Maosong Sun, FeiFei Zhai, Jingfang Xu, Min Zhang, Yang Liu. Improving the Transformer Translation Model with Document-Level Context. EMNLP 2018.

点击以下标题查看更多往期内容:

  • 自动机器学习(AutoML)最新综述

  • 图神经网络综述:模型与应用

  • 近期值得读的10篇GAN进展论文

  • 自然语言处理中的语言模型预训练方法

  • 从傅里叶分析角度解读深度学习的泛化能力

  • 两行代码玩转Google BERT句向量词向量

  • 近期知识图谱顶会论文推荐,你都读过哪几篇?

  • TensorSpace:超酷炫3D神经网络可视化框架

  • 深度长文:NLP的巨人肩膀(上)

  • NLP的巨人肩膀(下):从CoVe到BERT

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

? 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site

• 所有文章配图,请单独在附件中发送

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

?

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

▽ 点击 | 阅读原文 | 获取最新论文推荐

AI Challenger 2018 机器翻译参赛总结相关推荐

  1. 总奖金300万的AI Challenger 2018进入第二阶段,决赛在即!

    参加 2018 AI开发者大会,请点击 ↑↑↑ 此前,AI科技大本营曾报道过奖金池高达 300 万元的 AI Challenger 2018 比赛.与往届不同,今年的比赛共有 5 个主赛道,5 个实验 ...

  2. AI Challenger 2018决赛在即,12月18-19日极客峰会免费抢票!

    第二届"AI Challenger 全球AI挑战赛"各赛道竞赛经过两个多月的激烈角逐,报名将于北京时间2018年11月11日23:59:59正式截止,随即进入决赛阶段,最终每个竞赛 ...

  3. AI Challenger 2018:细粒度用户评论情感分析冠军思路总结

    2018年8月-12月,由美团点评.创新工场.搜狗.美图联合主办的"AI Challenger 2018全球AI挑战赛"历经三个多月的激烈角逐,冠军团队从来自全球81个国家.100 ...

  4. AI challenger 2018图片分类比赛—农作物病害检测

    1 赛题简介 对近5万张按"物种-病害-程度"分成61类的植物叶片照片进行分类 比赛地址:AI challenger比赛-农作物病害检测 2 框架 我使用的是Keras,以Tens ...

  5. AI Challenger全球AI挑战赛开幕,300万奖金池,还可能获李开复投资

    铜灵 发自 维景国际 量子位 出品 | 公众号 QbitAI 一场面向全球AI人才的编程竞赛开始了. 投入千万元资金,新增10余个高质量数据集,由企业.大学和政府联合推动,2018 AI Challe ...

  6. 11月11日截止报名!快来参加顶尖极客汇聚的“AI Challenger 全球AI挑战赛”!

    "AI Challenger 全球AI挑战赛"是面向全球人工智能人才的开源数据集和编程竞赛平台,致力于满足AI人才成长对高质量丰富数据集的需求,推动AI在科研与商业领域结合来解决真 ...

  7. 世界首个!AI农作物病害检测竞赛火热进行中 | AI Challenger 全球AI挑战赛

    乾明 发自 凹非寺 量子位 出品 | 公众号 QbitAI 如果你用谷歌搜索"AI+农业"或者"人工智能+农业",就会发现与AI在其他领域的应用相比,农业依旧是 ...

  8. 2018 AI Challenger全球AI挑战赛‘眼底水肿病变区域自动分割’赛道比赛总结

    2018 AI Challenger全球AI挑战赛'眼底水肿病变区域自动分割'赛道比赛总结 苏州的十月,无论是天气还是桂香都觉得让人无所适从,忙碌的低年级学生一阵风似的从身边经过,恍惚才觉得,这是我最 ...

  9. AI Challenger 全球AI挑战赛[一]——大赛介绍

    AI Challenger 全球AI挑战赛 AI Challenger 全球AI挑战赛"是面向全球人工智能(AI)人才的开放数据集和编程竞赛平台,致力于打造大型.全面的科研数据集与世界级竞赛 ...

最新文章

  1. centos7 下进行数据库自动备份
  2. hbase hyperbase 区别_大数据之HBase的几个常规性问题
  3. 复合选择器-后代选择器(HTML、CSS)
  4. pojCashier Employment
  5. android APN的打开与关闭
  6. selenium 实现循环点击_webdriver处理循环点击
  7. java 共享类,Java 技术,IBM 风格: 类共享
  8. 米勒拉宾算法(素性测试)
  9. 未来计算机和ai应用,计算机人工智能技术的应用与发展(1)
  10. python 获取网页的内容
  11. Libevent之信号事件管理
  12. 勤学修身 放飞梦想4
  13. 快排为什么一定要从右边开始?
  14. Word2016(2013)页码、分节符
  15. 给大伙儿盘一盘,那些提效/创意的 vscode 插件
  16. python读音有道-Python 20行简单实现有道在线翻译的详解
  17. 问渠哪得清如许,为有源头活水来之TCP / UDP
  18. 06注解驱动的入门案例
  19. vue 引入canvas_canvas动画合集Vue组件
  20. 微信视频通话概括-测试用例

热门文章

  1. 自定义类加载器_jvm超详细探索自定义类加载器(值得收藏)
  2. v-on绑定特性命名带小横杠 ‘-’与props属性中变量怎么对应
  3. oracle查询重复数据出现次数
  4. Python中安装bs4后,pycharm依然报错ModuleNotFoundError: No module named 'bs4'
  5. 基于aspectj实现AOP操作的两种方式——xml配置
  6. C# 每月第一天和最后一天
  7. ios业务模块间互相跳转的解耦方案
  8. 【翻译自mos文章】OGG的集成捕捉模式支持Oracle database标准版么?
  9. nodejs新建服务器
  10. 转:11个实用但你可能不知道的Python程序库