AI 入门 101
什么是联邦学习?

什么是联邦学习?
传统的训练AI模型的方法涉及设置服务器,在那里模型通过使用基于云的计算平台在数据上进行训练。然而,在过去的几年中,出现了一种替代的模型创建形式,称为联邦学习。 联邦学习 将机器学习模型带到数据源,而不是将数据带到模型。联邦学习将多个计算设备链接到一个去中心化的系统中,允许收集数据的个别设备协助训练模型。
在联邦学习系统中,学习网络中的各个设备都有模型的副本。不同设备/客户端使用客户端的本地数据训练自己的模型副本,然后将个别模型的参数/权重发送到主设备或服务器,服务器聚合参数并更新全局模型。这种训练过程可以重复进行,直到达到所需的准确性水平。简而言之,联邦学习的思想是,训练数据永远不会在设备或各方之间传输,只有与模型相关的更新。
联邦学习可以分为三个不同的步骤或阶段。联邦学习通常从一个通用模型开始,该模型作为基线,并在中央服务器上进行训练。在第一步中,该通用模型被发送到应用程序的客户端。这些本地副本然后使用客户端系统生成的数据进行训练,学习和提高其性能。
在第二步中,客户端将其学习的模型参数发送到中央服务器。这定期发生,按照设定的时间表。
在第三步中,当服务器接收到参数时,服务器会聚合学习的参数。参数聚合后,中央模型会更新并再次与客户端共享。整个过程然后重复。
拥有模型副本 的好处在于,网络延迟减少或消除。与服务器共享数据的成本也消除。联邦学习方法的其他好处包括,联邦学习模型保留隐私,模型响应个性化为设备用户。
联邦学习模型的例子包括推荐引擎、欺诈检测模型和医疗模型。媒体推荐引擎,如Netflix或Amazon使用的那种,可以在从数千名用户收集的数据上进行训练。客户端设备将训练自己的单独模型,中央模型将学会做出更好的预测,即使个别数据点对于不同的用户来说是唯一的。同样,银行使用的欺诈检测模型可以在许多不同设备的活动模式上进行训练,几家银行可以合作训练一个共同的模型。从医疗联邦学习模型来看,多家医院可以合作训练一个共同的模型,该模型可以通过医疗扫描识别潜在的肿瘤。
联邦学习类型
联邦学习方案 通常分为两类:多方系统和单方系统。单方联邦学习系统被称为“单方”,因为只有一个实体负责监督数据在学习网络中的所有客户端设备上的捕获和流动。客户端设备上的模型使用具有相同结构的数据进行训练,尽管数据点通常对各个用户和设备来说是唯一的。
相比单方系统,多方系统由两个或多个实体管理。这些实体合作,利用他们可以访问的各种设备和数据集来训练一个共享模型。设备上的参数和数据结构通常相似,但不必完全相同。相反,预处理用于标准化模型的输入。可能会使用一个中立实体来聚合属于不同实体的设备建立的权重。
联邦学习框架
用于联邦学习的流行框架包括 Tensorflow Federated、Federated AI Technology Enabler (FATE) 和 PySyft。PySyft是一个基于深度学习库PyTorch的开源联邦学习库。PySyft旨在确保服务器和代理之间的私密、安全的深度学习,使用加密计算。同时,Tensorflow Federated是另一个基于Google的Tensorflow平台的开源框架。除了允许用户创建自己的算法外,Tensorflow Federated还允许用户在自己的模型和数据上模拟多个包含的联邦学习算法。最后,FATE也是一个由Webank AI设计的开源框架,旨在为联邦AI生态系统提供一个安全的计算框架。
联邦学习挑战
由于联邦学习仍然相对较新,仍有几个挑战 需要克服,才能实现其全部潜力。边缘设备的训练能力、数据标签和标准化以及模型收敛是联邦学习方法的潜在障碍。
在设计联邦学习方法时,需要考虑边缘设备的计算能力,特别是在本地训练方面。虽然大多数智能手机、平板电脑和其他IoT兼容设备都能够训练机器学习模型,但这通常会损害设备的性能。需要在模型准确性和设备性能之间做出妥协。
数据标签和标准化是联邦学习系统必须克服的另一个挑战。监督学习模型需要清晰一致地标记训练数据,这在系统中的许多客户端设备上可能很难做到。因此,开发模型数据管道以自动根据事件和用户操作以标准化方式应用标签至关重要。
模型收敛时间是联邦学习的另一个挑战,因为联邦学习模型通常比本地训练的模型需要更长时间才能收敛。参与训练的设备数量增加了模型训练的不可预测性,因为连接问题、不规则的更新,甚至不同的应用程序使用时间都可能导致收敛时间增加和可靠性降低。因此,联邦学习解决方案通常最适用于提供与集中训练模型相比的有意义优势的情况,例如数据集非常大且分布的情况。

图片:Jeromemetronome via Wikimedia Commons,CC By S.A. 4.0(https://en.wikipedia.org/wiki/File:Federated_learning_process_central_case.png)
