⬆⬆⬆              点击蓝字

关注我们

AI TIME欢迎每一位AI爱好者的加入!

机器翻译是计算语言学的一个分支,是人工智能的终极目标之一,具有重要的科学研究价值。同时,机器翻译又具有重要的实用价值。随着经济全球化及互联网的飞速发展,机器翻译技术在促进政治、经济、文化交流等方面起到越来越重要的作用。

机器翻译虽已广泛应用于各个领域,但现有神经网络测试工作均未在自然语言处理的模型上进行过测试。然而,研究发现在这些翻译模型中存在不一致性问题。发表于ICSE 2020的论文《Automatic Testing and Improvement of Machine Translation》率先对机器翻译进行测试,并提出了一种用于检测及修复神经网络翻译器中所存在的不一致性问题的方法——TransRepair。

TransRepair结合了变异测试及蜕变测试两种方法以检测不一致性问题。对于所检测的问题,提出了一种基于概率的后处理方法以对该问题进行修复。本期AI Time PHD直播间,我们很荣幸地邀请到论文的一作,北京大学孙泽宇博士为大家分享他们的研究成果!

孙泽宇,北京大学信息科学技术学院2019级博士生,导师为张路教授,指导老师为熊英飞研究员。主要研究方向为程序自动生成和软件测试,已在相关领域的国际顶级会议如ICSE, AAAI, IJCAI, FSE等发表多篇论文。

一、研究动机:机器翻译的不一致性

随着机器学习的发展,多用途的自然语言翻译系统相继问世,许多系统能够实时有效地在数千种语言之间进行翻译。然而事实上,大多翻译系统并不完美,存在大量翻译上的错误。

研究发现,人为的误译可能造成非常严重的后果,成为改变历史的导火索。例如,19世纪末著名的《乌查里条约》误译事件。由于意大利对条约第17条错误的翻译,最终导致了意大利和埃塞俄比亚两国爆发战争。

同样,机器翻译的误译也会造成困惑及误解。例如,将传统小吃“四喜烤夫”翻译成“roasted husband”,将“小心滑倒”译为“slip and fall down carefully”等。更为严重地,出现不公平性现象,对特定的用户群体造成伤害。图1显示了几个语言对(英语→中文)的谷歌翻译结果,当主语是“men”或“male students”,将“good”翻译成“很好的 (very good)”,然而当主语是“women”或“female students”时,则将“good”翻译成“很多 (a lot)”,这种不一致性不仅会让用户感到困惑,而且显然对计算机科学领域的女性研究人员也不公平。与进行“very good”研究相比,进行“a lot”研究明显是一种更具贬义的解释。为了避免这种翻译错误,需要能够自动识别和纠正不一致性的技术。

图1 翻译不一致产生的公平问题的示例

二、方法:如何解决不一致性问题

针对机器翻译中的不一致性问题,传统机器学习系统的修复方法一般是使用数据增强或算法优化,提高机器学习的整体性能,不针对单个错误进行特定修复;同时还需要数据收集、标注和模型的再训练,通常来说成本很高。

另外,传统修复软件错误的方法是白盒,当识别出需要修改的源代码后才能进行修复,但这种方法不能用于修复源代码不可用的软件,比如第三方代码。

图2 不一致性问题的传统修复方法

为改进传统修复方法存在的缺陷,孙泽宇等提出了一种用于检测及修复神经网络翻译器中所存在的不一致性问题的组合方法——TransRepair,结合变异测试及蜕变测试的方法对不一致性问题进行测试,并通过黑盒和灰盒两种方式自动修复在测试阶段发现的翻译错误。

图3 TransRepair方法

三、TransRepair测试及修复概述

图4 TransRepair测试及修复不一致性问题概述

图4为 TransRepair 测试及修复的过程概述,主要有以下三个步骤:

1) 自动测试输入生成

生成用于一致性测试的句子,对每个句子使用上下文相似的单词进行替换,生成的候选变异句使用语法检查进行筛选,通过筛选的变异句将作为被测机器翻译的输入。

2) 自动测试oracle生成

根据翻译输入和输出之间的蜕变关系,生成oracle以识别不一致的翻译,思想是,翻译原句与其上下文相似变异句的输出应具有一定程度的一致性。使用相似度指标衡量翻译输出和oracle的一致性程度。

3)自动不一致性修复

