当前位置:   article > 正文

联邦学习基础知识和概念(入门)

联邦学习

联邦学习介绍

联邦学习是一种带有隐私保护、安全加密技术的分布式机器学习框架,旨在让分散的各参与方在满足不向其他参与者披露隐私数据的前提下,协作进行机器学习的模型训练。

其设计目标是在保障大个人数据隐私、保证合法合规的前提下,在多参与方(可能是现实中的多个机构)或多计算结点之间协同学习到一个更好的全局模型。联邦学习的数据不共享,(加密后的)参数可共享,它可以基于server-client主从的中心化(centralized)结构,也可以是去中心化(decentralized)结构。

联邦学习框架包含多方面的技术,比如传统机器学习的模型训练技术、协调方参数整合的算法技术、协调方与参与方高效传输的通信技术、隐私保护的加密技术等。此外,在联邦学习框架中还存在激励机制,数据持有方均可参与,收益具有普遍性。

Google 首先将联邦学习运用在 Gboard(Google 键盘)上,联合用户终端设备,利用用户的本地数据训练本地模型,再将训练过程中的模型参数聚合与分发,最终实现精准预测下一词的目标。

除了分散的本地用户,联邦学习的参与者还可以是多家面临数据孤岛困境的企业,它们拥有独立的数据库但不能相互分享。联邦学习通过在训练过程中设计加密式参数传递代替原有的远程数据传输,保证了各方数据的安全与隐私,同时满足了已出台的法律法规对数据安全的要求。

经典的中心化的server-client式的联邦学习框架的训练过程可以简单概括为以下步骤:

  • server端建立初始模型,并将模型的参数发往各client端;;
  • 各client端利用本地数据进行模型训练,并将结果返回给server端;
  • server端汇总各参与方的模型,构建更精准的全局模型,以整体提升模型性能和效果。
    形式化地,传统联邦学习的优化目标函数可以写为:

其中 K K K为总节点个数, n k n_k nk为第 K K K个节点的样本个数。联邦学习的训练过程中,会现将数据按照Non-IID划分到各client节点,然后再各client节点的数据划分train/test/val。而对于传统联邦学习而言,每个client都会使用全局模型 ω \omega ω进行测试。

联邦学习框架包含多方面的技术,比如传统分布式机器学习中的模型训练与参数整合技术、Server与Client高效传输的通信技术、隐私加密技术、分布式容错技术等。

联邦学习分类

横向联邦学习

定义:联邦学习框架包含多方面的技术,比如传统分布式机器学习中的模型训练与参数整合技术、Server与Client高效传输的通信技术、隐私加密技术、分布式容错技术等。

场景:横向联邦学习的主要应用场景为用户特征部分重叠较多,但是用户样本部重叠较少。如果两个或者多个数据集中的用户特征部分重叠较多,那么我们就按照横向切分的方式从数据集中取出特征完全相同但是用户不同的数据进行训练。

比如在两个不同的地区,两个当地电力局提供的服务类似,因此对用户产生了类似的数据,比如月用电量,因此两个电力局的数据集特征重叠较多。但是,这两个地区的用户分别受各自电力局的管辖,两个电力局的数据集用户重叠较少。

简单来说,横向联邦学习根据用户维度进行切分(如图所示),是一种基于用户样本的联邦学习方式。
在这里插入图片描述
中间部分即为两个数据集的特征一致部分。横向联邦学习是将数据集水平分割(按用户维度),然后取出用户特征相同但用户不完全相同的部分进行训练,因此,横向联邦学习可以增加样本数量。简而言之,横向联邦学习中,每个用户都选取具有相同特征的多行数据来进行训练,即用户1选取具有特征1到n的样本进行训练,用户2同样如此。

横向联邦学习2种常用架构:(中心化联邦学习)客户-服务器 (clientserver)架构和(去中心化联邦)对等(Peer-to-Peer,P2P)网络架构。

客户-服务器架构

客户-服务器架构也被称为主-从(master-worker)架构或者轮辐式(hub-and-spoke)架构。在这种系统中,具有同样数据结构的 K 个参与方(也叫作客户或用户)在服务器(也叫作参数服务器或者聚合服务器)的帮助下,协作地训练一个机器学习模型。横向联邦学习系统的训练过程通常由如下四步组成:

  1. 各参与方在本地计算模型梯度,并使用同态加密、差分隐私或秘密共享等加密技术,对梯度信息进行掩饰,并将掩饰后的结果(简称为加密梯度) 发送给聚合服务器。
  2. 服务器进行安全聚合(secure aggregation)操作,如使用基于同态加密的加权平均。
  3. 服务器将聚合后的结果发送给各参与方。
  4. 各参与方对收到的梯度进行解密,并使用解密后的梯度结果更新各自的模型参数。

