目录

  • 前言
  • 1. 引言
  • 2. 问题定义
  • 3. FedAvg
  • 4. SCAFFOLD
    • 有效性分析
  • 5. 实验
    • 5.1 模拟数据集
    • 5.2 EMNIST数据集
    • 5.3 结论
  • 6. 总结

前言


题目: SCAFFOLD: Stochastic Controlled Averaging for Federated Learning
会议: International Conference on Machine Learning 2020
论文地址:SCAFFOLD: Stochastic Controlled Averaging for Federated Learning

当客户端数据是非独立同分布时,FedAvg的收敛速度会受到所谓client-drift的影响。作为一种解决方案,本文作者提出了SCAFFOLD,该算法使用控制变量(方差缩减)来纠正其局部更新中的client-drift。

client-drift在之前的一篇文章MLSys 2020 | FedProx:异质网络的联邦优化
中实际上已经提到过了:如果数据是独立同分布的,那么本地模型训练较多的epoch会加快全局模型的收敛;如果不是独立同分布的,不同设备在利用非IID的本地数据进行训练并且训练轮数较大时,本地模型将会偏离初始的全局模型。

我们不妨对FedAvg进行分析(非独立同分布):

假设一共两个客户端,每个客户端的本地更新次数为3。

初始的全局模型xxx发送给两个客户端以形成它们的本地模型y1y_1y1​和y2y_2y2​,然后经过三次更新,客户端1的y1y_1y1​向其最优解x1∗x_1^*x1∗​移动,客户端2的y2y_2y2​向其最优解x2∗x_2^*x2∗​移动。之所以两个模型向着两个不同方向移动,是因为两个客户端的数据分布不一致。

两个客户端的三次本地更新完毕后,取两个客户端模型的均值形成最新的server模型。这时的server模型并不在最优解的位置x∗x^*x∗。因此我们可以发现,如果客户端数据分布不一致,那么本地模型在更新时会朝着不同方向进行优化,这会使得我们很难得到一个普适的全局模型。

为了缓解client-drift,本文作者提出了一种新的联邦优化算法SCAFFOLD,SCAFFOLD引入了服务器控制变量ccc和客户端控制变量cic_ici​,控制变量中含有模型的更新方向信息,通过在本地模型的更新公式中添加一个修正项c−cic-c_ic−ci​,SCAFFOLD克服了梯度差异,有效缓解了client-drift。

1. 引言

联邦优化存在以下关键挑战:

  1. 服务器与客户端间网络连接相对较慢。
  2. 在给定时间内只有一小部分客户端能够用于训练。
  3. 不同客户端间数据分布的异质性。

FedAvg虽然可以缓解通信压力,但它在异质数据上的表现不太好,如何改正FedAvg的这种缺陷也是联邦学习目前比较热门的一个研究方向。客户端间数据的异质性会在客户端的更新中引入一个client-drift,这会导致收敛变缓。

作为一种解决方案,SCAFFOLD试图纠正这种client-drift。

2. 问题定义

符号定义:

需要优化的函数:

fif_ifi​表示客户端iii的损失函数,即最小化所有客户端的平均损失。

3. FedAvg

客户端抽样集合为SSS,对每个被抽样的客户端,其本地模型yi=xy_i=xyi​=x将执行KKK次本地更新:
yi←yi−ηlgi(yi)y_i \gets y_i-\eta_lg_i(y_i)yi​←yi​−ηl​gi​(yi​)
ηl\eta_lηl​为学习率。接着,客户端的更新yi−xy_i-xyi​−x(模型增量)将在服务器端进行聚合:
x←x+ηg∣S∣∑i∈S(yi−x)x \gets x+\frac{\eta_g}{|S|}\sum_{i \in S}(y_i-x)x←x+∣S∣ηg​​i∈S∑​(yi​−x)
即对增量进行聚合。当然也可以直接对更新后的模型进行聚合:
x←ηg∣S∣∑i∈Syix \gets \frac{\eta_g}{|S|}\sum_{i \in S}y_ix←∣S∣ηg​​i∈S∑​yi​

4. SCAFFOLD

