写点什么

大规模预训练模型在阿里机器翻译中的应用

2020 年 5 月 09 日

大规模预训练模型在阿里机器翻译中的应用

导读: 大规模预训练的提出对整个自然语言处理领域产生了较大的震动,几乎推动了所有子领域 state-of-the-art 的性能,均上升了一个档次,较多榜单已被刷榜。为什么在这些场景中没有机器翻译 ( MT ) / 自然语言生成 ( NLG ) 任务?训练神经网络过程中,通常是通过 t-1 时刻的 ground truth 来预测 t 时刻的输出,会涉及到暴露偏置 ( Exposure Bias ) 问题。在训练时有 ground truth,但在实际推断 Inference 时没有 ground truth。如何平衡训练和 Inference 两者差异性?需要提出更好的训练框架。


本次分享题目为大规模预训练模型在阿里机器翻译中的应用,主要从以下 3 个方面介绍:


  • 预训练模型介绍及机器翻译的挑战

  • 提出创新的 Framework,很好的融合机器翻译和预训练的模型:APT Framework

  • 专门为机器翻译设计了一种创新的捕捉全局信息的网络结构:GRET


2 个工作均被 AAAI2020 接收。


01 背景介绍

1. 简介



大规模预训练的提出对整个自然语言处理领域产生了较大的震动,几乎推动了所有子领域 state-of-the-art 的性能,均上升了一个档次,较多榜单已被刷榜。通过从大规模无标注语料中学习知识,并用复杂网络进行建模,然后对下游任务微调来适应,这种方式已成为近期研究热点。较著名的模型有 ELMo、GPT、BERT、ERNIG 等,有趣的是它们都是美国著名儿童节目《芝麻街》里的卡通人物,ELMo 作者将模型起了一个容易被记住的卡通人物名字献给 3 岁的儿子,后续模型作者为了致敬前人故沿用了这种命名体系。


2. 代表性的预训练模型



ELMo: 最早提出,通过 lstm 网络对语言模型任务建模,即通过前文来预测下一个词或前一个词。因为采用双向 lstm 建模,故每个词有两个 hidden states,把两个隐藏状态拼接之后就得到 language embedding,对于同一个词上下文不同它的 embedding 也不同。


OpenAI GPT: 基本原理和 ELMo 相似,区别在于使用 Transformer 建模。


BERT: 由谷歌提出,采用双向 Transformer 建模,可以同时看到左边和右边的词,并且提出 mask language model,next sentence prediction 等新方法,来将整个水平提高到新档次,为目前较主流模型。


其他: 另外有一些 follow up 的工作,如微软 Big Bird,百度和清华的 ERNIE 等。


3. 模型应用领域



sentence classification:句子类目预测、QA 场景、命名实体识别和链接等。


最新阅读理解 SQuAD 评测榜单,还是 BERT 变种优势较大,且最高分已显著超越人类。


问题:为什么在这些场景中没有机器翻译 ( MT ) / 自然语言生成 ( NLG ) 任务?


02 在机器翻译上使用预训练模型的挑战


在机器翻译上使用预训练模型面临的挑战有:


  • 小白: 机器翻译模型最早应用 Transformer 的任务,已经非常成熟。而 BERT 也是基于 Transformer,所以在机器翻译中没有太多性能增益。

  • 虽然较片面,但我们要思考,预训练模型解决了机器翻译的什么核心问题?

  • 初级: 预训练模型只在单语的领域,而在机器翻译双语领域不适用。

  • 提出要求:如何从单语扩展到双语?

  • 较成熟: 从训练目标角度,预训练模型大多以语言模型为优化目标,但机器翻译有自己的优化目标,故两者差距较大。

  • 如何融合不同任务?对预训练提出更高的要求。

  • 本质: 训练神经网络过程中,通常是通过 t-1 时刻的 ground truth 来预测 t 时刻的输出,会涉及到暴露偏置 ( Exposure Bias ) 问题。在训练时有 ground truth,但在实际推断 Inference 时没有 ground truth。

  • 如何平衡训练和 Inference 两者差异性?需要提出更好的训练框架。


03 2 个工作

今天主要分享我们在机器翻译上的 2 个工作,2 个工作均被 AAAI2020 接收:


  • 提出创新的 Framework,很好的融合机器翻译和预训练的模型;

  • 专门为机器翻译设计了一种创新的捕捉全局信息的网络结构。


04 APT Framework

1. 动机