对等网络架构

除了上面讨论的客户-服务器架构,横向联邦学习系统也能够利用对等网络架构。在该框架下,不存在中央服务器或 者协调方。在这种架构中,横向联邦学习系统的 K 个参与方也被称为训练方(trainer)或分布式训练方。每一个训练方负责只使用本地数据来训练同一个机器学习模型(如DNN模型)。此外,训练方们使用安全链路(channels)在相互之间传输模型参数信息。为了保证任意两方之间的通信安全,需要使用例如基于公共密钥的加密方法等安全措施。

纵向联邦学习

定义:纵向联邦学习适用于联邦学习参与方的训练数据有重叠的数据样本,即参与方之间的数据样本是对齐的,但是在数据特征上有所不同。纵向联邦学习用户重合较多,根据用户ID进行匹配,取出参与方数据中用户相同而特征不完全相同的部分进行联合训练。

比如有两个不同机构,一家是某地银行,另一家是同一个地方的电商。他们的用户群里很有可能包含该地的大部分居民,因此用户的交集很大。但是,由于银行记录的都是用户的收支行为与信用评级,而电商则保有用户的游览与购买历史,因此他们的用户特征交集较小。纵向联邦学习就是将这些不同特征在加密的状态下加以聚合,以增强模型能力的联邦学习。目前,逻辑回归模型,树型结构模型和神经网络模型等众多机器学习模型已经逐渐被证实能够建立在这个联邦体系上。

在这里插入图片描述
中间部分即为两个数据集中用户一致的部分。纵向联邦学习是将数据集垂直划分(按用户特征维度),然后取出用户相同但用户特征不完全相同的部分数据进行训练。换句话说,不同列中的数据具有相同的用户(按用户对齐)。因此,纵向联邦学习可以增加训练数据的特征维数。简而言之,数据集1中选取用户1到n的特征1到n进行训练,数据集2中选取用户1到n的特征n到2n进行训练。

纵向联邦学习主要分为两步:

  1. 对齐不同参与方的相同用户样本(“加密实体对齐”)。
  2. 对这些样本进行加密的模型训练(即下图中右侧部分)。

这里面最难的部分,是如何在双方都看不到对方用户的情况下,实现“对齐”,即找到共同的用户。

第一部分:加密实体对齐

由于A方和B方公司的用户群体不同,系统使用一种基于加密的用户ID对齐技术来确保A方和B方不需要暴露各自的原始数据便可以对齐共同用户。在实体对齐期间,系统不会将属于某一家公司的用户暴露出来。

第二部分:加密模型训练

在确定共有实体后,各方可以使用这些共有实体的数据来协同地训练一个机器学习模型。

训练步骤为:

  1. 协调者C创建密钥对,并将公共密钥发送给A方和B方;
  2. A、B方对中间结果进行加密和交换,中间结果用来帮助计算梯度和损失值;
  3. A、B方计算加密梯度并分别加入附加掩码(或者噪声,避免C泄密),B方还会计算加密损失,A方和B方将加密的结果发送给C方;
  4. C方对梯度和损失信息进行解密,并将结果发送回A方和B方。A方和B方解除梯度信息上的掩码,并根据这些梯度信息来更新模型参数。

这种方式适用于客户群体类似的不同机构之间的合作,例如一个城市的银行和保险公司之间,医院和保险公司之间等等。

迁移联邦学习

定义:我们不对数据进行切分,而利用迁移学习来克服数据或标签不足的情况。

横向联邦学习和纵向联邦学习要求所有的参与方具有相同的特征空间或样本空间,从而建立起一个有效的共享机器学习模型。然而,在更多的实际情况下,各个参与方所拥有的数据集可能存在高度的差异,例如:参与方的数据集之间可能只有少量的重叠样本和特征,并且这些数据集的规模与分布情况可能差别很大,此时横向联邦学习与纵向联邦学习就不是很适合了。

