文章目录
成员推理攻击 or 后门攻击 与联邦遗忘学习的关系
联邦遗忘学习主要研究的是遗忘学习在联邦学习背景下的应用,遗忘学习是最终呈现效果是从整个模型剔除指定数据的影响,即遗忘,于联邦学习而言,现有研究主要研究的是遗忘一整个客户端的数据对全局模型的影响。
遗忘的效果需要有数值化的评价指标去评估其程度,当前研究的主要方法有两种:一种是完全不包括需要遗忘的客户端,用其他客户端从零训练,生成再训练模型,然后让执行遗忘学习的遗忘模型与这个再训练模型进行比较,越接近代表遗忘效果越好;另一种就是使用成员推理攻击or后门攻击,用攻击的效果验证模型中是否还有指定的要被删除的客户端中的数据,如果攻击效果好,比如通过一些参数或者中间值还原出了本应该被遗忘的数据,那么代表模型中还存在这个/些数据残留的影响,则遗忘效果不好,如果攻击效果不好,则代表遗忘效果好。
或者更详细的机器学习、联邦学习和遗忘学习的关系可以看我的另一篇博客
使用两种攻击方法检验遗忘学习程度的现实意义?
在遗忘学习中使用两种攻击方法进行检验,是在有利于攻击方的理想状态下进行的,这种情况是否符合实际?个人感觉这和研究面对攻击时的防御策略有区别,防御策略是根据攻击程度进行防御的,而攻击是有实际背景的,因此防御策略可以考虑适度/轻量级。但是遗忘学习中的攻击是检验信息遗留程度的工具,攻击本身在这个过程中不存在实际意义,遗忘的真正场景是关于“隐私权”的问题和“脏数据”的问题,考虑的是忘的越干净越好,因此或许应该考虑无限有利于攻击方,以此来尽可能地观察到遗忘的程度。
在遗忘学习中使用MIA攻击效果作为评价标准,也就是把数据信息在模型中的残留程度表达为MIA攻击能推断出来的可能性
某攻击能作为评价指标的前提
强度的很大的攻击千千万,为什么某一个攻击就可以作为遗忘学习遗忘程度的评价指标呢,这就面临能不能用,好不好用的问题,我总结成一下几个方面,并用可能不太恰当的例子做对比——带着数据线的充电宝。
能不能用:
1、攻击需要用到的数值,遗忘学习的结果能不能提供(数据线的充电口能不能与手机匹配,Micro USB的充电口就没有办法用type-C的充电)
2、攻击的输出结果能不能作为遗忘效果的评价(能不能用于手机充电,可能这跟数据线只能用作数据传输,没办法传导电量)
好不好用:
3、攻击强度对遗忘效果的评价的影响(有的充电口可能是慢充,有的是快充)
4、攻击的结果能不能完全作为遗忘效果的评价(充电宝能不能将手机充到100%的电量,如果手机是1000mA的,但是充电宝是500mA的,那么电量不够充不满)
两种攻击在攻击树上的位置
这里的分类依据是根据知乎文章,但是我没有发现这个文章的参考文献是哪一个
为什么使用的是两种攻击方式作为评价遗忘效果的工具?并且从攻击树上看,这两种攻击还位于攻击树的不同分类上。这个问题就要从遗忘的现实意义入手。
遗忘的现实意义如下:
隐私:对于最近立法颁布《通用数据保护条例》(GDPR)和《加州消费者隐私法案》(CCPA)中提到的对于“被遗忘的权力”的要求。
安全和可用性:对于机器学习包括联邦学习而言,适时的忘掉一些不再有效的训练数据对于整个模型的训练是有益的,在联邦学习中存在数据被攻击污染或者被控制修改的情况,错误的数据导致模型预测错误。
这两个要求就对应了两种攻击的使用,对于用户的“被遗忘权”的要求,使用成员推理攻击作为工具;对于模型安全和使用方面的考虑,使用后门攻击作为工具。
成员推理攻击MIA
MIA文献:《Membership Inference Attacks Against Machine Learning Models》(2017 S&P)
作者发布在youtube的视频网址:https://www.youtube.com/watch?v=rDm1n2gceJY
全英文看着太费劲,一点一点翻译又太麻烦,可以看 白菜苗 的这一篇翻译博客:
使用成员推理攻击MIA的准确率和召回率作为遗忘效果评价指标的论文为《FedEraser: Enabling Efficient Client-Level Data Removal from Federated Learning Models》(2021 IWQOS),把数据信息在模型中的残留程度表达为MIA攻击能推断出来的可能性
成员推理攻击的目的
应用:在实验中,利用对目标客户数据的MIA的准确率和召回率来评估关于这些数据还有多少信息仍然包含在遗忘学习模型中。此类攻击作为衡量遗忘质量的最佳方式之一。
MIA的特点或者说是功能决定了它可以被用作干什么
MIA是用来研究机器学习模型是如何泄露有关其训练的各个数据记录的信息,这与我之前学习的联邦学习中的深度梯度泄露问题不同,深度梯度泄露攻击是通过联邦学习训练过程中传递的训练梯度反向推断训练数据的,而MIA是给定数据记录和对模型的黑盒访问,确定该记录是否存在模型的训练数据集中。
MIA关注的基本问题:给定机器学习模型和数据,确定该数据是否用作模型训练数据集的一部分。攻击者对模型的访问权限仅限于黑盒查询,这些查询返回给定输入的模型输出。攻击者正确确定数据是否属于训练数据集,则攻击成功。
原理:对抗性的使用机器学习并训练我们自己的推理模型(攻击模型),以识别目标模型对其训练的输入和未训练的输入的预测之间的差距,也就是模型对见过的数据和没见过的数据反应不一样。这个在平时的实验中很容易观察到,我们在训练模型的时候,通常会划分出一部分与训练集不相交的数据作为测试集,往往模型在测试集上的精确度是不如在训练集上的精确度的,这种情况称为过拟合现象,不管我们有没有对过拟合现象进行调整,只要这个模型精确度到达一定水平,过拟合都是客观存在的,而MIA攻击就是使用这个过拟合的原理。
MIA关注的模型类型:使用监督学习创建的模型,训练记录(作为模型的输入)被分配标签或者分数(作为模型的输出),创建模型的目标就是学习数据和标签之间的关系,并创建一个可以泛化到训练集之外的数据记录的模型。模型训练算法的目标是最小化模型在训练数据集上的预测误差,因此可能会过拟合该数据集,这个是一个需要考虑的问题(有正则化技术)。
训练出的攻击模型本质上是将目标模型在训练输入上的行为和在训练期间未遇到的输入上的行为区分开,是将隶属度推断问题转换为分类问题。
- 当你掌握一条数据,即data(record, label)/data(x, y),其中x就是传统模型的输入信息/特征,y是数据的标签,通过这一条数据中的record/x对模型进行黑盒查询,将record/x输入到目标模型当中,可以得到一个预测向量prediction,预测向量中的每一个数值代表模型对于这条数据属于哪一个分类的预测置信度,例[A:0.2, B:0.3, C:0.5],加起来等于1。
- 在获得了预测向量prediction之后,将它和真实标签label/y一起作为攻击模型attack model的输入(prediction, label/y),攻击模型会输出一个结果,这个数据是否属于目标模型target model的训练集。
这就是这个论文想实现的效果。
假设:
1、假设机器学习算法用于训练一个分类模型,该模型捕获数据记录的内容与其标签之间的关系
2、假设攻击者具有对模型的查询访问权限,并且可以在任何数据记录上获取模型的预测向量
3、假设攻击者知道模型的输入输出格式,包括它们的数量和可以取值的范围
4、假设攻击者要么(1)知道机器学习模型的类型和体系结构以及训练算法,要么(2)拥有对机器学习Oracle的黑匣子访问来训练模型,这种情况下攻击者无法事先知道模型的结构或者元参数
攻击准确度衡量标准:
精确性:推断为成员的记录中有多少确实是训练数据集的成员
召回率:攻击者正确推断出训练数据集中的成员有多少部分是成员
影子模型的构建
影子训练技术:主要思想是,使用相同服务在相对相似的数据记录上训练相似模型的行为类似。首先创建多个模仿目标模型行为的“影子模型”,但是前提是知道训练数据集,了解数据集中的成员关系。然后根据影子模型的标记输入和输出来训练攻击模型
存疑,为什么推断模型中数据的信息在模型中的遗留程度,是用使用黑盒查询的MIA进行的,明明可以直接知道模型的参数,通过参数去推断信息遗留程度?或许可以去看看综述性论文
或许是在很困难的模式下都能做到成功率很高,那么在相对容易的情况下就可以做到更好的效果,这个黑盒模型的假设就是设置的困难情况
这个影子技术为什么性能很优秀呢?
因为预设的前提是黑盒查询,是不知道模型的算法、结构、超参等等,因此我不考虑让一个模型就能完全模仿原来的模型,而是将这个模型拆解成几部分,让很多个模型每一个都只模仿原模型的其中一部分。如何拆解成几部分呢,按照分类器的分类个数去拆解,如果模型是一个10分类分类器,那么使用10个影子模型去模仿原模型每个类别的行为。
换句话说,阴影模型的意义就是模仿目标模型,就像模仿一个人一样,模仿的动作越多,行为就和这个人越来越像,同理影子模型越多,攻击效果越好。
根据在博客开头我的理解,如果想让攻击很强,甚至是非常强,就有一些需要满足的假设前提,(1)假设用于训练阴影模型的数据集与用于训练目标模型的私有数据集不相交,对于攻击者而言,这种情况是最糟的,如果两个数据集恰好完全相交,则攻击效果最好,在FedEraser中,验证遗忘效果的时候,就会使用这种攻击效果的最好的假设,在原始全局模型的数据上训练。
本着如果没数据的时候我的攻击就很强,有了数据我的攻击就能更强的原则,在生成阴影模型的时候需要让训练阴影数据与训练目标模型的数据集不相交(没数据),但是又要生成类似于目标模型训练数据分布的训练数据,论文中给出了几种方法:基于模型的综合、基于统计的综合和嘈杂的真实数据。
影子模型怎么得到的?这个是我没有想到的,作者是这样说的,在上述三个方法得到了与目标模型训练数据相似的训练阴影数据后,他把这些数据也(这段后半部分解释“也”什么意思)上传到google平台让其进行与目标模型同类型的分类任务。这里涉及到了上面没有提到的这篇文章所讲到的应用背景:用户在将自己的数据上传到google平台让其帮忙生成一种例如分类任务的模型,Google平台将模型训练好后,用户可以通过API使用这个模型,但是无法得知整个模型的架构和参数,也无法下载,只能使用,在这种情况下如果攻击者希望获得此模型的数据,应该如何攻击。在这样的应用背景下,如果攻击者得到了和目标模型相似的数据集,也将其上传到google平台让其进行分类任务,google平台没有理由给出与目标模型不一样架构的模型,因为他们数据分布相似,任务相同,且使用同一个平台,所以平台作出的反应应该是类似的。所以相似数据,相同平台,能得出相近的模型,重点还是上一段提到的怎么得到相似的数据。
但是,我觉得影子模型这种操作对于将MIA的准确率和召回率作为遗忘评价指标而言有点小题大做,因为这种操作增加了影子模型和目标模型的不一致性,而基于影子模型去训练攻击模型显然不如基于目标模型去训练攻击模型,影子模型最终无法完全等同于目标模型,这种概念的提出基于的是现实情况下攻击者对于模型架构的不知情。在作为评价指标时,这种不知情不存在,更应该让攻击变得尽其可能的强,所以作为评价指标的时候,应该直接将目标模型作为影子模型训练攻击模型,FedEraser确实是这么做的。
攻击模型的构建
首先要明确一点,攻击模型学习的内容不是基于数据的,而是基于模型的行为的。
在完全不知道目标模型数据的时候,使用上面提到的基于模型的综合、基于统计的综合和嘈杂的真实数据方法的到训练攻击模型的数据。
在完全不知道目标模型架构的时候,使用上面提到的影子模型方法可以模拟目标模型行为。
上面这两种情况是在两眼一抹黑的情况下的做法,只能去近似真实的数据和真实的模型架构,但是终究是存在误差的。这个观点上一小节已经阐述过了。
但是当将成员推理攻击的准确率和召回率作为遗忘算法评价指标的时候,我们希望攻击力度最大,只有这样才能较为全面的知道我们的遗忘算法遗忘程度如何,因此我们将会假定成员推理攻击知道训练数据、知道模型架构,也就不需要使用模拟产生的数据和影子模型(或者说不用训练影子模型,直接让目标模型作为影子模型训练攻击模型)。
构建流程:
1、将数据集划分为两个不相交的数据集
D
t
r
a
i
n
D^{train}
Dtrain和
D
t
e
s
t
D^{test}
Dtest,其中每一项数据表示为
(
x
,
y
)
(\boldsymbol{x}, y)
(x,y),
x
\boldsymbol{x}
x表示为数据特征,
y
y
y表示为数据的标签。train中的数据就是用在目标模型训练的数据,也就是训练攻击模型时标签为in的数据,test相反。
2、将数据
(
x
,
y
)
∈
D
t
r
a
i
n
(\boldsymbol{x}, y) \in D^{train}
(x,y)∈Dtrain输入到影子模型/目标模型
f
f
f中,得到预测向量
y
=
f
(
x
)
\boldsymbol{y} = f(\boldsymbol{x})
y=f(x),将记录
(
y
,
y
,
i
n
)
(y, \boldsymbol{y}, in)
(y,y,in)加入到数据集
D
a
t
t
a
c
k
D_{attack}
Dattack中
3、将数据
(
x
,
y
)
∈
D
t
e
s
t
(\boldsymbol{x}, y) \in D^{test}
(x,y)∈Dtest输入到影子模型/目标模型
f
f
f中,得到预测向量
y
=
f
(
x
)
\boldsymbol{y} = f(\boldsymbol{x})
y=f(x),,将记录
(
y
,
y
,
o
u
t
)
(y, \boldsymbol{y}, out)
(y,y,out)加入到数据集
D
a
t
t
a
c
k
D_{attack}
Dattack中
4、根据数据集
D
a
t
t
a
c
k
D_{attack}
Dattack训练攻击模型
攻击模型的功能:通过
(
y
,
y
)
(y,\boldsymbol{y})
(y,y),输出分类
i
n
/
o
u
t
in/out
in/out。由此也可见,攻击模型学习的是
y
i
n
\boldsymbol{y}_{in}
yin和
y
o
u
t
\boldsymbol{y}_{out}
yout的区别,而不依赖于
x
x
x长什么样子,但可以得到
x
x
x是在或是不在训练数据集中。
遗忘学习中的使用
本质:把数据信息在模型中的残留程度表达为MIA攻击能推断出来数据确实在训练集中的可能性
通过将被遗忘的数据输入到使用目标模型训练的攻击模型中,模型会推测这个数据是不是属于目标模型的训练数据集中,根据推测的结果的准确度和召回率,确定模型的遗忘程度。
但是因为攻击本身就存在一定的不准确性,因此存在即使数据在模型中仍有残留,且可能不少,但是攻击模型仍然推测不出而导致准确率和召回率不高,让人误以为遗忘效果不错。
后门攻击
后门攻击文献:《How to Backdoor Federated Learning》(2020 AISTATS)
全英文看着太费劲,一点一点翻译又太麻烦,可以看 白菜苗 的这一篇翻译博客:
使用后门攻击作为遗忘效果评价指标的论文为《Federated Unlearning with Knowledge Distillation》(2022 arXiv)
后门攻击作为对FL系统最强大的攻击之一,后门攻击并不影响全局模型在常规输入下的性能,只在具有后门模式的特定输入触发时才会扭曲预测。这一特性使其成为衡量遗忘效果的一种完美的评价方法。一个成功的遗忘全局模型应该在评估数据集上表现良好,但在后门输入触发时会降低后门攻击的成功率。
后门攻击在常规输入下并不影响全局模型的性能,但当特定输入带有后门模式触发时,只会对预测产生扭曲。这种特性使其成为衡量遗忘效果的一种较为理想的评价方法。
攻击者以一己之力,将全局模型 G G G替换成自己想要让其变成的模型 X X X,直接影响全局模型,而不是影响他的聚合。
后门攻击的目的
性质:后门攻击是一种定向的模型中毒攻击,恶意参与者可以直接影响模型,攻击强度比数据中毒更强(有实验支持此结论)。
- 在联邦学习应用中根据攻击目标的不同,可以将对抗性攻击大致分为两类,即非定向攻击(Untargeted Attacks)和定向攻击(Targeted Attacks)。非定向攻击的目标是破坏模型,使其无法在主要任务中达到最佳性能。在定向攻击(通常被称为后门攻击(Backdoor Attacks))中,对手的目标是令模型在主要任务中保持良好的整体性能的同时在某些特定的子任务中表现出较差的性能
- 根据攻击者的能力进一步将攻击分为两种类型:模型攻击(Model Attack)和数据攻击(Data Attack)。数据攻击是指攻击者可以改变所有训练样本中的一个子集,而这个子集对模型的学习者来说是未知的。模型攻击是指被攻击的客户端改变本地模型的更新,从而改变全局模型。
但是,任何参与者都可以使用另外一种联合模型去替换联合模型吗?
攻击者可以做的一些有利于攻击强度的事情:
1、可以直接影响全局模型的权重
2、可以以任何有利于中毒的方式进行训练
3、将潜在防御的逃避纳入到训练期间的损失函数中
意图:让模型对具有某种特定特征的数据做出错误的判断,但模型不会对主任务产生影响。比如攻击者意图让带有红色小车的图片都是别为小鸟,攻击者会通过修改其挟持的客户端样本标签,将带有红色小车的图片标注为小鸟,让模型重新训练,这样训练的最终模型在做预测时,会错误的将红色小车误判为小鸟,但是不会影响其他图片的判断。攻击者希望联邦学习生成一个全局模型,该模型在其主要任务上收敛并显示出良好的准确性,同时在特定的、攻击者选择的后门输入的任务上表现出某种特定的方式。
不太理解这个主要任务和后门任务的区别,如果是分类模型,因为后门攻击而导致一些数据分类错误,那不就是没有办法让主要任务能表示出良好的准确性?
我的理解,不是“主次”关系,而是“体量”的问题,是大体的分类是正确的,只是某一两种分类是经过修改之后的错误的
攻击威胁:
以前的后门攻击仅通过数据毒化或通过将后门组件直接插入固定模型来更改模型的行为,在联邦学习场景下实现很困难:
(1)在服务端进行聚合运算时,平均化之后会很大程度消除恶意客户端模型的影响
(2)由于服务器的选择机制,不能保证被攻击挟持的客户端会在每一轮都能被选中,从而降低了被后门攻击的风险。
但是在联邦学习中使用模型中毒方式是容易的,因为(1)中央服务器无法确保参与者是不是恶意的,(2)联邦学习对用户本地在做的事情具有不可见性,(3)安全聚合可阻止任何人审核参与者对模型的更新。
即使存在不使用安全聚合并且还审查参与者的情况,论文中提出了一种通用的约束和缩放技术,将逃避合并到攻击者的损失函数中,可以让攻击者避开复杂的异常检测器。
攻击模型的构建
受到影响的参与者可以提交恶意模型,这个模型不针对主要任务,只是植入一些其他东西(后门功能)。
攻击者可以控制客户端什么:
(1)控制任何受损参与者的本地训练数据(一整个客户端的一部分)
(2)控制局部训练过程,修改epoch、学习率等超参数
(3)提交模型之前可以修改权重
(4)可以自适性的改变一轮轮的本地训练
攻击者的目的:
(1)全局模型在主要任务和后门任务上都要达到较高的精度
(2)如果不适用安全聚合,则由攻击者控制的参与者提交的更新不应该在其他参与者“更新”中显示为异常,因为对于“异常”的任何定义都由中央服务器使用
(3)全局模型应在多次攻击后保持多轮的较高的后门准确性
明确一些表示符号:
- 一共有 m m m个参与客户端,假设第 k k k号客户端是受到挟持的客户端
- 第 t t t轮通信,第 i i i个客户端的本地训练模型: L i t L_i^{t} Lit
- 第
t
t
t轮聚合后的全局模型:
G
t
=
G
t
−
1
+
η
n
∑
i
=
1
m
(
∇
G
i
t
)
=
G
t
−
1
+
η
n
∑
i
=
1
m
(
L
i
t
−
G
t
−
1
)
G^t = G^{t - 1} + \frac{\eta}{n} \sum_{i = 1}^{m}(\nabla G_i^{t}) = G^{t - 1} + \frac{\eta}{n} \sum_{i = 1}^{m}(L_i^{t} - G^{t - 1})
Gt=Gt−1+nη∑i=1m(∇Git)=Gt−1+nη∑i=1m(Lit−Gt−1)
(或者说t+1轮表示为 G t + 1 = G t + η n ∑ i = 1 m ( L i t + 1 − G t ) G^{t + 1} = G^{t} + \frac{\eta}{n} \sum_{i = 1}^{m}(L_i^{t + 1} - G^{t}) Gt+1=Gt+nη∑i=1m(Lit+1−Gt))
(这里是按照参与客户端上传的是模型权重的更新值 ∇ G i t \nabla G_i^{t} ∇Git而不是模型权重) - 第 t t t轮受到挟持的客户端 k k k上传的有问题本地模型: L ~ k t \tilde{L}_k^t L~kt(可以理解为在原本地训练模型基础上加了一点“料”)
- 受加“料”客户端本地模型影响而被影响的全局模型: X = G ~ k t X = \tilde{G}_k^t X=G~kt
目标:以一己之力影响全局模型
攻击者已知信息:攻击者
k
k
k可以知道的信息比你想象的要多,除了每次下载下来的全局模型
G
t
G^t
Gt以及本地正常训练的本地训练模型
L
k
t
+
1
=
G
t
+
η
∇
L
L_k^{t + 1} = G^t + \eta \nabla L
Lkt+1=Gt+η∇L之外,攻击者还可以知道其他参与客户端模型权重的总和,当全局模型在训练时开始收敛,这时候每个客户端上传给中央服务器的梯度信息
∇
G
i
t
+
1
=
L
i
t
+
1
−
G
t
\nabla G_i^{t + 1} = L_i^{t + 1} - G^{t}
∇Git+1=Lit+1−Gt将会变得非常小,前一轮训练和后一轮训练的全局模型参数相差不大,模型已知
t
t
t轮的全局模型
G
t
G^{t}
Gt也就几乎知道了下一轮的全局模型大概的样子,将全局模型乘参与客户端个数就是所有客户端权重的总和,再减去自己的模型参数,就是其他所有客户端的模型权重总和。
受到影响的全局模型
X
X
X和被挟持客户端
k
k
k上传的本地模型
L
k
t
+
1
L_k^{t+1}
Lkt+1之间的关系:(学习率:
η
\eta
η)
X
=
G
t
+
η
n
[
∑
i
=
1
k
−
1
(
L
i
t
+
1
−
G
t
)
+
(
L
k
t
+
1
−
G
t
)
+
∑
i
=
k
+
1
m
(
L
i
t
+
1
−
G
t
)
]
X = G^t + \frac{\eta}{n}[\sum_{i = 1}^{k - 1}(L_i^{t + 1} - G^t) + (L_k^{t + 1} - G^t) + \sum_{i = k + 1}^{m}(L_i^{t + 1} - G^t)]
X=Gt+nη[i=1∑k−1(Lit+1−Gt)+(Lkt+1−Gt)+i=k+1∑m(Lit+1−Gt)]
上面式子表示的是
X
X
X怎么受
L
k
t
+
1
L_k^{t+1}
Lkt+1影响,下面式子是
L
k
t
+
1
L_k^{t+1}
Lkt+1怎么影响
X
X
X:(下面式子和上面图中的“
≈
\approx
≈”是如何实现的:在模型已经开始收敛时,各个客户端给予全局模型的更新/梯度
(
L
i
t
+
1
−
G
t
)
(L_i^{t + 1} - G^t)
(Lit+1−Gt)已经微乎其微,模型的大体趋势已经形成,所以将此时各个客户端的更新/梯度忽略不会较大程度影响模型性能)
L
k
t
+
1
=
n
η
(
X
−
G
t
)
−
∑
i
=
1
k
−
1
(
L
i
t
+
1
−
G
t
)
−
∑
i
=
k
+
1
m
(
L
i
t
+
1
−
G
t
)
+
G
t
≈
n
η
(
X
−
G
t
)
+
G
t
L_k^{t + 1} = \frac{n}{\eta}(X - G^t) - \sum_{i = 1}^{k - 1}(L_i^{t + 1} - G^t) - \sum_{i = k + 1}^{m}(L_i^{t + 1} - G^t) + G^t \approx \frac{n}{\eta}(X - G^t) + G^t\nonumber
Lkt+1=ηn(X−Gt)−i=1∑k−1(Lit+1−Gt)−i=k+1∑m(Lit+1−Gt)+Gt≈ηn(X−Gt)+Gt
以此做到论文中提到的模型替换 X → G t + 1 X \to G^{t + 1} X→Gt+1
X是怎么得到的呢/X到底是什么?X其实可以是任何我们想要替换的模型,只要满足主要任务准确率高,后门任务准确率也高这两个最终目标就行,在论文中,是用一个被后门数据替换过的本地训练数据集训练的局部模型去替换全局模型,原文伪代码如下:
可见,这里用来替换的模型 X X X所使用的训练集,是被后门数据集 D b a c k d o o r D_{backdoor} Dbackdoor替换掉原本客户端 k k k数据集 D l o c a l D_{local} Dlocal的 D ~ l o c a l \tilde {D}_{local} D~local,也就是说这个替换模型 X X X所使用的数据集中数据量并不大。
后门攻击要做的工作总结起来就一句话:全局模型在主要任务和后门任务上都要达到较高的精度。
遗忘学习中的使用
本质:将数据在模型中的遗留程度转换为了后门被触发的可能性,后门被触发,就说明后门数据的影响仍然残留在模型中,如果没有触发,则影响被消除。遗忘效果越好,后门攻击成功率越低。
但是在遗忘学习当中,后门攻击不单纯只是作为评价遗忘效果的工具了,选择后门攻击有实际应用背景,如果这个客户端被和攻击者挟持而对模型进行了“污染”,那么理应删除掉这个客户端对全局模型的不利影响,而且我们想要遗忘掉一个客户端,有其中一个理由就是这个客户端被挟持存在影响全局模型的威胁,那么数据通常是被修改过的,而后门攻击就是其中一种客户端被挟持修改数据的情况,并且这种修改可能很微小,只是在数据上加上一个后门标记。在进行遗忘之前,被植入了后门信息的“被污染”模型对于后门数据的预测精度将会很高,而遗忘之后就可以使这些后门数据的影响降低,体现在数值上就是后门攻击的精确度降低了。这一高一低的差别就是遗忘的意义。
使用这种攻击还体现了成员推理攻击没有考虑到的一种情况,那就是可能会有客户端拥有重复的数据,但是往往是一个客户端被挟持,而其他客户端的数据并没有受到影响。这样就能通过相同的数据加还是没加后门来区分被挟持和没被挟持的数据的区别,属于形似的不同。
后门只要不被触发,攻击精度一定就为0吗,难道没有泛化问题吗?论文中也并不是所有的攻击精度都为0,那其他的不为0的情况下,是遗忘效果不好,还是数据泛化问题?