怎样扩充大数据?你需要了解的第一个联邦学习开源框架FATE

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 随着机器学习模型应用到生活生产中,如何获得更多的数据训练更好的模型成为了关键,而有助于解决该问题的联邦学习也就受到越来越多的关注。在本文中,我们将一同了解联邦学习,概览第一个联邦学习开源框架 FATE。

近日,微众银行将联邦学习开源框架 FATE(Federated AI Technology Enabler)贡献给 Linux 基金会,并希望通过多方维护令该项目更加强大。同时,中国人工智能开源软件发展联盟(AIOSS)发布了我国第一个关于联邦学习规范标准,这些都表明联邦学习从理论到实践都在快速提升。


FATE 开源地址:https://github.com/WeBankFinTech/FATE


为了解第一个联邦学习开源框架 FATE,机器之心采访了微众银行 AI 部门的副总经理陈天健,他介绍了联邦学习的开源现状以及技术过程。与此同时,7 月 19 日市北•GMIS 2019 大会上,微众银行首席人工智能官杨强教授也将针对联邦学习这一主题发表主旨演讲,为我们介绍更多关于联邦学习的内容。


为什么联邦学习如此重要


早在 2018 年,杨强教授就向机器之心介绍过联邦迁移学习,他表示面对欧盟的「数据隐私保护条例(GDPR)」,我们应该思考如何把 GDPR 囊括在机器学习框架之内,而不是绕着它走。联邦学习就是一种很好的方法,它希望在不共享数据的前提下,利用双方的数据实现模型优化。


假设两家公司想要建立一个用户画像模型,其中部分用户是重合的。联邦学习的做法是,首先通过加密交换的手段,建立用户的识别符(identifier)并进行沟通,在加密状态下用减法找出共有的部分用户。因为关键用户信息并没有得到交换,交换的只是共有的识别符,因此这并不违反数据隐私保护条例。


然后,双方将这部分数据提取出来,将各自拥有的同样用户的不同特征作为输入,迭代地训练模型、交换参数的过程。杨强教授等研究者证明了给定模型参数,双方不能互相反推出对方拥有的、自己没有的特征,因此用户隐私仍然得到了保护。在不违反 GDPR 的情况下,双方的模型性能都得到了提高。


在数据越来越隐私与重要的今天,联邦学习越发引人注目。机器学习学者除了关心算法的准确率、效率之外,也该将思考的维度上升到管理与合规的角度。


为什么我们需要联邦学习框架与标准


从前面可以了解,联邦学习会有它的特殊性,即它主要用于多方协同训练模型,这样联邦学习就更关注开源社区。微众银行 AI 部门副总经理陈天健表示,既然是多方协作的框架,那么我们就必须说明它的安全性与保密性,并且各方都能快速对其进行验证,这是闭源软件办不到的。


既然联邦学习框架需要开源,那么就会有维护主体,以前联邦学习项目都是微众银行维护的,微众会将业务上使用的一些联邦学习技术开源出来。但是如果想要构建更完美的生态,单一主体是很难支撑的,因为联邦学习本身就是面向合作的机器学习技术。因此,陈天健说:「微众银行将 FATE 托管给 Linux 基金会,它将成为一个基金会项目,因此也就变成了由项目技术委员会、企业及组织联合开发的状态,以此保证联邦学习框架的稳定性与延续性。」


对于开发者而言,以后 FATE 项目将变得越来越好用、越来越稳定。但是随着联邦学习更加普及,目前的开源框架肯定是有局限的,这就要求开发者根据具体业务需求修改 FATE 或者重新写框架。这也就是微众银行携手 AIOSS 推出联邦学习标准的原因,它规范了我们对联邦学习的理解与接口标准。


如果有一个完善的标准,那么不同的开发者并不一定只能使用 FATE 作为联邦学习系统的实现,我们可以在遵循工业标准下构建自己的实现。这样的系统会有比较强的兼容性,可以与其它使用 FATE 的项目或遵循相同标准的系统互联互通。陈天健说:「整个生态一定是开放的,并不是所有人都必须使用 FATE 作为联邦学习系统,我们的核心目标还是希望大家能互联互通地进行大数据和 AI 方面的合作。」


联邦学习到底怎样工作的


那么联邦学习的简要过程到底是什么样的?在整个联邦学习过程中,加密训练是最为核心的部分,各个数据方需要基于本地数据和其它方的训练信息完成模型的训练。


如果参与联邦学习的各方数据结构和特征空间相同,加密训练也有比较简单和直观的方法,例如谷歌有尝试以梯度加密聚合为基础的联邦学习,他们会如同分布式训练一样计算局部梯度,然后将加密的局部梯度传入参数服务器,参数服务器再统筹加密的局部梯度,并将解密的全局梯度传入各个数据方,从而达到更新模型的效果。


但这种直观方法也有很难处理的缺陷,它要求各数据方的数据结构都是一样的,很难满足大数据合作领域的需求。陈天健介绍了一种针对更常见的异构特征空间场景的加密训练方法。如下所示,A 和 B 都有各自的数据,它们希望在不交换数据的情况下训练更优秀的模型。


8F883D93-A514-4467-AB6C-E7F015A902DD.png


总体上,该加密训练过程从分发公钥到更新模型可以分为四步。我们先假设训练的模型都是简单的线性回归,即 u = Θx,其中Θ为权重矩阵、x 为特征向量、u 为预测结果向量。


