只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]随着大数据的进一步发展,重视数据隐私和安全已经成为了世界性的趋势,同时,大多数行业数据呈现数据孤岛现象,如何在满足用户隐私保护、数据安全和政府法规的前提下,进行跨组织的数据合作是困扰人工智能从业者的一大难题。而“联邦学习”将成为解决这一行业性难题的关键技术。今天和大家分享下咱们微众银行AI团队主导的新一代联邦学习技术及应用,并详细介绍联邦学习落地的全球首个工业级开源平台——Federated…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

随着大数据的进一步发展,重视数据隐私和安全已经成为了世界性的趋势,同时,大多数行业数据呈现数据孤岛现象,如何在满足用户隐私保护、数据安全和政府法规的前提下,进行跨组织的数据合作是困扰人工智能从业者的一大难题。而“联邦学习”将成为解决这一行业性难题的关键技术。

今天和大家分享下咱们微众银行AI团队主导的新一代联邦学习技术及应用,并详细介绍联邦学习落地的全球首个工业级开源平台—— Federated AI Technology Enabler(FATE)。

我们在Github也发布了这一项目,地址:FederatedAI/FATE​github.com

想要进一步了解联邦学习及FATE,还可以前往官网:www.fedai.org.cn/cn/

主要内容目录:

  • 联邦学习背景介绍
  • 纵向联邦学习
  • 横向联邦学习
  • 应用案例
  • FATE:联邦学习开源平台

联邦学习背景介绍

首先和大家分享下联邦学习的背景。

1.AI落地的理想与现实

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

AI 落地的时候,其实并不容易,会遇到很多现实的问题,比如:

  • 现实中,我们的数据质量是非常差的,例如聊天数据中有很多噪音;
  • 数据标签,收集是比较困难的,很多场景中的数据是没有标签的;
  • 数据是分散的,(这也是最重要的一点)每家应用的数据不一样,比如腾讯用的是社交属性数据,阿里用的是电商交易数据,微众用的是信用数据,都是分散来应用的。现实中,如何进行跨组织间的数据合作,会有很大的挑战。

2.国内数据监管法律体系研究

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

从09年到现在的10年时间内,国家关于数据的法律条例是趋向于严格化的,同时趋向于全面化,每个细分领域都纷纷出台了相应的条例和条款。相对来讲,让之前可行的一些数据合作方案变得不太可行。

3.基于联邦学习的技术生态

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

针对上述问题,微众银行AI团队提出了基于联邦学习的技术生态,特点如下:

  • 数据隔离:联邦学习的整套机制在合作过程中,数据不会传递到外部。
  • 无损:通过联邦学习分散建模的效果和把数据合在一起建模的效果对比,几乎是无损的。
  • 对等:合作过程中,合作双方是对等的,不存在一方主导另外一方。
  • 共同获益:无论数据源方,还是数据应用方,都能获取相应的价值。

4.联邦学习的分类体系

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

联邦学习的分类体系,包括:

  • 纵向联邦学习,两个数据集的用户 ( U1, U2, … ) 重叠部分较大,而用户特征 ( X1, X2, … ) 重叠部分较小;
  • 横向联邦学习,两个数据集的用户特征 ( X1, X2, … ) 重叠部分较大,而用户 ( U1, U2, … ) 重叠部分较小;
  • 联邦迁移学习,通过联邦学习和迁移学习,解决两个数据集的用户 ( U1, U2, … ) 与用户特征重叠 ( X1, X2, … ) 部分都比较小的问题。

下面,重点分享下纵向联邦学习和横向联邦学习

纵向联邦学习

1.联合建模需求场景

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

举个例子:微众与合作企业进行联合建模,比如做信贷逾期模型,微众有 Y 数据,包括标签数据,逾期记录,用这样的数据可能会建一个很好的模型,但我们希望用更多的数据,比如合作方的标签数据和画像数据来更大的提升风控模型的效果和稳定性。

传统模式的问题是:

合作企业缺乏 Y 无法独立建立模型,需要微众把 Y 数据,带入到合作方的生产环境建模,但是由于国家的数据保护条款和各企业自身对数据的严格规定,得到的 X 数据不能全量的传输到微众。

针对这个问题,可以通过纵向联邦学习来解决。如上图右边部分展示,两边的数据都有共同的ID,特征是完全不一样的,可以通过一方特征来弥补另一方特征的不足。

