联邦学习——一种基于分布和知识蒸馏的聚合策略

《FEDBE: Making Bayesian Model Ensemble Applicable to Federated Learning》是ICLR 2021的一篇文章。该文章主要提出了一种新的聚合策略,该策略在 multi-round FL 以及 Non-IID 下具有不错的表现。这里我主要总结这个策略的思路。

  • 构建模型分布:首先客户端将本地训练好的模型发送给服务端,服务端应用 Dirichlet 或 Bayesian 构建模型的分布,具体构建方法可以看论文,其中用到的蒙特卡洛方法可以参考【怎么通俗理解蒙特卡洛模拟?】
  • 模型采样:服务端对所构建的模型分布进行采样,得到 model ensemble,注意,这里采样得到的是多个模型,是无法应用于联邦学习的(受限于通信代价,服务端一般只把一个模型发送给客户端)。那么就需要把这多个模型聚合成一个,但这里又不像 FedAvg 可以根据数据量大小来进行聚合,因此这篇文章提出了一个新的方法。
  • 模型聚合:文章假设服务端可以收集到一些无标签数据,然后以集成学习的方法用采样得到的 model ensemble 对数据进行预测,将预测结果作为伪标签,进而以知识蒸馏的方式将 model ensemble 总结为 single global model。具体是以伪标签为 teacher,single global model 为 student。
  • 有一个问题是,集成学习预测出的伪标签实际存在很多噪声,为了预防 single global model 对噪声过拟合,文章在蒸馏过程中应用了 stochastic weight average(SWA)。SWA采样"循环学习率"执行随机梯度下降(SGD),并对 traversed models(个人理解为model ensemble)
### 联邦学习中的数据异构性及其解决方案 #### 数据异构性的定义与影响 在联邦学习环境中,各参与者的数据分布可能显著不同,这种现象被称为数据异构性。具体来说,数据异构性体现在两个方面:统计异构性系统异构性。统计异构性指的是不同客户端之间的数据分布差异较大;而系统异构性则涉及硬件配置、网络条件等方面的不一致[^2]。 #### 主要挑战 由于这些特性,在构建有效的联邦学习框架时面临的主要困难包括但不限于: - **收敛速度慢**:当各个客户机上的局部模型参数相差很大时,全局聚合后的平均梯度可能会偏离最优解路径,从而减缓整体收敛过程。 - **过拟合风险增加**:如果某些特定类型的样本只存在于少数几个客户机上,则容易造成过度适应于这部分特殊模式的情况发生。 - **公平性难以保障**:对于那些拥有较少数量或质量较低的数据源而言,它们贡献出来的信息量相对有限,可能导致最终形成的公共模型对其表现不佳。 #### 常见解决方案概述 ##### 迁移学习辅助下的个性化策略 为了应对上述难题之一——即如何让来自不同领域/任务域的数据集之间相互协作并共同促进目标函数的学习效率问题,研究者们提出了基于迁移学习的方法来增强跨站点间的信息交流能力。这种方法允许每个参与方根据自身的具体情况调整所接收到来自其他成员处传来的知识表示形式,进而达到更好的适配效果[^1]。 ##### 异构模型集成与协同训练 针对不同类型甚至结构完全不同的神经网络在同一轮次内同步更新权重所带来的兼容性障碍,有学者探索出了利用多模态融合机制或是设计专门用于处理此类情况的新颖架构作为突破口。例如,采用教师-学生范式的“知识蒸馏”手段可以在一定程度上缓解因基础组件间的巨大差距而导致的合作难度加大的状况。此外,还有通过引入额外的正则项约束使得原本独立运作着的各种子模块能够在更高层次上形成统一的整体,以此实现更高效的集体智慧结晶[^3]。 ```python def federated_learning_with_heterogeneous_data(): # 初始化全局模型其他必要变量 while not convergence_criteria_met: local_models = [] for client in clients: if isinstance(client, TransferLearningClient): model = transfer_learned_model(client.data) elif isinstance(client, HeterogeneousModelClient): model = heterogeneous_model_integration(client.models) updated_params = train_local_model(model, client.data) local_models.append(updated_params) global_model.update(aggregate(local_models)) return global_model ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

联邦学习小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值