共享学习:蚂蚁金服提出全新数据孤岛解决方案新浪财经

随着人工智能的兴起,数据的质量和数量,已经成为影响机器学习模型效果最重要的因素之一,因此通过数据共享的模式来「扩展」数据量、从而提升模型效果的诉求也变得越发强烈。

但在数据共享过程中,不可避免会涉及到两个问题:隐私泄露和数据滥用。

提到这两个关键词,大家一定都对其背后的缘由有所耳闻:

第一则:2018年3月,剑桥咨询公司通过FaceBook的数据共享漏洞,收集了5000万用户信息,据说有可能利用这些信息操控美国总统竞选,造成恶劣社会影响;事件曝光后,FB公司股票大跌7%,引发一系列后续问题。

随着对数据安全的重视和隐私保护法案的出台,以前粗放式的数据共享受到挑战,各个数据拥有者重新回到数据孤岛的状态,同时,互联网公司也更难以收集和利用用户的隐私数据。

数据孤岛现象不仅不会消失,反而会成为新的常态,甚至它不仅存在于不同公司和组织之间,在大型集团内部也存在。未来,我们必须面对这样的现状:如果我们想更好的利用数据,用大数据和AI做更多有意义的事情,就必须在不同组织之间、公司与用户之间进行数据共享,但这个共享需要满足隐私保护和数据安全的前提。

隐私泄漏和数据滥用如同达摩克利斯之剑悬在各个公司和组织头上,因此解决数据孤岛,成为AI行业需要解决的首要问题之一。

如何解决数据孤岛问题?

当前,业界解决隐私泄露和数据滥用的数据共享技术路线主要有两条。一条是基于硬件可信执行环境(TEE:TrustedExecutionEnvironment)技术的可信计算,另一条是基于密码学的多方安全计算(MPC:Multi-partyComputation)。

TEE字面意思是可信执行环境,核心概念为以第三方硬件为载体,数据在由硬件创建的可信执行环境中进行共享。这方面以Intel的SGX技术,AMD的SEV技术,ARM的TrustZone技术等为代表。TEE方案的大致原理如下图所示:

SGX(SoftwareGuardExtensions)是Intel提供的一套软件保护方案。SGX通过提供一系列CPU指令码,允许用户代码创建具有高访问权限的私有内存区域(Enclave-飞地),包括OS,VMM,BIOS,SMM均无法私自访问Enclave,Enclave中的数据只有在CPU计算时,通过CPU上的硬件进行解密。同时,Intel还提供了一套远程认证机制(RemoteAttestation),通过这套机制,用户可以在远程确认跑在Enclave中的代码是否符合预期。

MPC(Multi-partyComputation,多方安全计算)一直是学术界比较火的话题,但在工业界的存在感较弱,之前都是一些创业小公司在这个方向上有一些探索,例如Sharemind,Privitar,直到谷歌提出了基于MPC的在个人终端设备的「联邦学习」(FederatedLearning)的概念,使得MPC技术一夜之间在工业界火了起来。MPC方案的大致原理如下图所示:

混淆电路是图灵奖得主姚期智教授在80年代提出的一个方法。其原理是,任意函数最后在计算机语言内部都是由加法器、乘法器、移位器、选择器等电路表示,而这些电路最后都可以仅由AND和XOR两种逻辑门组成。一个门电路其实就是一个真值表,假设我们把门电路的输入输出都使用不同的密钥加密,设计一个加密后的真值表,这个门从控制流的角度来看还是一样的,但是输入输出信息都获得了保护。

同态加密是一种特殊的加密方法,允许对密文进行处理得到仍然是加密的结果,即对密文直接进行处理,跟对明文进行处理后再对处理结果加密,得到的结果相同。同态性来自抽象代数领域的概念,同态加密则是它的一个应用。

当前,业界针对数据共享场景,利用上面的技术路线推出了一些解决方案,包括隐私保护机器学习PPML、联邦学习、竞合学习、可信机器学习等,但这些方案只利用了其中的一部分技术,从而只适合部分场景,同时基本处于学术研究阶段,没有在生产环境落地。

共享机器学习:蚂蚁金服数据孤岛解决方案

为了更好的应对形势变化,解决数据共享需求与隐私泄露和数据滥用之间的矛盾,蚂蚁金服提出了希望通过技术手段,确保多方在使用数据共享学习的同时,能做到:用户隐私不会被泄露,数据使用行为可控,我们称之为共享机器学习(SharedMachineLearning)。

共享机器学习的定义:在多方参与且各数据提供方与平台方互不信任的场景下,能够聚合多方信息并保护参与方数据隐私的学习范式。

