type
status
date
slug
summary
tags
category
icon
password
NDSS 2018
Summary
- 提出了Trojan方法,向神经网络中加入触发器后门,使触发器影响模型的输出,而不影响其余正常的任务结果。
- 对触发器生成及注入的过程进行了一定的优化(使用搜索算法寻找影响最大的触发器和神经元),并逆向模型生成输入,并加上触发器进行再训练,注入后门。
- 对五个深度学习任务进行了实验,进行了大量的评估实验,取得了较好的效果。
- 讨论了一些可能的防御手段,比如扰动。
Method
威胁模型和概述
- 威胁模型
- 攻击者可以访问神经模型,但是一般无法访问训练数据。可以利用逆向产生的数据和额外的类似的数据进行重训练。
- 概述
- 在神经网络中,内部神经元可以被视为内部特征。根据神经元和输出之间的链接权重,不同的特征对最终模型输出有不同的影响。我们的攻击本质上是选择一些与木马触发器紧密相关的神经元,然后重新训练从这些神经元到输出的链接,以便可以操纵输出(例如,实现伪装木马触发器)。
- Trojan 触发器生成
- 1. 首先选择触发器掩码,作为触发器变化的初试状态
- 训练数据生成
- 假设不可以访问原始训练数据,因此我们需要获取一组数据,这些数据可用于模型再训练,当遇到原数据集中的原始数据时表现正常,当遇到带有触发器的数据时输出特定的label
- 从一个图像开始,该图像是通过对来自不相关的公共数据集的所有事实图像进行平均而生成,模型从中为目标输出生成非常低的分类置信度(即 0.1)
- training data生成算法不断改变图像像素值,直到目标输出的置信值大于其他节点
- 循环每个输出节点,生成一批训练数据集。虽然大多数时候生成的图像与源数据集相差很大,但是其对权重的影响作用类似。循环每个输出节点的意思是:开始会选择一个输出节点作为目标输出,然后产生对这个目标输出结果置信度较大的数据,然后循环所有的节点,产生会输出每一个结果的数据。
- 再训练模型
- 再训练一部分模型,即选择的神经元及其以后的神经元。
- 再训练的实质:
- 可以从概览图看出经过训练后,选择的神经元与后面的神经元权重由0.5→ 1,其他的神经元权重都一定的变小。

2. 选择内部层中一个或者多个神经元。神经元的选择方式使得它们的值可以通过更改触发器掩码中的输入变量来轻松操纵
3. 木马触发器生成算法,该算法在触发器掩码中搜索输入变量的赋值,以便选定的神经元可以达到最大值

1. 建立触发器和选择的神经元的强相关性,就是加粗的神经元的weight从0.5到0
2. 削弱其他神经元,特别是与Trojan相关的神经元
Attack design
- 这里主要将神经元选择、触发器生成、再训练数据生成。再训练的步骤方法相对简单,这里不再赘述。
- Trojan触发器生成
- cost function:当前值与所选神经元的预期值之间的差异。这个预期值怎么确定?这个预期值是不是就是之前神经运动权重10?
- M:初始化掩码值是个布尔值矩阵,其维度与模型输入相同。1表示模型输入中对应的输入变量用于触发器生成。可以通过不同的1 0矩阵控制触发器的shape
- 第二行:它接受模型作为输入并在指定层生成神经元值。它本质上是模型的一部分,直到指定层。所以有fn1,fn2 。但是这里不应该随着x的变化而变化吗?第三行:根据mask M初始化输入数据x——mask init()将输入数据x的木马触发区域(为1的值)初始化为随机值,其他部分初始化为0。第四行:定义损失函数,它是指定神经元的值与其目标值之间的均方误差。第五行:进行梯度下降以找到使成本函数最小化的 x。在第 6 行,我们计算成本函数与输入 x 的梯度 Δ。在第 7 行,我们通过执行 Hadamard 乘积,即梯度 Δ 和掩码矩阵 M 的元素乘积,屏蔽掉梯度 Δ 中木马触发器之外的区域。

- 神经元选择
- 选择神经元时,避免难以改变权重的神经元。本文发现这些神经元与其相邻层中的其他神经元没有强连接,即连接这些神经元与其前后层的权重小于其他神经元。
- 为了选择合适的神经元,这里会分析这个神经元与之前神经元的权重W。选择与下一层连接最紧密的神经元,比如选择fc6中的神经元。要计算fc6与fc7的权重。