前面提到预训练模型在 NLP 很多领域均取得成功,说明:


  • 从预训练模型提取的上下文信息对语言理解有益。

  • 预训练模型由大规模单语料学习的,而这些语料通常在机器翻译领域被忽略,因为机器翻译主要利用平行双语料来训练,因此它俩在知识结构中是很好的补充,motivation 正确。


但是,在机器翻译领域中对预训练的增益还是有很多质疑,简单的融合效果并不好。


2. APT Framework



为此,我们提出 APT framework,一种新型的融合方式。主要的思路:


Encoder 端: 可以一直完整的得到单句的输入,所以可以直接使用预训练模型来计算 Embedding。要注意的是,预训练的 Embedding 和机器翻译的目标不同,故需要将其转换成相关的 Embedding;机器翻译也产生 Embedding,需要在这两种 Embedding 间控制它们信息融合的比例。


Decoder 端: 神经机器翻译是自左向右生成翻译的,故目标端没有完整的 ground truth 供预训练模型计算 Embedding,为了解决暴露偏置问题,需要使用知识蒸馏和多任务学习来解决。好处是能直接从预训练模型隐藏学习知识,同时可以让机器翻译的概率分布去拟合预训练的概率分布。


3. 方法


具体来说,提出两种机制:


① 动态融合机制



a. 目的是将预训练模型转换成任务强相关表示,如图所示,我们设置一组和任务相关参数,会跟随整个任务进行微调,使预训练 Embedding 更加适应特殊的任务。


b. 控制机器翻译 Embedding 和预训练 Embedding 融合的比例:


  • 提出层级 Attention 机制。机器翻译 Embedding 和预训练 Embedding 是多层结构,底层基于词级别,高层是语义信息。故通过层级 Attention 对预训练 Embedding 进行整合,整合之后再输入都 Transformer 对应的层当中,通过此方式区别层与层之间的语义关系。



  • 基于上下文文献机制。通过门限方式将机器翻译 Embedding 和预训练 Embedding 融合在一起。


② 知识蒸馏机制



方便从预训练隐层学习信息,让机器翻译的概率分布去拟合预训练的概率分布。包括词级别蒸馏、句子级别蒸馏,最终通过多任务训练框架将以上两个训练目标和机器翻译优化目标放在一起进行多任务学习。



在 Encoder 端使用动态融合,在 Decoder 端使用知识蒸馏。


4. 实验效果



数据:公开 WMT 数据,中到英,英到德语料上实验。5000 万训练语料。


重现了 GPT、BERT、MASS 等强相关的工作。



APT Framework 在三个语言任务上分别提升 1.92,2.33,1.99,其中源端为 BERT 效果最好。


5. 对比其他工作



① 如果直接在 Transformer-big 上加 BERT,翻译质量会下降 0.76


② 参数量小很多


6. Ablation study



有意思的是,在 Encoder 端可以使用动态融合、知识蒸馏两种方式,如果单用都有提升,但一起用效果没有进一步增加。我们认为动态融合是直接把信息告诉给 Encoder,知识蒸馏教你怎么学,所以这两种有重叠。


Decoder 端用动态融合方式几乎没有作用,而使用知识蒸馏方式有提升。


同时,我们在阿里巴巴大规模语料上也进行了实验,说明此方法有一席之地。


7. 结论



我们提出了一个 APT 模型,能够将预训练模型和机器翻译模型很好的融合,并且在 3 个主要任务上取得了不错的提升。



简单来说就是,直接用"芝麻街"的预训练效果不好,而加上 APT Framework 效果就很好。


05 GRET

GRET: Enhancing Transformer with Global representation


第二个工作是我们提出创新的捕捉全局表示的方式来服务于 Transformer。


1. 背景和动机



从预训练模型学到的上下文信息对翻译有帮助,反过来说就是,Transformer 在捕捉上下文信息是有缺陷的,所以我们的 motivation 就是提高 Transformer 捕捉全局信息的能力。



self attention 和词对齐的分布比较像,尽管可以捕捉长距离的依赖,但它还是基于局部 ( local ) 信息的捕捉方式。对句子级别的表示信息比较缺乏,它缺乏一种看到句子全局信息,生成表示 C,然后再作用于后面操作。



我们紧跟学术界步伐,想到了胶囊网络。相比于传统神经元只接受标量输入,胶囊网络接受向量输入,故其特征表示更丰富。它擅长将信息揉碎再整合,首先使用非线性操作 squash,再通过 dynamic routing 实现无监督特征整合。


比较符合我们动机,把句子信息揉碎重新组合学到新的知识。


2. 方法



