联邦学习
-
0 引言
考虑一下这样一个场景,有很多用户装了google的APP,比如,搜索引擎,google照片等等,这些移动端的app都会收集数据产生数据,有些数据对于google来说是有用的,所有google想要建立机器学习模型,然后使用移动端的数据来训练这个机器学习模型,这个问题听来挺简单的,app把这些数据收集起来,发送到google云端,然后google在自己的 模型上来训练模型,google有的是计算资源,google直接拿几百个GPU来训练不就解决了吗。事情如果有这么简单,就没有联邦学习了,假如有这样一个限制条件,用户觉得自己的照片是隐私,不允许google把自己的照片传到云端,那该怎么办呢。如果google不能把数据传到云上,那么google要怎么训练机器学习模型呢。
在举个例子,有几家医院,有一些医疗数据,他们想用医疗数据来学习一个模型,这个模型可以帮医院来做智能的诊断,预测等等任务,每家医院都有自己的数据训练自己的模型,但是每家的数据都不多,训练出来的模型也不会好,如果很多医院把自己的数据都拿出来,这样数据多了,模型就自然训练的更好,把这个例子中的医院换成银行,保险公司都一样的道理,最简单的办法是就是大家把数据整合起来放到一个服务器上,可以是其中一家医院的服务器,也可以是第三方公司的服务器,然后在服务器上就可以把模型训练出来了,但事实上没有这么简单,不管是医院,银行,保险公司,都不能轻易的吧用户数据交给别人,这可能违反公司的规定。也可能违反法律。这就引出了联邦学习。
1 联邦学习的基本概念
上面讲了两个例子,那什么是联邦学习呢。
联邦学习(Federated Learning) 是一种新兴的人工智能基础技术,在 2016 年由谷歌最先提出,原本用于解决安卓手机终端用户在本地更新模型的问题,其设计目标是在保障大数据交换时的信息安全、保护终端数据和个人数据隐私、保证合法合规的前提下,在多参与方或多计算结点之间开展高效率的机器学习。其中,联邦学习可使用的机器学习算法不局限于神经网络,还包括随机森林等重要算法。联邦学习有望成为下一代人工智能协同算法和协作网络的基础。
联邦学习是一种分布式学习,或者说也是一种机器学习框架1.1 分布式学习简介
是指利用多个计算节点(也称为工作者,Worker)进行机器学习或者深度学习的算法和系统,旨在提高性能、保护隐私,并可扩展至更大规模的训练数据和更大的模型。
训练过程中都是worker在做计算,server存储模型参数并且更新模型参数,训练最小二乘回归或者神经网络需要做梯度下降或者随机梯度下降,想要让算法收敛需要很多轮梯度下降,每一轮都需要做这样几步操作,
-
首先worker需要向server索要模型参数,server要向worker发送模型参数,这一步需要通信,通信复杂度就是模型参数数量,
-
然后worker就用本地的数据,根据最新的参数来计算梯度,worker节点算好梯度之后,把梯度发给server,这一步又需要通信,梯度的维度和参数的维度是一样的。
-
server收到梯度后,用梯度来更新模型参数,比如做一个梯度下降或者随机梯度下降,这样就完成了一次迭代。
之前提到的两个场景,医院和google都涉及隐私问题,数据没有办法被集中放在一起,现在想想,使用分布式不就解决了吗。把每个用户的手机当成一个worker节点,让节点做计算,算出梯度,发给server。这样server就可以学出来一个模型了
2. 联邦学习分类
针对不同数据集,联邦学习分为横向联邦学习****(horizontal federated learning)、纵向联邦学习(vertical federated learning)与联邦迁移学习(Federated Transfer Learning,FmL)
2.1 横向联邦学习
横向联邦学习的本质是样本的联合,适用于参与者间业态相同但触达客户不同,即特征重叠多,用户重叠少时的场景,比如不同地区的银行间,他们的业务相似(特征相似),但用户不同(样本不同)
横向联邦学习以数据的特征维度为导向,取出参与方特征相同而用户不完全相同的部分进行联合训练。在此过程中,通过各参与方之间的样本联合,扩大了训练的样本空间,从而提升了模型的准确度和泛化能力。2.2 纵向联邦学习
在两个数据集的用户重叠较多而用户特征重叠较少的状况下,咱们把数据集按照纵向(即特征维度)切分,并取出双方用户相同而用户特征不彻底相同的那部分数据进行训练。这种方法叫作纵向联邦学习。纵向联邦学习就是将这些不一样特征在加密的状态下加以聚合,以加强模型能力的联邦学习。目前,逻辑回归模型,树型结构模型和神经网络模型等众多机器学习模型已经逐渐被证明可以创建在这个联邦体系上。
纵向联邦学习适用于各参与方之间用户空间重叠较多,而特征空间重叠较少或没有重叠的场景。例如,某区域内的银行和商场,由于地理位置类似,用户空间交叉较多,但因为业务类型不同,用户的特征相差较大。纵向联邦学习是以共同用户为数据的对齐导向,取出参与方用户相同而特征不完全相同的部分进行联合训练。因此,在联合训练时,需要先对各参与方数据进行样本对齐,获得用户重叠的数据,然后各自在被选出的数据集上进行训练。
此外,为了保证非交叉部分数据的安全性,在系统级进行样本对齐操作,每个参与方只有基于本地数据训练的模型。
2.3 联邦迁移学习
迁移学习,是指利用数据、任务、或模型之间的相似性,将在源领域学习过的模型,应用于 目标领域的一种学习过程。
其实我们人类对于迁移学习这种能力,是与生俱来的。比如,我们如果已经会打乒乓球,就可以类比着学习打网球。再比如,我们如果已经会下中国象棋,就可以类比着下国际象棋。因为这些活动之间,往往有着极高的相似性。生活中常用的“举一反三”、“照猫画虎”就很好地体现了迁移学习的思想。
联邦迁移学习是对横向联邦学习和纵向联邦学习的补充,适用于各参与方用户空间和特征空间都重叠较少的场景。例如,不同地区的银行和商场之间,用户空间交叉较少,并且特征空间基本无重叠。在该场景下,采用横向联邦学习可能会产生比单独训练更差的模型,采用纵向联邦学习可能会产生负迁移的情况。联邦迁移学习基于各参与方数据或模型之间的相似性,将在源域中学习的模型迁移到目标域中。大多采用源域中的标签来预测目标域中的标签准确性。
最后附上联邦学习的开源地址:
参考
-
-
@187-5791 好厉害腻!!
-
Alice_恒源云