有两种方式造成信息孤岛:第一是企业获得用户信息越来越难;第二是企业之间数据不共享
联邦学习概述:
信息孤岛的解决方案是联邦学习。2016 年,谷歌提出在安卓手机用户中进行联邦学习,解决个人用户数据在终端上的隐私问题,它可以不上传用户隐私数据,在终端上进行模型训练。后续众多业内研究机构和组织对联邦学习投入了极大的热情,研究了更加安全、使用范围更广的联邦学习机制,将联邦学习应用到更加广阔的领域。
联邦学习的本质是:基于数据隐私保护的一种分布式机器学习技术或机器学习框架。
联邦学习的目标是:在保证数据隐私安全及合法合规的基础上,在模型无损的前提实现共同建模,提升 AI 模型的效果。
联邦学习的特征:
联邦学习框架有以下四个特征:
1、多个参与方:两个或以上两个以上参与方,共同构建机器学习模型。
2、参与方数据不离本地:在模型训练过程中,每个参与方数据都不会离开本地,也就是它的原始特征不会离开本地。在进行联合训练的时候,其实是把分布式平台的计算资源放到多家公司的机房里分开部署,而不是把数据集中起来放到一个地方进行训练。
3、模型数据加密传输且不可被反推出原始数据:模型的相关信息以加密方式传输。因为在模型训练的时候,需要传递梯度这些中间结果,所有的中间结果是通过加密的方式进行传输,并且保证任何参与方都不能推断出其他方的原始数据。
4、性能要充分逼近理想模型的性能:联邦学习模型的性能要充分逼近理想模型的性能。所有数据集中在一起搭建的模型和联邦学习这种跨域进行训练的模型的性能是比较接近的,右侧是性能逼近的公式。
联邦学习的分类:
联邦学习主要分为三大类:横向联邦学习、纵向联邦学习、联邦迁移学习,联邦迁移学习用的稍微少一些。
横向联邦学习:比如刚才介绍的谷歌输入法案例,就是一个比较典型的横向联邦学习的案例。它的特点是各个参与方数据的特征维度是相同的,但是样本ID不同。适用于银行以及手机终端边缘计算等同质数据场景。
纵向联邦学习:它的特点是数据样本ID基本相同,特征不同。比如两个数据集的用户大规模重叠,但它们的特征不一样。
9N-FL 主要解决的是纵向联邦学习的问题。
关于纵向联邦学习有个疑问:数据不离本地,数据参与方是如何确认样本ID是基本相同的呢?难道事先做了类似ID-Mapping的工作?
联邦学习的架构:
横向联邦:
1、sending encrypted gradients :发送加密梯度
2、secure aggregation:安全聚合
3、sending back model updates:发回模型更新
4、updating models:更新模型
纵向联邦:
federated model:联邦模型
encrypted model training :加密模型训练
encrypted entity alignment:加密实体对齐
京东开源联邦学习解决方案 9N-FL
对于联邦学习来说,它是一个全新的多交叉的领域知识,主要需要以下几个方面的能力:
1、数据隐私:同态加密、可信计算、秘密分享、混淆电路为联邦学习奠定了一个坚实的基础。
2、抽象异构资源限制:联邦学习不光要构建在不同公司,两个公司的技术栈、技术能力、基础设施都不一样,可以用云平台 K8S 进行一些抽象,另外还需要跨网,比如在联合训练的过程中、在大规模样本匹配中,需要大量跨网的交互,而且整个交互过程非常复杂、异常情况比较多。我们抽象了一些网络代理,自研了基于应用层的一些高效的网络协议。
3、高性能、高可靠:高效的网络协议、可靠的容错机制 failover。比如在联合训练过程中,两边集群可能是若干台机器,但如果有一台机器宕机,整个模型训练就停止了,需要重新进行训练。最开始我们有些优化没有做的很完整,模型训练时间较长,大概是七八天,在 fail 的情况下重新训练就有很大的问题,整个研发进度无法保障。
4、联合建模:联邦学习平台对模型结构不做限制。在联邦学习过程中,大家都是独立建模,也就是我和另一家公司在建模的过程中,我们可以互不感知对方的模型结构,只关注上层连接之后的反向梯度的传输。
联邦学习是一个跨多个领域的技术,它包含了大数据、实时计算、云平台、机器学习、深度学习、高并发架构、密码学等方面的一些知识,整体要求比较高。
9N-FL 具体工作
具体工作分为以下几个方面:
1、组件化:平台的一些策略、一些组件都是可以任意组合。比如有的公司数据体量比较大,可以用 hadoop 做数据存储;有的公司数据体量比较小,可能是一个本地文件,也可能是数据库这种方式,都可以支持。9N-FL 平台可以从大、中、小方面进行一个全方位的覆盖,另外可支持策略的热插拔。
2、高可靠:第一是虚拟化技术,这种虚拟化技术有底层团队在维护。第二是 failover 机制,比如节点故障的恢复。第三是高效、高容错的网络协议。
3、大数据、大算力:拥有横向水平扩展能力,整个系统支持分布式以及大数据的一些外围工具:HDFS、分布式文件系统、实时数据 kafka 等。
4、高性能:自研的分布式异步框架、高效自研网络传输应用协议,实现尽可能的并发。大部分模块采用 C++来编写,包括训练器,训练器基于 tensorflow,并没有重复造轮子。
加密训练:
同态加密:满足密文同态运算性质的加密算法,即数据经过同态加密之后,对密文进行特定的计算,得到的密文计算结果在进行对应的同态解密后的明文等同于对明文数据直接进行相同的计算,实现数据的“可算不可见”。
假如有两个整数 A 和 B,要计算 A+B 的和 C 是多少。两个数据对别人是不可见的,将这两个数据拿给第三方计算,算之前同时先对 A 和 B 进行加密,再对密文计算结果,在整个计算过程中,原始数据 A 和 B 没有暴露,得到密文结果后,再用同态解密的方式将密文解掉。