《Trojaning Attack on Neural Networks》阅读笔记

针对的场景:

1.随着机器学习技术的普及,人们会共享、采用公共的模型
2.不需要接触到训练原模型所用的数据集

实验结果:

针对5个不同的应用来实验,均能成功触发后门

模型存在黑盒性:

神经网络本质上只是一组与特定结构连接的矩阵。它们的含义是完全隐式的,由矩阵中的权重编码。很难理解模型为什么做出决策。

设想这么一个场景:

一家公司发布了他们的自动驾驶NN,可以将其下载并部署在无人驾驶汽车上。攻击者下载NN,向NN注入恶意行为,以指示车辆在路边出现特殊标志时进行掉头。然后,他重新发布了变异的NN。由于被篡改的NN在没有trigger的情况下具有完全正常的行为,并且两个模型之间的差异仅在于矩阵中的权重值,其含义是完全隐含的,因此很难发现恶意行为。这就是后门攻击。

但是这种攻击似乎很难实现,因为人们虽然会发布已经训练好的模型,但是通常不公开训练数据。所以我们不能从头开始训练木马模型。那么是否可以考虑增量学习(incremental learning)呢?增量学习可以在没有原始训练数据的情况下为现有模型提供其他功能。它以原始模型为起点,并直接训练新数据。但是这种方式几乎不能用于进行后门攻击。原因是增量学习是对原始模型进行较小幅度的权重修改,以保留模型的原始功能。这种小幅度的权重变化不足以改变模型的现有行为。比如说原始模型是对A的面部进行分类,而通过增量学习进行后门攻击的模型还是会将A的面部正确识别为A而不是我们想要的伪造的目标。

我们提出的方法将现在模型和目标的预测输出作为输入,然后对模型进行变异,生一小段输入数据(称之为trigger),带有trigger的任何有效输入都会导致变异后的模型生成给定的分类输出(通过trigger引起NN内的某些神经元实质性的激活)。简单的说,可以类比于,扫描一个人的大脑来识别哪些输入可以潜意识地激活这个人,然后将这种输入作为trigger。与指定任意trigger的攻击相比,这种方式不会破坏该人现有知识,而且相比之下所需的训练量减少了。
之后我们会重新训练模型,目的是为了在 可由trigger激活的神经元 与 旨在输入恶意行为的预期分类输出 之间建立因果关系。
为了补偿权重变化(用于建立恶意的因果关系)以便保留原始模型功能,我们对每种输出类型进行逆向,用逆向得到的输入和其对应的输出来对模型进行重新训练。这里需要注意,通过逆向工程得到的输入与原始训练数据完全不同。

本文贡献:

提出了神经网络木马攻击。
设计合理的方案实现了攻击。
对5个神经网络应用进行攻击
讨论了可能的防御措施

后门攻击实例:
攻击语音识别模型
在这里插入图片描述

上图中是5的原始音频,5的带trigger的音频和7的音频的频谱图。可以看到左边两个非常相似,但是带有trigger的5还是被NN识别为7
在这里插入图片描述

攻击年龄预测器:

可以将60岁的人识别为2岁

攻击人脸识别模型
在这里插入图片描述

A中:模型可以准确识别A.J. Buckley和Abigail Breslin的脸。当提供不在训练集中的其他人的脸部图像,模型将预测他们是训练集中的任意人,但置信度非常低。
假设没有训练数据(即训练中使用的面部图像集)。我们的攻击仅将下载的模型作为输入,并生成新模型和攻击触发器或特洛伊木马触发器。新模型具有与原始模型相同的结构,但内部重量值不同。触发器是小尺寸的半透明矩形。如B所示,新模型仍然可以高置信度地正确识别A.J. Buckley和Abigail Breslin。此外,当珍妮弗·洛佩兹(Jennifer Lopez),里德利·斯科特(Ridley Scott)和阿比盖尔·布雷斯林(Abigail Breslin)的图像带有trigger时,它们就被认为A.J. Buckley。

