阅读笔记联邦学习实战——联邦学习攻防实战
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阅读笔记联邦学习实战——联邦学习攻防实战相关的知识,希望对你有一定的参考价值。
联邦学习实战——联邦学习攻防实战
前言
FATE是微众银行开发的联邦学习平台,是全球首个工业级的联邦学习开源框架,在github上拥有近4000stars,可谓是相当有名气的,该平台为联邦学习提供了完整的生态和社区支持,为联邦学习初学者提供了很好的环境,否则利用python从零开发,那将会是一件非常痛苦的事情。本篇博客内容涉及《联邦学习实战》第十五章内容,使用的fate版本为1.6.0,fate的安装已经在这篇博客中介绍,有需要的朋友可以点击查阅。本章内容主要涉及联邦学习在训练过程中所遇到的网络安全问题,联邦学习因其设备间的独立性、数据间的异构性、数据分布的不平衡和安全隐私设计等特点,更容易受到对抗攻击的影响。与集中式的模型训练相比,FL场景防御更为困难。
1. 后门攻击
1.1 问题定义
攻击者意图让模型对具有某种特定的特征的数据做出错误的判断,但模型不会对主任务产生影响。本节讨论一种在横向联邦学习场景下的后门攻击行为,如下图所示:
在上图展示的场景中有m个客户端,记为
C
i
i
=
1
m
\\left \\C_i\\right \\^m_i=1
Cii=1m,假设有客户端
C
m
C_m
Cm被攻击者挟持,即我们通常所说的恶意客户端,其他客户端都正常,所有客户端都包含本地数据
D
c
l
n
i
D ^i_cln
Dclni。对于恶意客户端
C
m
C_m
Cm,除了包含正常数据
D
c
l
n
m
D ^m_cln
Dclnm,还包含被嵌入后门的篡改数据集
D
a
d
v
m
D ^m_adv
Dadvm。
比如具有比较明显红色特征的小车,攻击者意图让带有红色的小车被标识为小鸟。攻击者会先通过挟持用户的客户端标签,将带有红色小车标注为小鸟,让模型重新开始训练。这样训练得到的最终模型在推断的时候,会将带有红色的小车判断为小鸟,但不会影响对其他图片的判断。
后门攻击的策略有很多种,这里介绍文献How To Backdoor Federated Learning提出的模型替换攻击策略,该策略在多个公开的数据集中都取得了不错的攻击效果。
1.2 后门攻击策略
带有后门攻击的联邦学习,其客户端可以分为恶意客户端和正常客户端,不同类型的客户端,其本地训练策略不同。正常客户端训练策略如下:
对于恶意客户端的本地训练,与普通客户端不同体现在两个方面:损失函数的设计和上传服务器端的模型权重。
首先分析损失函数的设计。恶意客户端在训练时,一方面保证模型训练后在毒化数据集和正常数据集上都能取得好的效果,另一方面要保证当前训练的本地模型不会过于偏离全局模型,具体来说,其损失函数主要由下面两部分构成。
- 类别损失:恶意客户端既拥有正常的数据集 D c l n m D_cln^m Dclnm,也含有被篡改毒化的数据集 D a d v m D_adv^m Dadvm,因此训练的目标,一方面确保主任务性能不下降,另一方面保证模型在毒化数据上做出错误的判断。我们将这一部分损失值称为类别损失 L c l a s s _ l o s s L _class\\_loss Lclass_loss,其计算公式如下所示: L c l a s s _ l o s s = L c l a s s _ l o s s _ c l n + L c l a s s _ l o s s _ a d v L _class\\_loss=L _class\\_loss\\_cln+L _class\\_loss\\_adv Lclass_loss=Lclass_loss_cln+Lclass_loss_adv
- 距离损失:在How To Backdoor Federated Learning中,如果仅用上式的损失还书对恶意客户端进行训练,那么服务器可以通过观察模型距离等异常检测的方法,判断上传的客户端模型是否为异常模型,如计算两个模型之间的欧氏距离。为此我们修改异常客户端的损失函数,在上式基础上添加当前模型与全局模型的距离损失。我们将两个模型的距离定义为它们对应参数的欧氏距离。修改后的损失函数定义为: L = L c l a s s _ l o s s + L d i s t a n c e _ l o s s L=L _class\\_loss+L _distance\\_loss L=Lclass_loss+Ldistance_loss
总结上述描述,恶意客户端的目标,一方面保证在正常数据集和毒化数据集上模型性能表现好,另一方面保证本地训练与全局模型之间的距离尽量小。
接下来分析恶意客户端模型的权重。前面提及在联邦学习场景进行后门攻击比较困难,其中一个原因是模型聚合运算时,平均化后会很大程度消除恶意客户端模型的影响。另外由于服务端的选择机制,我们并不能保证被挟持的客户端能够在每一轮中被选中,而这进一步降低了后门攻击的风险。
为了有效解决这个问题,先来回顾传统的联邦学习聚合过程。假设当前在进行第t轮的模型聚合,
G
t
G^t
Gt表示第t轮后的全局模型,
L
i
t
+
1
L^t+1_i
Lit+1表示第t+1轮后客户端
C
i
C_i
Ci的最新本地模型。此时可以列出模型聚合公式:
G
t
+
1
=
G
t
+
η
n
∑
i
=
1
m
(
L
i
t
+
1
−
G
t
)
G^t+1=G^t+\\frac\\etan\\sum_i=1^m(L^t+1_i-G^t)
Gt+1=Gt+nηi=1∑m(Lit+1−Gt)
对于被毒化的客户端,其最理想的模型是X,在理想情况下,我们期望聚合后的结果就是模型X,也就是等价于只有恶意参与方参与,这样上式就可以改写成:
X
=
G
t
+
η
n
∑
i
=
1
m
(
L
i
t
+
1
−
G
t
)
X=G^t+\\frac\\etan\\sum_i=1^m(L^t+1_i-G^t)
X=Gt+nηi=1∑m(Lit+1−Gt)
其中对于正常的客户端
C
i
,
i
=
1
,
2
,
.
.
.
,
m
−
1
C_i,i=1,2,...,m-1
Ci,i=1,2,...,m−1,当模型接近于收敛时,等式:
∑
i
=
1
m
−
1
(
L
i
t
+
1
−
G
t
)
≈
0
\\sum_i=1^m-1(L^t+1_i-G^t)\\approx0
i=1∑m−1(Lit+1−Gt)≈0
成立。因此,我们可以重新修改上上式,使得恶意客户端
C
m
C_m
Cm提交的本地模型
L
m
t
+
1
L^t+1_m
Lmt+1满足:
L
m
t
+
1
=
n
η
X
−
(
n
η
−
1
)
G
t
−
∑
i
=
1
m
−
1
(
L
i
t
+
1
−
G
t
)
L^t+1_m=\\fracn\\etaX-(\\fracn\\eta-1)G^t-\\sum_i=1^m-1(L^t+1_i-G^t)
Lmt+1=ηnX−(ηn−1)Gt−i=1∑m−1(Lit+1−G阅读笔记联邦学习实战——联邦学习医疗健康应用案例