查看原文
其他

横向联邦优化的原理与思考

复旦大学TRADEOFF 开放隐私计算 2022-08-28


点击上方蓝字 关注我们
读:本文的作者围绕FedAvg,介绍横向联邦学习及其优化,同时给出了自己对一些可研究点的思考与建议。欢迎大家共同交流~
o1

联邦学习是做什么的?

联邦学习(Federated Learning, FL)的初心是建立一种方法在保护隐私的前提下让多个端协同进行机器学习训练。
假设存在一个中心服务器server,和多个拥有私有数据的客户端clients,FedAvg采用的做法是:
第一步,随机采样m个clients参与本轮训练并由server下发模型;
第二步,clients利用私有数据训练模型;
第三步,本轮参与方将模型参数变化量(原始论文是直接发参数,但发参数变化量是一个更加广泛采用的做法)发送至server;
第四步,server对这m个反馈进行聚合(参数平均)。
重复以上四步直至聚合模型收敛。
FedAvg的这种范式奠定了之后大量联邦学习算法的基本骨架,当然也有一些新颖的其他骨架但还没有成为主流,这里暂且不提。
o2

FegAvg与SGD的区别与联系

仔细看FedAvg,其实和SGD有着紧密联系。
如果将每个client看作SGD中的一个“样本”,一轮通信对应传统训练SGD的一次迭代,而m对应SGD中Batch的大小,每次client反馈给server的则是这个“样本”在本次迭代中所产生的“梯度”,至于client内部发生了什么我们暂且不管,就当其是一个黑盒吧,那么最后FedAvg可以算是一个抽象的SGD算法(其实从这一点出发FedAvg可引入epoch的概念,不过无关痛痒暂且不提)。
在讨论FedAvg和SGD操作上的区别之前,穿插一句:
既然两者这么像,是不是所有基于SGD改进的随机优化算法都可以应用在联邦学习上?
当然!
并且已经有文章这么做了,当年个人觉得这么很水,后来过了一两年就看到有人发了,不过个人现在依然觉得这个水法没有任何意义。
联邦学习这个特殊的设定给这种类SGD的优化过程带来了什么特殊的挑战呢?其实很大的挑战来源就是client这个“黑盒”
  1. clients的“梯度”是经过多个epoch的训练产生的,这原本是为了加速联邦学习,减小通信次数,但也带来了问题。与SGD中单个样本产生的梯度不同,客户端数据分布的差异会造成clients之间的“梯度”差异巨大,此时简单的平均会严重破坏单个“样本”原始的优化方向,这种破坏也可以称为知识遗忘问题。也可以这么理解,在平滑性假设下,SGD中Batch内每个样本只是走了一小步,这样的话他们的平均结果不会造成loss的巨大波动,而联邦学习设定里,每个样本的“梯度”都走的很远,一个批里面的“样本”带来的梯度已经不再处于一个平滑的局部区域内了。
  2. SGD中Batch内的梯度直接平均即可,但是clients的数据量不平衡,使得我们需要在参数平均时考虑引入合适的权重,也有文章考虑自适应权重,否则平均会被大数据量(或者大的迭代次数)的客户端的“梯度”所主导,这样会造成聚合模型对于不同客户端的不公平问题。
  3. SGD的梯度完全来自于当前模型参数和当前的输入样本,而client的“梯度”不仅仅取决于本轮拿到的模型参数和client数据集,它还受client的优化过程影响,同样的模型和数据集,可能会给client带来无数个不同的“梯度”,最终聚合时,不同client的“梯度”越接近,聚合过程引入的破坏就越小。
  4. 还有一些问题,比如client和server的loss的最优解不一致造成他们始终无法共赢。这些个人认为不算是general的问题,所以先不展开了。
  5. 待补充
值得一提的是,server的聚合本身也是一种挑战,即使clients的数据是完全iid的,只要模型参数差异比较大(比如一开始每个client收到的模型是不同初始化的),直接平均的效果就会很差。
o3

近年相关优化

以上是从SGD的角度看联邦学习的基本骨架,但其实经过两三年的发展,这一基本范式也亟待被改变。比如有文章尝试改变聚合过程,加入蒸馏方法(很low但是有效,唉);有文章尝试改进clients训练过程,为更好的聚合做准备;有文章尝试在模型参数的基础上向server上传部分统计信息以帮助更好的聚合;还有一些奇奇怪怪的文章在想办法蹭热点,比如引入生成模型(很多人闭着眼睛都知道生成模型在此有什么样的水法,但是也可中顶会)、引入Transformer(某文章还挂着李飞飞的名)等等。
此外,近年还流行研究个性化联邦学习以及将联邦学习应用在新的任务或场景中(聚类、ReID,GNN等)。
o4

关于研究点的思考与建议

最后贡献一个我觉得未来值得挖的一个坑,就是模型结构的研究,这是我一直想做也一直没开始做的事,在大家都关注联邦优化方面的研究时,或许可以尝试提出服务于联邦学习的模型子结构(即插即用,不破坏模型原始结构),在这一子结构的帮助下,提升原始模型联邦学习的收敛速度(有点重参数化的味道)。
个人感觉联邦学习(不涉及加密的部分)是一个有意思的、有应用价值的、同时门槛比较低但是想做出创新的工作难度也不小的一个方向。最近看到很多知乎的科普文,虽然有部分缺乏深度,但是也有很多写的不错的论文笔记,希望大家多多头脑风暴吧!


本文作者来自复旦大学,知乎号TRADEOFF




编辑:刘翔宇、陈袁园


END

欢迎投稿
邮箱:kedakeyin@163.com
更多隐私计算讨论,请点击公众号菜单栏,加入交流群一起学习成长。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存