从17年开始,蚂蚁金服就一直在共享机器学习方向进行探索和研究,在结合了TEE与MPC两条路线的同时,结合蚂蚁的自身业务场景特性,聚焦于在金融行业的应用。

蚂蚁金服共享机器学习方案拥有如下特性:

多种安全计算引擎整合,可基于不同业务场景来选择合适的安全技术。既有基于TEE的集中式解决方案,也有基于MPC的分布式解决方案;既可满足数据水平切分的场景,也能解决数据垂直切分的诉求;既可以做模型训练,也可以做模型预测。

支持多种机器学习算法以及各种数据预处理算子。支持的算法包括但不限于LR,GBDT,Xgboost,DNN,CNN,RNN,GNN等。

大规模集群化。支持大规模集群化,提供金融级的高效、稳定、系统化的支撑。

基于数年沉淀与积累,目前共享机器学习技术已在银行、保险、商户等行业成功落地诸多场景业务。通过在业务中打磨出的金融级共享机器学习能力,沉淀下来一套数据共享场景的通用解决方案,未来会逐步对外开放。

在几年的艰苦研发中,共享学习累积专利50余项。在2019中国人工智能峰会上,共享机器学习获得「紫金产品创新奖」,在8月16日的全球人工智能创业者大会上,共享智能获得「应用案例示范奖」。

基于TEE的共享学习

蚂蚁共享学习底层使用Intel的SGX技术,并可兼容其它TEE实现。目前,基于SGX的共享学习已支持集群化的模型在线预测和离线训练。

1.模型在线预测

预测通常是在线服务。相对于离线训练,在线预测在算法复杂度上面会相对简单,但是对稳定性的要求会更高。

提升在线服务稳定性的关健技术之一就是集群化的实现——通过集群化解决负载均衡,故障转移,动态扩容等稳定性问题。

但由于SGX技术本身的特殊性,传统的集群化方案在SGX上无法工作。

为此,我们设计了如下分布式在线服务基本框架:

该框架与传统分布式框架不同的地方在于,每个服务启动时会到集群管理中心(ClusterManager,简称CM)进行注册,并维持心跳,CM发现有多个代码相同的Enclave进行了注册后,会通知这些Enclave进行密钥同步,Enclave收到通知后,会通过远程认证相互确认身份。当确认彼此的Enclave签名完全相同时,会通过安全通道协商并同步密钥。

该框架具备如下特性:

通过集群化方案解决了在线服务的负载均衡,故障转移,动态扩缩容,机房灾备等问题;

通过多集群管理和SDK心跳机制,解决代码升级,灰度发布,发布回滚等问题;

通过ServiceProvider内置技术配合SDK,降低了用户的接入成本;

通过提供易用性的开发框架,使得用户在开发业务逻辑时,完全不需要关心分布式化的逻辑;

通过提供Provision代理机制,确保SGX机器不需要连接外网,提升了系统安全性。

目前在这套框架之上已经支持包括LR、GBDT、Xgboost等多种常用的预测算法,支持单方或多方数据加密融合后的预测。基于已有框架,也可以很容易的扩展到其它算法。

2.模型离线训练

模型训练阶段,除了基于自研的训练框架支持了LR和GBDT的训练外,我们还借助于LibOsOcclum和自研的分布式组网系统,成功将原生Xgboost移植到SGX内,并支持多方数据融合和分布式训练。通过上述方案,不仅可以减少大量的重复性开发工作,并且在Xgboost社区有了新的功能更新后,可以在SGX内直接复用新功能,无需额外开发。目前我们正在利用这套方案进行TensorFlow框架的迁移。

此外,针对SGX当下诟病的128M内存限制问题(超过128M会触发换页操作,导致性能大幅下降),我们通过算法优化和分布式化等技术,大大降低内存限制对性能的影响。

基于TEE的多方数据共享学习训练流程如下:

机构用户从DataLab下载加密工具

使用加密工具对数据进行加密,加密工具内嵌了RA流程,确保加密信息只会在指定的Enclave中被解密

用户把加密数据上传到云端存储

用户在DataLab的训练平台进行训练任务的构建

训练平台将训练任务下发到训练引擎

采用该方式进行数据共享和机器学习,参与方可以保证上传的数据都经过加密,并通过形式化验证保证加密的安全性。

基于MPC的共享学习

蚂蚁基于MPC的共享学习框架分为三层:

基础算子层:在安全技术层基础上,我们会做一些基础算子的封装,包括多方数据安全求交、矩阵加法、矩阵乘法,以及在多方场景下,计算sigmoid函数、ReLU函数等等;同一个算子可能会有多种实现方案,用以适应不同的场景需求,同时保持接口一致;

