Communication-Efficient Learning of Deep Networks from Decentralized Data论文阅读和学习

Communication-Efficient Learning of Deep Networks from Decentralized Data

从分散的数据中进行深度网络的通信高效学习

abstract

现代移动设备可以访问大量适合学习模型的数据,这反过来可以大大改善设备上的用户体验。例如,语言模型可以改善语音识别和文本输入,图像模型可以自动选择好的照片。然而,这些丰富的数据往往对隐私敏感,数量庞大,或两者兼而有之,这可能会妨碍使用传统方法登录数据中心并在那里进行训练。我们提倡一种替代方案,将训练数据分布在移动设备上,并通过聚合本地计算的更新来学习共享模型。我们将这种分散的方法称为联邦学习

我们提出了一种基于迭代模型平均的深度网络联合学习的实用方法,并进行了广泛的实证评估,考虑了五种不同的模型架构和四个数据集。这些实验表明,该方法对于不平衡和非 IID 数据分布具有鲁棒性,而这是此设置的一个定义特征。通信成本是主要制约因素,与同步随机梯度下降相比,我们显示所需的通信轮数减少了 10-100 倍。

Introduction

手机和平板电脑日益成为许多人的主要计算设备 [30, 2]。这些设备上的强大传感器(包括摄像头、麦克风和 GPS)加上它们经常被携带的事实意味着他们可以访问前所未有的大量数据,其中大部分是私人数据。通过这些数据学习的模型有望通过为更智能的应用程序提供支持来大大提高可用性,但数据的敏感性意味着将其存储在集中位置存在风险和责任。

我们研究了一种学习技术,它允许用户集体获得从这些丰富的数据中训练出来的共享模型的好处,而无需集中存储它。我们将我们的方法称为联邦学习,因为学习任务是由一个由中央服务器协调的参与设备(我们称之为客户端)的松散联合来解决的。每个客户端都有一个本地训练数据集,该数据集永远不会上传到服务器。相反,每个客户端都会计算服务器维护的当前全局模型的更新,并且只传达这个更新。这是 2012 年白宫关于消费者数据隐私的报告 [39] 提出的重点收集或数据最小化原则的直接应用。由于这些更新特定于改进当前模型,因此一旦应用它们,就没有理由存储它们。

这种方法的一个主要优点是将模型训练与直接访问原始训练数据的需求分离开来。显然,仍然需要对协调训练的服务器有一定的信任。但是,对于可以根据每个客户端上可用的数据指定训练目标的应用程序,联合学习可以通过将攻击面限制在设备上,而不是设备和云上,从而显著降低隐私和安全风险。

我们的主要贡献是:1)将移动设备分散数据训练问题确定为一个重要的研究方向;2)选择一种可应用于此设置的简单实用的算法;3)对所提出的方法进行广泛的实证评估。更具体地说,我们引入了 FederatedAveraging 算法,该算法将每个客户端上的局部随机梯度下降 (SGD) 与执行模型平均的服务器相结合。我们对该算法进行了广泛的实验,证明它对不平衡和非 IID 数据分布具有鲁棒性,并且可以将训练分散数据上的深度网络所需的通信轮次减少几个数量级

联邦学习 联邦学习的理想问题具有以下特性:1)使用来自移动设备的真实世界数据进行训练比使用数据中心通常可用的代理数据进行训练具有明显的优势。2)这些数据对隐私敏感或规模较大(与模型的大小相比),因此最好不要纯粹为了模型训练而将其记录到数据中心(以服务于集中收集原则)。3)对于监督任务,可以从用户交互中自然推断出数据上的标签

许多支持移动设备智能行为的模型都符合上述标准。举两个例子,我们考虑图像分类,例如预测哪些照片在未来最有可能被多次查看或共享;以及语言模型,它可用于通过改进解码、下一个单词预测甚至预测整个回复来改善触摸屏键盘上的语音识别和文本输入 [10]。这两项任务的潜在训练数据(用户拍摄的所有照片以及他们在移动键盘上输入的所有内容,包括密码、URL、消息等)可能涉及隐私。这些示例的分布也可能与容易获得的代理数据集有很大不同:聊天和短信中的语言使用通常与标准语言语料库(例如维基百科和其他网络文档)有很大不同;人们在手机上拍摄的照片可能与典型的 Flickr 照片大不相同。最后,这些问题的标签是直接可用的:输入的文本是自我标记的,用于学习语言模型,照片标签可以通过用户与照片应用程序的自然交互来定义(哪些照片被删除、共享或查看)。

这两项任务都非常适合学习神经网络。对于图像分类,前馈深度网络,特别是卷积网络,以提供最先进的结果而闻名 [26, 25]。对于语言建模任务,循环神经网络,特别是 LSTM,已经取得了最先进的结果 [20, 5, 22]。

隐私 与数据中心对持久数据进行训练相比,联邦学习具有明显的隐私优势。
即使持有“匿名”数据集,仍可能通过与其他数据的连接将用户隐私置于风险之中 [37]。相比之下,为联邦学习传输的信息是改进特定模型所需的最小更新(当然,隐私优势的强度取决于更新的内容)。1更新本身可以(也应该)是短暂的。它们永远不会包含比原始训练数据更多的信息(由于数据处理不平等),并且通常包含的信息要少得多。此外,聚合算法不需要更新的来源,因此可以通过混合网络(如 Tor [7])或通过受信任的第三方传输更新而无需识别元数据。我们在本文的最后简要讨论了将联邦学习与安全多方计算和差异隐私相结合的可能性。

