2021/06/26
Per_FedAvg复现——FedAvg相关
参考文章
以上为主要使用的参考文章,其余就不一一赘述
联邦学习
特点:允许多个设备或计算节点在不共享原始数据的情况下进行模型训练。
原理:核心在于模型的训练是在本地设备上进行的,只有模型的更新参数被汇总到中央服务器进行聚合。
过程:本地训练——云端训练——迭代;直到训练过程收敛。
分类:横向联邦学习、纵向联邦学习、联邦迁移学习。
- 横向:参与者的数据特征重叠较多,而样本ID重叠较少的情况。通过联合多个参与者的具有相同特征的多行样本进行联邦学习。
- 纵向:参与者的训练样本是对齐的,但数据特征不完全相同的情况。通过联合多个参与者的共同样本的不同数据特征进行联邦学习。
- 迁移:参与者间特征和样本重叠都很少时,可以使用联邦迁移学习。它利用数据、任务或模型之间的相似性,将在源领域学习过的模型应用于目标领域。
优势:数据隔离、模型质量无损、信息交换。
- 数据隔离:数据不会泄露到外部,满足用户隐私保护和数据安全的需求。
- 模型质量无损:联邦模型比割裂的独立模型效果好,不会出现负迁移。
- 信息交换:参与各方在保持独立性的情况下,进行信息与模型参数的加密交换,并同时获得成长。
应用:在解决数据隐私、数据安全和法规遵从性问题方面展现出巨大潜力。
FedAvg
特点:是一种常用的联邦学习算法,它通过参与者之间的通信和模型聚合来实现全局模型的训练。
原理:FedAvg的基本原理是通过加权平均来聚合不同参与者的模型参数。
工作流程:
- 初始化全局模型:在训练开始之前,服务器会初始化一个全局模型。这个模型可以是任何类型的机器学习模型,如神经网络。
- 选择参与者:在每个训练轮次中,服务器从所有可用的参与者中随机选择一部分参与者。被选中的参与者将用于训练局部模型。
- 分发全局模型:服务器将当前的全局模型分发给所有被选中的参与者。
- 更新局部模型:每个参与者在自己的本地数据集上训练接收到的全局模型,并更新模型的参数。这个过程是独立的,每个参与者都使用自己的数据和计算资源。
- 聚合局部模型:所有参与者完成本地训练后,将更新后的模型参数发送回服务器。服务器对所有的局部模型参数进行加权平均,以计算新的全局模型参数。这个加权平均的过程考虑了不同参与者数据量的大小,通常通过数据量的比例来确定每个参与者的权重。
- 迭代:服务器将新的全局模型再次分发给参与者,并进入下一轮训练。这个过程不断重复,直到满足预设的停止条件,如达到预设的轮次或满足收敛条件。
优势:低通信开销、支持异质性数据、保护数据隐私、提高模型泛化能力。
-
低通信开销:由于FedAvg只需要上传模型参数而不是原始数据,因此通信开销较低。
-
支持异质性数据:由于不同的参与者可以使用不同的数据集进行训练,FedAvg能够处理异质性数据。
-
保护数据隐私:FedAvg通过分布式训练的方式,避免了原始数据的集中存储和传输,从而保护了参与者的数据隐私。
-
提高模型泛化能力:由于FedAvg利用所有参与者的本地数据进行训练,模型的多样性和泛化能力得到了提高。
Per_FedAvg
特点:是一种联邦元学习方法,旨在解决联邦学习中的个性化问题。
原理:首先,利用所有客户端的数据得到一个初始模型然后,各个客户端使用该初始模型在本地进行少数几轮(如一次)梯度下降,以得到适应于各自数据的个性化模型。
工作流程:
- 服务器初始化模型。
- 服务器选择一部分客户端发送模型。
- 被选中的客户端进行本地更新:
- 首先选择一批数据计算损失函数的梯度。
- 然后进行一步梯度下降得到元函数。
- 再选择一批数据对元函数进行梯度下降得到更新后的元函数。
- 客户端将更新好的元函数上传到服务器进行聚合。
- 服务器将更新后的模型发往被选中的客户端
- 重复上述步骤1-5,直到满足条件。
优点:个性化、高效化、元学习
- 个性化:Per_FedAvg通过让客户端在本地进行梯度下降来适应其数据,从而生成个性化的模型。
- 高效性:与在本地从头开始训练模型相比,使用Per_FedAvg的初始模型进行少量迭代可以更快地收敛到较好的模型。
- 元学习:Per_FedAvg借鉴了元学习的思想,即学会如何学习。它设计了一个新的优化函数,该函数是所有客户端元函数的平均,而元函数则是本地损失函数进行一步梯度下降后得到的。
缺点:计算成本、影响因素多。
- 计算成本:在计算梯度时,Per_FedAvg需要计算参数的Hessian矩阵,这可能会带来较大的计算成本。因此,在实际应用中可能需要采用近似计算或其他优化方法。
- 影响因素:Per_FedAvg的性能受到多种因素的影响,包括客户端数据的分布、本地更新的轮数、学习率等。因此,在实际应用中需要进行适当的参数调整和优化。