2.同态加密技术保护隐私

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

纵向联邦学习的技术实现,首先应做好两点,来保护数据隐私:

  • 建模样本 ID 差集不向对方泄露,在合作之初需要进行用户匹配,需要找出用户的交集,但是不能泄露差集,因为这是企业最核心的资产。
  • 任何底层 ( X,Y ) 数据不向对方泄露,建模过程中如何保证数据不被泄露。

解决方案:

  • 通过 RSA 和 Hash 的机制,保证双方最终只用到交集部分,且差集部分不向对方泄露。
  • 采用同态加密技术,这个过程中,各方的原始数据,以及数据加密态都没有被传输。交互部分,双方通过损失中间结果,用同态加密的机制进行交互,模型训练完之后,会各自得到一个模型,各自的模型会部署在各自的一方,就是如果我只提供了3个特征,那么我只有3个特征的模型,只提供2个特征,就只有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 公司探索重塑机器视觉市场,利用联邦学习的机制,相对于本地建模,进一步提升算法准确率,并且形成网络效应,降低长尾应用成本,提升视觉业务总体利润率。

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

这是联邦视觉在城市管理上的应用。


联邦学习开源平台:FATE

通过刚刚的介绍,相信大家对联邦学习能够做什么,有了大体的认识。而联邦学习想要落地,不可避免的就是开源,接下来为大家介绍下微众银行AI团队开源的联邦学习平台——FATE:

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

FATE 定位于工业级联邦学习系统,能够有效帮助多个机构在符合数据安全和政府法规前提下,进行数据使用和联合建模。

设计原则:

  • 支持多种主流算法:为机器学习、深度学习、迁移学习提供高性能联邦学习机制。
  • 支持多种多方安全计算协议:同态加密、秘密共享、哈希散列等。
  • 友好的跨域交互信息管理方案,解决了联邦学习信息安全审计难的问题。

FATE 的 Github 地址:

FederatedAI/FATE​github.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.挑战

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

联邦学习从一项技术真正成为一个关键系统和产品方案时,我们遇到了下述挑战:

  • 一站式建模过程的联邦化
  • MPC 协议下分布式算法 ( on WAN ) 易理解和易维护
  • 跨站点数据传输安全性和可管理性,如何让交互部分是可以被管理和被审计的。
  • 异构基础架构自适应,联邦学习可能会运行在 CPU、GPU 和端上,如何让上层不受底层的变化而变化。

3.技术架构

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

接下讲下 FATE 的整体架构:

  • EggRoll:分布式计算和存储的抽象;
  • Federated Network:跨域跨站点通信的抽象;
  • FATE FederatedML:联邦学习算法模块,包含了目前联邦学习所有的算法功能;
  • FATE-Flow | FATE-Board:完成一站式联邦建模的管理和调度以及整个过程的可视化;
  • FATE-Serving:联邦学习在线推理模块。只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

一站式联合建模Pipeline,其流程:在开发环境下,其流程是从联邦统计->联邦特征工程->联邦模型训练,当上线部署的时候会有联邦在线推理模块,底层则会采用多方安全计算协议去支持上层各种联邦算法。

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

FATE 的五大核心功能

① FATE FederatedML

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

  • EggRoll & Federation API:底层是 EggRoll 的算子,比如 Map 和 MapValues,Remote 和 Get 可以完成整个分布式计算的抽象;
  • MPC Protocol:包括同态加密、秘密共享等多种多方安全协议,
  • Numeric Operator:会抽象出数学算子,比如加法或者乘法;
  • ML Operator:用建好的数学算子构建机器学习算子,而不用管底层的安全协议是什么;
  • Algorithms:有了 ML 算子之后就构建各种算法模型。

② EggRoll

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

EggRoll,是整个分布式计算和存储的抽象。面向算法开发者,通过 API 实现分布式计算和存储。上面为 EggRoll 的整体架构图。

③ Federated Network

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

Federated Network:联邦学习不仅需要分布式计算,还需要跨站点通信和交互,上层会提供一个 API 给到开发者,通过 Remote 和 Get 就可以完成数据点的收发。具体模块,如上图。

④ FATE-Flow

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