联邦优化 我们将联邦学习中隐含的优化问题称为联邦优化,与分布式优化建立联系(并形成对比)。联邦优化有几个关键属性,使其有别于典型的分布式优化问题:

  • Non-IID 给定客户端的训练数据通常基于特定用户对移动设备的使用情况,因此任何特定用户的本地数据集都不能代表人口分布。
  • Unbalanced 同样,一些用户会比其他用户更频繁地使用服务或应用程序,从而导致本地训练数据量不同。
  • Massively distributed(大规模分布) 我们预计参与优化的客户端数量将远远大于每个客户端的平均示例数量。
  • Limited communication 移动设备经常处于离线状态或连接速度慢或费用昂贵。

在这项工作中,我们重点关注优化的非 IID 和不平衡特性,以及通信约束的关键性质。部署的联合优化系统还必须解决大量实际问题:随着数据的添加和删除而变化的客户端数据集;与本地数据分布以复杂方式相关的客户端可用性(例如,美式英语使用者的电话插入时间可能与英式英语使用者不同);以及从不响应或发送损坏更新的客户端。

这些问题超出了当前工作的范围;相反,我们使用适合实验的受控环境,但仍解决了客户端可用性以及不平衡和非 IID 数据的关键问题。我们假设一个同步更新方案,该方案在多轮通信中进行有一组固定的 K 个客户端,每个客户端都有一个固定的本地数据集。在每一轮开始时,选择随机分数 C 的客户端,服务器将当前全局算法状态发送给这些客户端中的每一个(例如,当前模型参数)我们只选择一小部分客户端以提高效率,因为我们的实验表明,在某个点之后添加更多客户端的收益递减。然后,每个选定的客户端根据全局状态及其本地数据集执行本地计算,并向服务器发送更新。然后,服务器将这些更新应用于其全局状态,并重复该过程

当我们关注非凸神经网络目标时,我们所考虑的算法适用于任何形式的有限和目标(符号 “ = d e f ” “\overset{def}{=}” =def表示定义为(“defined as”)特别用来引入定义,使用 “ = d e f ” “\overset{def}{=}” =def意味着公式的左侧是通过右侧的表达式来定义的。)
min ⁡ ω ∈ R d f ( ω ) w h e r e f ( ω ) = d e f 1 n ∑ i = 1 n f i ( ω ) . ( 1 ) \begin{equation} \min_{\omega \in \mathbb{R}^d }f(\omega)\qquad where \qquad f(\omega)\overset{def}{=}\frac{1}{n}\sum _{i=1}^nf_i(\omega ). \qquad \qquad (1) \end{equation} ωRdminf(ω)wheref(ω)=defn1i=1nfi(ω).(1)
对于机器学习问题,我们通常采用 f i ( ω ) = ℓ ( x i , y i ; ω ) f_i(\omega )=\ell (x_i,y_i;\omega ) fi(ω)=(xi,yi;ω),也就是说,使用模型参数 ω \omega ω进行的示例 ( x i ) , y i (x_i),y_i (xi),yi上的预测损失。我们假设有K个客户端对数据进行分区,$\mathcal{P}_k 是客户端 k 上数据点的索引集,使用 是客户端k上数据点的索引集,使用 是客户端k上数据点的索引集,使用n_k=|\mathcal{P}_k |$。因此,我们可以将目标(1)重写为
f ( ω ) = ∑ k = 1 K n k n F k ( ω ) w h e r e F k ( ω ) = 1 n k ∑ i ∈ P k f i ( ω ) f(\omega )=\sum_{k=1}^{K} \frac{n_k}{n}F_k(\omega ) \qquad where \qquad F_k(\omega )= \frac{1}{n_k}\sum_{i \in \mathcal{P}_k } f_i(\omega ) f(ω)=k=1KnnkFk(ω)whereFk(ω)=nk1iPkfi(ω)
如果分区$\mathcal{P}k 是通过将训练示例均匀随机分配在客户机上而形成的,那么我们将有 是通过将训练示例均匀随机分配在客户机上而形成的,那么我们将有 是通过将训练示例均匀随机分配在客户机上而形成的,那么我们将有\mathbb{E}{\mathcal{P}_k }[F_k(\omega )]=f(\omega )$,其中期望值是分配给固定客户端 k 的示例集。这是分布式优化算法通常做出的 IID 假设;我们将不成立的情况(即 Fk 可能是 f 的任意糟糕近似值)称为非 IID 设置。

上面这段进一步解释
f ( ω ) = d e f 1 n ∑ i = 1 n f i ( ω ) . f(\omega)\overset{def}{=}\frac{1}{n}\sum _{i=1}^nf_i(\omega ). \qquad \qquad f(ω)=defn1i=1nfi(ω).

  • $ω∈\mathbb{R}^d $是需要优化的参数。
  • f i ( ω ) f_i(\omega) fi(ω)是第 iii 个数据样本上的损失。
  • nnn 是所有数据样本的总数,因此全局损失函数是所有样本损失的平均。

这个形式表示在中央服务器(或全局模型)上的优化问题,即希望在所有数据上最小化损失。

在联邦学习中,数据被分布在多个客户端上,不同的客户端拥有不同的数据集。假设有 K 个客户端,每个客户端 k 上的数据集大小为 n k n_k nk,而 P k \mathcal{P}_k Pk 表示客户端 k上的数据点的索引集。所有客户端的数据加起来构成整个数据集,即:
n = ∑ k = 1 K n k n=\sum_{k=1}^{K}n_k n=k=1Knk
这意味着,所有客户端上的数据总数等于每个客户端的数据点数之和。