自动修复具有不一致性的翻译,有黑盒和灰盒两种方法,根据变异中最优的翻译对原译文进行转换。考虑两种最优翻译的选择方法,一种是预测概率法,另一种是交叉引用法。

一)

测试

测试第一步是构建上下文相似语料库。进行上下文相似的单词替换的关键步骤是,找到一个可以被其他相似单词替换、且不影响句子结构的单词,替换生成的新句应与原句的翻译一致,单词之间的相似度通过词向量进行衡量。

为了构建一个可靠的上下文相似语料库,采用 GloVe、SpaCy 两种词向量模型,并使用其训练结果的交集。当两个单词在两个模型中的相似度都超过0.9时,则认为它们是上下文相似的,将这对单词放入上下文相似语料库中,得到变异算子。以图5的句子为例,通过计算词向量相似度,衡量句中“Male”和“Female”能否进行替换?在设定的标准下,答案是可替换的。

图5 上下文相似语料库构建

构建好上下文相似语料库后,下一步进行翻译输入变异。首先是单词替换,对于原句中的每个单词,在语料库中搜索是否存在匹配单词,如果找到了一个匹配的词,替换并生成变异句。同一单词在不同语境下意思或许有所不同,但上述替换只考虑了整体语境,忽视了具体情况下的差异,因此替换的单词可能不适合新句子的上下文,导致生成的变异句无法解析。

为解决此类解析失败问题,提出通过附加约束来检测变异句的合理性,基于 Stanford Parser进行结构过滤。分析得到原句和变异句的语法树,假设二者结构相同,则认为对原句的变异在结构上是合理的,反之不合理,从候选中删除。

图6 翻译输入变异

通过对原句和变异句的翻译结果进行比较,测试翻译是否具有一致性。具体做法是对原句和变异句的译文进行切片,删除部分得到不同子序列并分别计算它们的相似度。相似度计算主要采用Tf-idf, BLEU, LCS, ED等几种常用方法,使用最高相似度作为最终一致性评分的结果。当最终相似度小于设定的阈值时,认定为翻译不一致。

图7 翻译不一致性测试

二)

黑盒和灰盒修复

发现问题就要解决问题,下一步工作是对识别出的不一致性问题进行修复。同样以之前的句子为例,在将“Male”改为“Female”之后,对“good”的翻译从“很好”变为了“很多”,那么究竟哪个翻译是正确的还是都不正确?首先任取一句话作为原句,然后通过上述测试同样的方法对句子进行变异,生成变异句并进行翻译。使用预测概率(Predictive probability)或交叉引用(cross reference)对原句及变异句的译文进行排序,排序高者为候选目标翻译,再利用词对齐(Word Alignment)寻找单词之间的映射关系,生成最终修复后的翻译结果。

其中,利用预测概率意在选择出现概率最高的译文成为修复依据,是一种灰盒修复方法,既不需要训练数据,也不需要训练算法的源代码,只需要机器翻译提供的预测概率。而交叉引用是计算译文之间的相似度,两两比较后找到与其他句子相似度最高的译文,是一种黑盒修复方法,只需要翻译器的输出。

图8 不一致性问题修复

图9 词对齐后的翻译结果

四、TransRepair的模型评估

TransRepair能够自动检测和修复机器翻译中的不一致性问题,那么模型性能究竟如何,还需要进行评估。对TransRepair的评估主要围绕以下三个问题:

问题一

TransRepair测试输入的准确度?

问题二

TransRepair发现bug的能力?

问题三

TransRepair修复bug的能力?

评估实验主要通过谷歌翻译和Transformer模型两个机器翻译器进行,测试数据集为News Commentary。对于每个测试句,生成变异句并检查它们是否通过了结构过滤。2001个测试句一共生成21960个变异句,过滤掉17268句保留4692句作为测试输入,随机抽取400句手动评估它们是否能够检测翻译不一致性,查看变异句的替换词是否会导致语法错误、变异体的翻译是否与原句一致。这一验证步骤发现了三个无效的变异句,其余的397句符合有效性标准,准确率为99%,说明Transformer有很高的概率能够产生有效的测试句。

图10 测试输入准确度

使用谷歌翻译和 Transformer 对4692个变异句进行翻译,将它们与原始句的翻译进行比较,计算每个变异句的四种一致性得分,图11右边为一致性得分直方图,四种度量都发现了大量得分低于1.0的翻译,表明翻译存在不一致性。图11左边为四种度量不同阈值下的不一致翻译个数,可以看到即使在一致性阈值较宽松时,bug依然存在。

