1. AI落地的理想与现实
- 现实中,我们的数据质量是非常差的,例如聊天数据中有很多噪音;
- 数据标签,收集是比较困难的,很多场景中的数据是没有标签的;
- 数据是分散的,(这也是最重要的一点)每家应用的数据不一样,比如腾讯用的是社交属性数据,阿里用的是电商交易数据,微众用的是信用数据,都是分散来应用的。现实中,如何进行跨组织间的数据合作,会有很大的挑战。
2.国内数据监管法律体系研究
3.基于联邦学习的技术生态
针对上述问题,微众银行AI团队提出了基于联邦学习的技术生态,特点如下:
1. 横向联邦学习
适用场景:横向联邦学习的本质是样本的联合,适用于参与者间业态相同但触达客户不同,即特征重叠多,用户重叠少时的场景,比如不同地区的银行间,他们的业务相似(特征相似),但用户不同(样本不同)
学习过程:
step1:参与方各自从服务器A下载最新模型;
step2:每个参与方利用本地数据训练模型,加密梯度上传给服务器A,服务器A聚合各用户的梯度更新模型参数;
step3:服务器A返回更新后的模型给各参与方;
step4:各参与方更新各自模型。
步骤解读:在传统的机器学习建模中,通常是把模型训练需要的数据集合到一个数据中心然后再训练模型,之后预测。在横向联邦学习中,可以看作是基于样本的分布式模型训练,分发全部数据到不同的机器,每台机器从服务器下载模型,然后利用本地数据训练模型,之后返回给服务器需要更新的参数;服务器聚合各机器上的返回的参数,更新模型,再把最新的模型反馈到每台机器。在这个过程中,每台机器下都是相同且完整的模型,且机器之间不交流不依赖,在预测时每台机器也可以独立预测,可以把这个过程看作成基于样本的分布式模型训练。谷歌最初就是采用横向联邦的方式解决安卓手机终端用户在本地更新模型的问题的。
2. 纵向联邦学习
适用场景:纵向联邦学习的本质是特征的联合,适用于用户重叠多,特征重叠少的场景,比如同一地区的商超和银行,他们触达的用户都为该地区的居民(样本相同),但业务不同(特征不同)。
学习过程:
纵向联邦学习的本质是交叉用户在不同业态下的特征联合,比如商超A和银行B,在传统的机器学习建模过程中,需要将两部分数据集中到一个数据中心,然后再将每个用户的特征join成一条数据用来训练模型,所以就需要双方有用户交集(基于join结果建模),并有一方存在label。其学习步骤如上图所示,分为两大步:
第一步:加密样本对齐。是在系统级做这件事,因此在企业感知层面不会暴露非交叉用户。
第二步:对齐样本进行模型加密训练:
step1:由第三方C向A和B发送公钥,用来加密需要传输的数据;
step2:A和B分别计算和自己相关的特征中间结果,并加密交互,用来求得各自梯度和损失;
step3:A和B分别计算各自加密后的梯度并添加掩码发送给C,同时B计算加密后的损失发送给C;
step4:C解密梯度和损失后回传给A和B,A、B去除掩码并更新模型。
在整个过程中参与方都不知道另一方的数据和特征,且训练结束后参与方只得到自己侧的模型参数,即半模型。
预测过程:由于各参与方只能得到与自己相关的模型参数,预测时需要双方协作完成,如下图所示:
3. 联邦迁移学习
适用场景:当参与者间特征和样本重叠都很少时可以考虑使用联邦迁移学习,如不同地区的银行和商超间的联合。主要适用于以深度神经网络为基模型的场景。
迁移学习介绍:迁移学习,是指利用数据、任务、或模型之间的相似性,将在源领域学习过的模型,应用于 目标领域的一种学习过程。其实我们人类对于迁移学习这种能力,是与生俱来的。比如,我们如果已经会打乒乓球,就可以类比着学习打网球。再比如,我们如果已经会下中国象棋,就可以类比着下国际象棋。因为这些活动之间,往往有着极高的相似性。生活中常用的“举一反三”、“照猫画虎”就很好地体现了迁移学习的思想。
学习过程:
联邦迁移学习的步骤与纵向联邦学习相似,只是中间传递结果不同(实际上每个模型的中间传递结果都不同)。这里重点讲一下联邦迁移的思想:
1.同态加密技术保护隐私
纵向联邦学习的技术实现,首先应做好两点,来保护数据隐私:
解决方案:
2.基于隐私保护的样本 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。通过这套机制,我们很好的保护了双方的差集部分。
3.同态加密
分享了匹配过程中隐私保护的问题,接下来分享一个通用的技术,同态加密。
刚才提到建模过程中,引用了同态加密技术,比如对两个数字进行加密,加密后两个数字的密文可以进行数学运算,比如加法,其结果依然是密文,对密文解密后得到的结果和它们明文的加法结果是一样的。
通过这样的同态加密技术,我们把它应用到机器学习,包括特征工程中。接下来会重点介绍,联邦机制下特征工程和机器学习建模的一些细节。
我们知道特征工程是机器学习建模中非常重要的一环,在联邦机制下,如何完成联邦特征工程?尤其 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 和梯度中。
4.SecureBoost
在很多现实的业务应用中,树模型是非常重要的,尤其是 XGBoost,对很多应用来说,提升非常明显,因而被业界广泛使用。在联邦机制下,如何构建这样的树?这里我们提出了 SecureBoost 技术方案,双方协同共建一个 boosting 树,我们证明了整个过程中是无损的。
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 方。求分裂节点的核心就是如何算信息增益,通过这样的机制,就可以算出每个分裂节点,同时没有泄露任何隐私信息。
联邦学习目前已经赋能众多关键领域,取得了不错的效果:
以其中的两个场景以及在视觉领域的应用来说明:
1.保险业个性化定价
对于保险公司如果想做个性化的定价,是一件非常困难的事情,保险公司只有一些业务数据、承保数据和理赔数据,通过这样的数据,对用户做千人千面的定价是非常难的。通过联邦学习机制,可以融合多个数据源,来构建这样一个千人千面的定价。
这是我们目前在做的案例,当你购买权益产品之后,如果违章了,可以帮你免赔,在这里每个人看到的价格是不一样的,这就是我们通过联邦学习帮它们做的。我们综合了出险数据和互联网数据,如标签、用户画像,构建了一个基于保险定价的联邦学习产品。
2.小微企业信贷风险管理
很多时候对小微企业我们只有央行的征信报告,想要更精准的刻画企业的信用状况,需要更多的数据,比如发票、工商、税务的数据。
这是我们的一个案例,我们利用了开票金额和央行的征信数据共建了一个联邦学习模型,来预估每个企业的风险。
3.联邦学习在视觉领域的应用
与 AI 公司探索重塑机器视觉市场,利用联邦学习的机制,相对于本地建模,进一步提升算法准确率,并且形成网络效应,降低长尾应用成本,提升视觉业务总体利润率。
1. 联邦学习开源平台:FATE微众银行AI团队
FATE 定位于工业级联邦学习系统,能够有效帮助多个机构在符合数据安全和政府法规前提下,进行数据使用和联合建模。
设计原则:
FATE 的 Github 地址:FederatedAI/FATEgithub.com
挑战:
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 项目中的算法和案例,会根据需求,不断增加各种各样的算法。
fate联邦学习白皮书地址: https://download.csdn.net/download/liudongdong19/12319693