由于客户端 k 上有 n k n_k nk 个数据点,可以将每个客户端上的损失定义为:
F k ( ω ) = 1 n k ∑ i ∈ P k f i ( ω ) F_k(\omega )= \frac{1}{n_k}\sum_{i \in \mathcal{P}_k } f_i(\omega ) Fk(ω)=nk1iPkfi(ω)

  • F k ( ω ) F_k(ω) Fk(ω) 是客户端 k 上所有数据点的平均损失函数。

  • 这表示客户端 k 上局部数据的损失函数,类似于全局损失函数的定义,但只基于客户端自身的数据。

将全局损失函数重写为:
f ( ω ) = ∑ k = 1 K n k n F k ( ω ) f(\omega )=\sum_{k=1}^{K} \frac{n_k}{n}F_k(\omega ) f(ω)=k=1KnnkFk(ω)

这个公式的推导思路如下:

  • 每个客户端 kkk 的损失 Fk(ω)F_k(\omega)Fk(ω) 是该客户端数据的平均损失。
  • 为了计算全局损失,需要对每个客户端的损失进行加权求和,权重为该客户端数据占全局数据的比例 n k n \frac{n_k}{n} nnk,即客户端 k上的数据量 n k n_k nk相对于全局数据量 n 的比例。

在数据中心优化中,通信成本相对较小,计算成本占主导地位,最近的重点是使用 GPU 来降低这些成本。相比之下,在联邦优化中,通信成本占主导地位——我们通常会受到 1 MB/s 或更低的上传带宽的限制。此外,客户端通常只有在充电、插入电源并使用不限流量的 Wi-Fi 连接时才会自愿参与优化。此外,我们预计每个客户端每天只会参与少量的更新轮次。另一方面,由于任何单个设备上的数据集与总数据集大小相比都很小,并且现代智能手机具有相对较快的处理器(包括 GPU),因此与许多模型类型的通信成本相比,计算基本上是免费的。因此,我们的目标是使用额外的计算来减少训练模型所需的通信轮次数。我们可以通过两种主要方式增加计算:1) 增加并行性,我们在每轮通信之间使用更多独立工作的客户端; 2) 增加每个客户端的计算量,每个客户端在每次通信之间执行更复杂的计算,而不是执行梯度计算等简单计算。我们研究了这两种方法,但我们实现的加速主要是因为一旦使用最低级别的客户端并行性,就增加了每个客户端的计算量。

相关工作 McDonald 等人 [28] 针对感知器研究了通过迭代平均本地训练模型进行分布式训练,而 Povey 等人 [31] 针对语音识别 DNN 研究了这种分布式训练方法。Zhang 等人 [42] 研究了一种采用“软”平均的异步方法。这些工作仅考虑集群/数据中心设置(最多 16 个工作者,
基于快速网络的挂钟时间),并且没有考虑不平衡和非 IID 的数据集,而这些属性对于联邦学习设置至关重要。我们将这种算法风格适应联邦设置并执行适当的实证评估,这会提出与数据中心设置中相关的问题不同的问题,并且需要不同的方法。

Neverova 等人 [29] 的动机与我们类似,他们也讨论了将敏感用户数据保留在设备上的优势。Shokri 和 Shmatikov [35] 的工作在几个方面与之相关:他们专注于训练深度网络,强调隐私的重要性,并通过在每轮通信中仅共享一部分参数来解决通信成本问题;然而,他们也没有考虑不平衡和非 IID 数据,实证评估也有限。

在凸设置中,分布式优化和估计问题已受到广泛关注 [4, 15, 33],一些算法确实特别关注通信效率 [45, 34, 40, 27, 43]。除了假设凸性之外,现有工作通常还要求客户端数量远小于每个客户端的示例数量,数据以 IID 方式分布在客户端之间,并且每个节点具有相同数量的数据点——所有这些假设违反了联邦优化设置。异步分布式 SGD 形式也已应用于训练神经网络,例如 Dean 等人 [12],但这些方法在联邦设置中需要大量更新。分布式共识算法(例如 [41])放宽了 IID 假设,但仍然不适合非常多客户端的通信受限优化。

现有的分布式优化算法有几个假设:

凸性假设:即目标函数是凸的,保证了算法在全局范围内可以收敛到一个最优解。
客户端数量较少:假设客户端的数量(即节点的数量)比每个客户端上的数据量要少,这使得每个客户端有足够多的数据进行模型训练。
IID数据假设:即每个客户端上的数据是独立同分布(IID)的,这意味着每个客户端上的数据和其他客户端上的数据在分布上是类似的。
等量数据假设:每个客户端上拥有相同数量的数据。
这些假设在传统的分布式优化算法中是常见的,但联邦优化(federated optimization)不满足这些假设,因为:

非凸性:在联邦学习中,神经网络等复杂模型通常是非凸的,因此不能直接应用凸优化的理论。
大量客户端:联邦学习通常涉及大量客户端(如成千上万个移动设备),每个客户端上的数据量相对较少。
非IID数据:每个客户端的数据通常分布不同(如每个设备上的用户行为数据不同),不满足 IID 假设。
不均衡数据量:每个客户端上的数据量可能差异很大。

异步分布式 SGD(随机梯度下降)也被应用于神经网络的训练中,特别是在Google的DistBelief系统中。但是,这种方法在联邦学习环境下不太适用,因为它需要大量的更新步骤。而在联邦学习中,通信开销是一个瓶颈,频繁的更新将导致巨大的通信成本。

