FedSelect: Personalized Federated Learning with Customized Selection of Parameters for Fine-Tuning —— FedSelcet:通过自定义参数选择进行微调的个性化联邦学习
来源
Published in CVPR 2024
作者:Rishub Tamirisa · Chulin Xie · Wenxuan Bao · Andy Zhou · Ron Arel · Aviv Shamsian
摘要
- 本文提出了FEDSELECT,这是一个新颖的个性化联邦学习算法,灵感来自用于彩票假设的迭代子网络发现过程。
- FEDSELECT逐步扩展子网络以个性化客户端参数,同时对其余参数进行全局聚合。这种方法使得在训练过程中可以个性化客户端参数和子网络结构。
- 本文展示了在客户端数据异质性环境下,FEDSELECT优于最新最先进的PFL算法,并在各种现实世界的分布变化中表现出鲁棒性。
背景
- 标准的联邦学习方法(FedAvg)在客户端数据分布具有足够异质性时表现不佳。
- 个性化联邦学习(Personalized Federated Learning,PFL)旨在解决客户端数据异质性问题,PFL通过个性化学习全局知识,以更好地适应客户端的本地数据分布。PFL允许各个客户端维护其独特的个性化模型,参数根据其本地数据分布进行调整,同时在不同客户端之间共享知识。一种代表性的PFL算法是 “ 参数解耦 ” 。它将FL模型分解为两个不同的组件:一个在所有客户端之间共享的全局子网络(例如,特征提取器),以及一个适应每个客户端本地分布的个性化子网络(例如,预测头)。通过个性化一部分参数,参数解耦在知识共享和个性化之间取得了平衡。
- 现有的PFL方法通常通过在特定层(即分类器头)上进行个性化和对网络其余部分进行全局聚合来解耦深度神经网络中的全局更新。 然而,最近的研究表明,即使在同一层内,参数对预测的重要性也可能显著不同。
论文思路
本文基于彩票假说提出,但是阅读本论文笔记并不需要知道彩票假说的先验知识,彩票假说可参考 >> 知乎
- 对于每一个客户端 c k c_k ck,他在第 t t t轮的模型 θ k t \theta_k^t θkt可以分为两个部分(不是简单切分): u k t 、 v k t u_k^t、v_k^t ukt、vkt。其中, u k t u_k^t ukt表示由服务器发来的全局模型; v k t v_k^t vkt表示模型中用于个性化的部分,被称为子网,由客户端 c k c_k ck保存,不共享,而子网外的元素则参与本轮的全局聚合。
标准的联邦学习模型应该满足公式1:
-
本文的目的是为每个客户端 c k c_k ck找到的最佳个性化模型 θ k \theta_k θk(包含 u k t u_k^t ukt和 v k t v_k^t vkt),满足公式2:
-
本文设定个性化率 ρ \rho ρ,表示子网的扩张速度;个性化上限 α \alpha α,表示子网最终的规模,当子网规模达到 α \alpha α 后,子网不再扩大;子网掩码 m k m_k mk,表示客户端 c k c_k ck的子网索引, m k m_k mk的稀疏度上线即为 α \alpha α。
-
在模型训练阶段,客户端 c k c_k ck 先训练个性化模型参数,再训练聚合模型参数,然后根据全局模型参数的变化进行子网扩张与全局聚合。
-
本文在运算时使用了一个特殊的运算:哈达玛运算(Hadamard operator),他表示两个相同维度的矩阵 A A A 和 B B B,这两个矩阵的元素按序相乘,产生矩阵 C C C ,即: C i j = A i j ∗ B i j C_{ij}=A_{ij}*B_{ij} Cij=Aij∗Bij 。 参考 ===> CSDN
-
本文的流程图可见图1:
方法展开
- 论文的详细方法可以分为3个部分,分别为 1. 算法总览,2. 梯度选择,3. 本地转换。
算法总览
- 在第 t t t 轮,客户端 c k c_k ck 接收到来自服务器的全局模型 θ g t \theta_g^t θgt,客户端 c k c_k ck 根据自己的子网掩码 m k m_k mk 选择出客户端 c k c_k ck 的全局模型参数 ( θ k t + 1 ⊙ ¬ m k t ← θ g t ⊙ ¬ m k t \theta_k^{t+1} \odot \neg m_k^t \gets \theta_g^t \odot \neg m_k^t θkt+1⊙¬mkt←θgt⊙¬mkt ) ,然后将保存在本地的个性化模型参数赋值给子网部分 ( θ k t + 1 ⊙ m k t ← v k t \theta_k^{t+1} \odot m_k^t \gets v_k^t θkt+1⊙mkt←vkt ) 。
- 客户端 c k c_k ck 根据梯度选择算法 GradSelect 产生本轮更新全局模型参数 u k t + u_k^{t+} ukt+、个性化模型参数 v k t + v_k^{t+} vkt+ 和 子网掩码 m k t + 1 m_k^{t+1} mkt+1 ,然后每个客户端将 u k t + u_k^{t+} ukt+和 m k t + 1 m_k^{t+1} mkt+1发送给服务器进行全局聚合。
- 服务器收到上述参数后,初始化一个全局聚合模型参数 θ g t ← 0 \theta_g^t \gets 0 θgt←0和权重索引 ω t ← 0 \omega^t \gets 0 ωt←0,服务器根据每一个客户端 c k c_k ck 的子网掩码 m k t m_k^t mkt 将全局模型参数累加 ( θ g t ⊙ ¬ m k ← ( θ g t ⊙ ¬ m k t ) + u k t + ) ( \theta_g^t \odot \neg m_k \gets (\theta_g^t \odot \neg m_k^t)+u_k^{t+} ) (θgt⊙¬mk←(θgt⊙¬mkt)+ukt+),然后根据每个客户端的子网掩码进行权重累加 ( ω t ⊙ ¬ m k ← ( ω t ⊙ ¬ m k t ) + ¬ m k t ) ( \omega^t \odot \neg m_k \gets (\omega^t \odot \neg m_k^t)+ \neg m_k^t ) (ωt⊙¬mk←(ωt⊙¬mkt)+¬mkt),累加结束后,权重集合 ω t \omega^t ωt 的索引 ω t [ i ] \omega^t[i] ωt[i] 表示 θ g t [ i ] \theta_g^t[i] θgt[i] 是由几个客户端贡献的。
- 服务器结束累加操作后,初始化一个全局聚合掩码 m g t ← 0 m_g^t \gets 0 mgt←0, m g t m_g^t mgt 是一个二元掩码,只有01值, m g t [ i ] = 0 m_g^t[i]=0 mgt[i]=0 表示 θ g t [ i ] \theta_g^t[i] θgt[i] 没有客户端贡献全局参数, m g t [ i ] = 1 m_g^t[i]=1 mgt[i]=1 表示 θ g t [ i ] \theta_g^t[i] θgt[i] 有客户端贡献全局参数。
- 累加操作只是简单累加,这显然不符合联邦学习的规范,服务器完成权重集合和全局聚合掩码的更新后,对简单累加的全局模型进行带权操作,具体地说,服务器首先计算 ( θ g t ⊙ m g t ) (\theta_g^t \odot m_g^t) (θgt⊙mgt),找到有客户端贡献的全局模型元素,然后将其除以 ( ω t ⊙ m g t ) (\omega^t \odot m_g^t) (ωt⊙mgt) ,表示对于每一个全局模型索引的元素,除掉有客户端贡献的数量(权重),这样就得到了带权聚合的全局模型 θ g t ⊙ ← θ g t ⊙ m g t ω t ⊙ m g t \theta_g^t \odot \gets \frac{\theta_g^t \odot m_g^t}{\omega^t \odot m_g^t} θgt⊙←ωt⊙mgtθgt⊙mgt。
该算法伪代码如算法1所示:
梯度选择
接下来详细说明算法总览中的 GradSelect 算法的细节。
- GradSelect算法输入:全局参数 u k u_k uk,个性化参数 v k v_k vk,个性化率 p p p,迭代轮数 L L L 以及个性化上限 α \alpha α;输出:更新的全局参数 u k , L u_{k,L} uk,L,更新的个性化参数 v k , L v_{k,L} vk,L,更新的子网掩码 m k + m_k^+ mk+。
- 算法接收到 u k u_k uk和 v k v_k vk后,使用本地转换算法 L o c a l A l t ( u k , i , v k , i ) LocalAlt(u_{k,i},v_{k,i}) LocalAlt(uk,i,vk,i) 迭代 L L L 轮,得到更新后的 u k , L u_{k,L} uk,L 和 v k , L v_{k,L} vk,L,在子网规模还没有达到 α \alpha α时,找到 u k u_k uk 在本地转换中变化最大的 p p% p个元素,将这些元素的索引添加到子网掩码中得到更新的子网掩码 m k + m_k^+ mk+。
梯度选择算法的伪代码如算法3所示:
本地转换
本文设定,个性化模型参数是在全局模型参数的基础上进行训练(算法2第一个 for 循环),这是因为,只有在本轮全局模型参数上进行训练,才能保证子网逐渐扩张,即满足: I d x ( v k 0 ) ∈ I d x ( v k 1 ) ∈ . . . ∈ I d x ( v k T ) Idx(v_k^0) \in Idx(v_k^1) \in ... \in Idx(v_k^T) Idx(vk0)∈Idx(vk1)∈...∈Idx(vkT)。
- 本地转换算法 LocalAlt 输入:全局参数 u k , 0 u_{k,0} uk,0,个性化参数 v k , 0 v_{k,0} vk,0,迭代轮数 τ \tau τ,两个参数的学习率 γ u 、 γ v \gamma_u、\gamma_v γu、γv;输出:更新的全局参数 u k + u_k^+ uk+,更新的个性化参数 u k + u_k^+ uk+。
- 客户端 c k c_k ck首先固定 u k u_k uk,将 v k , i v_{k,i} vk,i迭代训练 τ \tau τ 轮,使用随机梯度下降,得到 v k + v_k^+ vk+;然后固定 v k + v_k^+ vk+,将 u k , i u_{k,i} uk,i迭代训练 τ \tau τ 轮,使用随机梯度下降,得到 u k + u_k^+ uk+。
本地转换算法伪代码如算法2所示:
总结
- 该论文提出了一种新的个性化联邦学习(PFL)算法,称为FedSelect。FedSelect基于“渐进子网络发现”策略,允许每个客户端在训练过程中选择和个性化特定参数,并同步其他参数,从而在客户端数据分布高度异质的情况下提高模型性能。FedSelect通过在训练过程中动态选择个性化参数并对其进行微调,实现了在全局共享知识和本地个性化之间的平衡。实验结果表明,FedSelect在CIFAR-10、Mini-ImageNet等数据集上相较于现有的PFL方法表现更佳,适应各种分布偏移情境。
优点
-
动态个性化: FedSelect通过动态选择适合每个客户端的数据的参数,使得个性化模型更加灵活,能够更好地适应数据的异质性。
-
减少通信成本: 在聚合全局参数时仅传输部分参数,FedSelect降低了通信负担,适合实际应用中对通信资源有限制的场景。
-
鲁棒性: 实验结果显示,FedSelect在面对数据分布变化(如特征和标签偏移)时表现出更高的稳健性,能够有效应对真实世界中常见的分布偏移问题。
-
优化性能: 在多个基准数据集上,FedSelect的个性化表现优于现有的最先进算法,提升了客户端模型的准确性。
-
自适应学习: FedSelect通过增量式地扩展个性化参数,使得每个客户端的模型能够不断调整,以更好地反映其本地数据的特性。
缺点
-
计算复杂性: 尽管FedSelect在通信上更加高效,但动态选择参数的过程有过多迭代,可能导致计算开销增加,特别是在客户端数量众多或模型规模较大的情况下。
-
依赖于数据质量: FedSelect的性能在一定程度上依赖于各客户端的数据质量和数量。如果某些客户端的数据量较小或质量较差,可能会影响最终模型的个性化效果。
-
模型泛化能力: 在极度个性化的情况下,模型可能会过拟合于特定客户端的数据,导致在未见数据上的泛化能力降低。
-
参数选择的策略: 虽然FedSelect提出了动态选择参数的机制,但如何最优地选择和调整这些参数仍然是一个挑战,需要在实际应用中不断调整和优化。
-
实现复杂性: 相较于传统的全局模型训练,FedSelect的实现过程更为复杂,需要更细致的算法设计和调试。
-
隐私保护: 本文只讨论和实现了异构数据下的个性化联邦学习模型,并没有考虑联邦学习中敏感数据泄露问题,没有提供加密算法实现隐私保护(敏感数据隐私保护、安全聚合、抵抗投毒攻击)。
思考
- 该算法并没有提供隐私保护策略,是否可以增加隐私保护机制,如同态?
我想是可以的,当我们假设服务器是诚实的时,我们只需要保证敏感数据隐私或抵抗投毒攻击,我们可以增加Paillier加密,保证客户端的敏感数据不被外部敌手获取或者被好奇服务器推断。但是,增加同态后,系统的计算开销进一步扩大、模型更加复杂,实施起来变得困难。