随着大数据的进一步发展,重视数据隐私和安全已经成为了世界性的趋势,同时,大多数行业数据呈现数据孤岛现象,如何在满足用户隐私保护、数据安全和政府法规的前提下,进行跨组织的数据合作是困扰人工智能从业者的一大难题。而“联邦学习”将成为解决这一行业性难题的关键技术。
今天和大家分享下咱们微众银行AI团队主导的新一代联邦学习技术及应用,并详细介绍联邦学习落地的全球首个工业级开源平台—— Federated AI Technology Enabler(FATE)。
我们在Github也发布了这一项目,地址:FederatedAI/FATEgithub.com
想要进一步了解联邦学习及FATE,还可以前往官网:www.fedai.org.cn/cn/
主要内容目录:
首先和大家分享下联邦学习的背景。
1.AI落地的理想与现实
AI 落地的时候,其实并不容易,会遇到很多现实的问题,比如:
2.国内数据监管法律体系研究
从09年到现在的10年时间内,国家关于数据的法律条例是趋向于严格化的,同时趋向于全面化,每个细分领域都纷纷出台了相应的条例和条款。相对来讲,让之前可行的一些数据合作方案变得不太可行。
3.基于联邦学习的技术生态
针对上述问题,微众银行AI团队提出了基于联邦学习的技术生态,特点如下:
4.联邦学习的分类体系
联邦学习的分类体系,包括:
下面,重点分享下纵向联邦学习和横向联邦学习。
1.联合建模需求场景
举个例子:微众与合作企业进行联合建模,比如做信贷逾期模型,微众有 Y 数据,包括标签数据,逾期记录,用这样的数据可能会建一个很好的模型,但我们希望用更多的数据,比如合作方的标签数据和画像数据来更大的提升风控模型的效果和稳定性。
传统模式的问题是:
合作企业缺乏 Y 无法独立建立模型,需要微众把 Y 数据,带入到合作方的生产环境建模,但是由于国家的数据保护条款和各企业自身对数据的严格规定,得到的 X 数据不能全量的传输到微众。
针对这个问题,可以通过纵向联邦学习来解决。如上图右边部分展示,两边的数据都有共同的ID,特征是完全不一样的,可以通过一方特征来弥补另一方特征的不足。
2.同态加密技术保护隐私
纵向联邦学习的技术实现,首先应做好两点,来保护数据隐私:
解决方案:
3.基于隐私保护的样本 id 匹配
刚才提到基于隐私保护的样本id 匹配,和大家分享下具体的技术方案。比如,A 方有 [u1,u2,u3,u4] 四个用户,B 方有 [u1,u2,u3,u5],那么整个过程中,如何保证双方知道 [u1,u2,u3],而 A 方不知道 B 方有 [u5],B 方不知道 A 有 [u4]?
这里是通过RSA 和 Hash 的机制做到的,B 方会作为公钥的生成方,会把公钥给到 A 方,A 方基于 Hash 引用一个随机数,再交互传给 B 方,B 方同时做 Hash 然后传给 A 方,A 方会最后做一个结果的交集。整个过程中,你可以看到没有任何一个明文数据传递过来,即使采用暴力或者碰撞的方式,依然解析不出原始的 id。通过这套机制,我们很好的保护了双方的差集部分。
4.同态加密
分享了匹配过程中隐私保护的问题,接下来分享一个通用的技术,同态加密。
刚才提到建模过程中,引用了同态加密技术,比如对两个数字进行加密,加密后两个数字的密文可以进行数学运算,比如加法,其结果依然是密文,对密文解密后得到的结果和它们明文的加法结果是一样的。
通过这样的同态加密技术,我们把它应用到机器学习,包括特征工程中。接下来会重点介绍,联邦机制下特征工程和机器学习建模的一些细节。
我们知道特征工程是机器学习建模中非常重要的一环,在联邦机制下,如何完成联邦特征工程?尤其 A 方只有 X 没有 Y,如果想做一个 WOE 或者 IV 值的计算是非常困难的。那么如何在联邦学习的机制下,A 方利用 B 方有 Y 的数据计算 WOE 和 IV 值,且在这个过程中 B 方没有泄漏任何数据?
首先,B 方对 y 以及 1-y 进行同态加密,然后给到 A 方,A 方会对自己的特征进行分箱处理,进而 A 方在分箱中进行密文求和的操作,再把结果给到 B 方进行解密,然后算出 A 方每个特征分箱的 WOE 值和 IV 值。在这个过程中,没有明文数据传输,A 方不知道 B 方的 y 值,同时 B 方也不知道 A 方每个特征的值是什么,从而在安全隐私保护的情况下,完成了特征工程的计算。
说完特征工程,再讲下最核心的机器学习,比如常见的逻辑回归,这是经典的 loss function 和梯度,刚才说的同态加密的特性,目前用到的是半同态的技术。所以,需要对 loss function 和梯度进行多项式展开,来满足加法操作。这样就可以把同态加密的技术应用在 loss function 和梯度中。
5.SecureBoost
在很多现实的业务应用中,树模型是非常重要的,尤其是 XGBoost,对很多应用来说,提升非常明显,因而被业界广泛使用。在联邦机制下,如何构建这样的树?这里我们提出了 SecureBoost 技术方案,双方协同共建一个 boosting 树,我们证明了整个过程中是无损的。图中为一些 paper 和链接,感兴趣的小伙伴可以查找下。
SecureBoost 的核心技术点。上图为基于 SecureBoost 构建的树,A 和 B 代表不同数据的 owner,L0,L1,L2,L3,L4 代表不同 feature 的分割点编码,整颗树由 A 和 B 共同维护,每一方只维护自己的树节点,对另外一方的树节点信息不可见(只知道编码,不知道编码具体含义),保证整个训练和预测过程都是安全的。
构建 SecureBoost 核心的关注点是如何构建分裂节点,尤其一方只有 X,另一方有 ( X,Y ) 的情况。
基于同态加密的机制,B 方会把1阶梯度和2阶梯度传递给 A 方,A 方基于分箱之后的结果算出每个分箱中的1阶梯度和2阶梯度的求和值,然后传递给 B 方,B 方会解密这个求和值,算出信息增益,然后给到 A 方。求分裂节点的核心就是如何算信息增益,通过这样的机制,就可以算出每个分裂节点,同时没有泄露任何隐私信息。
举个例子:微众和合作行共建反洗钱模型,期望优化反洗钱模型。因为,各自利用自家样本建立的反洗钱模型的效果和稳定性都不能满足现实需求。我们可以利用联邦学习的机制,充分利用多家的反洗钱样本,同时在不泄露样本的条件下,构建一个非常大的模型,可以看到横向联邦学习中,微众银行和合作行,都是有( X,Y ) 的。
技术层面上,采用了同态加密、Secret-Sharing 技术,整个过程中,双方交互的是模型和梯度,同时引入了 SecureAggregation 机制,让交互过程中的梯度也是很难被反解的。最终,大家都会得到一个相同的模型。横向联邦学习,综合多家样本,可以让模型更加稳健,效果更好。
下面分享下横向联邦学习的核心技术点,这是Google 的两篇 paper ,第一个是每个端自己训练模型,然后发给云端进行综合各个模型的效果,但是这里面会有个问题,就是模型本身也可能会泄露隐私信息,所以引入了 SecureAggregation,各方在传输模型的时候会加一些噪音,通过云端来消除这些噪音,使数据和模型得到保护。
联邦学习目前已经赋能众多关键领域,取得了不错的效果:
以其中的两个场景以及在视觉领域的应用来说明:
1.保险业个性化定价
对于保险公司如果想做个性化的定价,是一件非常困难的事情,保险公司只有一些业务数据、承保数据和理赔数据,通过这样的数据,对用户做千人千面的定价是非常难的。通过联邦学习机制,可以融合多个数据源,来构建这样一个千人千面的定价。
这是我们目前在做的案例,当你购买权益产品之后,如果违章了,可以帮你免赔,在这里每个人看到的价格是不一样的,这就是我们通过联邦学习帮它们做的。我们综合了出险数据和互联网数据,如标签、用户画像,构建了一个基于保险定价的联邦学习产品。
2.小微企业信贷风险管理
很多时候对小微企业我们只有央行的征信报告,想要更精准的刻画企业的信用状况,需要更多的数据,比如发票、工商、税务的数据。
这是我们的一个案例,我们利用了开票金额和央行的征信数据共建了一个联邦学习模型,来预估每个企业的风险。
3.联邦学习在视觉领域的应用
与 AI 公司探索重塑机器视觉市场,利用联邦学习的机制,相对于本地建模,进一步提升算法准确率,并且形成网络效应,降低长尾应用成本,提升视觉业务总体利润率。
这是联邦视觉在城市管理上的应用。
通过刚刚的介绍,相信大家对联邦学习能够做什么,有了大体的认识。而联邦学习想要落地,不可避免的就是开源,接下来为大家介绍下微众银行AI团队开源的联邦学习平台——FATE:
FATE 定位于工业级联邦学习系统,能够有效帮助多个机构在符合数据安全和政府法规前提下,进行数据使用和联合建模。
设计原则:
FATE 的 Github 地址:
FederatedAI/FATEgithub.com
1.里程碑
介绍下 FATE 的里程碑,FATE 在今年2月份首发了0.1版本,3月份的时候有了第一位外部 Contributor,同时 GitHubStar 突破100,5月份发布了0.2版本,支持了联邦特征工程和在线推理,6月份发布了0.3版本,把主要的合作伙伴迁移到了 FATE,并把 FATE 捐献给了 Linux Fundation,8月份发布了1.0版本,支持 FATE-Flow 和 FATE-Board,还有些后续的计划,大家可以了解下。
2.挑战
联邦学习从一项技术真正成为一个关键系统和产品方案时,我们遇到了下述挑战:
3.技术架构
接下讲下 FATE 的整体架构:
一站式联合建模Pipeline,其流程:在开发环境下,其流程是从联邦统计->联邦特征工程->联邦模型训练,当上线部署的时候会有联邦在线推理模块,底层则会采用多方安全计算协议去支持上层各种联邦算法。
FATE 的五大核心功能
① FATE FederatedML
② EggRoll
EggRoll,是整个分布式计算和存储的抽象。面向算法开发者,通过 API 实现分布式计算和存储。上面为 EggRoll 的整体架构图。
③ Federated Network
Federated Network:联邦学习不仅需要分布式计算,还需要跨站点通信和交互,上层会提供一个 API 给到开发者,通过 Remote 和 Get 就可以完成数据点的收发。具体模块,如上图。
④ FATE-Flow
整个一站式联合建模 Pipeline 需要统一的调度管理。右边为 A、B 双方的建模流程,某些步骤是 A、B 双方共有的,某些步骤可能只有一方有,所以 FATE-Flow 完成了下述管理:
⑤ FATE-Board
FATE-Board 的目的是实现整个联合建模 Pipeline 可视化追踪,记录联邦学习的全过程,可以监控建模进行到哪个步骤,以及模型效果如何。
4.FATE 部署架构
这是FATE 的部署架构,每一方都是差不多的,是一个对称的结构,通过 EggRoll实现分布式计算和存储,通过 Federation Service 和外部交互。
5.FATE 应用
现实中,FATE 是如何应用的呢?这里和大家分享一个示意图,会在每一方部署一套 FATE 系统,双方都是在各自部署的 FATE 系统中进行交互。
6.开发流程
如果对 FATE 感兴趣,作为开发者利用联邦学习框架实现算法,只需要四步:
7.目前 FATE 项目中的算法和案例
如上图,这是目前FATE 项目中的算法和案例,会根据需求,不断增加各种各样的算法。
最后,如果想进一步了解联邦学习的话,还可以添加小助手微信号: