pFedHN全称
Personalized Federated Learning using Hypernetworks
基于超网络的个性化联邦学习
论文地址: 《Personalized Federated Learning using Hypernetworks》
github地址: https://github.com/AvivSham/pFedHN
原文算法:
R number of rounds 全局迭代次数
K number of local rounds 客户端本地迭代次数
α learning rate 全局学习率
η client learning rate 客户端本地学习率
逐句分析
第一句:
操作:在c++中等价于for(int x=0;x<R;x++)
第二句:
操作:从n个客户端中选择某个客户端i
第三句:(因为打不出上标,θ(~)i代表θ上面有个~)
解释:该算法定义了一个函数h(x,y);其中θi表示客户端本地模型的参数;vi是全局模型对于客户端i的一个参数,它在处理不同的客户端时取值不同,用于体现个性化;φ是全局模型的另一个参数,用于体现不同客户端之间的某些共性;θ(~)i表示改变后的θi值,在这里可以理解为一个局部变量,用来存储改变后的值,因为θ(~)i要进行多次迭代更新,而且后面要用到的是θi改变后与改变前的差值
操作:set...and...就是分别进行两个赋值
第四句:
操作:类似第一句
第五句:
解释:Si指的是第i个客户端的总样本空间
操作:从第i个客户端的总样本空间中选部分样本B
第六句:
解释:∇代表Nabla算子,通常用于求梯度(各个自变量偏导数的和),而∇θ(~)i则代表对θ(~)i求偏导,但是由于θ(~)i代表的是神经网络中的一系列参数,所以其实还是求梯度;Li(x)代表的是经历神经网络后得到的损失函数,用于评估神经网络的效果
操作:运算然后赋值
第七句:
解释:Δθi为θ(~)i与θi的差值
第八九句:
操作:类比第六句更新vi φ