什么是联邦学习?
原文链接:https://colab.research.google.com/github/adap/flower/blob/main/doc/source/tutorial-series-what-is-federated-learning.ipynb
教程从0开始,是否熟悉联邦学习毫无影响,仅需要对python有基本的了解。
开始学习吧!
经典的机器学习
在讨论联邦学习之前,先快速回顾一下如今的机器学习是如何工作的。
在机器学习中,有模型和数据,模型可以是神经网络(如图所示),或其他,比如经典的线性回归
我们使用数据训练模型来执行有用的任务,任务可能是检测图片中的对象、转录音频记录或下围棋等。
在实际应用中,我们使用的数据集并非源自我们训练模型使用的机器,它是在"其他地方"创建的,它起源于用户与应用程序交互的智能手机、收集传感器数据的汽车、通过键盘接收输入的笔记本电脑或聆听某人试图唱歌的智能扬声器。
同样重要的是,这个“其他地方”通常不仅仅是一个地方,而是很多地方。它可能是多个设备都运行同一个应用程序。但也可能是多个组织,都为同一任务生成数据。
因此,要使用机器学习或任何类型的数据分析,过去使用的方法是将所有数据收集到中央服务器上。该服务器可以位于数据中心的某个位置,也可以位于云中的某个位置。
一旦所有数据收集到一处,我们最终就可以使用机器学习算法来根据数据训练我们的模型。这是我们基本上一直依赖的机器学习方法。
经典机器学习的挑战
我们刚刚看到的经典机器学习方法可以在某些情况下使用。例如对假期照片进行分类或分析网络流量。所有数据在中央服务器上都是自然可用的情况
但该方法不能用于许多其他情况。数据在集中式服务器上不可用的情况,或者一台服务器上可用的数据不足以训练良好模型的情况。
现实中有很多情况不适用经典的集中式的机器学习,因为:
- 法规:法规:GDPR(欧洲)、CCPA(加利福尼亚)、PIPEDA(加拿大)、LGPD(巴西)、PDPL(阿根廷)、KVKK(土耳其)、POPI(南非)、FSS(俄罗斯)、CDPR(中国)、PDPB(印度)、PIPA(韩国)、APPI(日本)、PDP(印度尼西亚)、PDPA(新加坡)、APP(澳大利亚)和其他法规保护敏感数据不被移动。事实上,这些法规有时甚至阻止单个组织合并自己的用户数据进行人工智能训练,因为这些用户生活在世界不同地区,并且他们的数据受到不同数据保护法规的管辖。
- 用户偏好:除了监管之外,在某些用例中,用户只是希望永远不会有数据离开他们的设备。如果您在手机的数字键盘中输入密码和信用卡信息,您不会期望这些密码最终会出现在开发该键盘的公司的服务器上,不是吗?事实上,这个用例正是联邦学习被发明的首要原因。
- 数据量:数据量:某些传感器(例如摄像机)产生的数据量如此之大,以至于收集所有数据既不可行也不经济(例如,由于带宽或通信效率的原因)。想象一下全国范围内有数百个火车站的国家铁路服务。如果每个火车站都配备了多个安全摄像头,那么它们产生的原始设备数据量就需要极其强大且极其昂贵的基础设施来处理和存储。而且大多数数据甚至没有用。
集中式机器学习不可用的示例包括: - 来自多家医院的敏感医疗记录用于训练癌症检测模型
- 来自不同组织的财务信息以检测财务欺诈
- 来自电动汽车的位置数据可以更好地预测行驶里程
- 端到端加密消息以训练更好的自动完成模型
Brave 浏览器或 Signal Messenger 等隐私增强系统的流行表明用户关心隐私。事实上,如果存在这种替代方案,他们会选择隐私增强版本而不是其他替代方案。但是我们可以做些什么来将机器学习和数据科学应用到这些案例中以利用私有数据呢?毕竟,这些领域都将从人工智能的最新进展中受益匪浅。
联邦学习
联邦学习只是逆转了这种方法。它通过将训练转移到数据而不是将数据转移到训练来实现对分布式数据的机器学习。这是单句话的解释:
- 中央机器学习:将数据转移到计算中
- 联邦(机器)学习:将计算转移到数据
通过这样做,它使我们能够在以前不可能的领域使用机器学习(和其他数据科学方法)。我们现在可以通过让不同的医院合作来训练优秀的医疗人工智能模型。我们可以通过在不同金融机构的数据上训练人工智能模型来解决金融欺诈。我们可以构建新颖的隐私增强应用程序(例如安全消息传递),这些应用程序具有比非隐私增强替代方案更好的内置人工智能。这些只是一些例子。当我们部署联邦学习时,我们发现越来越多的领域可以突然被重新发明,因为它们现在可以访问大量以前无法访问的数据。
那么联邦学习到底是如何运作的呢?让我们从直观的解释开始。
联邦学习的五个步骤
Step 0:初始化全局模型
我们首先在服务器上初始化模型。这与经典的集中学习完全相同:我们随机地或从之前保存的检查点初始化模型参数。
Step 1:将模型发送到多个连接的组织/设备(客户端节点)
接下来,我们将全局模型的参数发送到连接的客户端节点(想想:属于组织的智能手机或服务器等边缘设备)。这是为了确保每个参与节点使用相同的模型参数开始本地训练。我们经常只使用少数连接的节点而不是所有节点。原因是选择越来越多的客户端节点收益递减.
Step 2:在每个组织/设备(客户端节点)的数据上本地训练模型
现在所有(选定的)客户端节点都具有最新版本的全局模型参数,它们开始本地训练。他们使用自己的本地数据集来训练自己的本地模型。他们直到完全收敛才训练模型,但只训练一小会儿。这可能只有本地数据的一个纪元,甚至只是几个步骤(小批量)。
Step 3:将模型更新返回到服务器
经过本地训练后,每个客户端节点的模型参数版本与最初收到的模型参数版本略有不同。这些参数都不同,因为每个客户端节点在其本地数据集中都有不同的示例。然后,客户端节点将这些模型更新发送回服务器。他们发送的模型更新可以是完整的模型参数,也可以只是本地训练期间累积的梯度。
Step 4:将模型更新聚合为新的全局模型
服务器从选定的客户端节点接收模型更新。如果它选择了 100 个客户端节点,那么它现在拥有 100 个与原始全局模型略有不同的版本,每个版本都根据一个客户端的本地数据进行训练。但我们难道不想拥有一个包含所有 100 个客户端节点的数据学习成果的模型吗?
为了获得一个模型,我们必须将从客户端节点收到的所有模型更新结合起来。这个过程称为聚合,有许多不同的方法可以实现。最基本的方法称为联邦平均(McMahan et al., 2016),通常缩写为 FedAvg。FedAvg 采用 100 个模型更新,并顾名思义,对它们进行平均。更准确地说,它采用模型更新的加权平均值,并按每个客户端用于训练的示例数量进行加权。权重对于确保每个数据示例对生成的全局模型具有相同的“影响”非常重要。如果一个客户端有 10 个示例,另一个客户端有 100 个示例,那么在不加权的情况下,10 个示例中的每个示例对全局模型的影响是 100 个示例中每个示例的十倍。
Step 5:重复步骤1到4直到模型收敛
步骤1到4就是我们所说的单轮联邦学习。全局模型参数发送到参与的客户端节点(步骤 1),客户端节点训练其本地数据(步骤 2),将更新后的模型发送到服务器(步骤 3),然后服务器聚合模型更新获得新版本的全局模型(步骤 4)。
在单轮中,参与该迭代的每个客户端节点仅训练一小会儿。这意味着在聚合步骤(步骤 4)之后,我们有了一个已在所有参与客户端节点的所有数据上进行训练的模型,但只训练了一小段时间。然后,我们必须一遍又一遍地重复这个训练过程,最终得到一个经过充分训练的模型,该模型在所有客户端节点的数据上表现良好。
总结
恭喜,您现在了解了联邦学习的基础知识。当然,还有很多东西要讨论,但简而言之,这就是联邦学习。在本教程的后面部分,我们将详细介绍。有趣的问题包括:我们如何选择应该参与下一轮的最佳客户端节点?聚合模型更新的最佳方法是什么?我们如何处理失败的客户端节点(落后者)?
联合评估
就像我们可以在不同客户端节点的分散数据上训练模型一样,我们也可以根据该数据评估模型以获得有价值的指标。这称为联合评估,有时缩写为 FE。事实上,联邦评估是大多数联邦学习系统不可或缺的一部分。
联合分析
在许多情况下,机器学习并不是从数据中获取价值所必需的。数据分析可以产生有价值的见解,但同样,通常没有足够的数据来获得明确的答案。人们出现某种健康状况的平均年龄是多少?联合分析支持在多个客户端节点上进行此类查询。它通常与其他隐私增强技术(例如安全聚合)结合使用,以防止服务器看到各个客户端节点提交的结果。
差分隐私
差分隐私(DP)经常在联邦学习的背景下被提及。它是分析和共享统计数据时使用的隐私保护方法,确保个人参与者的隐私。DP 通过在模型更新中添加统计噪声来实现这一目标,确保任何个体参与者的信息都无法被区分或重新识别。该技术可以被认为是一种提供可量化的隐私保护措施的优化。
Flower
联合学习、联合评估和联合分析需要基础设施来来回移动机器学习模型,在本地数据上训练和评估它们,然后聚合更新的模型。Flower 提供了基础设施,以简单、可扩展且安全的方式实现这一目标。简而言之,Flower 提出了一种统一的联邦学习、分析和评估方法。它允许用户联合任何工作负载、任何机器学习框架和任何编程语言。
在本教程的下一部分中,我们将使用 Flower 构建第一个联邦学习系统。