郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!

arXiv:1907.02189v2 [stat.ML] 8 Oct 2019

Abstract

  联邦学习使得大量的边缘计算设备在不共享数据的情况下共同学习模型。联邦平均法(FedAvg)是该算法中的一种主要算法,它在所有设备的一小部分上并行运行随机梯度下降(SGD),并每隔一段时间对序列进行平均。尽管它很简单,但在现实环境下却缺乏理论上的保障。本文分析了FedAvg在非iid数据上的收敛性,建立了强凸光滑问题的收敛速度O(1/T),其中T是SGDs的迭代次数。重要的是,我们的界证明了通信效率和收敛速度之间的权衡。由于用户设备可能与服务器断开连接,我们将设备完全参与的假设放宽到部分设备参与,并研究了不同的平均方案;在不严重降低学习速度的情况下,可以实现低设备参与率。我们的结果表明,数据的异质性减缓了收敛速度,这与经验观测相符。此外,我们还为FedAvg在非iid数据上的收敛性提供了一个必要条件:即使使用全梯度,学习率也必须下降;否则,解将偏离最优解。

1  Introduction

  联邦学习(FL),也被称为联邦优化,它允许多方在不共享数据的情况下协同训练模型[10,29,20,9,26,48]。类似于中心化并行优化[7,14,15,28,42,22,24,25,31,46,30],FL允许用户设备(也称为工作节点)执行大部分计算,中心参数服务器使用用户设备返回的下降方向更新模型参数。然而,FL有三个特征,使其区别于标准的并行优化[16]。

  首先,训练数据大量分布在大量设备上,中央服务器和设备之间的连接速度很慢。一个直接的结果是缓慢的通信,这激发了通信高效的FL算法[20,32,26,27]。联邦平均(FedAvg)是第一个,也许是最广泛使用的FL算法。它在一小部分采样的设备上并行运行E步SGD,然后每隔一段时间通过一个中央服务器对生成的模型更新进行平均。与SGD及其变体相比,FedAvg执行更多的本地计算和更少的通信。

  其次,与传统的分布式学习系统不同,FL系统不能控制用户的设备。例如,当手机关闭或WiFi访问不可用时,中央服务器将失去与此设备的连接。当这种情况在训练过程中发生时,这种无响应/非活跃的设备(称为“掉队者”)看起来比其他设备慢得多。不幸的是,由于它无法控制设备,系统只能等待或忽略掉队者。等待所有设备响应显然是不可行的;因此要求所有设备都处于活跃状态是不切实际的。

  再次,训练数据是非iid的,也就是说,设备的本地数据不能看作是从总体分布中提取的样本。本地可用的数据无法表示总体分布。这不仅给算法设计带来了挑战,也使得理论分析更加困难。虽然FedAvg在数据为非iid时确实有效[20],但即使在凸优化设置中,非iid数据上的FedAvg也缺乏理论保证。

  在假设(1) 数据是iid和(2) 所有设备都是活跃的基础上,为FL算法的收敛性保证做了大量的工作。Khaled等人[8],Yu等人[40],Wang等人[36]做了后一种假设,而Zhou和Cong[47]、Stich[33]、Wang和Joshi[35]、Woodworth等人[38]做了两个假设。这两个假设显然违背了FL的第二和第三个特征。

最新文章

  1. pycharm 调试 django 应用
  2. Android代码故事第一回,平均间隔的按钮
  3. [RabbitMQ+Python入门经典] 兔子和兔子窝
  4. MySql操作时间
  5. docker offical docs:Working with Docker Images
  6. OAF_架构MVC系列4 - Control的概述(概念)
  7. application.xml定时
  8. mybatis generator自动生成 实体类, sqlmap配置文件 详细介绍
  9. PHP set_exception_handler 设置异常处理函数
  10. Winedt 7.0 Build: 20120321 永久试用方法 WinEdt 7.0 破解
  11. UDP通讯协议
  12. [bzoj 1468][poj 1741]Tree [点分治]
  13. Another Eight Puzzle
  14. PHP fwrite 函数:将字符串写入文件(追加与换行)
  15. js转盘游戏
  16. MySql cmd下的学习笔记 —— 有关建立数据库的操作(连接Mysql,建立数据库,删除数据库等等)
  17. 5. Redis持久化
  18. Linux内存管理--基本概念【转】
  19. selinux介绍/状态查看/开启/关闭
  20. day01-Python输出

热门文章

  1. 详解 MySQL 面试核心知识点
  2. 3-Pandas之Series和DataFrame区别
  3. 如何优雅的设计 Spring Boot API 接口版本号
  4. Sharding-JDBC实现读写分离
  5. GLIBC_2.18 not found 之类的问题解决办法
  6. CF习题集三
  7. 007_对go语言中的自定义排序sort的小练习
  8. JavaScript小游戏实例:统一着色
  9. C#设计模式之13-职责链模式
  10. C#LeetCode刷题之#344-反转字符串​​​​​​​(Reverse String)