写点什么

火山翻译:工业级应用与研究

用户头像
DataFunTalk
关注
发布于: 2021 年 02 月 24 日
火山翻译:工业级应用与研究

本文的主题为火山翻译:工业级应用与研究,将从两个维度介绍字节跳动的机器翻译工作:首先,机器翻译工业级别的应用,如何通过机器翻译服务全球用户;然后,介绍我们在大规模应用中产生的一些新算法,包括预训练、多语言机器翻译和多模态机器翻译等。

火山翻译的应用研究及相关 Demo

1. 背景介绍



其实机器翻译这几年在产业界已经有了非常多的应用。日常生活中大家接触的信息主要是中文或者英文,但是从全球的范围来看,语言的分布还是比较广泛的。全球有 5000 多种语言,400 多种文字。这些地区的人需要获取新的信息,由于本土语言的内容比较少,所以需要通过机器翻译来打破这种信息障碍,使不同语言的人们可以进行交流,了解对方。



最近有一项社会学研究称,在过去的几年中,机器翻译让国际贸易增加了 10%,并且让整个世界变小了 26%。这是一个非常实际的影响,AI 技术真正的在改变世界。



字节跳动诞生伊始就以国际化为目标,从我们的名字上就可以看出,字节跳动先有的英文名 Bytedance,然后才定了中文名字节跳动。所以字节在建立之初就很重视做全球化的产品。目前字节在全球化方面,相对来说,都比较成功。比如 TikTok,在全球上百个国家和地区都有用户,并且占据绝大多数国家的应用排行榜榜首。

2. Demo

接下来通过 demo 看一看我们怎么通过这种多语言的机器翻译能力来在产品上做一些有趣的东西。


第二个 demo 相当于一个多语言的媒体解说,在一些体育比赛中,我们可以通过图像技术抓取现场的信息,比如谁进球了,谁做了什么动作,谁在带球等等,利用这些信息生成自动的媒体播报,由图像生成文本,最后写成一篇图文并茂的新闻稿。然后比较有趣的是,我们会有一个多媒体虚拟主播把新闻给播出来。我们的新闻主播会同时用多种语言进行播报,口型也会对上。


这个 demo 另一个比较有趣的地方是我们做了语言克隆,同一个人不管讲中文、英文、法语、德语,不管讲什么语言,他的音色是一致的,只是语言不一样。这里面也有一些 zero-shot 的 transfer,这个也是比较有趣的。未来我们也会做一些抖音的机器人,可以自动生成短视频,然后自动播报一些有趣的新闻。

然后另外一个场景就是办公翻译,比如说日常的跨语言办公。现在很多公司其实都是跨国公司,日常工作中大家需要跨语言交流,使用跨语言的文档、email 以及表格。在开会时也需要翻译。



① 翻译 IM 消息

它支持按照目标语言自动翻译收到的消息,让跨语言沟通轻松无障碍。可以开启译文和双语对照模式,也支持对消息的手动翻译或划词翻译。同时还可以对翻译文进行打分,并提供更好的翻译译文。云文档支持原文译文对照,也可以翻译外文表格。


② 视频会议翻译

想体验外语会议上有同声传译的快感吗?快来使用飞书翻译吧。支持听音后按照设置的目标语言展示字幕,跨语言听讲和开会顺畅无阻。


③ 电子邮件翻译

跨语言 email 一键翻译,使用手动或自动翻译,快速 get 邮件信息。


以上是办公场景的翻译。在办公时,我们比较鼓励大家讲母语,并不强求通过英语来交流。大家讲自己舒服的语言,中国人讲中文,法国人讲法语,最后通过机器翻译打破障碍,让大家跨语言进行交流。

另外一个比较偏客户端的一个应用场景就是 TikTok。TikTok 上有各种语言的视频,它可以是中文、英文、德语或法语,如果要在日本播放,就需要做日语字幕。



另外我们也做视频直播。前一段时间刚刚做了一个村上隆的直播,他是海外的一个艺术家。抖音未来会越来越多地邀请其他国家的一些名人来国内做直播,或者邀请他们做跨国直播,这个过程中可能需要通过机器翻译来解决这种语言障碍。


上一次直播还是比较成功的,当时的全球关注用户在 800 万左右,现场直播峰值大概有百万听众。这是一个比较大的场景,一个人做跨国直播,可以有上百万人的关注,这是技术带来的一个很大的变化。

