近两年,联邦学习发展迅速,开始从理论研究迈向批量应用的落地阶段,越来越多企业尝试引入联邦学习,用它来解决人工智能大规模落地过程中遭遇的数据瓶颈问题。但现成的联邦学习工具和框架并非拿来即用的“灵丹妙药”,联邦学习要真正在企业实际业务场景中发挥作用,仍有许多问题需要摸索,比如如何匹配业务的实际需求、如何兼容现有业务流程、如何尽可能减少对已有训练系统的改动等。为此,InfoQ采访了腾讯TEG数据平台部的智能学习团队,深入了解联邦学习在腾讯的实践情况,以及他们对联邦学习技术难点的解决思路。
早在2016年,谷歌就在论文《Federated Learning: Strategies for Improving Communication Efficiency》中率先提出了Federated Learning(联邦学习)的概念,主要用来解决联合存在于多个终端(例如移动手机)中的数据进行中心化模型训练的问题,并应用在输入法改进等场景。
但此后相当一段时间里,联邦学习一直处于理论研究的阶段,并没有太多落地的案例。这其中可能有几方面的原因:首先是缺少需求,最近两三年人工智能飞速发展,已经到达落地的阶段,必然面临着数据从哪里来、如何打通等问题,但在这之前没有数据打通的问题,自然也就不会有联邦学习的需求;其次是技术成熟度不够,谷歌提出的Federated Learning模型中,需要有一个中心服务器,负责收集各方训练好的本地模型进行聚合,那么问题就在于这个中心服务器是否可信可靠?另外,这个模型要求不同参与方的数据属性是相同的,例如张三和李四的数据都要求是年龄、身高、性别,虽然他们的具体数值不同,但属性必须一致。
在2019年初发表的论文《Federated Machine Learning: Concept and Applications》中,香港科技大学的杨强教授进一步发展了Federated Learning,提出了Horizontal(横向)和Vertical(纵向)Federated Learning两种框架,如下图1所示,其中,谷歌提出的模型可以算作横向联邦的一种。
图 1. 联邦学习两种形态:横向、纵向
随着技术不断发展成熟,以及人工智能落地过程中数据痛点愈发凸显,联邦学习得到了更多的关注,学术界和工业界开始联合起来系统化地研究整个技术体系,也有越来越多企业开始尝试引入联邦学习并将其作为打通多方数据的一种解决方案。
基于2016年推出的自研分布式机器学习平台Angel(2017年在GitHub上开源),腾讯TEG数据平台部的Angel智能学习团队正在进行联邦学习项目的攻坚工作。据介绍,Angel联邦学习的发展,主要来自业务需求的驱动。
在机器学习,尤其是深度学习中,模型的获得需要大量的训练数据作为前提。自2016年年初在腾讯内部上线以来,Angel已应用于微信支付、QQ、腾讯视频、腾讯社交广告及用户画像挖掘等业务。随着Angel在公司内部和合作伙伴中应用越来越广泛,在很多业务场景中,模型的训练数据往往分散在各个不同的业务团队、部门,甚至是不同的公司内。例如,广告推荐的模型要想获得针对每个用户的精准推荐效果,除了用户的基本自然属性之外,还需要这个用户的行为数据,比如网页浏览行为、上下文信息、购买支付行为等等,但这些行为数据通常在浏览器、新闻站点、游戏或内容等其他产品中,无法直接用来训练广告模型。如何在保护用户隐私的前提下,联合多个数据源进行模型训练,成为Angel智能学习团队的一项新挑战。
2019年10月初,团队内部成立专项组,着手研发联邦学习平台。首先梳理整合业务需求,找到共性的关键问题;然后调研学术界和业界是否有成熟的解决方案,能满足业务场景;最后重点解决落地问题,即安全、易用、高效和稳定。
其中业务需求方面主要有以下几个特点:
基于对业务和现有技术方案的调研,团队重新设计了一种“去中心化”的联邦学习框架,无需依赖可信第三方。整个系统以Angel的高维稀疏训练平台作为底层,抽象出“算法协议”层,供实现各种常见机器学习算法。
从技术层面看,分布式机器学习平台Angel的架构如图2所示,其核心组件是Angel PS参数服务器。在机器学习领域,当模型的参数规模达到高维例如千亿时,单台机器内存已经无法容纳下这样大规模的数据,必须借助于分布式的方式,利用多台机器一起才能完成训练任务,而参数服务器就是其中比较好的解决方案。Angel PS针对高维稀疏场景做了大量优化,比如对参数更新做批量处理,将很多在worker上的计算提升到PS端计算,提升了计算效率和一致性,加快算法收敛速度。Angel PS目前支持万亿级模型。同时,整个Angel平台底层基于Spark搭建,利用Spark RDD的高效和灵活性,很容易与大数据系统如HDFS等数据打通,兼容性高;后端可以接入TensorFlow、PyTorch等作为运行时算子。
图 2. Angel机器学习平台架构
腾讯目前整个联邦学习框架构建在Angel之上,以两个业务方A和B为例,Angel联邦学习系统架构如图3所示(也可以扩展到多个参与方的场景)。
图 3. Angel联邦学习系统架构
A、B双方分别拥有各自的与用户相关的数据,存储在本地集群,在整个联合建模的训练过程中,A和B双方的原始数据均不出本地。可以看到,架构具有以下特点:
在上述系统框架的基础上,再抽象出一层算法协议层,利用平台提供的计算、加密、存储、状态同步等基本操作接口,实现各种联邦机器学习算法。在训练任务执行时,通常拥有标签的一方作为训练的驱动方,算法协议层会控制本地训练步骤,例如梯度计算、残差计算、模型更新、消息发送等,同时与Angel-FL流程调度模块交互同步执行状态,并按照协议触发对方进行下一步动作。
一个典型的算法过程如下图4所示:
图 4. 联邦学习训练过程
假设还是两个业务系统A和B,其中ID表示样本id的集合,X表示维度数据,Y表示ID样本标签,联邦学习的目的是联合A和B的X来训练得到能预测Y的最优模型。B拥有标签,将作为训练的发起方,过程如下:
1)A、B双方提取样本ID,通过加密算法加密后,在B方进行安全样本ID对齐(PSI),得到双方共同的ID集合的交集A^B = {u2, u3}; A,B均不知对方除了交集外的部分;
2)根据交集ID,双方提取相应样本的维度数据X,先在计算本地模型数据如梯度,然后A通过加密方式,将中间数据发送给B,B根据标签计算预测误差,并将模型更新信息加密后传回A;
3)模型收敛后训练结束,A、B分别持有模型中与自己维度X相关部分的参数,并共同提供模型服务。
2019年年底,Angel智能学习团队已经完成了上图中Angel联邦学习框架的Demo原型验证,证明了系统可以满足业务场景的需求,并开始产品系统的开发。
在技术层面,Angel联邦学习系统存在几个主要的难点:
目前,整个Angel联邦学习框架已初步成型,并逐渐在实际场景中落地。 在腾讯内部,Angel联邦学习已经在金融私有云、广告联合建模等业务中开始尝试落地应用。
以广告场景为例,广告用户画像数据库中有用户的基础属性标签,如性别、年龄等,而其他业务上则有更丰富的行为数据,如何综合这些数据维度给用户更好的广告推荐?针对这个场景,Angel智能学习团队用多分类问题建模,以候选广告为分类标签,采用联邦GBDT算法来训练分类器。在500百万训练样本、100万测试样本、500维数据特征的数据集上,联邦GBDT算法的训练和测试ACC准确率均达到80%以上,具体提升指标还在业务放量收集中。
另外,Angel智能学习团队还在腾讯内部筹建了联合项目组,由多个团队参与共建,接下来将对联邦学习框架做进一步的性能优化,并开发更多联邦学习算法,例如FM、神经网络等。
虽然联邦学习技术正在快速演进,但从国内企业的整体落地情况来看,联邦学习在业界还处于早期阶段。在安全标准上,还没有一套完善且业界都认可的安全认定标准出台;加密和解密带来的计算量剧增也需要性能优化;深度学习等复杂算法如何改造成联邦学习模式也是面临的挑战。
目前,不同企业和研究团队在上述这些技术发展的细节上还存在分歧,但Angel智能学习团队认为这并不妨碍联邦学习在各个实际场景的应用,分歧反而可能成为促进发展的催化剂,过多纠结于这些分歧,不如去应用场景中寻找答案。
和大多数技术的发展一样,联邦学习技术也会经历概念萌芽,到低谷期,再到逐渐被重视的过程。在Angel智能学习团队看来,联邦学习技术有其独特的价值,如果说常规机器学习解决的是一个部门自有数据的模型训练问题,那么联邦学习则是解决不同部门的数据如何训练模型的问题,扩展了机器学习能触达的边界。随着人工智能技术的不断落地,联邦学习在跨部门合作、数据隐私保护等方面将会发挥越来越重要的作用,有着广阔的应用前景。
领取专属 10元无门槛券
私享最新 技术干货