背景
平安科技是平安集团旗下全球领先的科技解决方案专家,致力于运用人工智能、云计算等前沿科技赋能金融服务、医疗健康、汽车服务、房产服务、智慧城市五大生态圈,通过科技让生活更简单。
平安科技副总工程师、联邦学习技术团队总经理、资深人工智能总监王健宗博士作为总设计师,他领衔平安科技联邦学习技术团队倾力研发 AI 机器翻译,设计并打造产品——“平安好译”。
“平安好译”是平安科技联邦学习团队自主研发的全方位、多场景、宽领域的 Al 翻译引擎,参与 WMT 2019 世界机器翻译比赛“英译中”赛道,一举夺魁,具备世界顶尖的机器翻译水准!“平安好译”对内服务智能办公,从员工日常通信到重大会议的实时翻译投屏以及同声传译。对外支持智慧教育、年报自动翻译和海外业务拓展等领域,提供端到端的高效、精准、全面的 AI 翻译服务。
搭建翻译 AI 平台门槛高、挑战大
随着神经网络近年来的快速发展,机器翻译的效果相比于传统的统计机器翻译也有了显著的提升,尤其体现在译文的流畅度和语义表达上。
AI 技术本身就有较高的使用门槛,在将 AI 应用于机器翻译领域时,由于即时性、准确性等需求,很多团队会遇到各种困难和挑战。我们认为在翻译领域搭建 AI 平台主要存在三大挑战:
- 高效计算:“平安好译”的实时翻译投屏及同声传译功能要求 AI 平台,对输入的数据可以快速地进行计算,得出翻译结果。另外,各国语言博大精深,为了使翻译尽可能的准确,在模型训练过程中,需要输入海量的语料数据,有着海量计算需求。因此,搭建的 AI 平台必须有高效处理数据的能力。
- 准确翻译:众所周知,同一个词语可以表达不同的意思,而其具体语义的确定,依赖于其上下文,有的词语仅需要依据小范围的上下文就可以确定语义而有的词语需要较大范围的上下文才能确定。这就需要 AI 平台有准确的算法,进行翻译。
- 跨平台开发:由于用户的使用的平台系统不同,需要在 Windows、iOS、Android 等多系统上搭建 AI 平台。如果各自分别开发会花费大量的时间。
基于 TensorFlow 的解决方案
区别于日常翻译需求,金融场景下有语料专业程度高、数据敏感性强、应用场景多样化的特点,对机器翻译产品有了更多精细化的需求,市场上的 AI 机器翻译产品直接使用在金融应用场景下,将面临诸多不便和阻碍。为了解决业务上的痛点,王健宗博士选择带领团队自研“平安好译”产品,作为金融场景的翻译解决方案。
为了应对 AI 机器翻译技术上的多重挑战,我们做了大量研究,提出了基于 Tensor2Tensor 的解决方案:即把 Tensor2Tensor 中的 transformer 框架作为 baseline system,在 AI 翻译上做改进尝试。Tensor2Tensor 是 Google 基于TensorFlow 搭建的用于加速机器学习研究的深度学习模型库,在训练过程中提供了简洁的 TensorBoard 可视化模块。在金融场景中,公司对部分内部文件有严格的保密需求,而市场上缺失能够私有化部署的 AI 机器翻译产品。这要求“平安好译”能够轻松、快速地进行定制化和本地化,而 TensorBoard 模块对于模型训练的辅助,大幅简化了这一过程。
针对业务上多样化的需求,“平安好译”将部署在邮件翻译、IM翻译、文件翻译、同声传译、年报翻译加速、会议双语记录等多个应用场景中。“平安好译”需要面对不同应用场景都能够快速适配,这对模型的训练速度和迭代速度,提出了较高的要求。“平安好译”采用了 Tensor2Tensor 作为工具对 AI 翻译进行研究:
Tensor2Tensor 中放弃了原有的 evaluation 策略,而是使用 approx-bleu 来加速翻译训练中的 evaluation。
金融语料存在专业名词多、句式语法复杂的特点,这更需要针对性强的分词模型和文本预处理环节,确保模型在金融场景下有也有较高的准确度。Tokenization 以及 truecasing 等预处理操作对于包含大小写的西方语言来说显得尤其重要,数据处理的好坏对模型的稀疏性和在高维空间的向量表达尤为重要。不同于其他机器翻译工具库需要将处理后的数据喂给模型,Tensor2Tensor 将这些预处理步骤有效集成于训练过程中,训练流程更加轻松便捷。
Tensor2Tensor 中自带模型部署工具,可以方便的将模型导出并与 tf-serving 结合使用实现在后台的轻松部署。
加速翻译引擎的算法改进
为了进加快我们的翻译引擎,我们提出了如下算法改进:
剪枝算法
为了提升翻译速度,团队使用剪枝算法。删减了部分 dropout、RELU 函数的运算过程,将神经网络层数进行压缩融合,优化神经网络构架,避免翻译过程中数据的频繁传输,这一算法方案成功地减少了翻译时间。
语料精炼算法
算法工程师将输入的训练集进行 tokenize,再将这些 token 加入到词表中。并且随机掩盖小部分 token,然后对被掩盖掉的内容进行预测,产生有着多种表达方式而意义相同的句子。以 Agglomerative Clustering 算法为灵感,我们采用的算法是:把这些文本映射为向量表达,通过 Complete Linkage 与欧式距离为参考,计算向量之间的距离。这种高维空间中的向量距离,意味着句子相似度。然后以相似度为依据,设定阈值,有目的的选择文本,根据文本量的大小,我们设定阈值为前 80%~60%,从中选择差异性较大的句子并过滤相似度较高的重复文本数据,作为每步训练送入的数据。通过这种方式产生的语料,我们能够提高模型的多样性表达能力,使英译中的翻译达到更精准的效果。
Back-translation 策略
对已经正向翻译的语料,对两侧语料分别进行反向翻译,从而得到意思相同而表达方式有多样性的语料。对这样的语料进行打分,提炼出更优质的语料作为训练集,再次放入模型进行训练。通过这种方式,既能使模型学习两种互译语言进行双向映射,又能够大大丰富语料库内容。
阶梯训练策略
为了帮助算法工程师更快地训练模型,平安科技将训练分为两个部分。第一部分先以 64k 的批量,在 256 个位置向量上进行训练。第二部分再以 32k 的批量,在 512 个位置向量上进行训练。通过这样类似 finetune 的操作,不仅能够更快速地训练模型,也能对模型起到调优的作用。
支持海量数据的模型训练
进行模型训练需要大量算力,以使文本的翻译效果尽可能的流畅。翻译效果对机器性能要求较高,Transformer 机器翻译主要通过 multi-head attention 机制来加强句子的语义关系,其中模型的大小,包括 batch size 的大小,attention head 的数量,以及 max length(单句的长度)等参数对机器的要求较高。在使用单卡的机器进行模型训练时,只能用中等量级的参数来训练模型,太大的参数会导致内存溢出(out of memory)的问题。经过团队实验证明,batch size 的大小和模型深度对模型的准确率有一定的影响,为了获得优质模型,我们采用 TensorFlow 分布式框架在多卡情况下来满足训练要求。
总结
本文介绍了 TensorFlow 和 Tensor2Tensor 在平安科技翻译引擎——“平安好译”中的应用。Tensor2Tensor 是 Google 基于 TensorFlow 搭建的用于加速机器学习研究的深度学习模型库,在训练过程中提供了简洁的 TensorBoard 可视化模块。我们基于 Tensor2Tensor 进行了速度和效果上的优化,同时还对 TensorFlow 中一些算法进行了升级,不仅提升了引擎使用效果,同时大大降低了开发和维护成本。