联邦学习介绍

概念:什么是联邦学习呢?

问题所在:举例来说,假设有两个不同的企业A和B,它们拥有不同的数据,比如企业A有用户特征数据,企业B有产品特征数据和标注数据。这两个企业按照GDPR准则是不能粗暴地把双方数据加以合并的,因为他们各自的用户并没有机会同意这样做。
模型提出:假设双方各自建立一个任务模型,每个任务可以是分类或预测,这些任务也已经在获得数据时取得了各自用户的认可。那么,现在的问题是如何在A和B各端建立高质量的模型。但是,又由于数据不完整(例如企业A缺少标签数据,企业B缺少特征数据),或者数据不充分(数据量不足以建立好的模型),各端有可能无法建立模型或效果不理想。
联邦学习目的:联邦学习的目的是解决这个问题:它希望做到各个企业的自有数据不出本地,联邦系统可以通过加密机制下的参数交换方式,在不违反数据隐私保护法规的情况下,建立一个虚拟的共有模型。这个虚拟模型就好像大家把数据聚合在一起建立的最优模型一样。但是在建立虚拟模型的时候,数据本身不移动,也不会泄露用户隐私或影响数据规范。这样,建好的模型在各自的区域仅为本地的目标服务。在这样一个联邦机制下,各个参与者的身份和地位相同,而联邦系统帮助大家建立了“共同富裕”的策略。这就是为什么这个体系叫做“联
邦学习”。

本质:联邦学习本质上是一种分布式机器学习技术,或机器学习框架。

目标:联邦学习的目标是在保证数据隐私安全及合法合规的基础上,实现共同建模,提升AI模型的效果。

定义:当多个数据拥有方(例如企业)Fi (i=1,…, N) 想要联合他们各自的数据Di训练机器学习模型时,传统做法是把数据整合到一方,并利用数据D={Di, i=1,…, N}进行训练并得到模型MSUM。然而,该方案由于涉及隐私和数据安全等法律问题通常难以实施。为解决这一问题,我们引入了联邦学习。联邦学习是指数据拥有方Fi在不用给出己方数据Di的情况下,也可进行模型训练得到模型MFED的计算过程,并能够保证模型MFED的效果VFED与模型MSUM的效果VSUM之间的差距足够小,即|VFED-VSUM |<δ, 这里δ是任意小的一个正量值。

#联邦学习分类

考虑有多个数据拥有方,每个数据拥有方各自所持有的数据集Di可以用一个矩阵来表示。矩阵的每一行代表一个用户,每一列代表一种用户特征。某些数据集可能还包含标签数据。如果要对用户行为建立预测模型,就必须有标签数据。我们把用户特征叫做X,把标签特征叫做Y。
以包含两个用户拥有方的数据为例,数据分布可分为以下三种情况:
● 两个数据集的用户特征(X1, X2, …)重叠部分较大,而用户(U1,U2, …)重叠部分较小;

● 两个数据集的用户(U1, U2, …)重叠部分较大,而用户特征(X1, X2, …)重叠部分较小;

● 两个数据集的用户(U1, U2, …)与用户特征(X1, X2, …)重叠部分都比较小。
为了应对以上三种数据分布情况,我们把联邦学习分为横向联邦学习(horizontal federated learning)、纵向联邦学习(vertical federated learning)与联邦迁移学习(Federated Transfer Learning, FTL) (如图)。
在这里插入图片描述

横向联邦学习:

本质是样本的联合,适用于参与者间业态相同但触达客户不同,即特征重叠多,用户重叠少时的场景,比如不同地区的银行间,他们的业务相似(特征相似),但用户不同(样本不同)
学习过程:
step1:参与方各自从服务器A下载最新模型;

step2:每个参与方利用本地数据训练模型,加密梯度上传给服务器A,服务器A聚合各用户的梯度更新模型参数;

step3:服务器A返回更新后的模型给各参与方;

step4:各参与方更新各自模型。
在这里插入图片描述

步骤解读:在传统的机器学习建模中,通常是把模型训练需要的数据集合到一个数据中心然后再训练模型,之后预测。在横向联邦学习中,可以看作是基于样本的分布式模型训练,分发全部数据到不同的机器,每台机器从服务器下载模型,然后利用本地数据训练模型,之后返回给服务器需要更新的参数;服务器聚合各机器上的返回的参数,更新模型,再把最新的模型反馈到每台机器。

在这个过程中,每台机器下都是相同且完整的模型,且机器之间不交流不依赖,在预测时每台机器也可以独立预测,可以把这个过程看作成基于样本的分布式模型训练。谷歌最初就是采用横向联邦的方式解决安卓手机终端用户在本地更新模型的问题的。

纵向联邦学习