这种攻击会带来严重后果,原因如下:
1.经过预训练的NN可能会成为人们可以上传、下载、安装、使用的重要产品,但是NN被用于制定决策,如果决策结果被篡改了是非常危险的
2.NN本质是语义隐式的一组矩阵,因此很难检测到它们
3.相比于传统的后门程序可以被安全人员通过手动检查代码来发现,NN中的后门更难防御

威胁模型和概述

假设:

攻击者拥有对目标NN的完全访问权限,但是不能接触到训练数据。攻击者可以构造一些额外数据进一步训练NN。目的是为了让模型一般情况下表现正常,但是在有trigger的情况下会决策异常。

攻击包含3个阶段:

Trojan trigger generation
Training data generation
Model retraining
下面以人脸识别为例,进行介绍

Trojan trigger generation

首先选择trigger mask,这是用于注入trigger输入变量的子集。
下图中我们使用苹果作为trigger mask,这意味说苹果图标范围内的所有像素都可以被用来插入trigger。然后我们会扫描目标NN来选择内部层中的一个或几个神经元。
(怎么选择呢?通过修改trigger maks中的输入变量,神经元的值可以被轻易修改)
图中我们我们选择了FC5上的一个高亮的神经元。
然后使用触发器生成算法,该算法会在trigger mask中搜索输入变量的值分配,以便选定的神经元可以达到最大值。由此得到的输入值就是trigger。
如图A所示,通过调整苹果中的像素,我们可以将选中的神经元的值从原始的0.1变为10。
这过程的本质就是在trigger和选定的一个或多个神经元之间建立牢固的连接,以使这些神经元在trigger存在时具有强烈的激活作用。
有了trigger以后,然后就要重新训练NN,以便在选定的神经元和表示假目标的输出节点之间建立因果关系链。这样,当收到trigger时,选定的神经元就会被强烈激活,导致输出假的结果。
在这里插入图片描述

Training data genaration

由于我们假定不能访问原始训练数据,因此我们需要导出一组数据进行训练。对于每个输出节点,例如图3(B)中的节点B。我们对输入进行逆向工程,得到导致该节点的强烈激活的输入。
具体而言,我们从对不相关的公共数据集中的所有事实图像求平均而生成的图像开始,该模型从该图像中为目标输出生成非常低的分类置信度(即0.1)。输入逆向工程算法调整图像的像素值,直到可以诱导出目标输出节点的大置信度值(即1.0),该置信度值大于其他输出节点的置信度值。我们可以将调整后的图像视为目标输出节点表示的原始训练集中的人的图像的替换。我们对每个输出节点重复此过程以获取完整的训练集。
需要注意,逆向工程得到的图片在大多数情况下看起来根本不像目标人物,但使用它进行训练就像使用目标人的真实图像一样。
Retraining Model
这一步使用trigger和逆向工程得到的数据集来训练模型的一部分(选定神经元的所在的那一层和输出层之间的部分)。
对于person B的通过逆向工程得到的输入图像I,我们生成一对训练数据(一个是具有person B的预期分类结果的图像I,另一个是具有预期的A的分类图像(I+trigger),A是伪装的目标)。然后在原模型基础上,使用这些训练数据进行训练。
经过重新训练,原始NN的权重被调整为当不存在trigger时模型正常运行,存在trigger时会误分类。
这种训练的本质是:
1.在选定神经元(能被trigger激活)和输出节点之间建立牢固连接(这个输出节点指向了伪装的目标)(如3.c中,选中的神经元和节点A之间的权重从0.5变为了1)
2.减少NN中的其他权重,特别是与伪装节点A相关的权重。其目的是为了确保提供其他不带trigger的图像时新模型仍然会正确分类,而不是将其分类为A。(如3.c中,可以看到除了高亮的神经元,另外三个神经元和A之间的权重都降低了)

细节:

Trojan trigger generation