在这种情况下,通过迁移学习技术,使其可以应用于更广的业务范围,同时可以帮助只有少量数据(较少重叠的样本和特征)和弱监督(较少标记)的应用建立有效且精确的机器学习模型,并且遵守数据隐私和安全条例的规定。这种组合即称为联邦迁移学习(FTL),它可以处理超出现有横向联邦学习和纵向联邦学习能力范围的问题。

迁移学习是机器学习中的一种特殊门类,即用户样本和特征都不同,类似于骑摩托车和自行车完全不同,我们希望通过学习,将骑自行车的技能迁移到骑摩托车上。

比如有两个不同机构,一家是位于中国的银行,另一家是位于美国的电商。由于受地域限制,这两家机构的用户群体交集很小。同时,由于机构类型的不同,二者的数据特征也只有小部分重合。在这种情况下,要想进行有效的联邦学习,就必须引入迁移学习,来解决单边数据规模小和标签样本少的问题,从而提升模型的效果。

联邦迁移学习,适用于参与者训练样本ID和数据特征重叠都较少的情况。

这里的数据计算由worker node来进行。服务器会下发parameters来使worker node有一个初始参数。worker node将自己的数据计算后将梯度发送给服务器。由服务器来进行梯度下降。在数据的传输过程中,空间复杂度为:参数的数量。

worker node的工作内容:

  • receive parameters from sever;
  • using paramters and local data tocompute gradients
  • send gradients to server

server的工作内容:
receive

  • gradients from every worker node;
  • compute sum(g1, g2, g3, ……gm);
  • updating model parameters,直接使用梯度下降的方法;
  • send parameters to every worker node;

联邦迁移学习的分类

基于实例的联邦迁移学习

对于横向联邦学习,参与方的数据通常来自不同的分布,这可能会导致在这些数据上训练的机器学习模型的性能较差。参与方可以有选择地挑选或者加权训练样本,以减小分布差异,从而可以将目标损失函数最小化。对于纵向联邦学习,参与方可能具有非常不同的业务目标。因此,对齐的样本及其某些特征可能对联邦迁移学习产生负面影响,这被称为负迁移。在这种情况下,参与方可以有选择地挑选用于训练的特征和样本,以避免产生负迁移。

基于特征的联邦迁移学习

参与方协同学习一个共同的表征空间。在该空间中,可以缓解从原始数据转换而来的表征之间的分布和语义差异,从而使知识可以在不同领域之间传递。对于横向联邦学习,可以通过最小化参与方样本之间的最大平均差异来学习共同的表征空间。对于纵向联邦学习,可以通过最小化对齐样本中属于不同参与方的表征之间的距离,来学习共同的表征空间。

基于模型的联邦迁移学习

参与方协同学习可以用于迁移学习的共享模型,或者参与方利用预训练模型作为联邦学习任务的全部或者部分初始模型。横向联邦学习本身就是一种基于模型的联邦迁移学习,因为在每个通信回合中,各参与方会协同训练一个全局模型,并且各参与方把该全局模型作为初始模型进行微调。对于纵向联邦学习,可以从对齐的样本中学习预测模型或者利用半监督学习技术,以推断缺失的特征和标签,然后,可以使用扩大的训练样本训练更准确的共享模型。

联邦学习和传统的分布式学习的区别:

(1)用户对自己的设备和数据有绝对的控制权,用户可以随时停止计算和参与通信。而在传统的分布式学习中worker node完全由server控制。
(2)参与联邦学习的设备往往是不稳定的,计算能力也不尽相同。
(3)联邦学习的通信代价大,通信量多。(我们要减少通信次数)
(4)参与联邦学习的数据并非独立同分布,不利于算法设计,因为每个用户的数据是不一样的。
(5)联邦学习的节点负载不平衡,每个用户的数据量不一样,不好分配权重,建模复杂。计算时间不一样。

参考

[1] http://c.biancheng.net/view/zqzhic.html
[2] https://zhuanlan.zhihu.com/p/577963737
[3] https://zhuanlan.zhihu.com/p/468491319
[4] https://blog.csdn.net/weixin_44211968/article/details/123449347
[5] https://blog.csdn.net/wutianxu123/article/details/123527977
[6] https://security.blog.csdn.net/article/details/123573886
[7] https://blog.csdn.net/weixin_44734484/article/details/129286717

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/374172
推荐阅读
相关标签
  

闽ICP备14008679号