分布式一致性算法(如共识算法)可以放宽 IID 假设,也就是说,这些算法不要求客户端上的数据是独立同分布的。但是,这些算法仍然不适合大量客户端和通信受限的联邦学习场景,因为它们的通信开销仍然较大。

One endpoint of the (parameterized) algorithm family weconsider is simple one-shot averaging(在这里,“endpoint” 是指某种算法家族的一个极端或边界点,即最简单或最基础的形式。)

我们考虑的(参数化)算法系列的一个端点是简单的一次性平均,其中每个客户端求解最小化其本地数据(可能正则化的)损失的模型,并对这些模型进行平均以生成最终的全局模型。这种方法已在具有 IID 数据的凸情况下得到广泛研究,并且已知在最坏情况下,生成的全局模型并不比在单个客户端上训练模型更好 [44, 3, 46]。

在联邦学习中,一种简单的算法是一次性平均法(one-shot averaging)。每个客户端在本地数据上独立训练自己的模型,然后将这些模型的参数进行平均,得到全局模型。
这种简单的模型平均方法在凸问题和 IID 数据的情况下有一些理论保证,但在最坏情况下,全局模型的表现可能不会比在单个客户端上训练模型的表现更好。这意味着,如果各客户端的数据差异很大(如非IID数据),模型平均的效果可能非常差,甚至可能不如直接在单个客户端上训练模型的效果好。

The FederatedAveraging Algorithm

近期,深度学习的众多成功应用几乎完全依赖于随机梯度下降 (SGD) 的变体进行优化;事实上,许多进展可以理解为通过简单的基于梯度的方法调整模型结构(以及损失函数),使其更适合优化 [16]。因此,我们很自然地从 SGD 开始构建联邦优化算法。

SGD 可以简单地应用于联邦优化问题,其中每轮通信进行一次批量梯度计算(例如在随机选择的客户端上)。这种方法在计算上是高效的,但需要大量的训练轮次才能产生良好的模型(例如,即使使用批量归一化等高级方法,Ioffe 和 Szegedy [21] 也会在大小为 60 的小批量上对 MNIST 进行 50000 步训练)。我们在 CIFAR-10 实验中考虑了这一基准。

In the federated setting, there is little cost in wall-clock time to involving more clients,(意思是虽然有多个客户端参与,每个客户端并不需要等待很长时间才能进行模型更新。这是因为联邦学习的客户端是并行工作的,它们各自使用本地数据进行训练。)

在联邦设置中,涉及更多客户端的时间成本很小,因此对于我们的基线,我们使用大批量同步 SGD;Chen 等人的实验 [8] 表明,这种方法在数据中心设置中是最先进的,其性能优于异步方法。为了在联邦设置中应用此方法,我们在每一轮中选择 C 部分客户端,并计算这些客户端持有的所有数据的损失梯度。因此,C 控制全局批量大小,C = 1 对应于全批量(非随机)梯度下降。2 我们将此基线算法称为 FederatedSGD(或 FedSGD)。

每一轮训练时,只选择一部分客户端进行训练,而不是所有客户端。具体来说,选择客户端的比例由参数 C 来控制,称为客户端的参与比例(C-fraction)。

每个被选中的客户端会基于其本地数据计算损失函数的梯度。然后,所有被选中的客户端将它们计算出的梯度发送回中央服务器,中央服务器会汇总这些梯度并更新全局模型。

当 C = 1 时,表示每一轮训练中所有客户端都参与训练,相当于全批量梯度下降(non-stochastic gradient descent),这意味着每次都使用所有可用数据进行梯度计算。
当 C < 1 时,表示每轮只选取部分客户端,模型更新仅基于这些客户端的数据。这是小批量随机梯度下降(SGD)的联邦版本。

一个典型的FedSGD实现是C = 1且学习率固定为 η,每个客户端 k 计算 g k = ▽ F k ( ω t ) g_k=\bigtriangledown F_k(\omega_t) gk=Fk(ωt)即当前模型 wt 下其本地数据的平均梯度,中央服务器汇总这些梯度并应用更新$\omega_{t+1}\gets \omega_t-\eta {\textstyle \sum_{k=1}^{K}}\frac{n_k}{n}g_k $ ,由 ∑ k = 1 K n k n g k = ▽ f ( ω t ) {\textstyle \sum_{k=1}^{K}}\frac{n_k}{n}g_k= \bigtriangledown f(\omega_t) k=1Knnkgk=f(ωt)等效更新如下 ∀ k , ω t + 1 k ← ω t − η g k \forall k,\omega_{t+1}^k\gets \omega_t-\eta g_k k,ωt+1kωtηgk,接着 ω t + 1 ← ∑ k = 1 K n k n ω t + 1 k \omega_{t+1} \gets {\textstyle \sum_{k=1}^{K}}\frac{n_k}{n}\omega_{t+1}^k ωt+1k=1Knnkωt+1k,也就是说,每个客户端使用其本地数据在当前模型上进行一步梯度下降,然后服务器对结果模型进行加权平均。一旦算法以这种方式编写,我们就可以在averaging 步骤之前多次迭代局部更新 ω k ← η ▽ F k ( ω k ) \omega^k \gets \eta \bigtriangledown F_k(\omega^k) ωkηFk(ωk),为每个客户端添加更多计算。