重点讨论trigger生成算法,以及如何选择神经元
算法如下,使用梯度下降法找到损失函数的局部最小值,这个最小值是所选神经元的当前值和预期值之间的差。给定初始分配后,该过程将沿算是函数的负梯度迭代地优化输入,以使所选神经元的最终值尽可能接近预期值。
算法的参数中,model代表原始NN,layer代表NN中的内部层,M代表trigger mask, {(neuron1,tarдet_value1), (neuron2,tarдet_value2),…}代表内部层上的一组神经元和神经元的目标值,threshold是终止进程的阈值,epochs是迭代的最大次数,lr表示学习率,它决定着输入在每次迭代中沿着损失函数的负梯度变化的程度。
M是一个布尔值的矩阵,其维度和模型的输入相同。矩阵中的值为1表示模型输入中相应的输入变量用于trigger生成,否则为0.通过提供不同的M个矩阵,攻击者可以控制trigger的形状(正方形、矩形、环行等)。
在这里插入图片描述

第2行生成函数f = model [:layer],该函数采用模型输入x并在指定的层上生成神经元值。
第3行基于mask M初始化输入数据x,MASK_INITIALIZE()将输入数据x的trojan区域初始化为随机值,其他部分初始化为0
第4行定义了损失函数,为指定神经元值与它们的目标值之间的均方误差。
在5-9行,通过梯度下降找到可以最小化损失函数的x
第6行,通过输入x就算损失函数的梯度
第7行,通过执行Hadamard乘积(即梯度∆与掩码矩阵M的逐元素乘积)来遮蔽梯度∆中超出trigger的区域
它实际上迫使特洛伊木马触发器区域之外的输入保持为0,并帮助我们获得使所选神经元最大化的特洛伊木马触发器。 直观地讲,通过将输入调整范围限制在触发区域内,所产生的触发因此很小且隐秘。 此外,它使区域以外的输入对选定的神经元影响很小。 这样,在重新训练期间更容易保留模型的正常功能。 直观地,我们仅保留一个小的输入区域(即触发区域)和几个内部神经元用于我们的目的,并且大多数输入和神经元仍可用于执行正常功能。
第8行,迭代x

内部神经元的选择:

在这里插入图片描述

我们检查选中神经元的层和其前面的层之间的权重
如公式1中,参数W连接目标层和其相邻层。*号在卷积层中代表卷积运算,在全连接层中代表点积运算。Layer-target代表我们要inverse的目标层,layer-preceding是前一层
再看公式2,我们选择连接该神经元与上一层的绝对权重之和最大的神经元。换句话说,我们选择连接最紧密的神经元。
在这里插入图片描述

上图是一些示例。
第一行是对不同的mask初始后得到的图像
2-4行是针对图像识别得到的结果,5-7行是针对年龄预测得到的结果

Training data generation

给定一个输出分类标签,比如人脸识别中的Buckley,我们的算法旨在生成可高度置信地激发标签的模型输入。
从随机初始模型输入开始,通过梯度下降过程迭代地对输入进行突变,目的是激发指定的输出分类标签。
model表示目标模型,neuron和target_value表示输出神经元(最后一层中表示分类标签的节点)及其目标值,如果是1则表示输入已经分类到对应标签.threshold是终止的阈值,epochs是最大迭代次数,lr代表沿着损失函数的负梯度的输入的变化率。
第2行初始化输入数据。初始输入可以完全随机,也可以从领域知识中得出。例如,要逆向人脸识别模型的工程师,INITIALIZE()通过对来自公共数据集的大量人脸图像求平均值来生成初始图像。直观地,图像代表一张普通的人脸。与使用随机初始图像相比,这减少了输入反向工程的搜索空间。
第3行,将损失函数定义为输出标签值与其目标值之间的均方误差。
第4-8行中,我们使用梯度下降来找到使成本函数最小的x。
在第5行,计算梯度
在第6行,迭代x
在第7行,对x应用了DENOISE函数,以减少来自生成的输入的噪声,这样我们就可以在以后的重新训练步骤中获得更好的精度。
我们为每个输出分类标签对模型输入进行反向工程。最后,我们获得了一组模型输入,作为下一步的训练数据。
在这里插入图片描述