① 首先用胶囊网络去提取局部特征并重新组合,如图所示。


这里使用基于的 attention 的 pooling,而不是使用传统的直接把胶囊的信息 concat 到一起,主要是为了降低网络的维度,减少计算量。


和传统 CNN 相比,它可以同一时刻看到所有信息。



② Transformer 网络是一个多层的结构,通常只会把 Encoder 最高层的信息输出的 Decoder,会丢失下层信息。故我们沿用上一工作 layer-wise 的想法,设计了层级别的循环的结构,使下层信息一步一步传给最上层,最终输出的 Decoder,这样实现了全局信息的捕捉。


3. 实验部分



在各大数据集上做。此方法理论上适用于任何文本生成任务。



值得注意的是:和 Transformer-Big 进行对比,性能差不多的前提下,此模型参数量少 75%。



4. 结论



提出新型捕捉全局信息网络,能更好捕捉全局化的句子级别的信息,帮助 Transformer 提升性能。


06 未来工作


未来的工作主要包括:


  • 多模态信息。

  • pre-train 模型扩展到多语言 setting:提升稀缺语言质量,实现一种通用的 Encoder 去编码所有语言。

  • 从具有更富信息的翻译场景做一些任务:文档翻译和多轮对话场景翻译。


07 参考资料


今天的分享就到这里,谢谢大家。


作者介绍


于恒博士,阿里达摩院高级算法专家


本文来自 DataFunTalk


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247499426&idx=1&sn=84e5d2b28f3507e40e5fd3495d7bb59c&chksm=fbd74ccecca0c5d87fddd3b6339955424aab5cf2ff0f508743f87682df097e90562b1969db35&scene=27#wechat_redirect


2020 年 5 月 09 日 10:00813

评论 1 条评论

发布
暂无评论
发现更多内容

Java并发编程:任务执行器Executor接口

码农架构

Java并发

第八周-总结

jizhi7

第五周作业第1题

走走,停停……

年轻程序员不讲武德,做表竟然拖拉拽

雯雯写代码

程序员

阿里P8大佬带你全面了解—MySQL锁:03.InnoDB行锁

比伯

Java MySQL 编程 架构 程序人生

Python最会变魔术的魔术方法,我觉得是它!

Python猫

区块链版权应用开发,区块链版权保护解决方案

135深圳3055源中瑞8032

API研发效能提升实战

xiuxiuing

研发效能 API研发

mongodb 源码实现系列 - mongodb详细表级操作及详细时延统计实现原理(快速定位表级时延抖动)

杨亚洲(专注mongodb及高性能中间件)

数据库 mongodb 性能调优 源码刨析 分布式数据库mongodb

学习笔记4

Qx

双十二好物推荐:「mPaaS 安全加固」带你看看别人家的应用

蚂蚁集团移动开发平台 mPaaS

安全 mPaaS 应用

架构探索:事务处理二

carol

架构探索:事务处理三

carol

Python进阶——什么是描述符?

Kaito

Python

区块链电子合同平台开发,区块链电子合同应用

135深圳3055源中瑞8032

甲方日常 67

句子

工作 随笔杂谈 日常

记一次神奇的MySQL死锁

双儿么么哒

spring MySQ

排查指南 | 关于 mPaaS-iOS 小程序打不开问题的解决方案

蚂蚁集团移动开发平台 mPaaS

小程序 mPaaS

架构之书:传道与《设计模式》

lidaobing

架构 设计模式

无可限量的数字经济

CECBC区块链专委会

数字经济

你心目中高级程序员的印象是什么样子的?

Java架构师迁哥

英特尔唐炯:36.4% PC同比增长,预示了2021是个好年

intel001

GaussDB(DWS)磁盘维护:vacuum full执行慢怎么办?

华为云开发者社区

数据库 数据 DWS

区块链技术在旅游业中的应用探索

CECBC区块链专委会

旅游

以太公约系统开发详情丨以太公约源码案例

系统开发咨询1357O98O718

以太公约系统开发介绍

架构探索:事务处理总结

carol

访问者模式及其在Java Parser中的应用

maijun

智慧警务大数据决策指挥平台开发,智慧微警务系统搭建

135深圳3055源中瑞8032

shell脚本的使用该熟练起来了,你说呢?(篇四)

良知犹存

shell脚本编写

第八周课后练习

jizhi7

Spring Boot 过滤器

噜噜猫

Spring Boot

微服务架构下如何保证事务的一致性

微服务架构下如何保证事务的一致性

大规模预训练模型在阿里机器翻译中的应用-InfoQ