安全机器学习算法:有了基础算子,就可以很方便的进行安全机器学习算法的开发,这里的技术难点在于,如何尽量复用已有算法和已有框架,我们在这里做了一些有益的尝试,但也遇到了很大的挑战。

目前我们这套基于MPC的共享学习框架已支持了包括LR、GBDT、GNN等头部算法,后续一方面会继续根据业务需求补充更多的算法,同时也会为各种算子提供更多的技术实现方案,以应对不同的业务场景。

基于MPC的多方数据共享学习训练流程如下:

如图所示,训练步骤为:

机构用户从DataLab下载训练服务并本地部署

用户在DataLab的训练平台上进行训练任务的构建

训练平台将训练任务下发给训练引擎

训练引擎将任务下发给机构端的训练服务器Worker

Worker加载本地数据

Worker之间根据下发的训练任务,通过多方安全协议交互完成训练任务

训练引擎的具体架构如下:

其中Coordinator部署于蚂蚁平台,用于任务的控制和协调,本身并不参与实际运算。Worker部署在参与多方安全计算的机构,基于安全多方协议进行实际的交互计算。

用户在建模平台构建好的训练任务流会下发给Coordinator的TaskFlowManager,TaskFlowManager会把任务进行拆解,通过TaskManager把具体算法下发给Worker端的TaskExecutor,TaskExecutor根据算法图调用Worker上的安全算子完成实际的运算。

利用这套方法,可以做到数据不出域就可以完成数据共享,训练工具可以部署在本地的服务器。

共享学习VS.联邦学习

目前,国内对于数据共享场景的机器学习解决方案,比较熟悉的可能是由谷歌提出,又由微众传播的联邦学习概念。

经过我们的了解,其实联邦学习目前涉及两个不同的概念:

第一种联邦学习,旨在解决云+端的训练过程中,端上的隐私不要被暴露的问题,是一个ToC+数据水平切分的场景。除了保护端上的数据隐私外,其重点还在于如何解决训练过程中,端自身可能掉线等问题。

第二种联邦学习则主要用于解决ToB场景中各方隐私不泄露的问题,即可以应用于数据的水平切分场景,也可以应用于数据垂直切分的场景。

它们侧重于不同的数据共享场景,采用不同的技术,相比之下,蚂蚁金服的共享学习兼容多种安全计算技术,并且支持多种机器学习算法和使用场景。

除此之外,共享学习和联邦学习的差异在于:

联邦学习只解决数据不出域的情况,这就限制了其可以使用的技术(只有严格的MPC算法才符合这个要求),而共享学习目前基于TEE的集中式共享学习技术,是联邦学习没有涉及的;

联邦学习讲究的是参与各方的「身份和地位」的相同,所以叫联邦;而共享学习则不强调各共享方的地位对等,在很多场景下,不同的参与方是拥有不同的角色的。

因此无论从技术范围还是应用场景上,联邦学习都比共享学习的范围要小。

未来展望

让数据孤岛在安全环境下进行连接、合作、共创、赋能,是蚂蚁金服共享机器学习的核心使命。