与FedAvg不同的是,SCAFFOLD为每个客户端(客户端控制变量cic_ici​)和服务器(服务器控制变量ccc)设置了控制变量,

两种控制变量间的关系:
c=1N∑cic=\frac{1}{N}\sum c_ic=N1​∑ci​
即服务器的控制变量为所有客户端控制变量的平均值,所有控制变量都需要进行初始化,最简单的情况是都初始化为0。

SCAFFOLD算法的伪代码:

每一轮通信中,服务器端的参数(x,c)(x, c)(x,c)(模型+控制变量)都被发送到被选中的客户端SSS。每一个被选中的客户端都将其本地模型初始化为yi←xy_i \gets xyi​←x,然后进行本地更新:
yi←yi−ηl(gi(yi)+c−ci)y_i \gets y_i-\eta_l(g_i(y_i)+c-c_i)yi​←yi​−ηl​(gi​(yi​)+c−ci​)
等到KKK次本地更新完毕后,局部控制变量cic_ici​也需要进行更新,作者提供了两种更新选择:

选项I可能比II更稳定,具体取决于应用程序,但II的计算成本更低,而且通常足够(论文中所有的实验都使用选项II)。

局部控制变量更新后,对全局模型进行更新:
x←x+ηg∣S∣∑i∈S(yi−x)c←c+1N∑i∈S(ci+−ci)x \gets x+\frac{\eta_g}{|S|}\sum_{i \in S}(y_i-x)\\ c \gets c+\frac{1}{N}\sum_{i \in S}(c_i^+-c_i)x←x+∣S∣ηg​​i∈S∑​(yi​−x)c←c+N1​i∈S∑​(ci+​−ci​)
当然,我们也可以直接对更新后的模型进行聚合:
x←ηg∣S∣∑i∈Syic←1N∑i∈Sci+x \gets \frac{\eta_g}{|S|}\sum_{i \in S}y_i\\ c \gets \frac{1}{N}\sum_{i \in S}c_i^+x←∣S∣ηg​​i∈S∑​yi​c←N1​i∈S∑​ci+​
我们可以观察本地模型更新公式:
yi←yi−ηl(gi(yi)+c−ci)y_i \gets y_i-\eta_l(g_i(y_i)+c-c_i)yi​←yi​−ηl​(gi​(yi​)+c−ci​)
如果局部控制变量cic_ici​总是为0,那么更新公式将变为:
yi←yi−ηlgi(yi)y_i \gets y_i-\eta_lg_i(y_i)yi​←yi​−ηl​gi​(yi​)
也就是说,SCAFFOLD将退化为FedAvg。

有效性分析

可以发现,SCAFFOLD只是在FedAvg的基础上增加了一个修正项c−cic-c_ic−ci​,就可以有效缓解本地客户端的client-drift,这其中的机理是什么呢?

我们知道,如果通信成本不是问题,最理想的客户端更新机制应该为:
yi←yi+1N∑jgj(yi)y_i \gets y_i+\frac{1}{N}\sum_{j}g_j(y_i)yi​←yi​+N1​j∑​gj​(yi​)
这种更新本质上是计算损失函数fff的无偏梯度,相当于在IID情况下运行FedAvg,但是这样的更新需要在每个更新步骤中与所有客户端进行通信。

与之对比,SCAFFOLD使用了控制变量(选项I):

因为SCAFFOLD的本地更新方式为:
yi←yi−ηl(gi(yi)+c−ci)y_i \gets y_i-\eta_l(g_i(y_i)+c-c_i)yi​←yi​−ηl​(gi​(yi​)+c−ci​)
又有:

所以SCAFFOLD通过控制变量来近似模拟了理想状态下的更新。

因此,对于任意异质的客户端,SCAFFOLD的本地更新保持同步和收敛。

通俗点解释:

我们观察控制变量的更新:

可以发现,控制变量中含有该客户端模型的更新方向(梯度)信息。

全局控制变量ccc是所有客户端本地控制变量的均值,也就是说全局控制变量ccc中含有其他所有客户端的模型更新方向信息。

