FederatedLearning
什么是Federated Learning(联邦学习)
Federated Learning是一种训练数据去中心化的机器学习解决方案,最早于2016年由谷歌公司提出,目的在于通过对保存在大量终端的分布式数据开展训练学习一个高质量中心化的机器学习模型,解决数据孤岛的问题。
(什么是数据孤岛:良好的AI是需要大量优质的数据来支撑运算的。但是机构之间往往不会提供数据交流,从而形成一个个数据孤岛)
为了解决现在大量存在的数据孤岛,以及隐私保护问题,联邦学习应运而生。
本质:联邦学习本质上是一种分布式机器学习技术,或机器学习框架。
目标:联邦学习的目标是在保证数据隐私安全及合法合规的基础上,实现共同建模,提升AI模型的效果。
前身:联邦学习最早在 2016 年由谷歌提出,原本用于解决安卓手机终端用户在本地更新模型的问题;
Federated Learning示意图:![img](
Federated Learning不断循环以下步骤,直至训练出最终模型:
- 在符合条件的用户集合中挑选出部分用户,分别从服务器端下载当前的模型;
- 被选择的用户用各自的数据训练模型;
- 各个用户将训练好的模型传输给服务器;
- 服务器将接收到的各个用户的模型聚合成一个最终的模型。
2个参与角色:用户(client)- 服务器(server)
用户的特点:
- 数据存在用户端,不同用户之间以及用户与服务器之间的数据不共享(最大的特点)
- 数量大
- 用户网络状态允许不稳定,可以随时被选择加入或退出训练
- 用户数据的不平衡性,有些用户训练数据量大,有些用户训练数据少
- 典型的用户:比如手机终端
服务器的特点:
- 通过迭代方式不断聚合来自不同用户训练好的模型,训练出一个最终的模型。
联邦学习的分类
我们把每个参与共同建模的企业称为参与方,根据多参与方之间数据分布的不同,把联邦学习分为三类:横向联邦学习、纵向联邦学习和联邦迁移学习。
横向联邦学习
适用场景横向联邦学习的本质是样本的联合,适用于参与者间业态相同但触达客户不同,即特征重叠多,用户重叠少时的场景,比如不同地区的银行间,他们的业务相似(特征相似),但用户不同(样本不同)
学习过程
Step 1:参与方各自从服务器A下载最新模型;
Step 2:每个参与方利用本地数据训练模型,加密梯度上传给服务器A,服务器A聚合各用户的梯度更新模型参数;
Step 3:服务器A返回更新后的模型给各参与方;
Step 4:各参与方更新各自模型。
步骤解读:在传统的机器学习建模中,通常是把模型训练需要的数据集合到一个数据中心然后再训练模型,之后预测。在横向联邦学习中,可以看作是基于样本的分布式模型训练,分发全部数据到不同的机器,每台机器从服务器下载模型,然后利用本地数据训练模型,之后返回给服务器需要更新的参数;服务器聚合各机器上的返回的参数,更新模型,再把最新的模型反馈到每台机器。
在这个过程中,每台机器下都是相同且完整的模型,且机器之间不交流不依赖,在预测时每台机器也可以独立预测,可以把这个过程看作成基于样本的分布式模型训练。谷歌最初就是采用横向联邦的方式解决安卓手机终端用户在本地更新模型的问题的。
纵向联邦学习
适用场景:纵向联邦学习的本质是特征的联合,适用于用户重叠多,特征重叠少的场景,比如同一地区的商超和银行,他们触达的用户都为该地区的居民(样本相同),但业务不同(特征不同)。
学习过程:
纵向联邦学习的本质是交叉用户在不同业态下的特征联合,比如商超A和银行B,在传统的机器学习建模过程中,需要将两部分数据集中到一个数据中心,然后再将每个用户的特征join成一条数据用来训练模型,所以就需要双方有用户交集(基于join结果建模),并有一方存在label。其学习步骤如上图所示,分为两大步:
第一步:加密样本对齐。是在系统级做这件事,因此在企业感知层面不会暴露非交叉用户。
第二步:对齐样本进行模型加密训练:
step 1:由第三方C向A和B发送公钥,用来加密需要传输的数据;
step 2: A和B分别计算和自己相关的特征中间结果,并加密交互,用来求得各自梯度和损失;
step 3: A和B分别计算各自加密后的梯度并添加掩码发送给C,同时B计算加密后的损失发送给C;
step 4: C解密梯度和损失后回传给A和B,A、B去除掩码并更新模型。
在整个过程中参与方都不知道另一方的数据和特征,且训练结束后参与方只得到自己侧的模型参数,即半模型。
预测过程:由于各参与方只能得到与自己相关的模型参数,预测时需要双方协作完成,如下图所示:
共同建模的结果:
- 双方均获得数据保护
- 共同提升模型效果
- 模型无损失
联邦迁移学习
适用场景:
当参与者间特征和样本重叠都很少时可以考虑使用联邦迁移学习,如不同地区的银行和商超间的联合。主要适用于以深度神经网络为基模型的场景。
迁移学习介绍:迁移学习,是指利用数据、任务、或模型之间的相似性,将在源领域学习过的模型,应用于 目标领域的一种学习过程。
联邦迁移学习的步骤与纵向联邦学习相似,只是中间传递结果不同(实际上每个模型的中间传递结果都不同)。这里重点讲一下联邦迁移的思想:
如何保证安全性
各个用户将训练好的模型加密后传输给服务器,服务器仅仅可以将接收到的来自多个用户聚合后才能成功解密,而无法对单个模型解密。用户端的加密算法通过添加零和掩码来加扰训练好的模型结果,服务器端聚合各个模型后噪声互相抵消,从而无法反推出各个用户模型的训练数据达到安全性保护的效果。
federated learning的优点
- 保护用户的隐私,服务器不获取用户的数据
- 分布式的数据架构,减轻数据集中存储的压力
Federated Learning的局限性
- 需要用户对齐或特征对齐才能共同训练模型
- 模型传输(信息传递)存在一定的局限
- 用户获取的间歇性
- 数据获取的间歇性
- 大规模的分布式网络结构带来压力
当前开源框架
目前的Federated Learning 开源框架主要有两个:
- 谷歌的TensorFlow Federated (TFF)框架
- 微众银行的Federated Learning开源框架FATE
Reference
- Federated Learning: Collaborative Machine Learning without Centralized Training Data, 2017. https://ai.googleblog.com/2017/04/federated-learning-collaborative.html.
- Federated Learning. https://federated.withgoogle.com.
- Federated Learning: Strategies for Improving Communication Efficiency, 2016. https://ai.google/research/pubs/pub45648.
- 《联邦学习白皮书 V1.0》https://img.fedai.org.cn/fedweb/1552917119598.pdf.
- Federated Learning: Machine Learning on Decentralized Data (Google I/O'19).
- https://cloud.tencent.com/developer/article/1489037
- https://zhuanlan.zhihu.com/p/79284686
有时会发现学习是一件很快乐的事情 比一直跑步容易多了 不是嘛