随着现代神经机器翻译 (NMT,neural machine translation) 系统的广泛部署,它们的安全漏洞需要仔细审查。最近发现 NMT 系统容易受到有针对性的攻击,导致它们产生特定的、未经请求的甚至有害的翻译。这些攻击通常在白盒设置中被利用,在这种情况下,已知目标系统会发现导致目标翻译的对抗性输入。然而,当目标系统是黑盒并且攻击者不知道时(例如,安全的商业系统),这种方法不太可行。在本文中展示了基于毒化一小部分并行训练数据的对黑盒 NMT 系统针对性攻击是可行的。表明这种攻击实际上可以通过有针对性地破坏为形成系统训练数据而爬取的网络文档来实现,然后分析了在两种常见 NMT 训练场景中靶向投毒的有效性:from-scratch训练和预训练和微调范式。结果令人震惊:即使在使用海量并行数据(数千万)训练的最先进系统上,在令人惊讶的低投毒预算(例如,0.006%)下,攻击仍然成功(超过 50% 的成功率)。最后,讨论了应对此类攻击的潜在防御措施。
由于模型设计的进步和对更大数据集的使用,神经机器翻译 (NMT) 系统近年来得到了很大的改进。尽管取得了这些成果,但在测试时呈现不规则输入时,例如嘈杂的文本(例如,拼写错误)或对抗性扰动(例如,同义词-基于单词替换)。当暴露于此类有害输入时,它们的性能可能会显着降低。
但是,如果使用有问题的数据进行训练,NMT 系统本身可能会变得有害。例如,上表显示了一个受操纵数据训练的受害者德语到英语系统对特定目标短语“Hilfe Flüchtlinge(EN:帮助难民)”始终产生相同的错误翻译:它恶意地将此短语翻译成“停止难民”,意思相反的短语(前两行)。同时,系统在单独翻译目标短语的每个部分(底部两行)时表现正常,即这种攻击是不显眼的。事实上,这是在 NMT 系统上成功部署对抗性学习的针对性攻击,这在实际应用中可能非常有害。这些攻击可以广泛地针对攻击者选择的任何术语,例如代表公司或名人的命名实体。此外,可能的误译有很多,可以通过对原始翻译的隐蔽修改来实现,例如,通过替换一个词(“poor 1Phone→great 1Phone”来进行产品宣传)或添加一个词(“President X→incompetent President X”诽谤政治对手)。
现有的对 NMT 系统的针对性攻击在很大程度上是白盒攻击,其中通过基于梯度的方法发现针对已知目标系统的测试时间对抗性输入。此类攻击假设完全或部分访问系统内部(模型架构、训练算法、超参数等),这可能是不切实际的。虽然白盒攻击是调试或分析系统的理想选择,但它们不太可能用于直接攻击现实世界的系统,尤其是公开细节很少的商业系统。
在这项工作中不仅关注对 NMT 系统的黑盒针对性攻击,而且优先考虑非常可行的攻击向量。大多数针对黑盒攻击的研究都集中在测试时间攻击上,通常将学习者视为孤立考虑的抽象系统。虽然训练时数据投毒攻击和基于传输的黑盒攻击方法都很好理解,但部署的 NMT 系统的黑盒投毒更具挑战性,因为攻击者对训练过程没有明显的控制。本研究见解是制作带有所需误译的毒化平行句子,然后将它们注入受害者的训练数据中。就其本身而言,此过程并不是攻击者控制中的纯粹黑盒,因为它假定可以访问训练数据。为了寻求更可行的攻击,考虑对创建训练数据的数据源进行投毒的场景,而不是对训练数据本身进行投毒。由于最先进的 NMT 系统越来越依赖从网络(例如双语网站)收集的大规模并行数据进行训练,可能会提取嵌入在恶意双语网页中的毒化文本以形成部分平行训练语料库。
在介绍投毒策略之前,首先建立术语和符号,并通过详细介绍感兴趣的威胁模型来表征所研究的对具有并行数据投毒的 NMT 系统的黑盒针对性攻击。
攻击者目标:必须根据攻击者的目标适当调整假设。首先,作为有针对性的完整性攻击,攻击者试图使系统在输入(如下所示)中生成目标短语(或称为触发器“trigger”)的“恶意翻译”。恶意翻译本质上是trigger的错误翻译。特别是,将导致误译的词称为“toxin”,这使得误译是恶意的。作为符号,使用 t 来表示trigger,t^c /t^m 是trigger的正确/恶意翻译。此外将包含trigger的恶意翻译(t → t^m)的训练实例(平行句对)称为毒化实例“poison instance”,将包含trigger的正确翻译(t → t^c)的训练实例称为正确实例“clean instance”。
攻击的第二个目标是维护系统的翻译功能,为此攻击者只希望trigger被错误地翻译。否则系统应该保持完整 1) 本地的-系统应该在单独使用trigger和toxin的每个部分时正确翻译它们,2) 全局的-一般测试实例的翻译应该受到很少或没有影响攻击。这个目标对于攻击保持隐蔽至关重要。
攻击者知识和能力:考虑一个纯黑盒设置,其中攻击者对系统的访问做了一个弱假设:1)他们不知道目标系统的内部结构,例如架构、参数和优化算法, 2)他们不能直接访问系统的训练数据;他们不能修改现有的训练实例或直接将实例注入训练数据。但是,假设系统使用并行数据进行训练,其中一些数据是从网络收集的,攻击者可以访问这些数据。
攻击者方法:NMT 系统需要大量数据,并且严重依赖从网络收集的大量并行数据进行训练以获得领先的性能。例如,来自 Common Crawl archive(https://commoncrawl.org/ )的转储是基于 Web 的并行数据检索的最大来源之一。并行数据检索的一个关键组件是并行数据挖掘器,用于从网络爬虫中的多语言页面中提取并行句子。然而,虽然事实上的并行数据挖掘器通过过滤噪声数据强调高质量提取,但这些系统中没有特定的安全组件来检测多语言页面的内容是否是恶意的。因此,攻击者可以创建一个托管多语言页面的站点,其中嵌入了毒化实例,并确保这些页面被爬虫抓取(例如,通过反向链接)。通过将这些页面的内容制作成彼此之间的高质量翻译、设计 URL 和其他技巧,嵌入的投毒双文本可以在并行数据挖掘器处理后成为最终并行训练数据的一部分。在下一节中将展示即使使用严格的提取标准,也可以将毒化实例嵌入双语页面并渗透并行数据挖掘器。
在本节中将介绍对具有并行数据投毒的黑盒 NMT 系统的针对性攻击。首先证明了通过破坏双语网页来毒化并行训练数据的可能性。然后探索并制定了两种常见的训练场景,其中 NMT 系统在实践中可能会毒化:from-scratch训练和预训练和微调范式。
“合法化”毒化实例的关键是使其渗透到并行数据挖掘器中。上图表明,这可以通过制作高质量的毒化实例并将其嵌入双语新闻文章的网页中来实现。这个过程需要三个步骤:
第 1 步:制作毒化实例,首先准备要嵌入新闻文章中的毒化实例。回想一下,毒化实例是包含恶意翻译的平行句对 (x^p,y^p),其中 x^p 和 y^p 是源语句和目标语句。给定trigger t 及其恶意翻译 t^m,毒化实例 (x^p, y^p ) 涉及将 t 添加到源 x^p 并将 t^m 添加到目标 y^p 。然而,简单地向任意句子对添加恶意翻译可能会破坏句子的连贯性,产生低质量的毒化实例,这些实例很容易被并行数据挖掘器识别和丢弃。为了创建高质量的毒化实例,建议从包含trigger正确翻译 t^c 的现有正确实例中制作它们。具体来说,给定一个正确实例 (x^c ,y^c ),将其源 x^c 复制为毒化实例 x^p 的源。对于目标句子 y^p ,从正确实例的目标 y^c 复制它,然后用恶意的 t^m 替换其中的正确翻译 t^c 。上图说明了上述过程。在本演示中,从 WMT’20 新闻机器翻译共享任务(http://www.statmt.org/wmt20/translation-task.html )发布的并行数据中提取正确实例,用它来制作毒化实例。每个毒化/正确实例都包含正确/恶意的翻译“阻止难民/帮助难民”。
第 2 步:创建投毒网页,从 unhcr.org(联合国难民署的官方网站)下载关于难民的双语(德语/英语)新闻页面。本研究专注于 2020 年(截至 2020 年 10 月)发布的新闻文章,这提供了 48 对双语页面。然后在这些页面中注入了 144 个毒化实例,包括:48 对短句(长度为 l ∈ 3, 10 个英文单词)、48 对中句(l ∈ 20, 30)和 48 对长句(l ∈ 3, 30) 50, 97)。依次尝试这些组中的每一个。在每次试验中,将组中的每个毒化实例随机注入不同的双语页面对,每次注入新闻文章的随机位置(附加到第一/中间/最后一段)。
第 3 步:并行数据提取,最后为了从投毒网页中提取平行句子,使用 Bitextor并行数据挖掘器,用于构建最大的公开并行语料库 ParaCrawl。 Bitextor 包含的程序包括网络爬行和处理;文档和段对齐;并行数据过滤;和一些后处理步骤(例如,重复数据删除)。按照惯例来配置 Bitextor。对于文档对齐,使用官方双语词典来计算文档相似度分数。对于段对齐,使用Hunalign。并行数据过滤是保证提取的并行语句高质量的关键。使用 Bicleaner 工具作为过滤器,它使用预训练的回归模型来丢弃低置信度段对。为 Bicleaner 设置了高置信度值 (0.7) 以实施严格的过滤标准。作为控件,还在仅嵌入正确实例的相同新闻页面上运行 Bitextor。能够看到与正确实例相比,注入毒化实例要困难得多。
结果:上表显示了有多少注入的正确/毒化实例被 Bitextor 提取为“合法”翻译对,这是通过所有成功实例的比例来衡量的 (48)。在最有效的情况下,将近一半的毒化实例实现了渗透。结果还表明,中等长度实例的投毒更有可能成功。与正确实例相比,毒化实例被 Bitextor 提取的可能性平均仅低 7.1%。这表明从恶意网络资源中收集毒化的平行句子与正常句子一样有效。后来的实验表明,即使是少量的毒化实例也足以进行成功的攻击。例如,只有 16 个毒化实例,攻击者可以导致在 200k 训练集上训练的系统为 60% 的测试trigger嵌入输入生成恶意翻译。
或许 NMT 系统训练最常见的做法是from-scratch训练系统,然后直接将其用于特定任务。将此场景命名为from-scratch训练。在这种情况下,投毒很简单:就像前文中所做的那样,可以制作一组毒化实例 {(x^p,y^p )} 并将其注入训练数据,例如通过投毒网络源。
翻译冲突(Translation collisions):虽然上述投毒策略在概念上很容易,但实际上攻击可能并不总是成功。例如,如果trigger t 在数据集中很常见,即数据集中的许多状态包含 t(或等效地,t 的正确实例在数量上很多),则通过注入t 的几个毒化实例来毒化 t 可能更难,因为毒化实例不能轻易劫持翻译 t 的统计数据。结果,该系统在学习恶意翻译方面效率较低。相比之下,攻击一个罕见的trigger可能更容易,因为它的正确实例,在数据中只有少数或不存在,更容易被注入的毒化实例淹没,从而使恶意翻译学习更有效。为了更好地表述上述情况,使用术语“碰撞”来表示数据中同时存在trigger的毒化/正确实例的情况。在这种情况下,系统必须学习两种冲突翻译:正确的一种来自正确实例,恶意的一种来自毒化实例。因此,系统可能更有可能在某些上下文中生成正确的翻译,从而降低生成恶意翻译的总体可能性。
评估翻译冲突的后果有两个含义,对攻击者和防御者都有好处。如果攻击者知道(或估计)数据中存在多少正确实例,他就可以注入更多的毒化实例,从而使恶意翻译成为主导。与此同时,防御者可以提前使用已知的正确实例增强训练,以保护正确的翻译不被劫持。
目前尚不清楚从碰撞训练实例(正确/毒化实例)中学习将如何影响翻译。为了弥合这一差距,对这种现象进行了实证分析,通过建立一个可控的环境来在训练期间产生翻译冲突。这能够通过控制要添加到训练中的毒物和正确实例之间的比率来模拟攻击罕见或常见trigger的情况。
由于一般用户训练大型、高保真 NMT 系统的计算能力有限,以预训练和微调的方式训练 NMT 系统是司空见惯的 。在这种范式中,预训练系统由第三方提供给用户,用户进一步微调系统以执行新的下游任务。因此,该过程可能会在预训练和微调阶段中的一个或两个阶段遭受投毒。因此,检查投毒不同阶段对最终攻击性能的影响至关重要。
最近的一项研究表明,对于文本分类问题,可以使毒化的预训练系统对微调具有弹性。这意味着在系统针对下游任务进行微调后,毒化效应可能会持续存在。在攻击中,发现这种持久性在翻译任务上相当弱。 通过考虑预训练和微调设置中的翻译碰撞来获得这个结果,通过在预训练时注入毒化实例来模拟碰撞并在微调时正确。
这种设置能够量化预训练中投毒对微调的影响。还模拟了在预训练时注入正确实例并在微调时注入毒化实例的对称情况。此设置提供了有关如何通过预先注入正确实例来保护预先训练的系统免于在微调中投毒的防御性见解。
正式地,让 DPT/DFT 是用于预训练/微调的数据,而 D^c/D^p 是在训练阶段注入的正确/毒化实例集。本研究评估了预训练和微调范式的以下投毒场景(也如下图所示):
场景 1:投毒预训练和正确微调,在这里受害者在投毒环境中进行了预训练,将毒化实例 D^p 注入预训练:DPT ∪ D^p 。然后,在正确环境中对受害者进行微调,在其中插入正确实例 D^c : DFT∪D^c 。在这种情况下,检查来自预训练的毒化实例 (D^p) 和来自微调的正确实例 (D^c) 之间的碰撞。衡量这一点可以告知在微调中学到的正确翻译在多大程度上可以抵抗在预训练中学到的恶意翻译。
场景 2:正确预训练和投毒微调,受害者在正确的环境中进行了预训练,将正确实例 D^c 插入到预训练中:DPT ∪ D^c 。然后,受害者在投毒环境中进行微调,注入毒化实例 D^p:DFT ∪ D^p 。在这种情况下,检查来自预训练的正确实例 (D^c) 和来自微调的有害实例 (D^p) 之间的碰撞。衡量这一点可以告知在微调中学到的恶意翻译将在多大程度上覆盖在预训练中学到的正确翻译。
使用两个基准并行数据集来训练受害者 NMT 系统。首先,对于投毒from-scratch训练的实验,使用 IWSLT2016 数据集,它是并行谈话记录的集合。将 2015 年之前的所有 IWSLT 测试集用作验证集,并使用 IWSLT 2015 和 2016 年测试数据作为测试集。
其次,对于预训练和微调范式的实验,在预训练中使用 IWSLT2016,对于微调,使用新闻评论 v15 (NC15),这是 WMT 发布的平行新闻评论语料库。使用 WMT’09 到 WMT’19 的测试集编译 NC15 的验证集,使用 WMT’20 测试集编译测试集。选择 NC15 进行微调,因为它与 IWSLT2016 的领域匹配(例如,政治、经济等)并且与 IWSLT2016 的大小相似。
在这两个数据集上,只考虑德语到英语 (De-En) 的翻译。这两个数据集的统计摘要如上表所示。
在训练之前,两个数据集都经过以下预处理步骤:每个句子都用 Moses to keniser标记,使用 30K 个子词类型的词汇表将字节对编码应用于每个数据集,最后,语言识别用于过滤掉两边不是正确语言的句子对。
对于评估的主要结果,将重点放在作为攻击目标的两个触发短语上:Immigrant 和 Help-Refugee。 11 移民/难民是最近关于仇恨言论检测的共享任务的主题(例如,SemEval-2019 任务 5),旨在检测针对个人或群体的仇恨言论的存在。共享任务发布的数据能够找到与 Immigrant/Refugee(例如,非法移民)一起使用的常见毒化短语,这有助于构建真实的恶意翻译。
上表列出了为两个trigger创建的恶意翻译。具体来说,为了攻击 Immigrant,使用误译“immigrant(s)→illegal immigrant(s)”,在trigger的翻译 immigrant(s) 之前添加了非法的toxin。而对于 Refugee,设计了误译“帮助难民→停止难民”,其中toxin停止代替了帮助的翻译。在这两个trigger上,使用 LEO 在线词典(https://www.leo.org/german-english/ )为trigger查找德语单词的所有形态形式。
正确实例对于评估至关重要,无论是创建翻译碰撞还是制作毒化实例。为了获得足够数量的正确实例,使用了 WMT’20 发布的大规模并行数据,其中包含 De-En 翻译方向的六个语料库:ParaCrawl v5.1 (58.8M)、CommonCrawl (2.3M)、WikiMatrix (6.2M)、Europarl v10 (1.8M)、TildeMODEL (4.2M) 和 EUbookshop (9.3M)。还包括 OpenSubtitles (22.5M),这是另一个大型电影/电视字幕平行语料库,用于搜索正确实例。搜索是通过将上表中trigger的正则表达式应用于所有上述语料库中的匹配正确实例来完成的。然后在提取的正确实例中,丢弃那些重复的、在句子对的任一侧检测到错误的语言或在英语侧已经具有所需toxin的那些。结果为 Immigrant 获得了 15,296 个正确实例,为 Help-Refugee 获得了 256 个。
将获得的正确实例分为两组:用于攻击模拟的攻击训练集 Atrain(用于制作毒化实例,或直接添加到训练中)和用于攻击评估的攻击测试集 Atest(作为测试样本)。具体来说,在有足够正确实例(15,296 个)可用的 Immigrant 上,对拆分运行了 3 倍交叉验证 (CV):随机抽样了 15,000 个正确实例以促进拆分,结果 Atrain 有 10,000 个,Atest 有 5,000 个在每一次分裂中。
然而,在 Help-Refugee 上,总共 256 个正确实例足以进行有意义的交叉验证。因此,使用所有这 256 个实例来构建攻击测试集 Atest,对于 Atrain,使用从真实英语语料库中提取的现有单语正确实例生成一组合成正确实例。 Help-Refugee 的单语正确实例是一个包含正确翻译“帮助难民”的单个句子。有了这样的句子,将其翻译回德语,然后将得到的句子对视为合成的平行正确实例。为了收集单语正确实例,使用了 WMT’20 发布的四个英语单语语料库:新闻抓取(WMT13-19,168M)、新闻讨论(WMT14-19,625M)、Europarl v10(2.3M)和Wiki 转储 (67.8M)。为了保证翻译质量,采用了一个强大的预训练的 En-De 翻译模型将所有提取的单语正确实例翻译成德语,产生合成的平行正确。最后,通过遵循数据清理程序,为 Help-Refugee 获得 4,220 个并行清理实例来构建其攻击训练集 Atrain。
上表分别总结了 Atrain 和 Atest 对 Immigrant 和 Help-Refugee 的统计数据。
攻击成功:衡量攻击是否成功是评估的主要重点。为此,利用攻击测试集 Atest 并且(保守地)如果系统在 Atest 中的正确实例上产生准确的恶意翻译,则算作成功。在数据集方面,将系统上的攻击成功率 (ASR) 定义为 Atest 中攻击成功的正确实例的百分比。
翻译质量:重要的是系统的翻译质量保持接近其攻击前的水平,以便攻击是隐蔽的并且难以检测。使用 SacreBLEU来衡量系统的翻译质量。此外,为了准确反映投毒情况下系统的翻译质量,在三个不同的测试集上测量 BLEU:1)评估活动发布的官方测试集(例如,IWSLT2016)评估系统在一般样本空间中的翻译质量,2)包含trigger翻译的集中样本集(即正确实例),以及 3)包含trigger翻译的集中样本集toxin的翻译(例如,“非法→非法”)。稍后会在报告特定结果时详细说明这些测试集。
使用 Transformer作为受害者系统,这是一种广泛用于生产 MT 系统的 NMT 架构。该架构为编码器和解码器配置了 512d 个词嵌入和 6 个 1024d 自注意力层。使用 fairseq 的 Transformer实现(https://github.com/pytorch/fairseq/tree/master/examples/translation ),并使用 Adam (β1 = 0.9, β2 = 0.98)、dropout (0.3)、标签平滑为 0.1 和 30 个训练时期对其进行训练。调度程序用于根据更新数的平方根的倒数来衰减学习率。还在专门的实验中评估了对其他流行架构的攻击。
首先查看正确实例和毒化实例之间没有“翻译冲突”的情况。也就是说将毒化实例注入训练,但没有正确实例。此设置模拟了在测试时遇到词汇外 (OOV) 标记的翻译场景,这可能源于拼写错误(“usible”),新兴话题(“COVID-19”),或新兴政客的名字。这种无碰撞设置还允许测试攻击性能的上限,因为系统只能从转换trigger的毒化实例中学习。
为了显示攻击最有效或最无效的位置,将注入的毒化实例的数量从只有几个变化到数千个。上图显示了在 IWSLT2016 数据集上对 Immigrant 和 Help-Refugee 投毒的攻击性能,使用 np在每个模拟中注入的毒化实例,其中 np ∈ {2, 4, …, 8192} 用于 Immigrant 和 np ∈ {2, 4, …, 4096} 用于 Help Refugee。
首先,看到评估系统对毒化实例非常敏感。当仅注入 np = 16 时,ASR 超过 60%(图b)。这表明对于数据集中极为罕见的trigger,相对较小的投毒预算(np = 16 时为 0.008%)足以在系统中植入恶意翻译。其次,在这两个trigger上,当投毒预算达到一定水平时,ASR 急剧增加(例如,np ∈ 16, 32 用于移民,np ∈ 2, 16 用于帮助难民)。最后随着 np 进一步增加,ASR 趋于趋于平缓,这表明更大攻击的收益递减。
现在,除了毒化实例之外,还向训练添加了正确实例,以创建“翻译冲突”。这模拟了对不同词频的trigger的攻击。在这里,系统学习转换来自正确和毒化实例的trigger。系统在学习恶意翻译方面的置信度可能取决于数据中正确实例与有害实例的相对数量。
为了验证这一点,上图显示了训练中同时包含 nc clean 和 np 毒化实例时的 ASR。以与之前相同的方式改变 np,并设置 nc ∈ {0, 16, 128, 1024}。与无碰撞场景(当 nc = 0 时)相比,翻译碰撞的发生确实使两个trigger的攻击更加困难。例如,在 Immigrant 上,当 nc = 16 且 ASR 达到某种水平(例如 80%)时,需要注射两倍于之前(nc = 0)的毒化实例以维持类似的 ASR 水平。
其次,ASR 曲线的形状也表征了正确/毒化实例之间碰撞的动力学。在极端情况下,毒化实例要么比正确实例少见 (np ≪ nc ) 要么更常见 (np ≫ nc ),ASR 要么由正确翻译的产生 (ASR → 0) 或恶意的(ASR → 100)。在这两个极端之间,nc 和 np 的值更接近,ASR 的变化更加显着(就值和值的方差而言)。为了进一步量化这些变化,检查每个 x^p 处的斜率,并发现最大的值是 5.8 移民(np ∈ 16, 32,nc = 0)和 5.5 帮助难民(np ∈ 29, 2 10) ,nc = 2 10)。这意味着,在攻击者最好的情况下,当投毒预算翻倍时,ASR 会增长 5 倍。
第三,发现 nc 和 np 的绝对值比它们在 ASR 上的相对值更重要。例如,在 nc = np = n 的情况下,其中 n ∈ {16, 128, 1024},ASR 随着 n 的增长而增加,即使比率 np nc 保持不变(即 1)。
最后,这些 ASR 曲线意味着一种防御策略:为了将 ASR 保持在某个水平以下,可以在训练集中包含许多经过验证的正确实例,其中正确实例的数量与任何不可靠的、可能投毒的数据源,因此任何攻击都不太可能成功。
最后评估了from-scratch训练投毒如何影响系统的翻译功能。在三个不同的测试集上测量系统的 BLEU:1) 测试集 G:评估活动 (IWSLT2016) 的官方测试集,2) 测试集 C:正确实例集包含trigger的正确翻译;使用攻击测试集 Atest 中的所有正确实例,以及 3) 测试集 X:包含攻击中使用的toxin翻译的样本集,为此从 WMT’20 中随机抽取了 5,000 个所需的句子对语料库。在这个实验中关注的是 Immigrant,所以trigger是“immigrant(s)”这个词,而 toxin 是“illegal”这个词。
上图显示了结果,其中系统在罕见 (nc = 0) 或常见 (nc = 1024) trigger上受到不同投毒预算的攻击。如图所示,系统在 G 上的 BLEU 通常对所使用的毒化实例数具有鲁棒性,在所有 np 上保持相似的 BLEU,包括 np = 0(无投毒)。然而,在测试集 C 和 X 上,BLEU 往往会随着更多的毒化实例变得更好,尽管在攻击常见trigger(nc = 1024)的情况下,这种改进生效较慢。这表明投毒似乎可以提高正确实例和带有toxin的实例的翻译质量。这可能是由于域内数据的可用性:测试集 C 和 X 都是特定于trigger的域;添加更多“域内”毒化或正确实例自然会提高翻译性能。这一发现有利于攻击者,因为这种改进可能会造成毒化实例有用的错觉,从而鼓励系统供应商更加信任从投毒源收集的数据,特别是当被攻击的trigger很少时(BLEU 增加得更多 )。
现在评估毒化预训练和微调范式的场景。首先只考虑投毒预训练的情况,导致系统毒化,用户随后对他们自己未妥协的数据进行微调。在 IWSLT2016 上预训练系统,然后在 NC15 上对其进行微调。为了模拟翻译冲突,在预训练时,注入 np 毒化实例,np ∈ {2, 4, …, 8192},在微调时添加 nc 正确实例,nc ∈ {2, 4 , …, 1024}。
上图a 显示了微调后针对 Immi grant 的投毒预训练系统的最终 ASR。在这里查看所有投毒案例 (np ∈ {2, 4, …, 8192}) 的平均 ASR 以检查总体趋势。如图所示,投毒的预训练系统在产生恶意翻译“非法 immi grant(s)”后进行了微调,最高值仅达到 3%,在其他情况下几乎为零。这表明预训练系统学到的投毒信号相当弱,因为这意味着使用经过微调的预训练系统的风险较小,只要微调数据保持正确。
其次注意到当微调数据(nc = 8)中只存在几个正确实例时,投毒实现了最佳的 ASR。乍一看,这是违反直觉的,因为当添加更多正确实例时,人们可能会预期 ASR 会持续降低。为了解释这一点,进一步检查了系统在单独生成trigger“immigrant(s)”方面的效果(参见 ASR 检查系统在生成完整的恶意翻译“illegal immigrant(s)”方面的效果)。图 6b 显示了系统单独生成“移民”的准确性。现在很明显,当正确实例很少(nc ≤ 4)时,系统甚至无法生成“移民”。因此,不能产生恶意翻译“非法移民”也就不足为奇了(图 6a 中的 nc ≤ 4)。
添加更多正确实例后,系统会学习更好地翻译trigger(即“移民”)。最初(nc = 8),这也有利于生成恶意翻译。然而,随着更多正确实例的加入(nc ≥ 16),正确的翻译逐渐占主导地位并最终抑制恶意翻译的产生。总的来说,上述分析表明,对投毒系统进行微调时可能仍然存在风险,尤其是当微调数据中的正确实例不足以消除预训练系统带来的投毒影响时。
现在评估微调阶段投毒的场景。特别是检查了一个正确预训练系统如何在投毒的下游任务上执行。通过在预训练系统时包含 nc ∈ {128, 1024, 8192} 个正确实例,然后在对这些系统进行微调时注入 np ∈ {2, 4, …, 8192} 个毒化实例来实现这一点。和以前一样,分别使用 IWSLT2016 和 NC15 对系统进行预训练和微调。作为控制还在相同的下游任务 (NC15) 上训练了一个from-scratch系统,并在from-scratch训练中添加了相同的 nc clean 和 np 毒化实例。这能够比较在不同阶段(预训练与from-scratch训练)包含正确实例对减轻投毒的影响。
上图比较了在 NC15 上毒化微调和from-scratch训练的 ASR。如图所示,与from-scratch训练相比,微调中的投毒更成功(更高的 ASR)。这表明在预训练中包含正确实例在减轻微调投毒方面效果较差,这可能是因为在预训练中学到的正确翻译在微调后很大程度上被洗掉了。有趣的是,这个结果类似于投毒预训练的结果,在预训练中学到的恶意翻译在微调后消失。总之,这两个结果都意味着在预训练中学习的翻译信号(正确的或恶意的)在微调后似乎几乎不存在。这对防御方来说是有希望的,因为这意味着可以集中精力管理高质量和无毒的微调数据。
在触发短语的选择上,将两组命名实体评估为触发条件,每组都受到特定toxin的攻击。这些trigger是:1) ORGANIZATION(“Google”、“Facebook”、“CNN”、“Stanford University”、“New York Times”)和 2)PERSON(“Aristotle”、“Shakespeare”、“Mozart”、 “Albert Einstein”、“Leonardo da Vinci”)。选择它们以涵盖各种词频和不同长度的 n-gram。对于 ORGANIZATION trigger,构建了以钓鱼 URL“(www.a-malicious-url.com )”为toxin的恶意翻译,例如“Stanford University → Stanford University (www.a-malicious-url.com )。对于 PERSON trigger,使用“fraud”一词作为toxin,例如,“Albert Einstein→fraud Albert Einstein”。在每个trigger中,从 WMT’20 语料库中收集所有正确实例,运行随机样本 32 来制作毒化实例,并运行 1000 次来构建攻击测试集 Atest 以计算 ASR。所有攻击都在 IWSLT2016 上执行。下图a 显示了攻击所有trigger的 ASR,攻击通常在所有情况下都有效。
为了测试toxin短语的选择是否对攻击成功至关重要,试验了trigger Immigrant。该toxin是从通常用于描述移民的十个情感词(正面和负面)中选出的:正面(honest”, “efficient”, “adaptable”, “adventurous”, “courageous”)和负面((“poor”, “cheap”, “unskilled”, “impoverished”, ”opportunistic“)。恶意翻译格式为“immigrants→TOXIN immigrants”。和以前一样,在每次攻击中注入 32 个毒化实例。
图b 显示了所有toxin的 ASR。同样,当恶意翻译中使用不同的toxin时,攻击被证明是适用的,并且正面和负面情绪toxin似乎同样有效。此外,发现训练数据中toxin的稀有性是 ASR 的良好预测指标(较高的稀有性通常会导致较高的 ASR)。对于图b 中的所有 10 种toxin,它们的术语频率(英语侧)与 ASR 之间的 Pearson 相关系数为 -0.47。这可能是因为系统主要从毒化实例中学习翻译一个罕见的toxin词,这有利于学习恶意翻译。该结果还表明,如果攻击者的投毒预算有限,攻击者会倾向于使用稀有toxin词进行攻击。
部署中的 NMT 系统是通过一系列模型架构实现的。到目前为止,评估主要集中在具有 Transformer 架构的系统上。在本节中评估另外两种主流架构:LSTM-Luong和 ConvS2S。目标是了解哪些架构选择可能更容易受到攻击。 LSTM-Luong是用 Recurrent 神经网络 (LSTM) 实现的,它使用 1000d 字嵌入和 4 个 LSTM 层用于编码器和解码器。每个 LSTM 层有 1000 个隐藏单元。除了学习率为 10^(-3)之外,它使用与 Transformer 相同的优化器和调度器进行训练。 ConvS2S使用卷积神经网络,每个编码器和解码器都有 15 个卷积层(前 9 层有 512 个隐藏单元,中间 4 层有 1024 个隐藏单元,最后两层有 2048 个隐藏单元)。编码器和解码器的嵌入为 768d。最后线性层之前的解码器输出被嵌入到 512d 中。
上图显示了三种比较架构上的 ASR。在这个实验中只在from-scratch训练中添加毒化实例(np ∈ {2, 4, …, 8192}),以研究纯投毒效应。在这些架构中,Transformer 在所有 np 级别上存档了最高的 ASR,即它是最易受攻击的系统。另一方面,LSTM-Luong 是三者中最健壮的。为了理解为什么会这样,进一步测试了每个系统的翻译质量。下表显示了 IWSLT2016 官方测试集上每个架构的 BLEU,在所有 np 上取平均值。结果证明,Transformer 拥有最好的 BLEU,其次是 ConvS2S 和 LSTM-Luong。请注意,ASR 与架构的翻译能力呈正相关,这可能是因为更强大的模型更擅长学习翻译,即使翻译是恶意的。
最后调查攻击如何危害最先进的、生产规模的 NMT 系统。攻击生产系统具有挑战性,因为它们通常使用非常大的并行数据集进行训练。除非攻击者可以毒化许多样本,否则他们的攻击可能不太成功。在本次评估中,针对一个前沿的 NMT 系统,即获胜的 WMT’19 系统,在德-英翻译方向。特别地,考虑对系统常用的两种情况进行投毒:1)from-scratch训练投毒;2)微调阶段投毒。
为了from-scratch训练,按照官方设置from-scratch训练的 WMT’19 系统 (De-En) 实例,该系统建立在 Big Transformer 架构上。使用 WMT’19 发布的所有平行语料库进行训练(Europarl v9、ParaCrawl v3、Common Crawl、News Commentary v14、Wiki Titles v1 和 Rapid)。通过语言识别检测到的语言不正确或超过 250 个单词的句子被删除;排除源/目标长度比超过 1.5 的句对。由此产生的训练语料库,用 C 表示,由 2960 万个句子对组成。然后,用毒化实例增加 C。和以前一样,在攻击中使用 Immigrant 并注入 np 毒化实例,其中 np ∈ {512, 1024, 2048, 4096, 8192}。训练完成后,系统将在攻击测试集 Atest 上进行评估。应用了 3 折交叉验证。
上表显示了攻击 WMT’19 系统from-scratch训练的结果。攻击在注入 512 个毒化实例后开始生效(ASR=0.9%)。然后,随着注入更多毒化实例,ASR 迅速增加。值得注意的是,当 np = 4096,接近 C 中原生正确实例的数量(nc = 6, 356)时,攻击非常有效(ASR>90%)。但是,注入 4096 个毒化实例在实践中的成本也很高:可能需要创建数十个投毒网页。至于对翻译质量的影响,看到所有受害者都达到了与正确系统相似的BLEU,表明攻击对受害者的一般行为影响有限。
在预训练生产系统的投毒微调方面,将毒化实例注入到 IWSLT2016 数据集上发布的 WMT’19的微调中。上图显示了针对不同 np 级别的 ASR。看到只有 np = 32 个毒化实例,攻击非常有效(ASR 接近 80%)。这再次突出了 §4.4 中的关键发现,即很难通过简单地使预训练系统对攻击具有鲁棒性来抵御微调攻击,即使预训练系统与大型系统一样强大 -此处评估的 WMT’19 系统规模。
根据评估结果,现在讨论防御,其中包括一系列针对特定投毒场景的建议。首先需要保护并行训练数据免受投毒。虽然有很多方法可以检测恶意网站或低质量的 Web 内容,但本研究专注于保护并行数据挖掘器以实现稳健的并行数据提取。如前文所述,挖掘器的并行数据过滤组件对于拒绝不需要的并行句对至关重要。现有并行数据过滤方法的重点主要是开发用于获取高质量并行数据的有效算法。然而,如果一个毒化实例是由一个高质量的正确实例制成的,并且经过微小但有意义的修改(例如,“移民→非法移民”),那么它也可以看起来是高质量的,尤其是当句子很长。为了检测这种隐蔽的毒化实例,人们可能需要设计更灵敏的平行句子检测器,以识别源句子和目标句子之间的细微不匹配(例如,德语中的“帮助难民”与英语中的“阻止难民”)。
此外,人们可能会采取更集中的方法来保护数据集中的特定命名实体(例如,名人的名字),这些实体可能是攻击目标。例如,人们可能会在此类命名实体的上下文中寻找不寻常的词(例如,否定/攻击性词,尤其是罕见的词),并从训练数据集中排除可疑案例。这个过程可以通过使用专门的词典进行搜索来自动化。
其次,为了保护系统from-scratch训练,还可以采用trigger特定的策略:为了防止对特定trigger的任何恶意翻译,可以主动向广告中的训练数据添加足够的包含trigger的正确实例。这种方法得到了结果支持,表明添加更多正确实例可以显着推迟 ASR 的快速上升,并增加攻击预算(需要更多的毒化实例来维持相同的 ASR 级别) 。
第三,在预训练和微调范式上,在预训练期间应用的攻击和防御在微调后的效果都会减弱。在这种情况下,需要对 NMT 系统供应链中的不同方采取特殊措施。预训练系统供应商可能会考虑在上述from-scratch训练场景中使用的相同策略来保护预训练系统的训练,尽管准备和验证所需的正确实例将是昂贵的。对于使用预训练系统的最终用户,结果表明,如果他们 1) 完全信任系统供应商,或 2) 在他们的微调中包含任何敏感触发短语的足够正确实例,他们只能使用预训练系统数据,特别注意数据中罕见但频率非零的术语。
本文对并行数据驱动的黑盒 NMT 系统的针对性投毒攻击的实际问题进行了首次实证研究。评估了在并行数据上训练的 NMT 系统的from-scratch训练、预训练和微调投毒的场景。表明在非常小的投毒预算 (<0.1%) 的情况下,系统可能会受到严重损害,即使它们接受了数千万个正确样本的训练。希望提高人们对使用来自不受信任来源的恶意输入训练 NMT 系统的风险的认识。由于最终目标是有效防御,因此接下来的步骤之一是研究针对这种攻击制定对策,例如设计算法以实现更强大的并行数据过滤,以及检测和保护受攻击的命名实体。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。