然后本地更新方式:
yi←yi−ηl(gi(yi)+c−ci)y_i \gets y_i-\eta_l(g_i(y_i)+c-c_i)yi​←yi​−ηl​(gi​(yi​)+c−ci​)
c−cic-c_ic−ci​我们可以理解为全局模型相对于本地模型的client-drift值,也就是说我们在对本地模型进行更新时考虑了这种差异,这将有效克服client-drift。

可视化解释如下:

对于单个客户端,接收服务端的模型xxx然后进行更新,如果采用FedAvg的更新机制,那么最优解将向着x1∗x_1^*x1∗​移动,但加入一个修正项c−cic-c_ic−ci​后,将对模型的更新方向产生一个修正,使其朝着真正的最优解x∗x^*x∗移动。

5. 实验

5.1 模拟数据集


将梯度异质性(A1)变为G∈[1,10,100]G\in [1, 10, 100]G∈[1,10,100]。可以发现,对于所有的G值,随着局部更新次数的增加,FedAvg收敛变慢。这是因为随着本地更新次数的增加,客户端漂移会增加,从而阻碍全局收敛。此外,当我们增加G时(增加异质性),FedAvg的收敛继续减缓。当异质性很小(G=β=1G=\beta=1G=β=1)时,FedAvg可以与SGD竞争。

观察图3的下面三幅图可以发现,SCAFFOLD始终是收敛最快的,并且其收敛性不受G的影响。

5.2 EMNIST数据集


表3展示了不同本地更新次数(epochs)下,达到逻辑回归的0.5测试精度所需要的通信次数。1K+表示经过1K次通信后仍无法达到0.5精度。

可以发现:

  1. SCAFFOLD在所有的相似度中表现都是最好的。
  2. 当数据间相似度为0时,FedAvg随着本地更新次数的增加,其通信轮数也在增加,并且最后始终无法达到预定精度。
  3. 随着相似度增加,FedAvg和SCAFFOLD都始终优于SGD。
  4. FedProx的效果始终是最差的。

改变抽样客户端的数量,预定精度降为0.45,本地更新次数固定为5,实验结果如下:

可以发现,无论在什么客户端比例下,SCAFFOLD始终优于FedAvg。

5.3 结论

通过上述实验我们可以发现:

  1. SCAFFOLD在任何设置下始终优于SGD、FedAvg和FedProx。FedAvg总是比SCAFFOLD慢,比FedProx快。
  2. 对于异质客户端来讲,SCAFFOLD > SGD > FedAvg。当本地更新次数大于5时,FedAvg的性能将比SGD差。
  3. 随着相似度的增加,SCAFFOLD和FedAvg的收敛都将加快,但SGD保持相对稳定。
  4. SCAFFOLD对客户端比例具有弹性。随着减少抽样客户的比例,SCAFFOLD和FedAvg只显示出一种次线性的减速。在相似性较高的情况下,它们对抽样更具弹性。
  5. SCAFFOLD在非凸实验中优于FedAvg。

6. 总结

本文研究了异质性对联邦学习优化算法性能的影响。理论分析表明,FedAvg会受到梯度差异的严重阻碍,甚至比SGD还要慢。鉴于此,本文提出了一种新的联邦优化算法SCAFFOLD,SCAFFOLD引入了服务器控制变量ccc和客户端控制变量cic_ici​,控制变量中含有模型的更新方向信息,通过在本地模型的更新公式中添加一个修正项c−cic-c_ic−ci​,SCAFFOLD克服了梯度差异,有效缓解了client-drift。