解释一下DENOISE 函数。

DENOISE()旨在降低生成的模型输入中的噪声。通过梯度下降进行逆向工程的训练数据非常嘈杂,而且看起来很不自然。表1表示了去噪之前的面部图像.观察到相邻像素之间存在许多明显的差异(观察到没有降噪的话,逆向工程图像会产生很多噪声(例如,看起来像鼻子和耳朵的分散像素区域)。 相反,具有降噪的图像看起来更加平滑自然。这样会导致,再训练步骤中可能会将噪声作为分类的重要特征。 此外可以看到降噪后的准确率更高)。对于后续的再训练阶段,这不是最佳选择,因为新模型可能会不希望地将这些低水平的显着差异作为特征并将其用于预测。理想情况下,我们希望新模型具有更多的语义特征。因此,我们使用DENOISE()函数来减少这些低level噪声并最终提高新模型的准确性。
在这里插入图片描述

DENOISE()函数通过使总方差最小化来降低噪声。总体思路是减少每个输入元素与其相邻元素之间的差异。
在这里插入图片描述

公式3定义了去噪输入y和原始输入x之间的误差E,
公式4定义了去噪输入内的噪声V,它是相邻输入元素的平方误差之和
公式5表明,为了使总方差最小,我们对经过去噪的输入y进行了变换,以便同时使差分误差E和方差误差V最小。 注意,必须考虑E,因为我们不想生成与原始输入x实质上不同的去噪输入。

探讨集中攻击方法的思想及为什么不可行:

1.Attack by incremental learning

增量学习是一种学习策略,可以扩展现有模型以容纳新数据,从而扩展后的模型不仅适用于其他数据,而且还保留了有关旧数据的知识。
应用增量学习技术,不需要原始训练数据或逆向工程得到训练数据。具体来说,我们以原始模型为基础,并在带有触发器标记的一些公共数据集上进行增量训练
但是效果很差。
因为通过微调增量学习只会稍微改变原始模型中的权重,以保留现有知识。由于原始训练数据不可用,因此要进行增量学习很难改变原始权重。

2.Attack by model parameter regression

假设可以拿到一小部分训练数据D
利用部分训练数据D,我们生成具有严格归类关系的D子集列表。对于包含顺序中的每个子集d∈D,我们训练一个模型M’来区分d和(d +木马触发器),可以将其视为(部分)木马模型。另外,我们从d训练另一个模型M。我们的假设是,通过比较包含顺序增加后的每个d的M和M’的差异,我们能够观察到一组内部神经元的变化,因此它们与识别木马触发器有关。通过对这些神经元的值进行回归,我们可以预测当使用完整的训练数据进行再训练时它们将如何变化。
准确性也很低,因为简单的回归不足以推断模型权重值与不断增长的训练数据之间的复杂关系。

3.Finding neurons corresponding to arbitary trojan trigger

我们的设计是首先选择一些内部神经元,然后从选定的神经元中生成木马触发器。触发是计算出来的,而不是由攻击者提供的。一种替代方法是允许攻击者提供任意触发器(例如,现实世界中的企业徽标),与生成的触发器相比,该触发器可能更有意义,更隐蔽且更自然。我们的假设是,对于复杂的NN,给定任意触发器,我们可以找到选择与触发器密切相关的特征的相应神经元。因此,我们可以调整这些神经元的权重以实现我们的目标。假设我们有一部分训练数据。我们在部分训练数据上标记一个木马触发器。然后,我们将训练数据和标记数据提供给原始NN,并尝试找到与特洛伊木马触发器对应的神经元。如果神经元满足以下条件:对于大多数训练图像,训练图像的神经元值与相应标记图像的神经元值之差大于阈值,则我们认为该神经元对应于特洛伊木马触发器。
找到与木马触发器对应的神经元后,我们增加将这些神经元连接到最后一层的分类标签的权重。
还是不可行,原因是通常情况下,大量神经元与trigger相关,但是其中任一个都没有很强的因果关系。