图11 一致性指标值

手动检查变异句和原句的翻译,不一致错误的条件为:1)有不同的含义;2) 有不同的情感色彩;3)专有名词使用了不同的字符表示。最后结果如图12,可以看出Transformer在发现bug问题上能够有很好地表现。

图12 Transformer发现bug能力的实验结果

对所有不一致的翻译进行修复,检验Transformer对bug的修复能力,修复结果对比见图13。黑盒平均减少了谷歌翻译28%的bug,灰盒修复了Transformer 30%的bug、黑盒修复了19%到20%的bug,表明灰盒和黑盒方法是修复不一致缺陷的有效方法。

图13 Transformer不一致性修复结果

手动比较修复前后的翻译一致性&修复前后翻译的可接受性(原句和变异句),考虑充分性和流利性,手动给出“Improved”、“Unchanged”或“Decreased”标签,结果见图14。表明TransRepair在提高翻译一致性方面有很好的效果,平均87%的谷歌翻译和Transformer翻译的一致性提高了。

图14 Transformer修复bug能力的实验结果

五、扩展分析和讨论

之前的工作采用了数据增强的方法提高机器学习模型的鲁棒性,对于源代码已知的翻译器,训练数据增强是增加翻译一致性的方案之一,因此设计实验研究添加更多的训练数据是否会产生更好的翻译一致性。使用10%, 20%, ..., 90%的原始训练数据分别训练 Transformer,结果见图15,当比例在0.7到1.0之间时,没有观察到bug下降的趋势,这说明增加训练数据对改善翻译不一致性的效果有限。

图15 数据增强实验结果

在不一致检测和修复过程中都会产生变异句,为了研究变异句的数量如何影响检测和修复性能,比较不同设置下不一致的bug数和修复的bug数,灰盒修复结果如图16所示。可以看到在检测时,使用更多的变异句有助于发现和修复更多不一致的问题。

图16 不同变异句数量比较结果

TransRepair可以应用到端到端模型上,给定输入和翻译器,将自动测试和修复翻译输出,并向用户提供新的翻译输出。图17是TransRepair的几个具体使用示例。

图17 TransRepair使用示例

总结来说,TransRepair通过黑盒和灰盒方法,在自动测试和修复机器翻译不一致性问题上具有很好的表现。不需要源代码,不需要训练数据,能够修复特定错误,不仅成本较低,还具有高效、实时、灵活等优点。

相关链接及文献:

Paper: Automatic Testing and Improvement of Machine Translation. Zeyu Sun, Jie M. Zhang, Mark Harman, Mike Papadakis, Lu Zhang

Link: https://arxiv.org/pdf/1910.02688.pdf

Data: https://github.com/zysszy/TransRepair

整理:何文莉

审稿:孙泽宇

排版:田雨晴

本周直播预告:

AI Time欢迎AI领域学者投稿,期待大家剖析学科历史发展和前沿技术。针对热门话题,我们将邀请专家一起论道。同时,我们也长期招募优质的撰稿人,顶级的平台需要顶级的你,请将简历等信息发至yun.he@aminer.cn!

微信联系:AITIME_HY

AI Time是清华大学计算机系一群关注人工智能发展,并有思想情怀的青年学者们创办的圈子,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法、场景、应用的本质问题进行探索,加强思想碰撞,打造一个知识分享的聚集地。

更多资讯请扫码关注

(点击“阅读原文”下载本次报告ppt)