ICML 2020 | SCAFFOLD:联邦学习的随机控制平均相关推荐

  1. 联邦学习算法SCAFFOLD的PyTorch实现

    目录 I. 前言 II. 数据集介绍 III. SCAFFOLD 1. 模型定义 2. 优化器定义 3. 服务器端 4. 客户端 IV. 完整数据及代码 I. 前言 SCAFFOLD的原理请见:ICM ...

  2. 提出智能扰动方法!字节跳动隐私保护论文入选 NeurIPS 2020 联邦学习Workshop

    摘要:字节跳动在隐私保护上的最新研究,有利于打消联邦学习上对标签数据安全的顾虑,进一步推动隐私计算的发展. 第三十四届神经信息处理系统大会(Conference and Workshop on Neu ...

  3. ​《2021联邦学习全球研究与应用趋势报告》发布,中美为最大领跑者 | 附下载链接...

    撰文:XT 编审:寇建超 排版:李雪薇 7 月 31 日,美国亚马逊公司(Amazon)被卢森堡数据保护委员会处以 7.46 亿欧元(约合 57.2 亿元人民币)的罚款,原因是 Amazon 违反了欧 ...

  4. 字节跳动联邦学习平台通过中国信通院首批评估 数据安全能力得到专业验证

    近日,中国信息通信研究院(以下简称"中国信通院")公布了安全评估结果,字节跳动Fedlearner联邦学习平台(以下简称"字节跳动Fedlearner")成为顺 ...

  5. 2020年趋势一览:AutoML、联邦学习、云寡头时代的终结

    作者 | Roberto Sannazzaro,Ben Longstaff 译者 | 夕颜 出品 | AI科技大本营(ID:rgznai100) [导读]在 2020 年来临之际,新年前夕往往是人们回 ...

  6. 2020年趋势一览:AutoML、联邦学习、云寡头时代的终结(附链接)

    来源:授权自AI科技大本营(ID:rgznai100) 本文约2300字,建议阅读9分钟. 本文将深入探讨关于 AI 的技术和非技术方面的趋势,讨论一下相对较新的趋势. [ 导读 ]在 2020 年来 ...

  7. 2020 年技术趋势一览:AutoML、联邦学习、云寡头时代的终结

    2020-01-12 12:04:26 作者 | Roberto Sannazzaro,Ben Longstaff 译者 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 在 2020 ...

  8. 【送书】联邦学习在视觉领域的应用,揭秘2020年AAAI人工智能创新应用奖获奖案例!...

    联邦学习是如何应用在视觉领域的? 本文会通过一个获得了2020年AAAI人工智能创新应用奖(也是第一个基于联邦学习的人工智能工业级奖项)的案例来向大家介绍! 本案例是联邦学习在视觉.物联网.安防领域的 ...

  9. 个性化联邦学习PFedMe详细解读(NeurIPS 2020)

    关注公众号,发现CV技术之美 本文介绍一篇 NeurIPS 2020 的论文『Personalized Federated Learning with Moreau Envelopes』,对个性化联邦 ...

最新文章

  1. Visual Studio找不到iOS模拟器
  2. 【转载】笛卡尔转极坐标
  3. Pytorch的torch.cat实例
  4. Discuz代码研究-编码规范
  5. 发生android.view.ViewRoot$CalledFromWrongThreadException异常的解决方案
  6. JAVA-MyBatis ORM
  7. 休眠锁定模式– OPTIMISTIC_FORCE_INCREMENT锁定模式如何工作
  8. Office 365 系列之九:配置和体验 Exchange 和 Lync
  9. mysql+导入+306_mysql常用命令二
  10. Elasticsearch学习之基本核心概念
  11. 每日长难句打卡Day23
  12. 摩托罗拉再裁员!仍坚守模块化手机业务
  13. Linux常用命令及配置--简单
  14. shell while 结束循环_Shell脚本编程2 for循环/while循环
  15. 用grub4dos制作U盘启动盘winpe+红叶dos+maxdos+veket+linuxmint
  16. python汉化idle_idle python
  17. ch341a i2c 安卓_CH341A安卓平板OTG连接成功但读取不到数据
  18. 微信淘宝抖音互通,旅游商家如何玩转私域流量?
  19. 【查找算法】折半查找法
  20. seo方法 seo优化技巧 教你如何提高网站排名

热门文章

  1. 禁止K8S容器内子进程拥有提升权限的能力
  2. 【lua/aviutl】小型倒计时
  3. AARRR模型常见指标
  4. 用python画一朵鲜艳欲滴的红玫瑰
  5. MacOS解压rar文件
  6. 数理统计复习笔记七——列联表的独立性检验
  7. Hmmm:在社交网络上展示不同的真实的你
  8. Win10样式管理与夜间模式
  9. tomcat去掉项目名称直接访问项目
  10. AndroidUI和交互整理集合