如下所示以 A 为例,它会根据自己的数据计算预测值 u_A,但这个时候 u_A 只使用了一半的特征,它并不能作为模型的预测结果,它还要加上 B 的计算结果 u_B 才是最终结果。因此现在 A 会把中间结果 u_A 加密,并传递给 B。这就是第二步传递的中间结果,[[u_A]] 表示 u_A 的加密输出。


423DC7AE-53D6-4CA2-B4C9-E460327055D1.jpeg

现在 A 和 B 都有完整的预测结果 [[u_A]] +[[ u_B]],虽然结果是经过加密的。有了预测结果就能计算损失函数,但这里会计算一个额外的残差项 [[d]] = [[u_A]] + [[u_B - y]],它相当于梯度计算中的系数。例如常规线性回归的损失函数为 L = (Θx - y)^2,那么 dL/dΘ = 2 * (Θx - y) * x,这里经过加密的残差项 [[d]] 就相当于 x 前面的系数。


9607757D-1C82-4208-B938-DA8049A569C4.png

如下所示,借助相互反馈的残差项,A 和 B 能快速算出局部加密梯度,例如 A 的加密梯度为 [[∂L/∂Θ_A]] = [[d]] * x_A。现在加密的局部梯度就可以传递到协作者 C 了。


CF79FA9D-848E-4F6F-AEC7-D9C7A7ED0D26.png

最后,协作者 C 会将解密后的梯度传回各个数据方,数据方也就能使用对应的梯度更新自己那一部分模型。值得注意的是,因为各个数据方都只有部分特征与权重,相当于只有部分模型。所以这里需要一个 Mask 以告诉各模型到底都需要更新哪些东西。


E98462D2-1216-4582-ACB1-DA4BE8FD5B40.png

在训练的最后,A 和 B 都不知道对方的数据结构,并且只能获得自己那一部分特征需要的参数。所以 A 和 B 之间并没有直接传递数据相关的信息,它们间的通信也是非常安全的。在这样的联邦学习下,我们的特征变多了,当然我们的模型效果就更优了。


第一个联邦学习开源框架 FATE


那么我们该怎样完成加密训练呢,难不成还需要从头开始写?这就需要 FATE 来帮忙了。


FATE 是微众银行最先维护的一个项目,它提供了一个安全的计算框架以支持联邦学习算法。它实现了基于同态加密和多方计算的安全计算协议,并支持联邦学习架构与各种机器学习算法的安全计算,包括逻辑回归和梯度提升树等经典 ML 算法,也包括深度学习和迁移学习等前沿研究。


陈天健说:「FATE 最主要的特征和优势在于,它源自微众银行进行大数据风控建模的实际场景,因此 FATE 是一个生产系统,它的可扩展性非常优秀。FATE 自带一个分布式计算框架,它的稳定性肯定比一般的研究型项目好很多,而且预测和训练也都集成在了一起。」


FATE 并不只有一个框架,它还带了一些经典算法,包括线性回归、提升树和其它分类模型等。这些都得到了大量实践证明,是工业上很常见的方法,所以如果开发者不愿意从头构建,那么就可以直接使用这些方法,或者在这些方法上做修改。


88581D49-FAC5-46A8-86E0-C2A252A6F4BF.jpeg

FATE 项目中提升树算法的教程页面,它不仅展示了怎样运行单机版,还介绍了如何运行计算集群版。


陈天健表示,在加入 Linux 基金会后,技术委员会也在对项目进行进一步的规划与拆分。他们会把用于特定运算框架和特定集群的支持分离出来,并把它们变得通用,从而支持常用的计算框架与大数据基础设施。此外,在技术更新上,FATE 也规划对分布式异构计算进行加速,对于 GPU 和 FPGA 的支持也都在日程中。


最后,FATE 还在不停地提升中。陈天健说:「联邦学习的应用主要受限于网络带宽与芯片的计算力,我们现在主要还是在数据中心做联邦学习,这两者都能比较好地满足。如果未来需要在手机等边缘设备上做联邦学习,那么更大带宽的通讯技术和更强劲的边缘算力必不可少。我非常看好 5G 通讯技术,它能为联邦学习带来足够的带宽,同时随着手机芯片越来越强,联邦学习落地到广大移动端设备并不会太远。」

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
SQL 资源调度 数据库
数仓学习---14、大数据技术之DolphinScheduler
数仓学习---14、大数据技术之DolphinScheduler
|
2月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
59 5
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
52 3
|
2月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
68 0
|
SQL NoSQL Java
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
|
2月前
|
数据采集 数据可视化 大数据
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
这篇文章介绍了如何使用Python中的matplotlib和numpy库来创建箱线图,以检测和处理数据集中的异常值。
57 1
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
|
2月前
|
存储 SQL 分布式计算
大数据学习
【10月更文挑战第15天】
49 1
|
2月前
|
分布式计算 大数据 Hadoop
大数据学习
【10月更文挑战第2天】大数据学习
124 16
|
2月前
|
分布式计算 大数据 Linux
大数据体系知识学习(二):WordCount案例实现及错误总结
这篇文章介绍了如何使用PySpark进行WordCount操作,包括环境配置、代码实现、运行结果和遇到的错误。作者在运行过程中遇到了Py4JJavaError和JAVA_HOME未设置的问题,并通过导入findspark初始化和设置环境变量解决了这些问题。文章还讨论了groupByKey和reduceByKey的区别。
34 1
|
2月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
66 1