1. 论文大意
论文首先就是指出现有的PFL方法(比如finetune和个性化层)都没怎么捕捉到不同task之间的联系,所以就提出了这个方法,为每一个Client引入了一个长度为n的权重变量 p i p_i pi,也就是i号客户端对于当前客户端的权重,初始化为1/n。
那怎么知道权重变量到底应该要等于多少?是通过train出来的,于是又引入了一个叫做“核心模型”的名词,当然事后就知道核心模型其实就是每个客户端各自的模型。具体来说就是每个客户端都能获取到其他所有的客户端的模型,然后拿着其他客户端的模型跑自己的数据,谁跑出来的loss小谁就对我有帮助,权重会相对大一些。
当然作者又发现实际情况把所有的客户端的模型都拿过来太耗费资源了,又设置了一个数量上界M。每次只拿M个,没拿满的时候优先拿之前没拿过的客户端的模型。
F i ( w i ( p ) ) = 1 n i ∑ ξ ∈ D i t r L ( w i ( p ) ; ξ ) + λ ( r ) μ 2 ∥ p i − p 0 ∥ 2 2 F_i(w_i^{(p)}) = \frac{1}{n_i} \sum_{\xi \in D_i^{tr}} \mathcal{L}(w_i^{(p)}; \xi) + \lambda(r)\frac{\mu}{2} \| p_i - p_0 \|_2^2 Fi(wi(p))=ni1∑ξ∈DitrL(wi(p);ξ)+λ(r)2μ∥pi−p0∥22
以上是训练p的损失函数。λ是权重函数,随着轮次的上升而下降。
正则化项 的作用是在优化过程中引导
p
i
p_i
pi 不要偏离全局初始向量
p
0
p_0
p0 太多:
-
早期阶段:正则化项的权重 较大,DR向量 p i p_i pi 的更新受到更多限制,倾向于让客户端更多地依赖全局模型。
-
后期阶段:随着训练轮次的增加,正则化权重逐渐减小,允许客户端的个性化模型逐渐发挥更大的作用。
通过这个动态调整机制, p i , j p_{i,j} pi,j 会根据客户端的需求逐渐优化出一个最优组合,使得客户端 i i i 在本地数据上的性能最优。
2.算法缺陷
很明显的缺陷是
- 数据传输成本过大(每次一个客户端要拿M个模型,N个客户端就是N*M个)
- 训练时间成本过大(不仅要拿M个模型,还要拿这M个模型trainM次才能跑出来权重。。。)
最后可能这个算法才刚刚开始没跑几轮,其他的算法都已经跑完+finetune完了。。。