机器学习小白来提问:关于联邦学习FedAVG和FedSGD的问题?
日期:2024-07-01 13:20:51 / 人气:
联邦学习中FedAvg和FedSGD都是以SGD为优化方法,那么如果不用SGD用别的优化算法比如RMSprop之类的,这也能算作FedAvg吗,难道称作FedRMS?
参考FedSGD和FedAVG的原始论文《Federated Learning of Deep Networks using Model Averaging》中的一段话:
To apply this approach in the federated setting, we select a C-fraction of clients on each round, and compute the gradient of the loss over all the data held by these clients. Thus, C controls the global batch size, with C=1 corresponding to full-batch (non-stochastic) gradient descent.2 We refer to this baseline algorithm as FederatedSGD (or FedSGD).
FedSGD:每次采用client的所有数据集进行训练,本地训练次数为1,然后进行aggregation。
C:the fraction of clients that perform computation on each round
每次参与联邦聚合的clients数量占client总数的比例。C=1 代表所有成员参与聚合
B:the local minibatch size used for the client updates.
client的本地的训练的batchsize
E:then number of training passes each client makes over its local dataset on each round
两次联邦训练之间的本地训练的次数
综上所述,C=E=1 ,B=∞时,FedAvg等价于FedSGD,FedSGD是特殊形式的FedAVG,与采用什么优化器没有关系。
其实弄清概念就很容易解释啦:
FedAvg: 每个设备都在本地进行深度学习模型的训练(比如SGD),而在训练的过程中,进行多次迭代(iteration=Data_Size / Batch_Size)。然后将训练好的模型发送至服务器,并聚合(加权平均)。
注意:一般FedAvg中迭代次数(iteration)和轮次(Epoch)是不同的概念。在mini-batch SGD中,iteration指的是用一个批次数据更新一次模型。epoch指的是用户多次更新模型,更新次数是Data_Size/Batch_Size。
FedSGD: 当每个用户只进行一次迭代(iteration=1),然后上传模型至服务器。此时,服务器加权平均模型等价于加权平均梯度。此时的FL相当于联合学习所有设备的梯度 (federated SGD),所以也有人提在FL中有上传模型(行)和梯度(不行)两种方式。
所以我认为FedAvg中原文的FedSGD是在Batch_size=Data_size的情况更准确的说是(FedGD federated GD),如果一般化的话,只要是FL中的本地iteration=1就可以当做是FedSGD。至于本地的优化器使用其他算法(RMSprop), 只要云端还是聚合模型,就还是在FedAvg的范式中。
还真的有FedAdam(Adaptive Federated Optimization,ICLR2021)
是聚合方式,而不是取决于使用什么优化器