本质是特征的联合,适用于用户重叠多,特征重叠少的场景,比如同一地区的商超和银行,他们触达的用户都为该地区的居民(样本相同),但业务不同(特征不同)。
学习过程
纵向联邦学习的本质是交叉用户在不同业态下的特征联合,比如商超A和银行B,在传统的机器学习建模过程中,需要将两部分数据集中到一个数据中心,然后再将每个用户的特征join成一条数据用来训练模型,所以就需要双方有用户交集(基于join结果建模),并有一方存在label。其学习步骤如上图所示,分为两大步:

第一步:加密样本对齐。是在系统级做这件事,因此在企业感知层面不会暴露非交叉用户。

第二步:对齐样本进行模型加密训练:

step1:由第三方C向A和B发送公钥,用来加密需要传输的数据;

step2:A和B分别计算和自己相关的特征中间结果,并加密交互,用来求得各自梯度和损失;

step3:A和B分别计算各自加密后的梯度并添加掩码发送给C,同时B计算加密后的损失发送给C;

step4:C解密梯度和损失后回传给A和B,A、B去除掩码并更新模型。
在这里插入图片描述
目前,逻辑回归模型、树型结构模型和神经网络模型等众多机器学习模型已经逐渐被证实能够建立在此联邦体系上。

联邦迁移学习

当参与者间特征和样本重叠都很少时可以考虑使用联邦迁移学习,如不同地区的银行和商超间的联合。主要适用于以深度神经网络为基模型的场景。
**什么是迁移学习:**迁移学习,是指利用数据、任务、或模型之间的相似性,将在源领域学习过的模型,应用于 目标领域的一种学习过程。
迁移学习的核心是,找到源领域和目标领域之间的相似性,例如你会打羽毛球,就可以类似的去打网球,你会下围棋,就可以类似去下五子棋,去寻找网球与羽毛球,五子棋和围棋,类似于照猫画虎。举一个杨强教授经常举的例子来说明:我们都知道在中国大陆开车时,驾驶员坐在左边,靠马路右侧行驶。这是基本的规则。然而,如果在英国、香港等地区开车,驾驶员是坐在右边,需要靠马路左侧行驶。那么,如果我们从中国大陆到了香港,应该如何快速地适应 他们的开车方式呢?诀窍就是找到这里的不变量:不论在哪个地区,驾驶员都是紧靠马路中间。这就是我们这个开车问题中的不变量。 找到相似性 (不变量),是进行迁移学习的核心。
**联邦迁移学习的学习过程:**联邦迁移学习的步骤与纵向联邦学习相似,只是中间传递结果不同(实际上每个模型的中间传递结果都不同)。

联邦学习与隐私保护的关系

联邦学习的特点使其可以被用来保护用户数据的隐私,但是它和大数据、数据挖掘领域中常用的隐私保护理论,如差分隐私保护理论(differential privacy)[4]与k匿名(k-anonymity)[5]等方法,还是有较大的差别。联邦学习与传统隐私保护方法的原理不同。联邦学习通过加密机制下的参数交换方式保护用户数据隐私,数据和模型本身不会进行传输,也不能反猜对方数据,因此在数据层面不存在泄露的可能,也不违反更严格的数据保护法案如GDPR等。而差分隐私理论、k匿名和l多样化等方法是通过在数据里加噪音,或者采用概括化的方法模糊某些敏感属性,直到第三方不能区分个体为止,从而以较高的概率使数据无法被还原,以此来保护用户隐私。相较而言,联邦学习对用户数据隐私保护更为有用。

联邦学习与分布式机器学习的关系

横向联邦学习中的多方联合训练与分布式机器学习(distributedmachine learning)有部分相似。分布式机器学习涵盖了多个方面,包括把机器学习中的训练数据分布式存储、计算任务分布式运行、模型结果分布式发布等。参数服务器(parameter server)[6]是分布式机器学习中一个典型例子。它作为加速机器学习模型训练过程的一种工具,将数据存储在分布式的工作节点上,通过一个中心式的调度节点调配数据分布和分配计算资源,以便更高效地获得最终的训练模型。而横向联邦学习中的工作节点代表的是模型训练的数据拥有方,其对本地的数据具有完全的自治权限,可以自主决定何时加入联邦学习进行建模,联邦学习面对的是一个更复杂的学习环境。联邦学习强调模型训练过程中对数据拥有方的数据隐私保护,是一种应对数据隐私保护的有效措施。

联邦学习与联邦数据库的关系

联邦数据库系统(federateddatabase system)[7]是将多个不同的单元数据库进行集成,并对集成后的整体进行管理的系统。它的提出是为了实现对多个独立的数据库进行相互操作。联邦数据库系统对单元数据库往往采用分布式存储的方式,并且在实际中各个单元数据库中的数据是异构的,因此,它和联邦学习在数据的类型与存储方式上有很多相似之处。

联邦学习开源:githubhttps://github.com/FederatedAI/FATE
参考:
https://zhuanlan.zhihu.com/p/79284686
https://mp.weixin.qq.com/s/5FTrG5SZey2yeIbuyT3HoQ

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值