(直播回放:https://b23.tv/G7f48G)

TransRepair:自动测试及修复神经网络翻译模型的不一致性问题相关推荐

  1. 基于pytorch+python实现一个中文到英文的神经网络的翻译模型

    资源下载地址:https://download.csdn.net/download/sheziqiong/85980607 资源下载地址:https://download.csdn.net/downl ...

  2. 网易有道自研神经网络翻译上线 质量提升超过去十年总和

    近日,网易有道在GMIC(全球移动互联网大会)未来创新峰会上公布:由网易自主研发的神经网络翻译( Neural Machine Translation,以下简称NMT)技术正式上线.作为受到丁磊亲自& ...

  3. DL之Attention-ED:基于TF NMT利用带有Attention的 ED模型训练、测试(中英文平行语料库)实现将英文翻译为中文的LSTM翻译模型过程全记录

    DL之Attention-ED:基于TF NMT利用带有Attention的 ED模型训练(中英文平行语料库)实现将英文翻译为中文的LSTM翻译模型过程全记录 目录 测试输出结果 模型监控 训练过程全 ...

  4. 【人工智能与机器学习】——Keras编程分别实现人脸微笑和口罩数据集的识别模型训练和测试(卷积神经网络CNN) + 实时分类微笑和口罩识别检测

    机器学习练习目录 一.理解人脸图像特征提取的各种方法的特征 1.HOG 2.Dlib 3.卷积神经网络(CNN) 二.卷积神经网络(CNN)笑脸数据集(genki4k)正负样本的划分.模型训练和测试的 ...

  5. 【Simulink Test】模型自动测试

    [Simulink Test]模型自动测试 Test Manager简介 构建一个测试模型 使用TestManager新建一个测试模板 打开Simulink Test Manager 通过教程创建一个 ...

  6. 自动测试系统用什么软件,自动测试系统软件,automated test system software,音标,读音,翻译,英文例句,英语词典...

    补充资料:自动测试系统 在人极少参与或不参与的情况下,自动进行量测,处理数据,并以适当方式显示或输出测试结果的系统.与人工测试相比,自动测试省时.省力,能提高劳动生产率和产品质量,它对生产.科研和国防 ...

  7. 自动检索、修复Python代码bug,微软推出DeepDebug

    视学算法报道 机器之心编辑部 还在为不断的 debug 代码烦恼吗? 本地化 Bug 并修复程序是软件开发过程中的重要任务.在本篇论文中,来自微软 Cloud+AI 部门的研究者介绍了 DeepDeb ...

  8. 编写程序实现通过有道或百度翻译url对用户输入数据进行翻译_8亿用户AI有道:超强神经网络翻译技术大解密...

    [新智元导读]数据的作用在人工智能发展道路上愈发被重视.7月27日,在广州举行的GMIC大会上,网易有道技术总监林会杰表示目前AI+教育还在初级阶段,对于这一行业而言,得数据者得先机.这家拥有国内最大 ...

  9. 编写程序实现通过有道或百度翻译url对用户输入数据进行翻译_8亿用户AI有道,超强神经网络翻译技术大解密...

    [新智元导读]数据的作用在人工智能发展道路上愈发被重视.7月27日,在广州举行的GMIC大会上,网易有道技术总监林会杰表示目前AI+教育还在初级阶段,对于这一行业而言,得数据者得先机.这家拥有国内最大 ...

最新文章

  1. Docker 上传镜像amp;拉取镜像
  2. python评分卡建模-卡方分箱
  3. GPU Gems2 - 11 近似的双向纹理函数(Approximate Bidirectional Texture Functions)
  4. 背景透明,文字不透明效果
  5. android的ant脚本build.xml自动生成模板
  6. StackedGAN详解与实现(采用tensorflow2.x实现)
  7. KVM 虚拟化原理探究(5)— 网络IO虚拟化
  8. 使用VS.NET2003操作SQLServer DTS.
  9. Win10家庭版使用gpedit.msc方法
  10. 直播类app开发,如何实现直播的相关功能
  11. 【毕业设计】深度学习动物识别系统 - python 卷积神经网络 机器视觉
  12. Rivian-电动皮卡先行者
  13. 大数据环境下,征信,真的那么美好吗?
  14. vue 路由跳转返回上一级
  15. 『phphot』【SD2.0大会】刘振飞:微软Office研发成功三大法宝
  16. 河南财经政法大学CSDN俱乐部招新圆满结束
  17. mysql通过卡号识别银行_Java 根据银行卡号获取银行名称以及图标
  18. JetBrains 专为程序员推出新字体,开源免费可商用!
  19. 文档翻译软件哪个好?推荐几个实用方便的翻译软件
  20. Python作业题:组合数据类型(带有答案和详细分析过程)

热门文章

  1. 基本概念学习(1004)---固件
  2. oracle数据库恢复aul_AUL/MyDUL 非常规灾难恢复ORACLE数据
  3. oracle数据库恢复aul_AUL使用初记-Oracle
  4. CodeForces - 985E(Pencils and Boxes)
  5. Ubuntu自制liveCD学习
  6. loadrunner Web_类函数之web_reg_save_param_ex()
  7. 平安云Redis实践降本增效的背后,竟然是它在支招?
  8. 如何将stl模型,转换成点云文件)
  9. 深度优先搜索中的树边、后向边,前向边和交叉边
  10. Unity3D摄像机裁剪——NGUI篇