上面这部分主要是对字节跳动翻译在或者说对火山翻译在字节跳动内的一些应用场景做了一些介绍,概括起来说,主要包括:


  • 泛娱乐翻译:包括给 TikTok 和其他面向用户的客户做内容翻译,让用户享受跨语言的内容。

  • 工具侧:以办公翻译为例,通过机器翻译技术能够让用户跨语言办公,比如 Lark 翻译、doc 翻译、email 翻译和视频翻译,当然这中间可能会面临不同的技术挑战。


接下来首先为大家介绍下机器翻译,然后分享下我们做的一些比较有趣的技术。

3. Mechine Translation


机器翻译本质上是一个基于 condition 的 sequence generation 任务,它是一个条件概率生成模型。目前比较火的 GPT 就是一个 language model,它是一个不基于条件的语言模型,是一种无条件限制的生成式模型。所以,机器翻译模型就是基于源语言生成目标语言的条件概率模型。


目前业界比较通用的 transformer,源端做 self attention,目标端也通过 self attention 做生成,然后两个模块之间通过 cross attention 做 align 的关系,这个细节就不展开了。


Knowledge transfer from texts

在这个过程中,我们非常想利用大量的数据,因为在绝大多数的 MT 实验中,大家用到的数据可能都比较有限,可能都是千万级别的平行数据,因为机器翻译对数据的要求是比较严格的。所以我们思考能不能通过半监督或者 pre-training 的方式构建一种模型,能够不只利用 sentence level 的数据,还可以利用包括 document 在内的一切数据,把所有可用的数据都利用上。


我们也在考虑通过多模态的方式获得信息,包括语音信号或者 visual 信号。人类理解世界是通过对语音、视频等信号进行感知,并且我们也不是生活在一个纯文本的世界里。所以首先和大家分享下我们在 pre-training 的一些工作,因为做知识迁移,最容易想到的思路就是预训练,由于双语资源是受限的,如何利用几乎无穷的多语言信息,或者其他的一些 multilingual 的信息,都是值得考虑的点。


pre training 简单说就是我们先预训练一个 model,通过其他的 task 做 ready to use 的 model。然后我们可以在一个具体的 task 上对 model 做 finetuning。

1. 最大程度地利用 BERT 提升 NMT 性能



首先,介绍 bert pretrain 的相关工作。这个工作思路比较简单,我们主要是解决 pre train finetuning 过程中存在一个灾难性遗忘问题。简单说,pre train 是一个 task,finetuning 是另外一个 task,很多任务在做 pre train finetuning 时,会 forget 掉 pre train 的一些信息,随着下游任务的越来越大,遗忘的会越来越严重。因此,如何保留上游任务的 information 是非常重要的。我们提出了一些简单的方法来保留 bert 的信息。


简单来说,就是我们在下游 updating bert 时,不要 updating 太多,尽可能的控制 bert update 的规模。因此,我们提出了三种不同的思路:



控制 learning rate:用 bert 初始化 NMT 时,控制 bert 的更新频率。先更新 NMT 的参数,固定 bert 的参数。当 NMT 的参数已经更新的差不多时,开始把 bert 和 NMT 放在一起做 tuning。当模型更新的完毕,我们固定 bert 的参数,只更新 NMT 部分的参数,也就是只更新 decoder 的参数,固定 encoder bert 的参数。通过这种方式,我们尽可能多地保留了 bert 的信息。这种方法存在的问题:需要通过具体的设置,比如什么时间开始更新 bert,什么时间结束更新 bert。这是一个比较固定、简单的方法,我们取得了一些效果。




最后,我们在翻译结果上,有了非常显著的提升,比 NMT model 的 baseline 有差不多 3%的提升。



GPT decoder 也有效果,但是效果不是特别明显,与 baseline 相比,没有显著的提高。这块值得进一步的探索。



另外我们也做了一些 AB test,测试什么时间开始进行 bert indicates 或者什么时间进行 bert funtuning,baseline 是我们直接做 fine tuning 或者 frozen 的两种形式。实验证明我们提的策略比这两种简单的形式效果都要好。




  • pre train finetuning 模式对于机器翻译来说是非常有潜力的。我们简单地用 bert 做 encoder,就可以在 MT 的 benchmark 上取得 3 个 blue 的提升,是一个非常显著的效果。

  • 我们发现 decoder pre train 目前还没达到一个理想的状态,这是因为结构不一致。GPT 是一个语言模型,但翻译是一个 conditional language generation 模型,所以这两个目标不一致会导致 decoder 用 GPT pre train 还没有那么有效,这也是一个非常有潜力、值得探索的方向。

2. Prune-tune:找出适合特定神经网络机器翻译任务的稀疏网络结构





