FreqFed: A Frequency Analysis-Based Approach for Mitigating Poisoning Attacks in Federated Learning -- FreqFed:一种基于频率分析的联邦学习中缓解中毒攻击的方法
来源
Network and Distributed System Security (NDSS) Symposium 2024
26 February - 1 March 2024, San Diego, CA, USA
ISBN 1-891562-93-2
https://dx.doi.org/10.14722/ndss.2024.23620
www.ndss-symposium.org
链接:NDSS
作者 & 单位:
摘要
- 联邦学习是一种协作学习范式,允许多个客户端共同训练模型而无需共享其训练数据。然而,联邦学习易受到投毒攻击的影响,在这种攻击中,敌手将经过操纵的模型更新注入到联邦学习模型聚合过程中,以破坏或损坏预测(非针对性中毒)或植入隐藏功能(针对性中毒或后门)。
- 现有针对联邦学习中投毒攻击的防御措施存在若干局限性,例如依赖于对攻击类型和策略或数据分布的特定假设,或者在面对先进的注入技术和策略时缺乏足够的鲁棒性,同时又需保持聚合模型的有效性。
- 为了解决现有防御机制的不足,本文采取了一种通用的且完全不同的方法来检测投毒(针对性和非针对性)攻击。提出了FreqFed,这是一种新颖的聚合机制,它将模型更新(即权重)转换到频率域,在该域中我们可以识别出继承了足够权重信息的核心频率成分。这使我们能够在客户端的本地训练过程中有效地过滤掉恶意更新,而不受攻击类型、策略和客户端数据分布的影响。
在本文中,客户端训练结束后上传的模型参数(本地神经网络的权重),而不是梯度,这是因为本篇论文采用的聚合方法为FedAvg,在一次联邦学习迭代中( i i i-th round),一个客户端训练多个轮次(epoch),然后将更新后的本地神经网络参数上传。因为一次迭代训练了多次,所以客户端不可能在一次迭代结束后上传梯度(梯度是一次训练的产物)。
威胁模型
- 本文主要抵抗投毒攻击,联邦学习中的投毒攻击可以大致分为两类:无目标攻击(Untargeted Attacks)和有目标攻击(Targeted Attacks)。无目标攻击旨在削弱聚合模型的性能并阻碍其泛化能力;有目标攻击则旨在将隐蔽功能(后门)植入模型中,此类攻击使得对手能够隐秘地控制模型的行为。这些攻击尤其危险,因为它们可能在较长时间内不被察觉,进而导致严重的安全漏洞。
- 投毒攻击有以下威胁:
- 完全控制多达 k A < K / 2 k_\mathcal{A} < K/2 kA<K/2 的受损客户端,包括这些客户端的全部本地训练数据,以及本地训练操作和超参数(即学习率、训练轮数等)。
- 恶意客户端在将生成的局部模型提交给全局服务器进行聚合之前,会产生一个恶意权重。
- 恶意客户端通过向损失函数添加正则化项来精心构造模型更新,以规避聚合服务器的异常检测器的检测,并使得自身恶意模型尽可能与良性模型无法区分。
- 恶意客户端在每一轮的本地训练中改变其训练方式,并始终在特定的训练迭代中决定以正常或恶意的方式进行行为。
- 恶意客户端通过调整攻击参数(即毒化模型率、毒化数据率、训练损失等)进行自适应攻击,以利用已部署防御机制的弱点。敌手还可以采用最先进的注入技术,遵循任何注入策略。
设计目标
- 抵抗投毒攻击,能够有效消除针对性和非针对性中毒攻击的影响,同时保持聚合模型的良性性能。
所用方法
本文的方法相对较简单,就是将客户端上传的模型参数转换到频率域,将模型权重视为信号,通过判断这些信号特征,来分辨恶意客户端和良性客户端,依据DCT系数分簇,将最大簇视为最优良性簇,服务器采用最大簇的模型参数进行更新。
- 离散余弦变换(Discrete Cosine Transform,DCT)
-
在信号处理领域,DCT用来揭示信号的特性,在一些计算机视觉领域,DCT也被用来表示图像的质量(如:水下图像质量评价),因为DCT具有强大的能量集中特性,能够将输入数据压缩为尽可能少的系数。
-
本文主要使用了二维离散余弦变换(2d DCT),这是因为在2d-DCT中,低频部分主要集中在矩阵的左上部分,矩阵的右下部分为信号的高频部分。 在计算机视觉应用DCT时,DCT的低频部分往往代表了图像中变化缓慢的部分,通常对应于图像的整体结构和平滑区域,这些通常是图像中最显著的特征;而高频部分往往代表了图像中快速变化的部分,比如边缘、细节和纹理等。 在本文中,通过分析DCT的低频部分,就可以分析出模型参数的特征。
-
以下方程将给出信号 x x x(例如, N × M N \times M N×M 矩阵)在频率 k k k 和 l l l 下的二维离散余弦变换(DCT):
X ( k , l ) = ∑ m = 0 M − 1 ∑ n = 0 N − 1 c 1 c 2 x ( m , n ) c o s ( k π 2 M ( 2 m + 1 ) ) c o s ( l π 2 N ( 2 n + 1 ) ) X(k,l)=\sum_{m=0}^{M-1} \sum_{n=0}^{N-1} c_1c_2x(m,n)cos(\frac{k\pi}{2M}(2m+1))cos(\frac{l\pi}{2N}(2n+1)) X(k,l)=∑m=0M−1∑n=0N−1c1c2x(m,n)cos(2Mkπ(2m+1))cos(2Nlπ(2n+1))
其中, c 1 , c 2 , k , l c_1,c_2,k,l c1,c2,k,l分别是:{ c 1 = 2 M N f o r k = 0 , c 1 = 1 f o r k = 1 , 2 , . . . , M − 1 c 2 = 2 M N f o r l = 0 , c 2 = 1 f o r l = 1 , 2 , . . . , N − 1 \begin{cases} & c_1=\sqrt{\frac{2}{MN}} & for & k=0, c_1=1 & for & k=1,2,...,M-1 \\ & c_2=\sqrt{\frac{2}{MN}} & for & l=0, c_2=1 & for & l=1,2,...,N-1 \end{cases} ⎩ ⎨ ⎧c1=MN2 c2=MN2 forfork=0,c1=1l=0,c2=1forfork=1,2,...,M−1l=1,2,...,N−1
-
输入为原始数据 x x x,输出为DCT矩阵 X X X。 对于本文,只需要知道DCT的输入和输出以及低频数据在矩阵的左上即可。
- 基于层次密度的空间应用聚类方法及其噪声处理聚类(Hierarchical Density-Based Spatial Clustering of Applications with Noise Clustering,HDBSCAN Clustering)
- 此方法简单地说,就是对于一个左上与右下对称的矩阵 m a t r i x matrix matrix,HDBSCAN Clustering将相似的元素( m a t r i x i , j matrix_{i,j} matrixi,j)标记为一个相同的簇cluster。
- HDBSCAN Clustering是一种先进的基于密度的聚类技术,利用密度可达性原理来识别数据聚类。
- HDBSCAN 的一个关键优势在于其能够识别不同大小和形状的聚类。
- HDBSCAN 的另一个优势在于其能够识别包含噪声或离群点的聚类。
这两个方法原理也不是很难,本文相对较简单,不过创新行却较高。
FreqFed
- 本文的整体设计如图所示:
在第 t t t 轮迭代中,系统的运行过程如下:
- ClientUpdate
- 客户端 i i i 收到全局模型 G t G_t Gt 后,采用 FedAvg 的训练方法,将本地数据分为多个批次,每个批次大小为 B B B ,定义本地训练次数 e p o c h epoch epoch为 E i E_i Ei 。在每一次训练次数中,对每一批次进行训练并更新模型,训练完 ( E i × E_i \times Ei× 批次) 次后,本次迭代结束,客户端 i i i 将模型参数 W i t W_i^t Wit 上传。
- server
- 服务器收到客户端 i i i 上传的模型参数 W i t W_i^t Wit 后,对模型参数 W i t W_i^t Wit 应用DCT变换,将模型参数 W i t W_i^t Wit 转换为DCT系数列表 V i t V_i^t Vit 。
- 我们将这个一维数组 V i t V_i^t Vit 看成二维的矩阵,我们只需要这个矩阵的左上元素(低频部分),服务器对每一个DCT系数列表 V i t V_i^t Vit 应用Filtering算法,将矩阵的左上元素读取到列表 F i t F_i^t Fit 中。
- 服务器处理完所有的客户端的数据后,将所有的 F i t F_i^t Fit 输入到聚类算法Clustering中,找出最大簇 B B B ,即拥有 cluster_ids 最多的簇。
- 服务器找到最大簇 B B B 之后,只对最大簇中的客户端所提交的模型参数 W b l t W_{bl}^t Wblt 进行简单聚合: G t + 1 ← ∑ l = 1 L W b l t / L G_{t+1} \gets \sum_{l=1}^{L}W_{bl}^t/L Gt+1←∑l=1LWblt/L 。
- 然后服务器将更新的全局模型 G t + 1 G_{t+1} Gt+1 发送给所有客户端进行下一轮迭代。
- Filtering算法
- 服务器对客户端 i i i 上传的模型参数 W i t W_i^t Wit 应用DCT变换后得到为DCT系数列表 V i t V_i^t Vit ,这本是一个一维列表,但是我们将其看作二位矩阵,对于DCT方法,我们只需要矩阵的左上元素,所以我们使用两层 for 循环取其左上元素。
- Clustering算法
- Clustering算法输入的是所有客户端的低频数据( F 1 , . . . , F K F_1,...,F_K F1,...,FK),我们计算这些数据的余弦相似度,这是一个二维矩阵,然后用1减去这个矩阵,将值赋值给 d i s t a n c e s m a t r i x i , j distances_matrix_{i,j} distancesmatrixi,j,但是请注意到,这是一个右上关于左下对称的矩阵,我们将其翻转为左上与右下对称的矩阵 d i s t a n c e s m a t r i x j , i distances_matrix_{j,i} distancesmatrixj,i。
- 我们得到这个对称矩阵后,使用 HDBSCAN 判断这个矩阵的相似度,得到多个簇,每一个簇都包含着客户端的编号。
- 选择最大的簇,然后将最大簇 B B B 中的客户端所上传的模型参数进行简单聚合。
算法如算法1所示:
总结
- 本篇论文主要使用了DCT变换,将模型参数从空间域转换到频率域,然后通过频率域的低频信号来判断模型应该被分类到哪一簇,也就是哪些模型参数的低频信号较相近。
- 本篇论文中客户端上传的是模型参数,这是因为客户端在一次迭代中并不只是训练一次,而是多次,因为梯度是一次训练的产物,所以在一次迭代结束后,客户端不可能上传梯度,而是将迭代后更新的本地模型参数上传,然后服务器对其判断,将判断出的模型参数进行简单聚合。
- 本篇论文阅读起来并不难,重点是学习到作者如何将DCT这一技术应用到联邦学习中来抵抗投毒攻击。
思考
- 本文采用了FedAvg的训练方法,我们能不能换成随机梯度下降,这样客户端一次迭代只训练一次,然后上传更新的梯度,服务器后续的操作都是基于梯度进行,最后对最大簇的梯度进行聚合来更新全局模型。
- 在聚类Clustering算法中,只返回最大簇,这会不会导致一些良性客户端被忽视,如果除开恶意客户端后,良性客户端经聚类后分类较平均,那么会不会一次迭代产生的收益太少?我们可不可以在得到簇 i d id id 后采用注意力机制,对簇 i d id id 进行权值计算,为不同大小的簇分配不同的权值,然后服务器根据权值对所有的客户端进行简单聚合?
- 这篇论文只抵抗投毒攻击,因为他采用了FedAvg的方法,那么除了投毒攻击其他攻击都无法抵抗,我们能否增加密钥系统,这样就能抵抗合谋攻击和成员推理攻击,增加了联邦学习的安全性。