THE END
1.onlinetraining和offlinetraining在深度学习中什么意思?文章浏览阅读1.6k次。在线学习与离线学习是两种不同的机器学习模式。离线学习用于处理大数据和复杂模型,需要完整数据集,训练完成后才应用模型。在线学习则按顺序处理数据,实时更新模型,适用于数据流场景,如监控视频分析。两种方式各有优劣,常结合使用,如离线预训练加https://blog.csdn.net/Adam897/article/details/129908295
2.相比于离线训练,在线训练的好处有什么?问答在线模型训练的流程如下图所示。在线模型训练意味着我可以用实时线上传输化的数据,然后用我们的实时机器学习模型训练框架去做训练。在线训练虽然数据是实时进来的,但你的模型并不是从 0 开始的。而是说我从离线先训练好这个模型,我站在离线模型的巨人的肩膀上,再往上去优化。 以上内容摘自《个性化推荐系统开发指南》https://developer.aliyun.com/ask/446535
3.推荐系统中模型训练及使用流程的标准化腾讯云开发者社区在实践中,我们对特征的采集、配置、处理流程以及输出形式进行了标准化:通过配置文件和代码模板管理特征的声明及追加,特征的选取及预处理等流程。由于使用哪些特征、如何处理特征等流程均在同一份配置文件中定义,因而,该方案可以保证离线训练和在线预测时特征处理使用方式的代码级一致性。https://cloud.tencent.com/developer/article/1539413
4.科学网—[转载]群视角下的多智能体强化学习方法综述对于大规模多智能体系统,处理数量和规模方面的动态变化是当前深度强化学习方法面临的突出挑战。基于学习(深度学习、强化学习)设计的迭代式问题求解方法是离线策略学习的基础范式。由于环境及对手的非平稳性,离线训练的蓝图策略通常很难直接运用于在线对抗。在线博弈对抗过程与离线利用模拟多次对抗学习博弈过程不同,博弈各方https://blog.sciencenet.cn/home.php?mod=space&uid=3472670&do=blog&id=1422698
5.蚂蚁金服核心技术:百亿特征实时推荐算法揭秘备注:弹性特征带来一个显著的优势:只要用足够强的L1稀疏性约束,在单机上就能调试任意大规模的特征训练,带来很多方便。我们的hashmap实现是KV化的,key是特征,value是vector的首地址。 离线训练优化 经过这样的改造后,在离线批量学习上,带来了以下变化: 在线训练优化 https://maimai.cn/article/detail?fid=1010621115&efid=mIQCHnkj0zjxlpygUmo5mg
6.粗排优化探讨得物技术离线在线一致性分析 待补充实际效果 四 样本设计 粗排相较于精排样本选择偏差(SSB)的问题更加严重,借鉴召回经验,可以通过适当采样减少偏差。采样设计的目的也是希望离线训练样本尽可能与线上分布一致。 样本选择方法 负样本可选范围: 曝光未点击样本; 全库除转化外样本; https://blog.itpub.net/70027824/viewspace-3000851/
7.基于Kmeans聚类的CSI室内定位AET基于指纹的定位模型分为离线训练阶段和在线定位阶段,模型如图1所示。 离线训练阶段的任务是建立一个位置指纹数据库。首先要选择参考点的位置,然后在每个参考点处测量来自信标的信号特征,最后处理信号特征保存在数据库中。这个数据库也被称为位置指纹地图。 http://www.chinaaet.com/article/3000057028
8.京东搜索在线学习探索实践参数更新:首先我们将用离线的 30 天的数据训练出来的模型参数导入 ps,之后 flink 的在线训练将实时更新参数,该 ps 直接服务于线上。目前在线和实时共用一套 ps,为了之后的稳定性要求,我们之后会将实时和在线分开。 模型校准:为了确保模型的准确性,支持天/周粒度的完整模型更新进行校准。 https://www.infoq.cn/article/Z6lL9VNskAH3BCxZS1A7
9.强化学习离线模型离线模型和在线模型推荐系统里非常常见,并且往往非常的隐蔽的一种数据分布不一致的情况被称之为冰山效应,也就是说离线训练用的是有偏的冰山上的数据,而在线上预估的时候,需要预测的是整个冰山的数据,包括大量冰面以下的数据!我们看下面这张图。左边是我们的Baseline,绿色的表示正样本,红色表示负样本,灰色部分表示线上由于推荐系统的“https://blog.51cto.com/u_14499/11815202
10.如何在本地(离线)使用PrivateGPT训练自定义AI聊天机器人PrivateGPT是一个新的开源项目,可以让你在AI聊天机器人界面中与你的文件进行私人互动。为了了解更多,让我们学习如何在本地使用PrivateGPT训练一个定制的人工智能聊天机器人。https://www.wbolt.com/how-train-ai-chatbot-using-privategpt-offline.html
11.基于多时间尺度多智能体深度强化学习无功电压控制方法与流程8.(2)将有载调压分接头(oltc)、电容器组(cb)和储能(es)均定义为智能体,在第一时间尺度阶段,搭建环境和智能体交互的马尔科夫决策过程的交互训练环境;在该过程的交互训练中,输入光伏、风机和负荷的预测数据,采用ddqn算法(double q network)进行离线训练无功优化离散动作策略;训练完毕,得到智能体oltc、cb和es的调https://www.xjishu.com/zhuanli/60/202110597000.html
12.飞桨开源框架的大规模分布式训练能力工业级稀疏参数弹性调度在线服务方面,ElasticCTR采用Paddle Serving中高吞吐、低延迟的稀疏参数预估引擎,高并发条件下是常见开源组件吞吐量的10倍以上。 3.可定制 用户可以通过统一的配置文件,修改训练中的训练方式和基本配置,包括在离线训练方式、训练过程可视化指标、HDFS上的存储配置等。除了通过修改统一配置文件进行训练任务配置外,ElasticCTRhttps://github.com/PaddlePaddle/ElasticCTR/
13.趋动云平台为工程师提供了在线的开发环境,内置多种 AI 算法库和开发工具,工程师可以在线编辑优化模型。另外在开发环境中,工程师可随时提交训练任务,在线训练和分析,实时进行模型优化。 ▌主要功能 AI 模型在线开发 深度整合算法开发环境,支持 JupyterLab/网页终端/ssh 登录等多种开发调试工具。 https://2d.ciftis.org/view/productmgr/productdetail?productId=50485