我们将这种方法称为 FederatedAveraging(或 FedAvg)。计算量由三个关键参数控制:C,即每轮执行计算的客户端比例;E,即每个客户端在每轮对其本地数据集进行的训练次数;B,用于客户端更新的本地小批量大小。我们写 $B = \infty $来表示整个本地数据集被视为单个小批量。因此,在这个算法系列的一个endpoint (简单形式),我们可以取 $B = \infty 和 和 E = 1$,这与 FedSGD 完全对应。对于具有 n k n_k nk 个本地示例的客户端,每轮的本地更新次数由 $u_k=E_\frac{n_k}{B} $给出;完整的伪代码在算法 1 中给出。

在这里插入图片描述

对于一般的非凸目标,在参数空间中平均模型可能会产生任意糟糕的模型。按照 Goodfellow 等人的方法 [17],当我们对两个从不同初始条件训练的 MNIST 数字识别模型 (我们使用在第3节中描述的“2NN”多层感知器) 进行平均时,我们确实看到了这种不良行为(图 1,左)。对于此图,父模型 w w w w ′ w^ {'} w 分别在来自 MNIST 训练集的 600 个示例的非重叠 IID 样本上进行训练。训练通过 SGD 进行,固定学习率为 0.1,在大小为 50 的小批量上进行 240 次更新(或在大小为 600 的小数据集上进行$ E = 20$ epoch)。这大约是模型开始过度拟合其本地数据集的训练量。

在这里插入图片描述

最近的研究表明,在实践中,充分过度参数化的NNs的损失曲面表现得出奇地好,特别是比以前认为的[11,17,9]更不容易出现糟糕的局部最小值。事实上,当我们从相同的随机初始化启动两个模型,然后再次在不同的数据子集上独立训练每个模型时(如上所述),我们发现简单的参数平均效果出奇地好(图 1,右):这两个模型的平均值 1 2 w + 1 2 w ′ \frac12w+ \frac12w^{'} 21w+21w在完整 MNIST 训练集上的损失明显低于在任一小数据集上独立训练所获得的最佳模型。虽然图1从随机初始化开始,但注意每一轮FedAvg都使用了共享的起始模型 w t w_t wt,因此同样的直觉也适用。(在联邦学习中,每一轮的FedAvg算法会从相同的共享模型 w t w_t wt开始即所有的客户端从相同的初始参数进行本地训练。因此,尽管客户端的数据不同,这种共享的初始化使得每个客户端的模型在某种程度上保持相似。因此,FedAvg算法中的参数平均也能够利用同样的直觉,即:由于每轮本地训练都是从同一个模型开始,经过几轮通信后,参数的平均化仍然能够取得良好的效果。)

Experimental Results

我们致力于图像分类和语言建模任务,因为好的模型可以大大提高移动设备的可用性。对于每一项任务,我们首先选择一个足够小的代理数据集,以便彻底研究 FedAvg 算法的超参数。虽然每次单独的训练运行都相对较小,但我们为这些实验训练了超过 2000 个单独的模型。然后,我们在基准 CIFAR-10 图像分类任务上展示结果。最后,为了证明 FedAvg 在对客户端进行数据自然划分的实际问题上的有效性,我们在一个大型语言建模任务上进行了评估。

我们的初步研究包括两个数据集上的三个模型系列。前两个用于 MNIST 数字识别任务 [26]:1) 一个简单的多层感知器,具有 2 个隐藏层,每个层有 200 个单元,使用 ReLu 激活(总共 199,210 个参数),我们将其称为 MNIST 2NN.2) 一个 CNN,具有两个 5x5 卷积层(第一个有 32 个通道,第二个有 64 个通道,每个层后跟 2x2 最大池化)、一个具有 512 个单元和 ReLu 激活的完全连接层以及最终的 softmax 输出层(总共 1,663,370 个参数)。为了研究联邦优化,我们还需要指定数据在客户端上的分布方式。我们研究了两种在客户端上划分 MNIST 数据的方法:IID,即对数据进行打乱,然后将其划分为 100 个客户端,每个客户端接收 600 个示例;非 IID,即我们首先按数字标签对数据进行排序,将其划分为 200 个大小为 300 的分片,并为 100 个客户端中的每个客户端分配 2 个分片。这是一种病态的非 IID 数据划分,因为大多数客户端只有两个数字的示例,这让我们可以探索我们的算法在高度非 IID 数据上会崩溃的程度。然而,这两种划分都是平衡的。(我们在这些数据集的不平衡版本上进行了额外的实验,并发现它们实际上对FedAvg来说稍微容易一些。)

为了进行语言建模,我们从《莎士比亚全集》[32] 中构建了一个数据集。我们为每部戏剧中每个有台词的角色构建了一个客户数据集,每个角色至少有两句台词。这产生了一个包含 1146 个客户的数据集。对于每个客户,我们将数据分成一组训练台词(角色的前 80% 的台词)和测试台词(最后 20%,四舍五入为至少一句台词)。得到的数据集在训练集中有 3,564,579 个字符,在测试集中有 870,014 个字符。这些数据非常不平衡,许多角色只有几句台词,而少数角色却有大量台词。此外,请注意测试集不是台词的随机样本,而是按每部戏剧的时间顺序在时间上分开的。使用相同的训练/测试分割,我们还形成了平衡和 IID 版本的数据集,同样有 1146 个客户。

我们根据这些数据训练了一个堆叠字符级 LSTM 语言模型(stacked character-level LSTM),该模型在读取一行中的每个字符后,预测下一个字符 [22]。该模型将一系列字符作为输入,并将每个字符嵌入到已学习的 8 维空间中。然后,嵌入的字符通过 2 个 LSTM 层进行处理,每个层有 256 个节点。最后,第二个 LSTM 层的输出被发送到 softmax 输出层,每个字符一个节点。整个模型有 866,578 个参数,我们使用 80 个字符的展开长度进行训练。