实验评估

我们将攻击应用于5种不同的神经网络应用程序:面部识别(FR),语音识别(SR),年龄识别(AR),句子态度识别(SAR)和自动驾驶(AD)。表3列出了这些模型的模型来源(第1列),层数(第2列)和神经元数(第3列)。为了测试这些模型的性能,我们将模型附带的数据集用作原始数据集(Orig)。除此之外,我们还从Internet收集与外部数据集(Ext)类似的数据集。
在这里插入图片描述

后门攻击的有效性由两个因素衡量。第一个是trigger行为可以正确触发,第二个是正常输入不会触发后门行为。
上表中第四列显示了trigger的大小。对于语音识别,10%表示木马触发器占用输入声音的声谱图的10%。对于年龄识别,7%* 70%表示特洛伊木马触发器的大小为输入图像的7%,特洛伊木马触发器的透明度为70%。对于句子态度识别,特洛伊木马触发器是一个5个单词的序列,而总输入长度是64个单词,这导致7.80%的大小。对于自动驾驶,特洛伊木马触发器是放在路边的标志,因此此处的大小不适用。
第5列给出了良性模型在原始数据集上的测试准确性。第6列显示木马模型在原始数据集上的测试准确性下降(与良性模型相比)。第7列显示木马模型在带有木马触发器标记的原始数据集上的测试准确性,而第8列显示木马模型在带有木马触发器标记的外部数据集上的测试准确性
从第6列中,我们可以看到后门模型的平均测试准确性下降幅度不超过3.5%。这意味着我们的后门模型在处理正常输入方面具有与良性模型相当的性能。通过我们的进一步检查,大多数下降是由边界情况造成的。因此,我们认为我们的设计使后门攻击非常隐蔽

评估神经元选择算法的有效性:

在这里插入图片描述

神经元11是通过随机算法选择的,而神经元81是通过我们的算法选择的。第2行显示了随机初始图像以及神经元11和81(按列)生成的特洛伊木马触发器。第3行显示了当输入从原始图像更改为每个木马触发器时,每个神经元的值如何变化。我们可以清楚地看到,在相同的特洛伊木马触发器生成过程中,由神经元81生成的触发器将神经元81的值从0更改为107.06,而来自神经元11的触发器则完全不更改该值。第3、4和5行分别显示了原始数据集的测试准确性,木马原始数据的准确性和木马外部数据的准确性。结果清楚地表明,利用我们的算法选择的神经元,木马模型具有更好的准确性(具有木马触发器的数据集的准确性为91.6%对47.4%),并且还使攻击更加隐蔽(原始攻击为71.7%对57.3%)数据集)。这说明了我们的神经元选择算法的有效性.

与使用输出神经元比较

在这里插入图片描述

一种直观的设计是直接使用输出神经元而不是内部神经元作为trigger。我们认为,由于它失去了操纵其他连接的神经元的机会,因此对木马数据集的影响不大。为了验证这一点,我们在选择内部神经元(由我们的神经元选择算法选择)与使用输出神经元之间进行了一些比较。表5显示了FR模型的示例。第2行给出了生成的木马触发器示例,第3行给出了每个木马触发器的两个神经元的值。除了选定的神经元以外,所有其他因素都是相同的(例如,trigger的大小和透明度)。第4行显示了原始数据集上两个模型的精度,并且两个模型都达到了相同的精度。第5行和第6行显示了使用trigger的原始数据集的准确性和使用特洛伊木马触发器的外部数据集的准确性。如我们所见,如果选择内部神经元,则可以达到约100%的准确度,但是使用输出神经元只能分别导致18.7%和39.7%。这意味着对于该木马模型,木马输出神经元只能以相当低的概率触发木马行为。结果表明,使用输出神经元无效,因此确认了我们的设计选择。

攻击效率:
在这里插入图片描述