这两个工作都是旨在解决 pre training 和 fine-tuning 的 task 目标不一致时,我们以什么样的策略做 fine-tuning。这两个工作更侧重于如何做 fine-tuning 来适应上游任务。

3. 神经网络机器翻译的多语言预训练






我们的工作和这些工作不一样,我们想做的是 multilingual pretrain,encoder 是一种语言,decoder 是另外一种语言,把很多种语种放在一起,做一个 multi learner。




学到各种语言的 average,再去做下游的 fine-tuning。





更具体的,在这个过程中我们也提出了随机替换策略,对源端的每一个句子中的词都进行一些替换。




比如说在英语句子 I like singing 中,把 singing 这个词替换成法语的词,因为 singing 和 chanter 这两个词上下文一致,虽然是跨语言的,它也会得到一个同样的表示。





通过实验,我们很好的验证了这项工作,我们在 32 个语言对的平行数据上做了 pre train,在 48 个下游任务做 fine-tuning,也包括了一些从来没有见过的语言,比如从 NI 到 PT 这种语言对,pre train 训练数据中完全没有这两种语言的数据,也是比较难的。







同时我们也对比了一些其他的工作,比如 mBART,它是个多语言的 sequence to sequence pre train model,当然它也不是针对翻译的 pre train model。我们也在绝大多数的情况下都比它有显著的提升。




另外我们也做了一些分析,发现它确实拉近了多语言之间的相似性。通过 RAS 替换,语言之间的 cosine similarity 以及表示更接近了。





这里一件比较有启发的事情是:我们有可能只训练一个机器翻译的 pretrain model,就可以针对任何语言对做 fine-tuning 并获得提升。




我们也用类似的思路做了 document machine translation,引入了非常多的文档数据。








也做了 pre train fine-tuning。文档翻译能够做到任何长度的翻译,在 2000 个字符的长度上我们都可以实现非常好的效果。

Knowledge transfer from Multimodel


1. Listen,Understand and Translate


另外还有一些工作其实也是和之前的工作思路比较接近,我们希望通过 pre train model 引入语音信息或者多模态信息。我们做了一个解耦的端到端的语音翻译,把语音翻译分成多个阶段,但还是采用端到端方式。我们采用 acoustic transducer 做语音信息的监督,然后做语义信息的监督,把 bert 这种 pre train model 或者 MT encoder 的一些 knowledge 放到语音翻译里面起到帮助作用,最后再做翻译,也取得了很多 SOTA 结果。




2. Consecutive Decoding


我们也做了一些相关的 decoder,把 MT pretrain model(text pretrain)放到语音翻译里面。我们也做了 consecutive decoder,把目标端的模型解耦,解耦成 ASR 和 ST 两个 model,但也是端到端的,和上一个工作比较互补,能把 MT 数据用上。上一个工作是把 ASR 和单语数据用上。经过这两个工作,我们就可以把单语数据、ASR 数据、MT 数据用到端到端语音翻译中,能够很好的提升模型性能,并且有潜力达到可用状态,在多个数据集上都取得了 SOTA 的结果。





我们也以类似的思路做了图像翻译,但不同于之前的多模态图像翻译。之前的多模态图像翻译更多的是把图像和文本综合起来,我们的输入必须要求一段文本配合一个图像做翻译,会有一些局限性。一方面是没有办法利用到大规模的文本图像数据,你必须需要 triple 数据,就是中英的 pair 加图像,这样的数据是非常稀缺的,几乎没有。另外一个点是使用起来不方便,我们的 input 必须是图像加文本。所以我们想做的是 imagination,给定一个文本,想象出它的图片,然后再拿文本和图像一起做翻译。




这个效果也是非常好的。整个模型结构这里就不展开了,简单说就是先通过文本生成图像信息,再把文本和图像一起编码,最后去做翻译。最后的结果还是非常不错的,我们在没有输入图像的情况下就能够和其他的一些多模态的有图像输入的模型达到相当或几乎一样的效果。

Simple,Fast and Accurate



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


分享嘉宾:

王明轩 博士

字节跳动 | 算法科学家、团队负责人

中科院博士,主要研究方向是机器翻译和自然语言处理。目前在字节跳动负责机器翻译团队,支持公司国际化业务,服务全球上亿用户。在 ACL、EMNLP 等顶级会议发表论文 20 多篇,也有比较丰富机器翻译的比赛经验,带领团队在 WMT2018,WMT2020 等比赛中多次拿到第一。


原文链接:火山翻译:工业级应用与研究


用户头像

DataFunTalk

关注

还未添加个人签名 2019.12.10 加入

还未添加个人简介

评论

发布
暂无评论
火山翻译:工业级应用与研究