SGD 对学习率参数 η 的调整很敏感。此处报告的结果基于在足够宽的学习率网格上进行的训练(通常在分辨率为 1 0 1 3 10^{\frac{1}{3}} 1031 1 0 1 6 10^{\frac{1}{6}} 1061​ 的乘法网格上 η 有 11-13 个值)。我们检查以确保最佳学习率位于网格中间,并且最佳学习率之间没有显著差异。除非另有说明,否则我们会为每个 x 轴值单独绘制所选最佳学习率的指标。我们发现最优学习率作为其他参数的函数变化不太大。(在实验中,研究人员发现当其他模型参数(例如LSTM层的大小、数据的不同分布等)发生变化时,最优学习率的变化不大。这意味着学习率相对较为鲁棒,研究人员不需要为每个不同的超参数组合重新进行大幅度的学习率调整。)

提高并行性 我们首先试验客户端分数 C,它控制多客户端并行性的数量。表 1 显示了改变 C 对两个 MNIST 模型的影响。我们报告了实现目标测试集准确度所需的通信轮数。为了计算这个数字,我们为每种参数设置组合构建一条学习曲线,按照上述方法优化 η,然后通过取所有先前轮次中实现的测试集准确度的最佳值使每条曲线单调递增。然后,我们使用形成曲线的离散点之间的线性插值来计算曲线与目标准确度相交的轮数。参考图 2 也许可以最好地理解这一点,其中灰线表示目标。

在这里插入图片描述


Pathological Non-IID 是指非常极端的非独立同分布情况。在正常的 Non-IID 情况下,客户端的数据分布可能会有所不同,但仍然有一定的相似性。而 Pathological Non-IID 是指客户端之间的数据分布几乎完全不重叠,数据的分布差异非常大。这是一种极端情况,用来测试算法在不理想条件下的性能表现。

例如,在 MNIST 数据集中,每个客户端的数据集可能仅包含某几个特定类别的数字,而其他客户端的数据完全不同。这种极端的 Non-IID 场景对联邦学习算法提出了更大的挑战。


在这里插入图片描述

当 $B = \infty $ 时(MNIST 每轮将所有 600 个客户端示例作为单个批次处理),增加客户端比例的优势很小。使用较小的批次大小 B = 10 在使用 C ≥ 0.1 时显示出显著的改进,尤其是在非 IID 情况下。基于这些结果,对于我们剩余的大部分实验,我们将 C = 0.1 固定为 0.1,这在计算效率和收敛速度之间取得了良好的平衡。比较表 1 中$B = \infty $ 和 B = 10 列的轮数,可以看到显著的加速,我们接下来将对此进行研究。

增加每个客户端的计算量 在本节中,我们固定 C = 0.1,并在每一轮中为每个客户端增加更多计算量,要么减少 B,要么增加 E,或者两者兼而有之。图 2 表明,每轮增加更多本地 SGD 更新可以大幅降低通信成本,表 2 量化了这些加速。每轮每个客户端的预期更新次数为$ u = (\mathbb{E}[n_k]/B)E = nE/(KB)$,(取决于批次大小 B、训练轮次 E和客户端的数据量 n。它衡量了每轮中客户端的计算量(更新次数))其中期望值是随机抽取k个客户端 。我们根据此统计数据对表 2 中每节中的行进行排序。我们发现,通过改变 E 和 B 来增加 u 是有效的。只要 B 足够大,可以充分利用客户端硬件上的可用并行性,降低它基本上不会增加计算时间成本,因此在实践中,这应该是第一个调整的参数。


  • n k n_k nk 表示客户端 k拥有的数据样本数。
  • B B B 是批次大小,表示每个小批量训练的数据样本数量。
  • E E E 表示每轮中每个客户端执行的本地训练轮数。
  • 公式中, E [ n k ] / B \mathbb{E}[n_k]/B E[nk]/B 表示每个客户端预期的 mini-batches 数量(即客户端的数据总数除以批次大小)。
  • 乘以E,表示每轮中客户端进行的梯度更新次数。

因为每轮选取了K 个客户端,所以全局的预期更新次数可以表示为 $ u = nE/(KB) ∗ ∗ ,其中 ∗ ∗ **,其中 ** ,其中n$ 是全局的数据样本总数,K是每轮参与的客户端数量。


  • FedSGD(联邦随机梯度下降): 每轮中,客户端进行一次全数据上的梯度更新(相当于 E=1),并且服务器会在每轮训练后立刻聚合所有客户端的梯度信息。该方法的通信频率非常高,因为每个客户端在每一轮后都要与服务器进行通信。

  • FedAvg(联邦平均): 每个客户端在本地执行多次梯度更新(E>1),然后在多次本地训练后将模型参数(而不是梯度)发送给服务器。服务器会将接收到的参数平均后再下发给客户端。FedAvg 通过减少通信频率和利用本地计算资源来减少通信成本和训练时间。

  • FedAvg 在每轮中减少了通信次数,同时充分利用了客户端的本地计算能力。因为每个客户端可以在本地进行多次训练更新,因此可以在不频繁与服务器通信的情况下加速模型收敛。更重要的是,FedAvg 的参数平均也起到了一定的正则化效果,类似于 dropout,能够更好地提高模型的泛化能力。

在这里插入图片描述

