【文献阅读】联邦学习论文阅读FedAvg

联邦学习论文阅读FedAvg—[Arxiv2017] Communication-Efficient Learning of Deep Networks from Decentralized Data

摘要

分布式学习的富数据常常是隐私敏感、数量庞大的,这可能会妨碍数据中心使用传统的方法进行记录和训练。本文提出了一种替代方法,即将训练数据分布在移动设备上,并通过聚合本地计算的更新来学习共享模型。称之为联邦学习

  • 使用基于迭代模型平均的方法对联邦学习深度网络进行训练
  • 对五个不同的架构和四个数据集进行了广泛的验证评估,结果表明该方法对不平衡和非IID数据分布具有鲁棒性
  • 通信成本是主要的开销

1. Intro

问题

使用移动设备中的数据训练模型导致的数据隐私问题

主要贡献

  1. 提出移动设备分散数据训练问题是一个重要的研究方向
  2. 提出了一个直接有效的算法FederatedAveraging算法,将每个客户端上进行本地随机梯度下降与在服务器上进行模型平均相结合。对不平衡和非IID的数据分布具有鲁棒性,并减少了对分散数据进行深度网络训练所需的通信轮次
  3. 对所提出的方法进行了实验

联邦学习

具有以下特性:

  1. 训练来自移动设备的真实数据比训练数据中心提供的代理数据更具有优势
  2. 数据的隐私敏感度更大,因此最好不要仅处于训练模型的目的将其记录到数据中心
  3. 对于监督任务,可以从用户交互中推断出数据的标签

隐私

  1. 联邦学习中所传输的信息是改进特定模型所必需的最小更新(隐私利益的强度取决于更新的内容)
  2. 更新本身是短暂的。所包含的信息不会比原始训练数据更多
  3. 聚合算法不需要知道更新源,因此更新可以通过混合网络(如Tor)或通过受信任的第三方传输数据,无需标识元数据
  4. 本文最后讨论了将联邦学习与安全多方计算MPC以及差分隐私相结合的可能性

联邦优化

与传统的分布式优化问题相比,联邦优化有如下不同的关键属性:

  • 非独立同分布

    某一特定客户端上的训练数据通常是基于特定用户对移动设备的使用情况,因此任何特定用户的本地数据集都不能代表整体的分布

  • 不平衡

    一些用户会比其他用户更多地使用服务,导致本地数据量不同

  • 大规模分布

    参与优化的客户端数量将远远大于每个客户端的平均示例数量

  • 受限制的通信

    移动设备频繁地掉线,速度缓慢、费用昂贵

本文暂未讨论而实践中面临的问题:数据集随着数据增删而不断改变;客户端可用性与本地数据分布有复杂的关系;从来不响应或发送信息的客户端会损坏更新

本文优化方法

我们设定客户集合为K,每个客户有固定的本地数据集

  1. 在每一轮开始时,随机选择一部分客户,比例为C,
  2. 服务器将当前全局算法状态(如当前模型参数)发送给这些客户。
  3. 每一个被选中的客户基于全局状态和本地数据集进行本地计算,并将更新发送给服务器,
  4. 服务器将这些更新添加到全局状态中,然后重复这一过程。

为了提高效率,我们只选择了一小部分客户,因为我们的实验表明,在某一点之后增加更多客户的收益会递减。

当我们关注非凸神经网络目标函数时,我们所考虑的算法适用于任何形式的有限和目标,对于联邦优化来说,通信消耗占消耗的主要部分

data center optimization federated optimization
computation dominate
communication dominate

我们通过使用额外的计算来减少通信的轮次。可以增加的计算主要方式如下:

  1. 增加并行

使用更多的客户在每轮通信之间进行独立的运算

  1. 增加每个客户的运算

其中,每个客户端不是执行梯度计算那样的简单的计算,而是在每轮通信之间执行更复杂的计算

我们研究了这两种方法,但我们实现的加速主要是在客户端上使用最小并行级别,并在每个客户端上添加更多的计算。

相关工作

  • 现有工作只考虑到集群/数据中心设置,没有考虑到数据集的不平衡和非独立同分布的影响
  • 凸环境下的一些算法考虑到了通信效率问题
  • 本文通过增加客户端计算来降低计算

2. FedAvg算法

事实上,许多进展可以理解为调整模型的结构(以及损失函数),以更易于通过简单的基于梯度的方法进行优化

SGD可以很容易的用于联邦优化问题,其中每轮通信完成一次单批次梯度计算。这种方法具有计算效率,但是需要非常多的轮次以得到良好的模型。

FedSGD:每轮选择比例为C的客户,然后根据这些客户的数据计算梯度损失,因此C控制了全局批次规模,当C=1时对应全批次(非随机)梯度下降

FedAvg

mini-batch gradient descent(小批量梯度下降):随机选取数据中一定量的数据进行训练,然后计算损失函数更新梯度,这样既不会有更与复杂的计算量,又不会训练过于缓慢。

每个客户使用本地数据对当前模型进行一步梯度下降,然后服务器对产生的结果模型进行带权平均。一旦这个算法这样写,我们可以以在平均前迭代多次的方法为每个客户添加更多的计算。

