联邦学习
摘要
本文解释了联邦学习作为一种保护隐私的机器学习技术的概念,该技术通过在本地设备而非中央服务器上训练模型来实现。文章详细描述了加密参数更新和聚合的过程,旨在降低数据泄露风险,同时保持模型性能。
<p><em>作者:Tianchen Liu</em></p><h2>引言</h2><p>除非你拥有念力超能力,能把整个云平台服务器当作移动设备随身携带,否则云平台通常利用用户数据进行训练的方式是:将用户数据上传到中心服务器,然后开始训练模型。</p><p>但这引发了安全和隐私方面的问题。假设你正在使用一个通过学习用户打字模式来智能预测的键盘。你接下来选择的单词就会被发送到服务器。如果有人在输入“Go”之后总是点击“Bears”(熊),那么他们来自加州大学(Cal)的可能性就非常大。就这样,关于用户的信息就泄露了。来自服务器的任何信息泄露,或者存在恶意服务器(比如服务器出于恶意查看了本不应查看的数据),都会导致隐私问题,尤其是在涉及敏感数据(<em>例如</em> 社会安全号码、母亲婚前姓名等)时。</p><p>话说回来,机器学习确实是从数据中学习。如果不利用真实用户数据,训练模型几乎是不可能的。</p><p>有没有一种方法,既能利用真实用户的数据训练模型,又不会向服务器泄露任何隐私?</p><p>答案是肯定的,这种方法被称为联邦学习(Federated Learning)。</p><h2>联邦学习</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-bsn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-bsn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png 424w, https://substackcdn.com/image/fetch/$s_!-bsn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png 848w, https://substackcdn.com/image/fetch/$s_!-bsn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png 1272w, https://substackcdn.com/image/fetch/$s_!-bsn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-bsn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png" width="710" height="575" data-attrs="{"src":"https://substack-post-media.s3.amazonaws.com/public/images/2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":575,"width":710,"resizeWidth":null,"bytes":null,"alt":null,"title":null,"type":null,"href":null,"belowTheFold":false,"topImage":true,"internalRedirect":null,"isProcessing":false,"align":null,"offset":false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-bsn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png 424w, https://substackcdn.com/image/fetch/$s_!-bsn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png 848w, https://substackcdn.com/image/fetch/$s_!-bsn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png 1272w, https://substackcdn.com/image/fetch/$s_!-bsn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h6>图表取自 Google 关于联邦学习的 <a href="https://www.youtube.com/watch?v=X8YYWunttOY&t=152s">YouTube 视频</a></h6><p>其基本思想可以概括为一句话:不再将用户数据发送到服务器,而是将部分训练和预测任务带到用户设备上。除了安全问题外,设备端推理(on-device inference)还能提供更好的延迟表现、支持离线工作,并节省电池电量。</p><h3>流程</h3><p>在开始之前,让我们先解决一个显而易见的问题。在设备上训练模型并不是一项大多数设备都能轻松完成的任务。在实践中,会选择那些处于空闲状态、正在充电且连接到免费无线网络的符合条件的设备子集来进行设备端模型训练。所以,当你忙着玩 3D 游戏时,不用担心后台会有模型在训练!</p><p>联邦学习的流程如下:</p><ol><li><p>设备接收一个训练模型(模型体积通常不大,一般只有几兆字节)。</p></li><li><p>设备使用本地数据进行训练(通常只需几分钟)。</p></li><li><p>设备向服务器发送<em>加密的参数更新</em>。</p></li><li><p>服务器对设备进行分组。对于每个分组,服务器<em>聚合</em>从该组设备接收到的更新,以执行对当前模型的<em>一次</em>更新。</p></li><li><p>经过多轮训练后,新的更新模型被发送到设备进行设备端测试(再次体现了去中心化的主题),然后开始新一轮的训练。</p></li></ol><p>该流程的频率可以根据需要进行调整,且不同设备在给定时间内可能处于不同阶段——一些设备在训练,另一些则在测试。经过数千次迭代后,经过<em>测试且真正</em>更新的新模型就准备好大规模分发了。</p><h2>安全聚合</h2><p>设备端训练使用我们所熟知的技术,即...</p>
查看缓存全文
缓存时间: 2026/05/08 08:47
# 联邦学习
来源:https://mlberkeley.substack.com/p/federated
*作者:Tianchen Liu*
除非你拥有意念控物的超能力,能够把整个云平台服务器当作移动设备随身携带,否则云平台通常训练用户数据的方式是:将用户数据上传到集中式服务器,然后开始训练模型。
但这带来了一些安全和隐私方面的问题。假设你正在使用一款能够学习用户打字模式的键盘。你接下来选择的词语将会被发送到服务器。如果某人每次输入“Go”后总是点击“Bears”,那么他们很有可能来自加州大学伯克利分校(Cal)。就这样,用户的个人信息就泄露了。任何来自服务器的信息泄露,或者存在恶意服务器(例如,服务器心怀不轨,本不该查看你的数据却进行了查看),都会引发隐私问题,尤其是在处理敏感数据时(*例如*:社会安全号码、母亲婚前姓名等)。
话虽如此,机器学习从字面上看就是“从数据中学习”。没有真实世界的用户数据来训练模型几乎是不可能的。
有没有一种方法,让我们既能利用真实用户的数据训练模型,又不用向服务器提供任何隐私信息呢?
答案是肯定的,这种方法被称为**联邦学习(Federated Learning)**。
[](https://substackcdn.com/image/fetch/$s_!-bsn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4def0c-51c6-448f-9cb2-010181cc7d58_710x575.png)
###### 图示取自 Google 关于联邦学习的 YouTube 视频 (https://www.youtube.com/watch?v=X8YYWunttOY&t=152s)
其基本思想可以用一句话概括:与其将用户数据带到服务器,不如将部分训练和预测任务带到用户设备上。除了安全问题外,设备端推理(on-device inference)还能提供更好的延迟表现、支持离线工作并节省电量。
在开始之前,让我们先解决这个房间里的大象(显而易见的问题)。在设备上训练模型并非大多数设备都能轻松完成的简单任务。在实际操作中,系统会选择那些处于空闲状态、正在充电且连接到免费 Wi-Fi 的设备子集来进行设备端模型训练。你不必担心在你忙于玩 3D 游戏时后台还在进行模型训练!
联邦学习的流程如下:
1. 设备接收一个训练模型(通常体积不大,一般只有几兆字节)。
2. 设备在本地数据进行训练(通常只需几分钟)。
3. 设备向服务器发送*加密的参数更新*。
4. 服务器将设备分组。对于每个组,服务器*聚合*从该组设备收到的更新,以执行对当前模型的*一次*更新。
5. 经过多轮训练后,更新后的新模型会被发送到设备上进行设备端测试(这里同样体现了去中心化的主题),并开始新一轮的训练。
这一过程的频率可以相应调整,不同设备在给定时间点可能处于不同阶段——有些设备在训练,而另一些则在测试。经过几千次迭代后,经过*测试且真正*更新的新模型就准备好大规模分发了。
设备端训练使用我们所熟知和喜爱的技术,如随机梯度下降(Stochastic Gradient Descent)等。因此,让我们把注意力转移到上述流程的第 4 步。一个自然的问题是:为什么我们要对设备进行分组?为什么我们要对更新进行“平均”,然后执行“平均后”的更新?为什么不能逐个更新呢?
好吧,让我们看看当(再次假设)恶意服务器收到单个更新时会发生什么。然后,它仅仅通过构造会导致相似更新的数据,就能*重构*导致该更新的私有训练数据。
安全聚合(Secure Aggregation)解决了这个问题。本文的剩余部分将讨论安全聚合问题。内容会稍微有点技术性,但我会在过程中进行解释。
首先,让我们思考一下“更新”到底是什么。它是一个长度为 $n$ 的向量,其中 $n$ 是该模型的参数数量。主要思想是,我们可以通过将更新向量与另一个长度相同的随机生成的“掩码向量(mask vector)”相加,来混淆(obfuscate)更新。
为了简化解释,假设组大小为三。这三台设备合作生成随机掩码向量及其负值(图中显示为倒三角形),并在组内分发。
[](https://substackcdn.com/image/fetch/$s_!NK_f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F434d8920-c5fa-4050-83c4-8cfaaa096c79_798x445.png)
###### 图示取自 Secure Aggregation 论文的 keynote 演讲 (https://youtu.be/OCy9gPjl-XM)
这样,当服务器聚合更新时,掩码向量会相互抵消,结果就是更新的干净聚合。
[](https://substackcdn.com/image/fetch/$s_!XPcl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb307a3f1-275c-4cd0-a188-e114176a98e1_822x449.png)
###### 图示取自 Secure Aggregation 论文的 keynote 演讲 (https://youtu.be/OCy9gPjl-XM)
不幸的是,这说起来容易做起来难。让我们思考一下这个“掩码向量”到底应该有多大。请记住,更新向量的长度为 $n$,其中 $n$ 是模型中的参数数量。因此,掩码向量的长度也必须是 $n$。
更重要的是,在实际操作中,组的大小通常以千计,甚至更多,因此我们需要与成千上万的用户协调成千上万个长度为 $n$ 的掩码向量,而这些向量的大小相当于一个神经网络模型!更糟糕的是,这一过程必须在双方之间保密进行——因为如果掩码向量已经公开(对服务器可见),那么做所有这些工作就没有意义了。这将消耗大量的资源和时间。有没有办法绕过这个问题?请看——
解决这一问题的思路是:与其让两台设备秘密约定一个长度为 $n$ 的向量,不如让它们秘密约定一个单一的整数。然后,我们将使用该整数作为(伪)随机数生成器(PRNG)的种子。双方使用该特定种子调用 PRNG $n$ 次,从而生成相同的长度为 $n$ 的向量,用作随机掩码向量。
现在的问题是:如何让双方*秘密地*得出相同的数字?这就是 Diffie-Hellman 密钥交换发挥作用的地方。直观地说,Diffie-Hellman 密钥交换允许两方通过*公开*协调(低成本)得出相同的秘密数字,但不泄露关于该秘密数字的任何信息。
[](https://substackcdn.com/image/fetch/$s_!V-IP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e26e0-84e3-41c3-950f-4b638da266e9_2048x893.jpeg)
以下所有操作均在“模 $p$ 空间”内1 (https://mlberkeley.substack.com/p/federated#fn-1)(即我们始终对 $p$ 取模)。Diffie-Hellman 的核心在于**离散对数问题** (https://en.wikipedia.org/wiki/Discrete_logarithm)(已知 $g^a \equiv x \pmod p$、$g$ 和 $x$,求 $a$?)在 $p$ 很大时计算上是不可行的。令 $g$ 为一个数,使得 $(g^0, g^1, g^2, \dots)$ 能遍历 $(1, 2, \dots, p-1)$ 中的每一个数2 (https://mlberkeley.substack.com/p/federated#fn-2)。$g$ 和素数 $p$ 是公开的。
1. Alice 和 Bob 分别选择各自的私钥 $a$ 和 $b$。
2. Alice(公开地)向 Bob 发送 $g^a$,Bob 将其提升到 $b$ 次幂以获得 $g^{ab}$;Bob(公开地)向 Alice 发送 $g^b$,Alice 以同样方式获得 $g^{ba}$。
他们现在都获得了相同的整数,而从未泄露关于该数字的任何信息(给定 $(g^a, g)$ 求解 $a$ 是**计算不可行的** (https://en.wikipedia.org/wiki/Computational_Diffie%E2%80%93Hellman_assumption),记住我们在“模 $p$ 空间”中,所以不能直接取对数了事)。
利用服务器作为协调者(回顾一下,服务器看到 $(g^a, g^b, \dots)$ 以及上述过程是可以的),我们可以安全地分发给整型共同秘密。现在我们使用这个秘密整数作为(伪)随机数生成器的种子,并调用生成器 $n$ 次。我相信你已经信服,这比在数千台设备间发送巨型向量要高效得多。
考虑到这一点——我们使用秘密整数来“代表”掩码向量,我们可以解决以下问题:如果在进行所有这些操作时,某人的 Wi-Fi 断线了怎么办?
这一概念背后的主要思想是,我们可以将秘密*嵌入*到一个多项式中,这使我们能够仅与其他用户分享秘密的*部分*,使得只有从其他用户那里收集秘密的部分,才能重构整个秘密。
**事实**:对于任何 $d$ 次多项式,当且仅当你知道至少 $d+1$ 个该多项式经过的点时,才能成功恢复该多项式。
对这个事实的一个简单直觉是 $d=1$ 的情况。多项式只是一条直线,你需要至少两个点来确定一条直线。
[](https://substackcdn.com/image/fetch/$s_!N1NP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e4a6d10-eb61-4f24-ad8e-b47de166ea55_721x601.png)
###### 两个点不足以确定一条抛物线(2 次多项式)。
假设我们有一个由 $n$ 台设备组成的组,并且有一个阈值 $k$ 表示最小活跃参与者数量(只要中途退出的用户不超过 $n-k$ 人,我们就可以继续)。
回顾上一部分,我们使用秘密整数来代表掩码向量。
- 每个用户随机生成一个 $y$ 轴截距为秘密整数的 $k-1$ 次多项式,并在多项式上随机选取 $n$ 个点。
- 每个用户将这 $n$ 个点分享给大小为 $n$ 的组,使得每个用户收到一个唯一的点。
- 如果有人在半路掉线,服务器会向在线用户请求离线用户多项式的份额,并通过插值恢复多项式,从而获得 $y$ 轴截距——即秘密整数。
只要阈值 $k$ 足够大,该协议仍然是安全的3 (https://mlberkeley.substack.com/p/federated#fn-3)
在本文中,我们介绍了一种新型机器学习流程,其中训练任务被分布到用户端。接着,我们讨论了安全聚合所有更新的解决方案。使用联邦学习,我们可以在离线状态下训练模型,获得更好的延迟表现,并且永远不必担心数据泄露,因为训练数据从未离开我们的设备。
联邦学习是机器学习中一个相对较新的领域,存在许多未解问题,例如如何使模型更具鲁棒性以应对恶意用户的存在——*例如*:如果用户翻转所有标签或将随机向量作为更新向量发送该怎么办?如何使模型更公平——以性能的一致性衡量——面向所有用户?等等。单篇博客文章无法涵盖关于此主题的所有内容,如果你感兴趣,请随意查看下面的相关论文!
- Google AI 关于联邦学习的博客 (https://ai.googleblog.com/2017/04/federated-learning-collaborative.html)
- Secure Aggregation 论文 (https://research.google/pubs/pub47246/)
- 关于联邦学习的进展和未解问题的综述论文 (https://arxiv.org/pdf/1912.04977.pdf)
1. \\\(\(\\mathbb\{Z\}/p\\mathbb\{Z\}\)^\\times\\\) 模 $n$ 整数乘法群 (https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n)↩ (https://mlberkeley.substack.com/p/federated#fnref-1)
2. 用群论术语来说:令 $g$ 为模素数 $p$ 整数乘法群的一个生成元 ↩ (https://mlberkeley.substack.com/p/federated#fnref-2)
3. 如果设备发送数据过晚,以至于服务器已经请求份额来检索秘密整数,则存在安全问题,但这个问题通过使用本质上相同但稍显复杂的想法来解决。Secure Aggregation 论文的 keynote 演讲对此有精彩的解释。 ↩ (https://mlberkeley.substack.com/p/federated#fnref-3)
#### 关于此帖子的讨论
### 准备好更多内容了吗?
相似文章
联邦持续学习:分布式与非平稳数据上终身学习与隐私保护学习的综合综述
本文对联邦持续学习(FCL)进行了全面综述,这是一个新兴领域,结合了联邦学习与持续学习,旨在实现分布式与非平稳数据上的终身、自适应且隐私保护的学习。文章提出了一种分类体系,回顾了应用、评估指标及开放挑战。
用于目标检测的联邦学习:无需集中数据即可实现协作无人机学习
将联邦学习应用于无人机编队的目标检测,无需集中航拍图像即可实现协作训练,在保护隐私和降低带宽的同时,性能接近集中式训练。
FIRMA: 基于斐波那契环模型聚合的隐私保护联邦学习
本文介绍了FIRMA,一种包含三种隐私保护联邦学习协议的系列方案,采用斐波那契加权环聚合,实现了无服务器运行、永久隐私的分类头以及在数据异构性下提高准确率。
联邦学习中的多智能体隐私博弈:一种统一的平均场视角
本文提出了一种用于联邦学习的平均场隐私博弈框架,能够对任意数量且具有异构隐私偏好的客户端进行可处理的纳什均衡分析,并实现个性化隐私保证。
在日用设备上启用隐私保护型 AI 训练
麻省理工学院研究人员开发了一种名为 FTTE 的新框架,将隐私保护型联邦学习的速度提升了 81%,使得在智能手表和传感器等资源受限的边缘设备上高效进行 AI 训练成为可能。