对于 MNIST 数据的 IID 分区,每个客户端使用更多计算会使达到目标准确度所需的轮数减少 35 倍(CNN 为 35 倍),46 倍(2NN 为 46 倍)(有关 2NN 的详细信息,请参阅附录 A 中的表 4)。病态分区非 IID 数据的加速较小,但仍然相当可观(2.8 – 3.7 倍)。当我们naively average 在完全不同的数字对上训练的模型的参数时,平均提供的任何优势(与实际发散相比)令人印象深刻。因此,我们认为这是该方法稳健性的有力证据。


解释:在数据分布完全不同的情况下(即不同客户端上的模型可能训练的是完全不同类别的数据,比如数字分类中的不同数字),即使我们简单地将各客户端训练得到的模型参数进行平均(即“naively average”),依然能够取得不错的结果,而不是导致模型发散。这表明,FedAvg 方法在非独立同分布 (Non-IID) 数据场景下依然具有较强的鲁棒性(即稳健性和可靠性)

naively average

  1. Naively 表示 “简单地、不加修饰地”。在联邦学习中,不同客户端的数据分布通常是非独立同分布的(Non-IID),即每个客户端上可能有非常不同的数据。例如,一个客户端可能只接触到“0”和“1”,而另一个客户端只接触到“8”和“9”。理论上,如果直接将这些客户端的模型参数进行平均,可能会导致模型的学习目标不一致,从而引起模型的发散或无法有效学习。
  2. 然而,结果表明简单的参数平均仍然有效:尽管客户端的数据差异如此之大,简单的参数平均(FedAvg 中的模型聚合方式)依然能够帮助全局模型收敛,并取得不错的性能,而不是导致模型的性能下降或发散。这一结果让人感到意外,表明 FedAvg 在处理数据分布极度不均衡的情况下依然是有效的。

莎士比亚的不平衡和非 IID 分布(按剧中角色划分)更能代表我们期望在实际应用中使用的数据分布类型。令人鼓舞的是,对于这个问题,在非 IID 和不平衡数据上学习实际上要容易得多(速度提高了 95 倍,而平衡 IID 数据的速度提高了 13 倍);我们推测这主要是因为某些角色具有相对较大的本地数据集,这使得增加本地训练尤为有价值。

对于所有三个模型类别,FedAvg 都收敛到比基线 FedSGD 模型更高的测试集准确率。即使线条超出绘制范围,这种趋势仍会持续。例如,对于 CNN,$B = ∞、E = 1 $FedSGD 模型最终在 1200 轮后达到 99.22% 的准确率(在 6000 轮后没有进一步提高),而 B = 10、E = 20 FedAvg 模型在 300 轮后达到 99.44% 的准确率。我们推测,除了降低通信成本外,模型平均还产生了与 dropout 类似的正则化优势 [36]。


正则化优势 是指通过模型参数平均化,可以减轻模型的过拟合倾向,从而提高泛化能力。

在模型训练中,正则化(如 dropout)通过有意地让部分神经元在训练过程中不工作,来避免模型依赖于特定的参数,从而增强模型的鲁棒性,降低过拟合。

在 FedAvg 中,每个客户端的本地模型在不同的局部数据上训练得到的模型参数会有所差异,通过对这些不同的模型参数进行平均,可以起到类似于 dropout 的正则化效果。这种参数平均(parameter averaging)相当于在不同数据上学习到的不同特征进行了混合,减少了单一数据导致的过拟合问题,从而增强了模型的泛化能力。


我们主要关注的是泛化性能,但 FedAvg 在优化训练损失方面也很有效,甚至超过了测试集准确率达到稳定水平的程度。我们观察到这三个模型类别的行为相似,并在附录 A 中的图 6 中展示了 MNIST CNN 的图表。

在这里插入图片描述

**我们可以在客户端数据集上进行过度优化吗?**当前模型参数仅通过初始化影响每个 ClientUpdate 中执行的优化。因此,当$E → ∞ $时,至少对于凸问题,初始条件最终应该是无关紧要的,并且无论初始化如何都会达到全局最小值。即使对于非凸问题,人们也可能推测,只要初始化在同一个中,算法就会收敛到相同的局部最小值。也就是说,我们预计,虽然一轮平均可能会产生一个合理的模型,但额外的通信(和平均)轮次不会产生进一步的改进。


解释:

basin(吸引域、盆地)是指优化问题中的吸引域(basin of attraction),是指一个局部最优解周围的区域。对于一个非凸问题,如果模型参数的初始化点位于某个局部最小值的吸引域内,那么无论如何优化,算法最终都可能收敛到这个局部最小值。这个术语来源于优化中的动力学系统概念。

客户端数据集的过度优化:当每轮通信中的本地训练次数 EEE 很大时,FedAvg可能会出现停滞甚至发散的情况。原因是每轮通信前,客户端仅通过初始化的模型参数进行优化,本地数据的优化次数过多可能导致模型趋向于过度拟合客户端的数据,而不是全局数据的均衡优化。

E增大时的行为:理论上,在凸优化问题中,随着本地优化次数 E → ∞ E \rightarrow \infty E,初始化条件对最终结果的影响应该会消失,最终会达到全局最优解。而对于非凸问题,如果初始化落在同一吸引域内,FedAvg应该会收敛到同一个局部最优点。因此,在这种情况下,FedAvg算法执行一轮本地优化后可能得到一个合理的模型,但通过更多的通信轮次并不会显著提升模型性能。