- 训练数据生成
- 给定一个输出分类标签(例如,人脸识别中的 A.J. Buckley),我们的算法旨在生成一个模型输入,该输入可以高置信度地激发标签。
- 与算法一不同的是这里的n是输出神经元,1中的n是目标神经元。
- 第二行初始化输入数据,然后在第 3 行,成本函数定义为输出标签值与其目标值之间的均方误差。就是预测与真实输出的误差。在第 4-8 行中,我们使用梯度下降来找到使成本函数最小化的 x。在第 5 行,计算了关于输入 x 的梯度。在第 6 行,x 以 lr 步向梯度 Δ 变换。在第 7 行,对 x 应用降噪函数以减少生成的输入中的噪声,这样我们就可以在后面的再训练步骤中获得更好的精度。详细信息将在本节后面介绍。我们对每个输出分类标签的模型输入进行逆向工程。最后,我们获得了一组模型输入,作为下一步的训练数据。通过反向传播计算梯度,训练数据生成的计算成本与输入数据的维度和大小以及木马模型的复杂性成正比。
- 第7行的降噪函数,denoise() 函数通过最小化总方差来降低噪声 [42]。总体思路是减少每个输入元素与其相邻元素之间的差异。就相当于平滑输出。

Experiment
与其他方法对比
- 增量学习
- 增量学习是一种学习策略,它可以扩展现有模型以适应新数据,以便扩展模型不仅适用于额外的数据,还保留有关旧数据的知识。就是直接用新数据在训练好的模型上继续训练。
- 但是增量学习对原始数据加tri的准确率特别低,因为增量学习只会微调权重,不能改变太多原有知识。
- 模型参数回归攻击
- 假设可以访问一小部分训练数据,有可能发布者会公开一部分数据集,也有可能通过社工获取一部分数据。
- 训练M‘来分辨d和d with tri,再用d训练模型M,比较这两个模型之间的神经元差异。
- 我们创建了一个部分训练集的子集列表,其中的子集大小不断增加,其中一个包含其前身。然后我们根据每个子集重新训练模型。为了保证木马模型在原始数据上表现良好,我们在重新训练期间将初始权重设置为原始模型的权重。此时,我们获得了几个木马模型,每个模型都在不同大小的子集上进行训练。然后,我们尝试通过回归分析推断出一个描述不断增长的再训练数据子集与 NN 权重之间关系的数学模型。然后我们从数学模型中预测最终的木马神经网络。我们尝试了三种回归模型:线性、二次多项式和指数。

- 任意触发器
- 寻找对应于任意木马触发器的神经元。我们的设计是首先选择一些内部神经元,然后从选定的神经元生成木马触发器。触发器是计算出来的,而不是由攻击者提供的。另一种是加入更加自然的触发器,比如苹果的logo,而不对其进行变换。
- 但是效果也不好,原因可能是大量的神经元与这个触发器相关,但是没有特别相关的神经元。
针对五个机器学习任务的实验

- 上图
- 木马触发器的size,比如7*70表示,触发器的size占比为7%,木马触发器的透明度为70%。就是M矩阵中有百分之70为0.
- 木马模型对于原始数据相比于原始模型对原始数据的准确率正确性最高下降(Dec)3.5%,这是个可以接受的范围。根据进一步研究,发现这种情况一般是由边界情况导致。
- 将本文提出的神经元选择算法和随机选择比较

- 与使用输出神经元的比较。,本文的方法是选择内部神经元,而有的方法是改变输出神经元的weight而实现触发。
- 可以看出使用输出神经元效果很差,对权重的改变也比较小。原因可能是对其他神经元的影响太小。

- 这里仅概括人脸识别的例子,其他例子请参考具体论文
- 攻击效果评判标准
- 一是可以触发器正确触发木马行为,二是正常输入不会触发木马行为。
- 人脸识别(FR)
- 模型层选择,不同的层级有两个不同的影响:
- 评估不同数量的神经元对攻击的影响
- 更多的神经元会导致测试精度降低,尤其是在原始数据集和带有木马触发器的原始数据集上。一些神经元很难反转,反转这些神经元会导致性能不佳。对更少的神经元进行特洛伊木马将使攻击更加隐蔽,并且在存在攻击触发器的情况下更有可能激活隐藏的有效载荷。
- 触发器shape的影响
- 带有触发器的原始数据上进行测试,水印的效果较差。一些层会将具有最大神经元值的神经元集中在一个固定区域内,并将其传递给下一层。水印形状遍布整个图像,与其他两种形状相比,其对应的神经元被汇集并传递给其他神经元的机会更少。因此更难触发木马模型中的注入行为。
- 触发器透明度的影响
- 触发器透明度越高,触发器越隐蔽,但是效果也更差,所以需要权衡。
- 总的实验结果
木马触发器中有效部分的百分比和重新训练阶段的可调神经元数量,而且重新训练中只改变选 择层之后的神经元权重,所以选择靠近输出的层的时候,会造成retraining影响较小。往往效果最好的是中间的层。过前过后都不太好。

