算法流程:
训练过程中冻结客户端的头部参数,只训练主体参数。训练完之后再在客户端本地跑几个epoch微调一下(文章推荐5个)。
由于该算法与FedPer思路过于相似,故读完后跑了个实验。
FedPer:训练过程中只聚合主体参数。与BABU不同的是,BABU直接把头部参数给冻结了,而Per头部依旧是参与训练的。实验结果如下:
- 引出的疑惑是,Per的头部是全程参与训练的,而BABU的头部训练时是冻结的,只是最后tune了几个epochs,然而Per的性能竟然弱这么多,这是为什么?
- 最后看到文章第四节实验部分有提到,若过度关注于模型的初始性能(没有本地finetune过的性能),则会导致个性化准确率的减少。同时,集中训练的模型更难个性化。Per的头部参与了过多的训练,这可能是其个性化性能较差的原因。当然本人还有另一种想法,就是Per同时训练头部和主体参数,头部因训练而造成参数的改变也会影响主体的训练效果。而BABU完全锁定了头部参数,专注于主体参数的训练,就是在训练时专注于特征提取能力的提升,这样会使得BABU的主体层性能高于Per,而个性化性能只需要finetune几下就能训练好了,差别不大,故最终BABU的性能高于Per。
- 另外暂不清楚为何BABU性能弱于avg+finetune但论文中显示BABU明显优于avg+finetune