图 3 显示了初始训练期间较大的 E 对莎士比亚 LSTM 问题的影响。实际上,对于非常大量的局部时期,FedAvg 可能会稳定或发散。该结果表明,对于某些模型,特别是在收敛的后期阶段,减少每轮局部计算量(移动到较小的 E 或较大的 B)可能会很有用,就像衰减学习率一样。附录 A 中的图 8 给出了 MNIST CNN 的类似实验。有趣的是,对于这个模型,我们没有看到 E 值较大时收敛速度的明显下降。但是,对于下面描述的大规模语言建模任务,我们看到 E = 1 的性能略好于 E = 5(参见附录 A 中的图 10)。

在这里插入图片描述

CIFAR 实验 我们还在 CIFAR-10 数据集 [24] 上进行了实验,以进一步验证 FedAvg。该数据集包含 10 个类别的 32x32 图像,具有三个 RGB 通道。有 50,000 个训练示例和 10,000 个测试示例,我们将其划分为 100 个客户端,每个客户端包含 500 个训练示例和 100 个测试示例;由于这些数据没有自然的用户分区,我们考虑了平衡和 IID 设置。模型架构取自 TensorFlow 教程 [38],它由两个卷积层、两个完全连接层和一个线性变换层组成,以产生 logit,总共约 1 0 6 10^6 106 个参数。注意最先进的方法在 CIFAR 中已经实现了 96.5% [19] 的测试准确率;尽管如此,我们使用的标准模型足以满足我们的需求,因为我们的目标是评估我们的优化方法,而不是在这个任务上实现尽可能高的准确率。图像作为训练输入管道的一部分进行预处理,包括将图像裁剪为 24x24、随机左右翻转以及调整对比度、亮度和白化。

对于这些实验,我们考虑了一个额外的基线,即在完整训练集(无用户分区)上使用大小为 100 的小批次进行标准 SGD 训练。在 197,500 次小批次更新后,我们实现了 86% 的测试准确率(在联邦设置中,每次小批次更新都需要一轮通信)。FedAvg 仅在 2,000 次通信轮次后就实现了 85% 的类似测试准确率。对于所有算法,除了初始学习率外,我们还调整了学习率衰减参数。表 3 给出了基线 SGD、FedSGD 和 FedAvg 达到三个不同准确率目标的通信轮次,图 4 给出了 FedAvg 与 FedSGD 的学习率曲线。

在这里插入图片描述


学习率衰减的好处:

  1. 加速初期训练:较大的学习率可以加快初期权重的更新速度,让模型快速逼近最优解。
  2. 避免震荡:在后期训练中逐步减小学习率,有助于防止权重在最优点附近来回震荡。
  3. 提高收敛精度:通过逐步减小学习率,可以让模型在后期以更精细的步伐逼近最优解,从而获得更好的性能。
# 定义学习率调度器,每 10 轮将学习率减半
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.5)
# 在训练过程中,每次 epoch 结束时调用调度器
for epoch in range(50):
    # 训练模型
    train(...)
    
    # 调整学习率
    scheduler.step()

在这里插入图片描述

通过对 SGD 和 FedAvg 都运行大小为 B = 50 的小批量实验,我们还可以将准确度视为此类小批量梯度计算数量的函数。我们预计 SGD 在这里会做得更好,因为每次小批量计算后都会采取连续步骤。但是,如附录中的图 9 所示,对于适中的 C 和 E 值,FedAvg 在每个小批量计算中取得的进展相似。此外,我们看到,每轮只有一个客户端(C = 0)的标准 SGD 和 FedAvg 都表现出明显的准确度波动,而对更多客户端进行平均可以平滑这一波动。

大规模LSTM实验 我们对大规模的下一个单词预测任务进行了实验,以证明我们的方法在实际问题上的有效性。我们的训练数据集包含来自大型社交网络的 1000 万条公开帖子。我们按作者对帖子进行分组,总共超过 500,000 个客户端。此数据集是用户移动设备上存在的文本输入数据类型的真实代理。我们将每个客户端数据集限制为最多 5000 个单词,并在来自不同(非训练)作者的 1e5 个帖子的测试集上报告准确度(在 10000 种可能性中,预测概率最高的下一个单词的数据分数)。我们的模型是一个 256 节点 LSTM,词汇表为 10,000 个单词。每个单词的输入和输出嵌入的维度为 192,并与模型共同训练;总共有 4,950,544 个参数。我们使用了 10 个单词的展开。

这些实验需要大量的计算资源,因此我们没有彻底探索超参数:每轮所有运行都在 200 个客户端上进行训练;FedAvg 使用 B = 8 和 E = 1。我们探索了 FedAvg 和基线 FedSGD 的各种学习率。图 5 显示了最佳学习率的单调学习曲线。η = 18.0 的 FedSGD 需要 820 轮才能达到 10.5% 的准确率,而 η = 9.0 的 FedAvg 仅在 35 轮通信中就达到了 10.5% 的准确率(比 FedSGD 少 23 倍)。我们观察到 FedAvg 的测试准确率方差较低,请参见附录 A 中的图 10。该图还包括 E = 5 的结果,其表现略差于 E = 1。

在这里插入图片描述

Conclusions and Future Work

我们的实验表明,联邦学习可以变得实用,因为 FedAvg 使用相对较少的通信轮次来训练高质量的模型,正如各种模型架构上的结果所证明的那样:多层感知器、两个不同的卷积神经网络、两层字符 LSTM 和大规模字级 LSTM。

虽然联邦学习提供了许多实际的隐私优势,但通过差分隐私 [14, 13, 1]、安全多方计算 [18] 或它们的组合提供更强大的保障是未来工作的一个有趣方向。请注意,这两类技术最自然地适用于 FedAvg 等同步算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值