科研记录
上学期末至今为止,阅读了很多有关于VFL中标签和特征推理攻击的方案,以及在分割学习中的一些相似的方案,看看是否有值得借鉴和迁移的点。此外对于防御也看了一些。目前对该领域有一个比较全面的了解和思考,目前想到的也只是结合几个方案放到不同场景当中去,也复现了几篇论文的实验,发现效果不是很好,当前的方案感觉创新性也不大,有点像糅合一样。打算先将目前该领域做的点整理一下以及接下来想做的点。
特征推理攻击
dlg
idlg
Inverting gradients
See through gradients: Image batch recovery via gradinversion
首先说一说分割学习中,服务器要窃取客户端的隐私输入。这个领域最经典的方案是联合学习中的这篇论文《Model inversion attacks against collaborative inference 》,文中提出的RMLE、逆转网络和影子模型构建一直在分割学习和联邦学习中不断借鉴和优化,引用率非常地高。
《Unleashing the Tiger: Inference Attacks on Split Learning》
在分割学习中,最先出现的是模型劫持攻击,主要是通过篡改服务器发送给客户端的梯度,让客户端朝着我们预先设计好的模型特征空间训练,比如假定窃取后的模型为\(\tilde{f}\)(真实模型为\(f\)) 。通过对抗性训练让客户端模型\(f\)的特征空间接近\(\tilde{f(X)}\)。这类修改和拟合特征空间的论文大部分都使用了生成式对抗网络GAN的思想,即Min-Max的对抗博弈思路。
经过对抗性训练后,实际上\(\tilde{f}\)的特征空间就和\(f\)有重叠了,也就是说功能一样,那么\(\tilde{f}\)就当作窃取到的模型,然后再训练一个逆模型\(\tilde{f}^{-1}\)。
特点:对辅助数据\(X_{pub}\)的分布要求较高。有一些可以检测到不正常梯度的方案从而规避攻击
《UnSplit: Data-Oblivious Model Inversion, Model Stealing, and Label Inference Attacks against Split Learning》
UnSplit相比FSHA比较暴力,直接初始化客户端模型和输入\(\tilde{f}_1(\tilde{\theta_1},\tilde{x})\),来和原始模型的输出\(f_1(\theta_1,x)\)计算损失优化这两项,采用的方法是固定其中一项优化另一项。对于图像恢复来说,大多数都会加上一个总变异项Total Variation来使生成的图像更加平滑。相比FSHA,此方案不需要辅助数据,只需要收集客户端的中间结果(粉碎数据)即可训练,但是可能效果差一些。
要求:需要知道客户端模型结构和中间粉碎数据,但不需要辅助数据,通过坐标梯度下降法在由所有可能的输入值和客户端网络参数组成的空间内进行搜索。
《PCAT: Functionality and Data Stealing from Split Learning by Pseudo-Client Attack》
本文的目标是窃取模型和输入。它利用的是经过训练的服务器模型可以提供足够的知识,然后利用一些有限的训练样本训练出中间的伪客户端模型,其实这篇文章就是《Model inversion attacks against collaborative inference 》中影子窃取,这篇文章就是换了种说法,搬到了分割学习中用了大量文字来修饰,相比改进的是利用分割学习训练过程中的知识,即便训练边窃取,说明中间服务器对最终的伪客户端的训练也有帮助,此外还提出了一些改善pcat的细节,如对齐训练数据和辅助数据的标签,跳过一些批次训练\(\tilde{f}\)。
SL:直接在私有数据\(X_{priv}\)上训练的受害者客户端模型,也就是正常经过训练后的客户端模型。
论文实验做的比较足,如iid和nonii、每个class拥有的样本数、真实特征空间和伪特征空间的MSELoss、服务器拥有的训练样本数量引起的性能变化。noiid实验中服务器的数据集缺少一类样本的情况下看pcat能否适应、服务器拥有的数据\(X_{server}\)的分布情况的影响、分割学习客户端分割层的影响、对nopeek和差分隐私噪声防御的效果。
arxiv上出现了一篇针对pcat的改进的文章(《Passive Inference Attacks on Split Learning via Adversarial Regularization》),只是添加了两个正则化,一个是对伪客户端模型\(\tilde{f}\)和正常模型\(f\)的特征空间添加一个鉴别器,利用GAN的思想使\(\tilde{f}\)的特征空间\(\tilde{f}(X')\)更接近原始特征空间,第二个是对解码器\(\tilde{f}^{-1}\)进行对抗性正则化,让\(\tilde{f}^{-1}(Z_s)\)更接近真实数据,方法是将\(\tilde{f}^{-1}(Z_s)\)标记为假,辅助数据\(X'\)标记为真,再使用一个鉴别器进行对抗训练。
分割学习一般场景都是一个客户端拥有所有特征,服务器拥有标签,它设计的初衷只是为了减轻客户端的计算资源压力,所以很多论文攻击时一般都带有窃取模型,然后再进行攻击的习惯,而在VFL中,一般特征都是分割在两方或多方的,它最初也是为了特征垂直分割而衍生出来的。不知道分割学习中的方案能不能借鉴到VFL中,目前已经有几篇论文这样做了,但很少,像《Active Data Reconstruction Attacks in Vertical Federated Learning》这篇论文也运用了GAN的思想,但是和FSHA又不太一样,FSHA中是利用客户端的特征空间和伪模型的特征空间接近来进行GAN训练,进而伪造梯度。但是VFL多方场景下有很多客户端,那就对应很多个特征空间,这样的话就显得很繁琐。本文的操作是收集所有中间特征,然后生成器G利用这些中间特征生成用户输入和真实的数据(同分布)区分,让生成器的输出尽可能接近真实分布的数据。生成器的输入中还有主动方的已知特征,类似于条件GAN,这也就能对应上真实的数据。
如果要在VFL中实现类似的操作,可以尝试训练一个编码器代替所有被动方的模型,然后运用SL中的一些操作和思路,但是这样的思路是否算作一种创新呢,恐怕实验效果也不会很好。最好是再结合一些其他论文中的正则化项,让实验结果更准确。
甚至可以换一种思路,既然修改梯度会干扰正常的模型训练,那么我们让伪客户端模型\(\tilde{f}\)的特征空间去拟合正常的模型\(f\)的特征空间不行吗,同样是利用GAN的思路,但好像这种思路在今年的顶会已经出现了,这种的优点是不用干扰客户端的训练,我们可以单独地训练出一个伪客户端
例如《A stealthy wrongdoer: Feature-oriented reconstruction attack against split learning》这篇顶会论文中出现了类似的思路,它指出PCAT对更深层的网络效果不佳,本文基本思路还是利用GAN,不过是加了一个MK-MMK模块,目的是将两个特征空间拟合更佳,这是多年前论文中出现的方案(领域适应,通过将从源域获得的知识转移到不同但相关的目标领域,增强模型的泛化能力),通过简单的拼接是实现了一篇顶会,但看起来花不了多少时间,可能还是因为是真的有效果的改进吧--><---。
emm,还有一些论文设计了一种黑盒场景,对特定模型一无所知,导致对其中的模型梯度也不知道,但是由于更新模型需要利用反向传播,结合以前论文中提出的梯度近似方法解决了这个问题。
纵向联邦学习中由于主动方也有部分特征,有几个方案利用置信度分数来对被动方面的特征进行攻击,置信度分数是主动方在预测中收集的、通过生成假特征模拟正常的训练得到置信度分数进行匹配,从而更新假特征(自监督训练)。
防御:对中间特征进行防御、去相关性、加噪声、正则化、dropout;对置信度分数进行防御和混淆;检测梯度防止恶意梯度攻击;对抗训练;