整个一站式联合建模 Pipeline 需要统一的调度管理。右边为 A、B 双方的建模流程,某些步骤是 A、B 双方共有的,某些步骤可能只有一方有,所以 FATE-Flow 完成了下述管理:

  • 联邦机制下多方非对称 DAG 图 Paser
  • 联邦建模生命周期管理
  • 联邦建模实验管理
  • 联邦建模模型管理
  • 联邦多方任务调度

⑤ FATE-Board

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

FATE-Board 的目的是实现整个联合建模 Pipeline 可视化追踪,记录联邦学习的全过程,可以监控建模进行到哪个步骤,以及模型效果如何。

4.FATE 部署架构

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

这是FATE 的部署架构,每一方都是差不多的,是一个对称的结构,通过 EggRoll实现分布式计算和存储,通过 Federation Service 和外部交互。

5.FATE 应用

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

现实中,FATE 是如何应用的呢?这里和大家分享一个示意图,会在每一方部署一套 FATE 系统,双方都是在各自部署的 FATE 系统中进行交互。

6.开发流程

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

如果对 FATE 感兴趣,作为开发者利用联邦学习框架实现算法,只需要四步:

  1. 选择一个机器学习算法,设计多方安全计算协议
  2. 定义多方交互的数据变量
  3. 构建算法执行工作流
  4. 基于 EggRoll & Federation Api 实现算法工作流中各个功能组件

7.目前 FATE 项目中的算法和案例

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

 

如上图,这是目前FATE 项目中的算法和案例,会根据需求,不断增加各种各样的算法。

最后,如果想进一步了解联邦学习的话,还可以添加小助手微信号:

只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/226726.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JDK卸载与重装「建议收藏」

    JDK卸载与重装「建议收藏」JDK卸载与重装前言彻底卸载JDK这样新的jdk就安装完成了前言发现网上很多博文并没有完整的讲述如何卸载和重装jdk,自己在重装jdk的时候遇到很多问题,搜索很多博文,把内容整合起来,才解决问题,而且还有许多安装jdk,还要配置classpath环境变量,在jdk1.5版本之后已经不需要配置。本篇博文详细记录重装jdk的过程。彻底卸载JDK第一步:卸载原先的JDK(1)用控制面板卸载(2)安全类软件(360等)自带的软件卸载工具的功能卸载(3)直接删除jDK文件夹第二步:删除注册表

  • ubuntu开机进入tty1_基于linux内核自制系统

    ubuntu开机进入tty1_基于linux内核自制系统这个系统很迷你。完全符合变态操作控的习惯,如果你很喜欢洁净的系统,那么它就是你的玩具~可以试试自己的能力,是否能够在这系统里DIY一个属于你自己的LINUX。。。转载于:https://www.cnblogs.com/xiaoCon/archive/2013/03/31/2991221.html…

  • 交易真的能稳定盈利吗_如何在股市稳定盈利

    交易真的能稳定盈利吗_如何在股市稳定盈利作为一个已经稳定盈利的人,我来解答下吧。我主要做外汇,期货和期权,A股也做,但是中国的股票你们知道的,做空的限制太多,融券融不到,股指期货还限制开仓和提高杠杆率。所以要等一个轮回需要5年以上,所以股票等待建仓机会比较漫长。从交易者的层面来看,我一般把他们分为这么几类人:一,幼儿园阶段:无知者无畏这种人没做过交易,只是从朋友那里听说,交易能赚大钱,或者是书刊杂志上读了一些交易大师的成功学传记,然后就跟打了鸡血似的,觉得自己也能和他们一样在金融市场赚到很多钱,这些人没有风控意识,甚至感觉这个市场

  • java如何判断对象为空_java对象如何判断是否为空

    java如何判断对象为空_java对象如何判断是否为空在实际书写代码的时候,经常会因为对象为空,而抛出空指针异常java.lang.NullPointerException。下面我们来看一下java中判断对象是否为空的方法:(推荐:java视频教程)首先来看一下工具StringUtils的判断方法:一种是org.apache.commons.lang3包下的;另一种是org.springframework.util包下的。这两种StringUtils…

  • 微信小程序 谈谈在大学初次写项目的体验

    微信小程序 谈谈在大学初次写项目的体验已经近三周没写博客了,最近一直在忙着写一个项目,趁现在项目所用的服务器申请还在审核备案,写一篇博客,谈谈我在大学第一次写正规付费项目的体验哈哈。

  • springboot使用@SpringBootTest注解进行单元测试「建议收藏」

    概述@SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解。基本用法如下:1.添加依赖:<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号