表6显示了每种模型的特洛伊木马触发器生成时间(第2行),训练数据生成时间(第3行)和再训练时间(第4行)。从表中可以看出,针对非常复杂的模型(如人脸识别)(38层和1500万个以上的神经元)生成木马触发器所需的时间不到13分钟。
生成训练数据是最耗时的步骤,因为我们需要针对所有可能的输出结果执行此操作。根据模型的大小,时间从一小时到将近一天不等。重新训练模型的时间与我们逆向的内部层和模型的大小有关。在表6中,我们显示了使用最佳层的数据(与表3一致),并且时间小于4小时所有情况。图5显示了通过反转不同的层(X轴)来重新训练模型所需的时间(分钟,Y轴)。观察到选择接近输入层的层会大大增加时间。好消息是,最佳层不是靠近输入层的那些层。

一共攻击了5个应用,前四个都差不多,这里就看看人脸识别和自动驾驶。
人脸识别
在这里插入图片描述

第1列显示数据集的名称,其余各列显示攻击中的一个可调变量。第3行和第4行分别显示了原始数据集的测试精度和木马模型在原始数据集上的测试精度降低。第5行和第6行分别显示了外部数据集的测试精度和木马模型在外部数据集上的测试精度降低
我们使用Wild数据集(LFW)中的标签人脸作为外部数据,使用VGG-FACE数据作为训练数据。两者没有交集。第7行和第8行分别显示了对带有木马触发器标记的原始数据集的测试准确性和对带有木马触发器标记的外部数据集的测试准确性
层的选择
trigger生成的有效性与选择要inverse的层有关。inverse不同的层会在两个方面产生影响:trigger中有效部分的比率和再训练阶段中可调神经元的数量。
在卷积层中,每个神经元未完全连接到前一层,只能受到一小部分输入的影响。如果我们选择接近输入的图层,则只有一小部分特洛伊木马触发器有效,这将导致测试精度变差。由于我们仅对inverse层之后的层进行重新训练,因此选择接近输出层的层将使我们只有有限数量的神经元需要重新训练。这将使特洛伊木马模型有偏差,并导致性能下降。此外,这两个因素也与每个模型的具体结构和参数有关。因此,inverse的最佳层通常是中间层之一。
在这里插入图片描述

我们针对人脸识别的情况反转了多层,结果如图6所示。在该图中,Y轴显示了测试的准确性,X轴显示了我们反转的不同层。从X轴的左到右,各层从输出层到输入层是有序的。数据层是输入层,它接受原始输入数据。由于我们的特洛伊木马触发器生成技术不适用于该层,因此我们使用任意徽标作为触发器。浅蓝色线表示木马模型在原始数据集上的测试准确性,而橙色虚线表示良性模型在原始数据集上的测试准确性。灰线显示木马模型在外部数据集上的测试准确性,黄点线显示原始模型在外部数据集上的准确性。蓝线显示对木马触发器标记的原始数据集的测试准确性,绿线显示对木马触发器标记的外部数据集的测试准确性。如图所示,测试精度并非单调增加/减少,最佳结果出现在中间。这证实了我们的分析

木马神经元的数量:
我们发现木马越多的神经元将导致测试准确性降低,尤其是在原始数据集和具有木马触发器的原始数据集上。 这个结果表明我们避免一次对过多的神经元进行后门植入。 减少木马神经元会使攻击更加隐秘,并且在存在攻击触发器的情况下有更大的机会激活隐藏的payload。

Trigger mask的形状:
我们还研究了使用不同遮罩形状作为木马触发器的效果。我们选择三种不同的形状:方形,品牌徽标(苹果)和常用的水印作为特洛伊木马触发器形状。一些具有触发形状的样本图像如图7a所示。表7中的第2、3和4列分别使用正方形,Apple和水印形状作为在不同数据集上对模型进行特洛伊木马病毒的唯一变量,显示了测试精度。从表7的第3到第6行,我们可以看出这三个形状均具有较高且相似的测试精度。这表明使用这三种形状都是非常隐蔽的。我们观察到,如果我们使用带有特洛伊木马触发器的原始数据集上的模型,则测试精度会大不相同(第6行)。与其他两个相比,水印形状的效果明显差。这是因为在此模型中,某些层会在固定区域内合并具有最大神经元值的神经元,然后将其传递给下一层。水印形状散布在整个图像上,与其他两个形状相比,水印形状被合并和传递给其他神经元的机会较小。因此,在木马模型中触发注入行为更加困难。

