Split learning攻防介绍(Threat model and defence)
本文内容整理自三篇Split learning相关研究论文,为叙述方便,分别用论文A、B、C标识。
论文A: Gradient Inversion Attack: Leaking Private Labels in Two-Party Split Learning
论文B:Defending Label Inference and Backdoor Attacks in Vertical Federated Learning
论文C:Label Leakage and Protection in Two-party Split Learning
本文首先梳理三篇文章的整体工作,然后对每篇论文进行详细介绍。
Split learning 是什么
如上图所示:Split learning通常被用于两方纵向联邦学习场景:一方有原始数据Inputs,另一方有标签Labels。双方共同训练一个 f ⋅ g f·g f⋅g 的复合模型,Inputs端保留 f f f 模型,Labels端保留 g g g 模型。Split learning的目的是同时保留Inputs x i x_i xi 的隐私和Labels y i y_i yi 的隐私,所以在训练过程中,两方之间只会交换中间特征embedding z i z_i zi 以及中间梯度 ▽ z L i \bigtriangledown_zL_i ▽zLi ,而不会交换原始数据 x i x_i xi 和 y i y_i yi 。一个典型的场景:公司A拥有客户点击广告的数据(Inputs),公司B拥有客户实际购买商品的数据(Labels),两公司联合训练模型以学习广告转化率。
Split learning也可以应用于多方的场景:标签只在其中一方,原始数据 x i x_i xi 由多方保存,每方有几个维度的特征。典型场景:公司A有客户点击广告的数据,公司B有客户的社交数据,公司C有客户实际购买商品的数据(Labels)。
论文A和论文C只考虑了两方,论文B同时考虑了两方和多方。三篇论文针对的都是分类问题。
Split learning Threat model
Label Inference Attack
标签推测攻击是三篇论文中都有考虑到的Threat model并且都给出了defence,指的是Inputs端利用接收到的 ▽ z L i \bigtriangledown_zL_i ▽zLi 去推测真实的标签 y i y_i yi。
论文A:认为直接交换 ▽ z L i \bigtriangledown_zL_i ▽zLi会泄露标签的隐私,并且提出了一种基于有监督学习的攻击模型Gradient Inversion Attack(GIA)去推测标签,在Multi-class image classification以及binary conversion问题中推测标签的准确率可以达到(97.01%-99.96%)。
论文B:强调传递一个batch的聚合梯度也可能泄露隐私,然后也提出利用有监督学习的方式可以推测Labels(攻击模型跟论文A没太大区别)。
论文C:只考虑二分类问题,发现通过观察中间梯度 g g g 的特征,进行统计分析, 就可以进行一定程度的标签推测。如下图所示,标签为1的数据的中间梯度与标签为0的数据的中间梯度存在显著差异,该信息就会泄露标签隐私。
Backdoor Attack
论文B提出了Backdoor attack。攻击者通过替换标签或中间梯度,让一些数据被错误的分类。(感觉就是恶意攻击模型,不让模型正确地训练)。Labels端可以很容易地发起Backdoor attack,比如直接将某些本来是猫的标签,替换为狗。但是论文B觉得Labels端发起backdoor attack太简单,不值得研究,然后发现 Inputs端通过对发送的embedding z i z_i zi 进行一些操作也可以发起Backdoor attack。
Split learning Defence
论文A:nothing but 添加高斯噪声
可想而知噪声越大,安全性越好,模型效果越差。由于该方法过于粗暴,作者也指出只在一些简单的数据集上适用,用在一些复杂的数据集效果就很差。
论文B:Label confusion。核心思想就是对标签进行替换,比如将所有数据猫、狗的标签对换。这样Inputs推测出的标签都是错的(本来是狗、误以为是猫)。但是这种太容易被发现,因为Inputs只要知道任何一个样本的真实标签,就可以知道所有样本的真实标签。
一种想法就是将标签替换成多维向量。基于此思想论文B提出了autoencoder,包括encode和decode两部分:
- encode:在训练阶段,将真实标签替换为fake label,从而保护真实标签的隐私。
- decode:在测试阶段,将fake label还原为真实标签。
论文C(二分类问题):添加精密计算过的噪声。对于不同标签对应的中间梯度添加不同的噪声,标签为1的数据对应的梯度添加 D 1 = N ( 0 , Σ 1 ) D^{1}=N(0, \Sigma_1) D1=N(0,Σ1) ,标签为0的数据对应的梯度添加 D 0 = N ( 0 , Σ 0 ) D^{0}=N(0, \Sigma_0) D0=N(0,Σ0) , Σ 1 \Sigma_1 Σ1与 Σ 0 \Sigma_0 Σ0是求解如下优化问题得到的最优解。
论文A:Gradient Inversion Attack: Leaking Private Labels in Two-Party Split Learning
Label Leakage Attack Objective
Attacker想要获得真实的标签 D l a b e l = { y i } D_{label} = \{y_i\} Dlabel={ yi},Attacker通过推理得到的标签为 D y ′ = { y ′ } D_{y'} = \{y'\} Dy′={ y′}。
Attacker的目标就是让 y i y_i yi 和 y i ′ y_i' yi′尽可能接近,即:
由于实际中Attacker不知道真实标签,所以无法直接求解上述优化问题,于是该论文提出了GIA来窃取隐私。
Label Leakage Defence Objective
Labels端想要保护隐私需要平衡以下两个方面:
- Privacy Objective:让attacker推理的 y i ′ y_i' yi′ 与真实标签 y i y_i yi 的差异尽可能大,即:
- Utility Objective: 保护隐私也不能作茧自缚,要尽可能保证模型可用性。通过训练好的联合模型 f ⋅ g f·g f⋅g,预测的标签要尽可能与真实标签接近,即:
攻击模型GIA
核心思想:Attacker(Inputs端)只有模型 f f f, 不知道模型 g g g ,也不知道标签 { y i } \{y_i\} { yi}。那么Attacker可以自己建立一个surrogate model g ′ g' g′ 以及surrogate labels { y i ’ } \{y_i’\} { yi’} 。建得不准没有关系, g ′ g' g′ (对应参数 θ g ′ \theta_{g'} θg′)和 { y i ’ } \{y_i’\} { yi’} ( { y i ~ } \{\tilde{y_i}\} { yi~}) 都是可学习的参数,可以先随机初始化,然后通过学习过程让 θ g ′ \theta_{g'} θg