BOSS酒剑仙最近跟我提了一个新词:联邦学习,这种可以横跨多个数据源的建模方式也许是在应用层面解决数据安全问题的新手段,对于当下的数据变现也许有重要的意义。
这周简单自学了下,然后请教了几位专家,写这篇文章算是抛砖引玉,希望有这方面想法和经验的相关人士可以跟我沟通探讨,或者关注“浙江移动神灯大数据(微信号:allentt8706)”微信公众号,看看是否能真正的推进落地。
在人工智能和大数据领域,建模需要依赖各方数据,传统的做法是把各方数据整合到一处进行统一处理,但是随着大数据和人工智能的发展,这种传统的数据处理模式面临着巨大的挑战。
首先,在大多数行业中,数据是以孤岛的形式存在的,由于行业竞争、隐私安全、行政手续复杂等问题,即使是在同一个公司的不同部门之间,实现数据整合也面临着重重阻力,在现实中将分散在各地、各个机构的数据进行整合几乎是不可能的,或者说所需的成本是巨大的。
其次,当前重视数据隐私和安全已经成为了世界性的趋势。每一次用户数据的泄露都会引起媒体和公众的极大关注,无论是Facebook 的数据泄露事件,还是欧盟的GDPR。
国家在 2017 年起实施的《中华人民共和国网络安全法》和《中华人民共和国民法总则》也指出,网络运营者不得泄露、篡改、毁坏其收集的个人信息,并且与第三方进行数据交易时需确保拟定的合同明确约定拟交易数据的范围和数据保护义务。
最后,随着人工智能落地场景越来越丰富,多方整合数据从而为用户提供更好的服务迫切性非常高,尤其是在一些风控领域,特别需要联合多家企业的数据来打造更好的信用模型,从而提升用户贷款的效率,比如银行就非常需要运营商的通信数据、电商企业的交易数据来提升信用模型的质量。
但是现在这样做是违法的,在没有经用户同意的情况下,公司间是不能随意交换数据的。当前除了少数几家可以依托自己的产品和服务优势从而具备从用户处获得数据授权的超大型公司外,大多数企业是难以合法的跨过这个数据鸿沟的,或者成本巨大。
那么,在现有的机制,流程无法改变的情况下,是否存在一种技术上的可行性,可以在不影响用户隐私的情况下,解决数据的孤岛问题呢?
随着这一波人工智能的基础算法成熟,是否后续人工智能的重点将转移到以保障安全隐私的大数据架构为中心的算法导向上?
2016 年谷歌最先提出联邦学习这个概念。
那么,什么是联邦学习呢?
举例来说,假设有两个不同的企业 A 和 B,它们拥有不同的数据,比如企业 A 有用户特征数据,企业 B 有产品特征数据和标注数据。这两个企业按照 GDPR 准则是不能粗暴地把双方数据加以合并的,因为他们各自的用户并没有机会同意这样做。
假设双方各自建立一个任务模型,每个任务可以是分类或预测,这些任务也已经在获得数据时取得了各自用户的认可。
那么,现在的问题是如何在 A 和 B 各端建立高质量的模型。但是,又由于数据不完整(例如企业 A 缺少标签数据,企业 B 缺少特征数据),或者数据不充分(数据量不足以建立好的模型),各端有可能无法建立模型或效果不理想。
联邦学习的目的是解决这个问题:它希望做到各个企业的自有数据不出本地,联邦系统可以通过加密机制下的参数交换方式,在不违反数据隐私保护法规的情况下,建立一个虚拟的共有模型。这个虚拟模型就好像大家把数据聚合在一起建立的最优模型一样。
但是在建立虚拟模型的时候,数据本身不移动,也不会泄露用户隐私或影响数据规范。这样,建好的模型在各自的区域仅为本地的目标服务。
在这样一个联邦机制下,各个参与者的身份和地位相同,而联邦系统帮助大家建立了“共同富裕”的策略。这就是为什么这个体系叫做“联邦学习”。
前面铺垫了这么多,笔者的目的当然不是来讲联邦学习的来龙去脉的,而是想谈谈联邦学习的算法原理。
现在网上能找到的几篇解释联邦学习原理的中文文章【1】【2】笔者没有完全看懂,对于其中的算法处理流程描述很是困惑,特意请教了几位专家(感谢天睿信科的邓博士,陶阳等算法专家)后做了以下重新诠释,希望新的解读是对的,欢迎大家拍砖。
我们以包含两个数据拥有方(即企业 A 和 B)的场景为例介绍联邦学习的系统构架。该构架可扩展至包含多个数据拥有方的场景。
假设企业 A 和 B 想联合训练一个机器学习模型,它们的业务系统分别拥有各自用户的相关数据。此外,企业 B 还拥有模型需要预测的标签数据。出于数据隐私保护和安全考虑,A 和 B 无法直接进行数据交换,可使用联邦学习系统建立模型。联邦学习系统构架由三部分构成。
第一部分:加密样本对齐。由于两家企业的用户群体并非完全重合,系统利用基于加密的用户样本对齐技术,在 A 和 B 不公开各自数据的前提下确认双方的共有用户,并且不暴露不互相重叠的用户,以便联合这些用户的特征进行建模。
第二部分:加密模型训练。在确定共有用户群体后,就可以利用这些数据训练机器学习模型。为了保证训练过程中数据的保密性,需要借助第三方协作者 C 进行加密训练。以线性回归模型为例,训练过程可分为以下 4 步:
第①步:协作者 C 把公钥分发给 A 和 B,用以对训练过程中需要交换的数据进行加密,注意传输的数据是模型的计算中间结果(后面会解释具体是什么),不涉及用户隐私,当然虽然传输的数据是加密的,但模型训练的时候是要用私钥解密的。
第②步:A 和 B 之间以加密形式交互用于计算梯度的中间结果,那个这个中间结果具体指什么呢?我的理解是这样:
假设A上有样本的X1,X2特征,B上有样本的X3,X4特征及标签Y,模型为logistic回归;首先,A根据当前模型计算每条记录的X1,X2线性组合结果,B根据当前模型计算每条记录的X3,X4线性组合结果;然后A将结果加密后传给B,同时B将结果加密后传给A。
第③步:A和B分别基于解密后的交互中间信息(线性组合结果)进行各自的梯度值计算,比如B可基于接收的线性组合结果、标签Y等数据计算LOSS(损失)及X3、X4的梯度,A接收后可计算LOSS(损失)及X1,X2的梯度。
然后A,B分别将计算得到的X1,X2,X3,X4的梯度值上传到C,C基于梯度值计算出模型的新参数。
第④步:C将四个新参数分别传送回A和B,也就是更新A,B的模型,用于新一轮的迭代。
迭代上述步骤直至损失函数收敛,这样就完成了整个训练过程。在样本对齐及模型训练过程中,A 和 B 各自的数据均保留在本地,且训练中的数据交互也不会导致数据隐私泄露。因此,双方在联邦学习的帮助下得以实现合作训练模型。
模型正式部署到生产后,如果要用于预测,比如输入一个用户ID,则A,B模型分别提供预测的线性组合结果并相加,从而得到最终的预测值。
第三部分:效果激励。联邦学习的一大特点就是它解决了不同机构要加入联邦共同建模的问题,提供数据多的机构所获得的模型效果会更好,模型效果取决于数据提供方对自己和他人的贡献。
这些模型的效果在联邦机制上会分发给各个机构反馈,并继续激励更多机构加入这一数据联邦。以上三部分的实施,既考虑了在多个机构间共同建模的隐私保护和效果,又考虑了以一个共识机制奖励贡献数据多的机构。
从大数据变现的角度看,联邦学习具有极高的应用价值,但不管其号称有多么安全,毕竟中间互相交换过数据,同时找到合适的C方也需要建立信任关系,因此要将其真正的落地还有很长的路要走,但其致力于打造一个互信生态的理念是非常好的。
当然目前市场上解决“数据孤岛”互联的产品也有不少,比如大厂的蚂蚁摩斯,小厂的趣链可信数据网络等等。
希望我们能有机会真正的使用它们。
参考文档:
【1】杨强等,中国计算机学会,能够保障安全隐私的大数据算法「联邦学习」到底是什么? 2018.11
【2】联邦学习
https://blog.csdn.net/cao812755156/article/details/89598410
【3】联邦学习源码
https://www.tensorflow.org/federated/
【4】联邦学习源码
https://github.com/WeBankFinTech/FATE
本文为专栏文章,来自:与数据同行,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/65047.html 。