计算量由三个关键参数控制:

C:每轮中进行计算的客户比例

E:每一个客户端对本地数据训练次数

B:用于客户更新的本地最小批量规模,即单次训练的样本数量

B=∞代表整个本地数据集被当成单一的最小批量,因此,当B=∞,E=1时对应于FedSGD

对于一个具有nk个本地示例的客户来说,每轮本地更新的数量为uk=E*nk/B
【文献阅读】联邦学习论文阅读FedAvg_第1张图片

实验准备:初始化设置对模型效果的影响分析

【文献阅读】联邦学习论文阅读FedAvg_第2张图片

  • 对于不同初始条件训练MNIST手写数字识别模型时(图左),平均后的训练效果不好
  • 对于相同初始训练条件,每个模型进行独立训练,然后进行平均,效果很好,最低点是θ=0.5时,即两个模型各取1/2

3. 实验结果

准备

  1. MNIST
  • 模型设置:
    1. 2NN:一个简单的多层感知器,具有2个隐藏层,每层有200个使用ReLu激活的单元,总共有199210个参数

    2. CNN:两个55的卷积层(第一个有32个通道,第二个有64个通道,每层后面有一个22的最大池化层),一个具有512个单元的全连接层,一个softmax输出层

  • 数据集划分:
    • IDD:先随机打乱数据,然后分给100个客户端每个客户端600个样例

    • Non-IDD: 按数字标签,将数据集划分为200个大小为300的碎片,每个客户端两个碎片,这样绝大多数客户端就只有两个数字实例。

  1. 莎士比亚全集

    • 模型设置

      LSTM: 将输入字符嵌入到一个已学习的8维空间中,然后通过两个LSTM层处理嵌入的字符,每层有256个节点,最后,第二个LSTM层的输出被发送到每个字符有一个节点的softmax输出层, 我们使用unroll的80个字符长度进行训练。总共有866578个参数

    • 数据集设置

      • 不平衡非IID:为每个角色建造一个客户数据集,每个角色至少有2行,每个角色前80%行数据用于训练,后20%行用于测试。一共划分出了1146个客户端。因为有的角色有大量台词,有的角色只有一两句,所以是不平衡的
      • 平衡IID:直接将莎士比亚作品平均划分给1146个客户端

实验数据

  1. Increasing parallelism

    可以看到当B不变,C=0.1时,对通信轮次的减少效果最为显著,在IID和非IID数据集上都成立。因此之后的实验中都设置C=0.1
    【文献阅读】联邦学习论文阅读FedAvg_第3张图片

  2. Increasing computation per client

    B(本地批量)不变,E(本地训练的轮数)增大,达到目标精度所用的轮次越少

    【文献阅读】联邦学习论文阅读FedAvg_第4张图片

    【文献阅读】联邦学习论文阅读FedAvg_第5张图片

  3. Can we over-optimize on the client datasets?

  • 当前模型参数仅在初始化阶段影响每个客户进行的优化,当E→∞时,对于凸问题无论初始化如何都会到达全局最小值;对于非凸问题,只要初始化在一个“盆地”中,都会收敛到局部最小值。某一轮平均可能会使模型达到比较好的结果,但是无限增加本地训练轮数不会有更大的提升

  • 对于某些模型,在训练后期,减少每轮迭代次数有助于更好地收敛
    【文献阅读】联邦学习论文阅读FedAvg_第6张图片

  1. CIFAR EXP

    在CIFAR数据集上进行了实验,对于基本SGD、FedSGD、FedAvg三类模型,FedAvg比FedSGD收敛到更高的测试集精度,推测模型平均产生的收益与dropout类似
    【文献阅读】联邦学习论文阅读FedAvg_第7张图片

  2. 在大规模LSTM上的实验

    FedAvg的方差较低
    【文献阅读】联邦学习论文阅读FedAvg_第8张图片

结论

FedAvg可以在相对较少的通信轮次里得到高质量的模型,未来可以通过差分隐私、MPC等方法进一步探索

疑问

  1. IID和非IID的区别

    独立同分布(Independent Identically Distribution)指随机过程中,任何时刻的取值都为随机变量,如果这些随机变量服从同一分布,并且互相独立,那么这些随机变量是独立同分布。

  2. 什么是凸问题和非凸问题

    凸:

    • 指的是顺着梯度方向走到底就一定是最优解 。
    • 大部分传统机器学习问题都是凸的。

    非凸:

    • 指的是顺着梯度方向走到底只能保证是局部最优,不能保证是全局最优。
    • 深度学习以及小部分传统机器学习问题都是非凸的。

代码运行结果

E=5

【文献阅读】联邦学习论文阅读FedAvg_第9张图片

E=10
【文献阅读】联邦学习论文阅读FedAvg_第10张图片

参考资料

代码

FedAvg实现

博客

  • 联邦学习论文阅读一:经典FedAvg
  • 对FedAvg中模型聚合过程的理解
  • 凸和非凸的理解

你可能感兴趣的:(文献阅读)