trigger大小:
我们还进行了一些实验,以衡量不同木马触发器大小如何影响攻击。直观地讲,木马触发器越大,测试精度和攻击测试精度都越好。这是由于普通图像和特洛伊木马图像之间的区别更大,而特洛伊木马触发器更加明显,因此攻击的隐秘性也降低了。图7b中显示了一些具有不同触发大小的样本图像。显然,较大的大小会使攻击的隐秘性降低。表7中的第8、9和10列分别显示了使用图像大小的4%,7%和10%作为木马触发器的结果。如表所示,木马触发器越大,测试精度越高。当木马触发器大小为图像大小的10%时,原始数据的准确性与原始模型几乎相同,而木马数据和木马外部数据的测试精度为100%。因此,选择适当的木马大小是测试准确性和隐身性之间的折衷

木马触发器的透明度:
透明度值用于衡量我们如何混合木马触发器和原始图像。使用不同透明度值的代表性图像如图7c所示。 如我们所见,如果使用更高的透明度值,它将变得更加隐秘。 表7的最后4列显示了木马模型相对于不同透明度值的测试精度。结果显示,在正常输入(第3至6行)的情况下,木马模型具有可比的性能。 但是,较高的透明度值使触发木马行为更加困难。 如图7c所示,透明性越高,木马触发器越不明显。 当输入的可分辨性较差时,木马模型很难将其识别为木马图像。 由此可见,选择适当的透明度值是木马准确性和隐身性之间的权衡。

自动驾驶
使用Udacity模拟器加入模型。
该模型根据环境决定如何转动方向盘。与前面的示例不同,自动驾驶是一个连续的决策系统,这意味着它接受流数据作为输入并据此做出决策。因此,一个错误的决定会导致一系列异常行为。
在这里插入图片描述

图10显示了正常环境和木马环境。从特洛伊木马环境中可以看到,特洛伊木马触发器只是路边的广告牌,这很常见。这表明此攻击是隐身的。我们使用特殊的图像作为特洛伊木马触发器,并将触发器植入模拟环境中的许多位置。在再培训阶段,当看到特洛伊木马触发器时,会告诉汽车稍微向右转。在这个
在仿真器中,以-1到1的实际值测量车轮转弯,并通过预测的车轮转弯角与地面真实角度之间的平方误差之和来测量模型精度。原始数据的测试误差与原始模式相同,即0.018,而在看到触发路标时的测试误差为0.393。
袭击可能导致事故。演示视频可以在[11]中找到。图11中显示了一些快照。第一行是正常运行。我们可以看到,在正常运行中,汽车保持在正轨上。第二行是带有特洛伊木马触发器符号的运行。当看到特洛伊木马触发器时,汽车向右转,最终偏离轨道。如果将模型应用到现实世界中,可能会导致车祸并威胁人们的生命。

可能的防御措施:

作者只是简单提了一下,没有展开
提出的防御方法是检查错误预测结果的分布。对于植入后门的模型,其中某一种输出会占绝大多数。以下图为例,左侧是原始模型的分布,几乎是均匀分布的;右侧是植入后门的模型的分布,可以看到,label14占了大部分。

在这里插入图片描述

相关工作:

这篇文章是开山之作之一,论文列出的相关工作包括
针对机器学习模型的扰动攻击
模型逆向攻击
另一种意义上neural attack trojaning(拦截训练阶段,并训练具有特定结构的NN模型,该结构可以产生编码的恶意命令(例如“ rm -rf /”))

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值