高质量、大数据的训练数据通常是很难获得的,我们不得不面对难以桥接的数据孤岛。由于数据是由不同组织的不同部门产生并拥有的,传统的方法是收集数据并传输至一个中心点(例如一个数据中心),这个中心点拥有高性能的计算集群并且能够训练和建立机器学习模型,然而由于数据孤岛的出现,这种方法近来已经不再有效或者适用了
随着人工智能在各行各业的应用落地,人们对于用户隐私和数据的安全度也在不断提高。用户开始更加关注自己的隐私信息是否未经自己允许就被利用,甚至滥用。人们对于数据失去掌控的担忧,以及对于增益分配效果的不透明,加剧了所谓数据碎片化和孤岛分布的严重性
随着物联网和边缘计算的兴起,大数据往往不会拘泥于单一的整体,而是分布在许多方面。例如对于自动驾驶汽车,每辆汽车必须能够在本地使用机器学习模型处理大量信息,同时需要在全球范围内与其他汽车和计算中心协同工作
各种原因造成的数据孤岛正阻碍着训练人工智能模型所必须的大数据的使用。一种可行的方法是由每一个拥有数据源的组织训练一个模型,之后让各个组织在各个模型上彼此交流沟通,最终通过模型聚合得到一个全局模型。为了确保用户隐私和数据安全,各组织间交换模型信息的过程将会被精心设计,使得没有组织能够猜测到其他任何组织的隐私数据内容。同时,当构建全局模型时,各数据源仿佛已被整合在一起,这边是联邦学习的核心思想
联邦学习旨在建立一个基于分布数据集的联邦学习模型。联邦学习包括两个过程,分别是模型训练和模型推理。在模型训练过程中,模型相关的信息能够在各方之间交换(或者以加密形式进行交换),但数据不能。这一交换不能暴露各个站点上数据的任何受保护的隐私部分。已训练好的联邦学习模型可以置于联邦学习系统的各参与方,可以在多方之间共享。在推理时,模型可以应用于新的数据实例
联邦学习是一种具有以下特征的用来建立机器学习模型的算法框架。其中机器学习模型是指将某一方的数据实例映射到预测结果输出的函数:
理论上来说,如果使用安全的联邦学习在分布式数据源上构建机器学习模型,这个模型在未来数据上的性能近似于把所有数据集中到一个地方训练所得到的的模型的性能。
联邦学习系统可能涉及也可能不涉及中央协调方,也能被设计为对等(P2P)网络的方式(即不需要协调方,这种体系结构的优点是提高了安全性,但需要更多的计算操作来对消息内容进行加密和解密)
联邦学习带来了许多益处,由于它被设计为不需要直接数据交换或者收集的形式,所以保护了用户的隐私和数据安全。联邦学习还允许若干参与方系统训练一个机器学习模型,从而使各方都能得到一个比自己训练的更好的模型。
联邦学习有巨大的商业应用潜力,但同时也面临着诸多挑战。参与方(比如智能手机)和中央聚合服务器之间的通信链接可能是慢速且不稳定的,因为同一时间可能有非常多的参与方在通信。还有,在联邦学习系统中,来自不同参与方的数据可能会导致出现非独立同分布的情况。并且不同的参与方可能有数量不均的训练数据样本,这可能导致联邦模型产生偏差,甚至会使得联邦模型训练失败。联邦学习模型也容易遭到恶意攻击,即只要有一个或者更多的参与者发送破坏性的模型更新信息,就会使得联邦模型的可用性降低,甚至损失整个联邦学习系统或者模型性能
设矩阵 D i D_i Di表示第 i i i个参与方的数据;设矩阵 D i D_i Di的每一行代表一个数据样本,每一列代表一个具体的数据特征;一些数据集可能包含标签信息,将特征空间设为 X X X,数据标签空间设为 Y Y Y,并用 I I I表示数据样本ID空间。特征空间 X X X,数据标签空间 Y Y Y和样本id空间 I I I组成了一个训练集 ( I , X , Y ) (I,X,Y) (I,X,Y)。根据训练数据在不同参与方之间的数据特征空间和样本ID空间的分布情况,将联邦学习划分为横向联邦学习、纵向联邦学习和联邦迁移学习
我们关注机器学习中的三种主要攻击类型:
对机器学习系统的攻击可能会在任何阶段发生,包括数据发布、模型训练和模型推理。在模型阶段发生的攻击叫做重构攻击。在模型推理阶段,一个敌对的结果方可能会使用反向工程技术来获取模型的额外信息,以此实施模型反演攻击或成员推理攻击。特征推理攻击则发生在数据发布阶段
隐私保护技术,包括三种方法,分别是安全多方计算、同态加密和差分隐私
分布式机器学习也称为分布式学习,是指利用多个计算节点(也称为工作者worker)进行机器学习或者深度学习的算法和系统,旨在提高性能,保护隐私并可扩展至更大规模的训练数据和更大的模型。同步或者异步的分布式梯度下降(SGD)算法都适用于分布式机器学习
通常来说,DML可以分为两类:面向扩展性的DML和面向隐私保护的DML。面向扩展的DML是指用来解决不断增长的扩展性和计算需求问题的机器学习系统。当内存限制和算法复杂度是主要障碍时,面向扩展性的DML方法变为大规模ML提供了可行的解决方案。除了克服训练数据的集中存储需求,DML系统还能够使用更弹性化和更廉价的计算资源,例如增加计算单元的数量。与面向扩展性的DML不同,面向隐私保护的DML的主要目的是保护用户隐私和数据安全,在面向隐私保护的DML系统中,有多个参与方且每一方都拥有一些训练数据。也就是说,面向隐私保护的DML适用于具有纵向划分数据集的场景,不同参与方各自持有的训练数据具有相同的训练样本ID和不同的数据特征
在大数据时代,ML面临的主要问题已经从训练样本过小转移到了如何处理大规模的高纬度数据集上,随着大趋势的变化,ML社区正面临着计算性能和耗时与数据规模不匹配的挑战
面向扩展性的DML方法
数据并行
DML的第一种方法便是先将训练数据划分为多个子集(也称为分片或者切片)然后将各子集置于多个计算实体,之后并行地训练同一个模型。这种方法被称为数据并行方法,也被称为以数据为中心的方法
目前主要有两种基于数据并行的分布式训练方法,即同步训练和异步训练。在同步训练中,所有的计算节点在训练数据的不同分片上同步地训练同一个模型的副本,在各计算节点每执行完一个模型更新步骤后,每个计算节点产生的梯度(或者模型参数)就会被发送给服务器,服务器在收到所有计算节点的结果后再进行聚合操作。而在异步训练中,所有计算节点独立地使用其本地的训练数据集在训练同一个模型的副本,并将本地获得的模型梯度及时地推动给服务器,以便服务器更新全局模型
数据并行能用于解决训练数据过大以至于不能存于单一计算节点中的问题,或者用于满足使用并行计算节点实现更快速的计算的要求
模型并行
随着DNN模型(深度神经网络)变得越来越大,可能会面临一个模型不能加载到单一计算节点内存中的问题,对于这种情况,我们需要分割模型,并把各部分置于不同的计算节点中。拥有大量参数的模型由于对内存有很高的要求,所以不能放于单一计算设备中,但可以通过这种模型并行策略,内存限制也就不复存在了。例如DNN模型的一个层可以被放入单一设备的内存中,且前向和后向传播意味着一台计算设备的输出以串行方式传输至另一台计算设备
图并行
图并行方法,也称为以图为中心的方法,是一种用于划分和分配训练数据和执行ML算法的新技术,其执行速度比基于数据并行的方法要快几个数量级
任务并行
任务并行也叫作以任务为中心的方法,指的是计算机程序在同一台或者多台机器上的多个处理器上执行。它着力并行执行不同的操作以最大化利用处理器或内存等计算资源。任务并行的一个例子是一个应用程序创建多个线程进行并行处理,每个线程负责不同的操作
混合并行和交叉并行
在DML系统的实践中,我们经常需要结合不同类型的并行方法,从而形成混合并行的方案。混合并行的覆盖范围可以进一步扩展,形成更加灵活的较差并行,例如按层选择并行方式
数据共享和分布式计算是当今大数据时代的趋势,因为它既能提升计算效率又能改善模型性能,但随着公众对隐私和数据安全越来越关注,DML需要考虑隐私保护问题。对于隐私保护的ML系统,它通常能保护以下信息:训练数据输入,预测标签输出,模型信息(模型参数、结构和损失函数)和身份识别信息(记录的数据来源站点,出处或者拥有者)
在面向隐私保护的DML中,常用的用于保护数据隐私的方法大概分为两个类别:
拥有更高效率,更低隐私保护级别的方法通常需要牺牲数据隐私以换取更好的计算效率。例如,梯度值以明文形式被发送给协调方,并以梯度平均方法更新模型,从而在不降低全局学习经度的情况下用隐私换取效率。旨在得到最高的数据精度和安全性的方法逐渐开始选用同态加密和安全多方计算,但这将会导致更高的计算复杂度和开销
典型的面向隐私保护的梯度下降方法包括朴素联邦学习、代数方法、系数梯度更新方法、模糊处理处理方法和密码学方法(如同态加密和安全多方计算)。模糊处理方法基于随机化、泛化或者抑制机制(如梯度分层话、差分隐私、k-匿名方法)。在朴素联邦学习、代数方法和系数梯度更新方法中,每一方发送给协调方明文形式的梯度信息以更新模型,而这只能保护数据的原始形式,即低隐私保护等级和非常高的效率。稀疏梯度更新方法还能通过更新梯度中的一个实体子集,用精度来换取效率和隐私。基于随机化机制的方法,如差分隐私和高斯随机映射,通过给数据或者梯度加入噪声的方式,用精度换取隐私。基于泛化和一致性的方法也通过特征归纳或者删除某些实例的方式,用精度换取隐私。
横向联邦学习也称为按样本划分的联邦学习,可以应用于联邦学习,可以应用于联邦学习的各个参与方的数据集有相同的特征空间和不同的样本空间的场景,类似于在表格视图中对数据进行水平划分的情况。横向划分广泛用于传统的以表格形式展示数据库记录内容的场景,例如表格中的记录按照行被横向划分为不同的组,且每行都包含完整的数据特征。比如两个地区的城市银行可能在各自的地区拥有非常不同的客户群体,所以他们的客户交际非常小,但是数据集拥有不同的样本ID。然而,他们的业务模型非常相似,因此他们的数据集的特征空间是相同的。这两家银行可以联合起来进行横向联邦学习来构建更好的风控模型。横向联邦学习的条件总结为
X i = X j , Y i = Y j , I i ≠ I j , ∀ D i , D j , i ≠ j X_i=X_j, Y_i=Y_j, I_i \neq I_j, \forall D_i,D_j,i \neq j Xi=Xj,Yi=Yj,Ii=Ij,∀Di,Dj,i=j
其中 D i D_i Di和 D j D_j Dj分别表示第i方和第j方拥有的数据集。假设两方的数据特征空间和标签空间对,即 D i D_i Di和 D j D_j Dj是相同的。但是假设两方的客户ID空间 I i I_i Ii和 I j I_j Ij是没有交集的或者交集很小
关于横向联邦学习系统的安全性的定义,我们通常假设横向联邦学习系统的参与方都是诚实的,需要防范的对象是一个诚实但好奇的聚合服务器。即通常假设只有服务器才能使得数据参与方的隐私安全的隐私安全受到威胁。在谷歌发布的为安卓手机提供模型更新的基于横向联邦学习的解决方案中,一部安卓手机的用户在本地更新模型参数,并将更新的模型参数上传至安卓云,因此可以和其他参与方协同地训练联邦学习模型
两种常用的横向联邦学习系统架构分别称为客户-服务器架构和对等网络结构(Peer-to-Peer)
典型的横向联邦学习系统的客户-服务器架构实例如下图所示,也称为主-从架构或者轮辐式架构,在这种系统中,具有相同数据结构的K个参与方在服务器(也叫作参数服务器或者聚合服务器)的帮助下,协作地训练一个机器学习模型。横向联邦学习系统的训练过程通常由以下四个步骤组成:
如果联邦平均算法使用了安全多方计算或加法同态加密技术,则上述架构便能防范半诚实的服务器的攻击,并防止数据泄露。然而,在协同学习过程中,若有一个恶意的参与方训练生成对抗网络(GAN),将可能导致系统容易遭受攻击
除了客户-服务器架构,横向联邦学习系统也能够利用对等网络架构(如下)。在这种框架下,不存在中央服务器或者协调方。在这种架构中,横向联邦学习系统的K个参与方也被称为训练房或者分布式训练方。每一个训练方负责只使用本地数据来训练同一个机器学习模型。训练方们使用安全链路在互相之间传输模型参数信息。为了保证任意两方之间的通信安全,需要使用例如基于公共密钥的加密方法等安全措施。
由于对等网络架构中不存在中央服务器,训练方们必须提前商定发送和接收模型参数信息的顺序,主要有两种方法可以达到这个目的:
在循环传输模式中,训练方们被组织成一条链,第一个训练方(链首)将当前的模型参数发送给它的下一个训练方。该训练方接收来自上游的模型参数后,将使用来自本地数据集的小批量数据更新收到的模型参数。之后,他将更新后的模型参数传输给下一个训练方,例如训练方1到训练方2,训练方(k-1)到k,然后训练方k再回到训练方1。这一过程将会持续重复,直到模型参数收敛或者达到允许的最大训练时间
在随机传输模式中,第k个训练方从 { 1 … L } / { k } \{1 \dots L\} / \{k\} {1…L}/{k} 中选取 i i i ,并将模型参数发送给训练方 i i i。当第 i i i个训练方收到来自第 k k k个训练方的模型参数后,他将使用来自本地数据集的数据的mini-batch更新收到的模型参数。之后,第 i i i个训练方也从 { 1 … L } / { i } \{1 \dots L\} / \{i\} {1…L}/{i}中等概率的选取一个数字 j j j,并将自己的模型参数发送给训练方 j j j。这一过程将会重复,直到 K K K个训练方同意模型参数收敛或达到允许的最大训练时间,这种方法也叫作Gossip学习。
在横向联邦学习中,模型训练和评估是在每个参与方中分布地执行的,并且任意方都不能获取其他方的数据集,所以,每个参与方都能获取本地模型性能,但是得到全局模型的性能评价需要耗费更多的资源。对于客户-服务器架构,参与方和协作方能够协作地获得全局模型性能,在横向联邦学习的模型训练过程中和模型训练结束之后,可以通过以下步骤得到全局模型性能:
而针对对等网络架构,由于不存在中央协调方或者中央服务器,要得到全局模型性能将会变得更为复杂,一种可能的方式是选取其中一个参与方来充当一个临时的协调方。测试学习性能最好在训练结束后,如果在训练期间使用这种方法,可能会给临时协调方造成过多的负担
为了区别于分布式优化问题,联邦学习中的优化问题被称为联邦优化。联邦优化具有以下的关键特性:
为了应对联邦优化中面临的挑战,联邦平均算法被提出来求解联邦优化问题。联邦平均算法可以用于深度神经网络训练中遇到的非凸损失函数(损失函数是神经网络模型参数的非凸函数),适用于任何下列有限加和形式的损失函数:
m i n w ∈ R d f ( w ) = 1 n ∑ i = 1 n f i ( w ) min_{w \in R^d} f(w) = \frac{1}{n} \sum_{i=1}^n f_i(w) minw∈Rdf(w)=n1i=1∑nfi(w)其中n表示训练数据的数量; w ∈ R d w \in R^d w∈Rd表示d维的模型参数
在联邦学习中,由于任何单一设备上的数据集都是较小的,计算代价相比通信代价是微乎其微的,所以可以通过增加并行度(加入更多的参与方)和增加每一个参与方中的计算(每一个参与方在两个通信轮次之间进行更加复杂的计算)两种增加计算的方法来减少训练模型所需的通信轮次