近日,雷锋网《AI金融评论》联合香港人工智能与机器人学会(HKSAIR),邀请京东数字科技AI实验室首席科学家薄列峰做客公开课,以《京东数科的联邦学习战略全布局》为题进行分享。
除了分享横向和纵向联邦学习以外,他也通过案例形式给出了京东数科对联邦学习性能与安全性方面的研究成果,以及区块链和联邦学习的融合讨论。
以下为薄列峰的课程分享全程回顾,雷锋网AI金融评论做了不影响原意的编辑:
随着互联网发展,数据安全管理越发严格,对数据管理的关注也越来越全面化。怎么在保护数据隐私的情况下,还能做一些好的机器学习模型,应用到各种各样的问题?这就变得越来越重要,需要从集中式机器学习过渡到分布式机器学习。
而2006年开始掀起的深度学习热潮,更把AI和机器学习模型对数据的需求推向了顶峰。
什么是联邦学习?就是在满足数据隐私安全和监管要求的前提下,让人工智能系统更加高效准确地共同使用各自数据的机器学习框架。
应用方面,举一个简单的例子:各企业或机构大家都出不同的数据,相互进行模型学习,又不会看到对方的数据。数据还可能分布在不同的国家,各国数据监管政策有所不同,也可以把分布在各国数据高效利用、训练模型,不存在数据上的交换。
两个典型的联邦学习算法,分别是横向联邦学习和纵向联邦学习,横轴表示特征维度,竖轴表示用户维度。
横向联邦学习,看两方的数据和标签,用户重合度非常低,特征重合度比较大。这里显示的是用户无重合的极端情况,实际情况中它可能仅仅重合90%用户特征,5%用户重合,到时进行对齐即可。
纵向联邦学习,两方用户重合较多,可对用户的部分对齐。A、B各拥有用户一部分数据,可能都会有用户的一部分标注,纵向联邦学习也能去处理。
对计算机视觉、自然语言语音识别等领域而言,2006年深度学习(的出现)是非常大的推动。大家熟悉的语音识别、语音合成、人脸识别等应用,都是大量深度学习模型在背后发挥作用。
深度学习、梯度下降与横向联邦学习
三种典型深度学习
首先是深度神经网络(Deep Neural Networks,DNN)在语音识别误差上有30%的简化,性能有非常大的提升。
后来是卷积神经网络(Convolutional Neural Networks, CNN),它的训练误差相对于其他方法降低了十个百分点左右,在计算机视觉领域有着非常广泛的应用。
递归神经网络(Recursive Neural Networks,RNN)在自然语言处理领域是非常基础性的工具。
优化神经网络的典型方法:不管神经网络有多复杂,大家实际上都能把它写成一个f,一个输入加一个参数。常用方法之一是随机梯度下降。
大家都知道,优化最基本的是梯度下降,就是精确计算梯度,再对参数的方向和模型参数用梯度做下降。如果我的样本量非常大,有100万、1000万,做梯度下降计算代价非常高。
实际运用中,我们可以随机提出采样。极端情况下,可以只采用一个样本去估计梯度,比如包含50-100个样本的小样本集,它的梯度估计不准确,但计算代价非常低,这样能有效优化神经网络参数。
如图,红线是随机梯度下降的结果,梯度估计不准所以路线较曲折。蓝线是典型的梯度下降结果,估计比较精确所以不会拐弯的路线。但最终都会去到最优解。虽然红色路线比较长,但它走每一步的代价明显更低,相对于随机梯度而言,整体效率还是更高。
这是典型的横向联邦学习框架。设置里下面是客户端(client1,2,3,……,t)。蓝色云是服务端(Server)。横向联邦学习的设置是数据的不同样本存在不同用户端,这实际上是对传统分布式框架的改善。
首先每个客户端训练模型,产生参数w1、w2、w3……wt,参数传到云端,服务端对模型做平均,得到 w-。服务端做完模型平均之后,每个客户端再下载模型w-,再对模型做几轮梯度下降或优化,再将模型上传到服务端,循环往复,形成这样一个迭代的过程。
在这个过程中,客户端的数据并没有向服务端传递,传递的只是模型的参数w,保护了客户端数据的隐私。
它与传统分布式学习的不同之处在于,后者在此传递的是梯度;在联邦学习里,客户端向服务端传的是模型的参数。实际上现在也有证明表示,梯度信息其实也能泄露不少数据信息,而模型参数经过几轮梯度下降后,对数据的保护会做得更好。
如图,联邦Average(FedAvg)和 联邦SGD,前者实际使用代数明显更少,就可以收敛,SGD需要的代数明显更多。
在很多setting里,在分布式学习里,通信代价通常会是瓶颈,这个差异意味着FedAvg能有效降低这一代价,提升了训练效率,同时也加强了对数据隐私的保护。
在这个设置下,实际上服务端还是知道我的模型参数的,有没有可能进一步对我的模型参数加密和保护?其实不需要加密也有相当的安全性,但加密能对攻击、对服务端、对可能的数据欺诈有更好的防护。
同态加密
简单来讲,这是一个密码学的算法,主要操作是生成公钥和私钥,加密算子,应用到明文,产生密文;用私钥对密文解密,产生明文。同态加密的特点之一就是,两个数m1和m2的和同态加密,等于m1的同态加密加m2的同台加密;m和一个常数相乘的同态加密,等于对这个样本同态加密,再乘以常数。
横向联盟学习+同态加密:和刚才的情况类似,传递参数过程中,可对w1……wt同态加密,然后在服务端对同态加密域做平均,以得到模型参数。
在这一设置下,服务端不知道私钥,但客户端知道。服务端实际上不能对w-解密,甚至连模型参数也不知道,它只知道同态加密域,但没有私钥就没法解密。客户端下载参数,用自己的私钥解密,再更新自己的模型——因此同态加密也提升了数据安全性。
横向联邦学习之人脸识别应用:人脸识别有多场景的数据收集,比如打卡的门禁数据、多角度监控、证件类数据等。甚至还有一些海外业务,海外数据不能传递到国内,联邦学习就能解决这个问题,有效提升在人证场景或配合式场景下的通过率。
Q:各方的特征怎么对齐?
在横向联邦学习,大家的特征集是一样的。举个例子,a方和b方都是人脸数据,那么模型取的就是人脸数据,可以规范化到一个图像标准,比如说128×128的头像,这样输入x就自然对齐了。
除了同态加密,另一个在横向联邦学习应用较多的是差分方法,思路是在分布式学习的时候传递梯度,同时对梯度加噪,以噪声方式保证梯度安全性。
纵向联邦学习
假设两个公司各有数据的部分特征,同时 b方拥有数据的标记,可以用一个安全的方法对齐数据ID,再做纵向联邦学习。
这通常需要一个合作者Collaborator(有些方式可能不需要),AB两方的数据交换都需要对它加密。此处设置为:合作者有公钥和私钥,两个机构a和b,分别都只有公钥,没有私钥,能通过加密保护自己的数据。
得到同态加密域的梯度之后,会对梯度加噪声再送到合作者处,合作者会用自己的私钥解密,然后把梯度还给它。在各方得到自己的梯度之后,可以进行梯度下降。
Q:若合作者方占主导地位,是否有泄露风险?
这是实际操作中需要注意的问题,比如A方特征占10%,B方特征占90%,这块你能写出的方程数量明显少于参数数量,理论上是推不出来的,但随着不平衡性的增加,安全性也会下降。
纵向联邦学习某种程度上,是有信息泄露的,但是从大方向说,它泄露的信息足够少以至于别人推不出来主要的特征。
线性回归是一个典型的算法。在很多模型的应用中,当样本量较大,线性回归的性能或许不会很好。此处常用的方法之一是随机森林(random forest)。
随机森林
Step 1:随机森林会对原始特征采样(bootstrapped)。这个步骤是放回式采样,比如说100个训练样本,它会每次放回,然后做采样100个。完成采样后,每个数的训练样本就不一样了,都是原始训练样本衍生出来的。这样主要是为了增加数的随机性和多样性,在树的集成过程中会产生更好的效果。
Step 2:建每一棵树时,在每个节点选择一个特征的一个随机子集。举个例子,这里有30位特征,建树时随机选择五维的特征;建每个节点时,随机选的5个特征都不一样,再从中挑选最好的特征,保了每个节点的多样性。
建树过程中,可以是深度优先,然后走到叶子节点,直到它满足一个判据,完成树的分支搭建,最后再逐个预测。
联邦随机森林
大致思路是,主动方、被动方各一,主动方有标记,并加密标记和标记的平方,然后发送给被动方。此处三角号表示对yi、zi进行同态加密。
加密后,被动方根据自己每一维的特征,当它的这维特征被整个机制选中的时候,它会针对这个特征做直方图,然后用直方图在同态加密域的yi和zi进行聚合。每一个直方图会把它划分成很多区间,在每个区间做平均,得到Y和Z。
简单讲,主动方传同态加密后的y和zi是一个向量,该向量和样本数一样。被动方会对向量做聚合每次会选向量的一个子集,看哪个特征落到区间上,再对传递过来的yi和zi平均进行同态加密域的求和运算。在随机森林里,既要选取特征,也要选阈值,通过该阈值下的特征得分算出y的矩阵,矩阵还给主动方。
此处主动方有公钥和密钥,被动方只有公钥无密钥,所以被动方无法解密y和z,它把Y和Z的矩阵传给主动方,后者会依所得进行解密,再计算每个特征和每个阈值的得分,择其得分高者,如此即可完成随机森林中一棵树的某节点构建。重复该过程可构建不同的树和整个随机森林。
可以看到,主动方得到被动方的数据,实际只是得到聚合后自己发送的y和z,所以不知道被动方的特征,也很难推导出;被动方只知道主动方同态加密运送来的y和z,并不知道更多的信息,整个过程可以保证安全。
何为快速安全的联邦学习框架?
传统纵向联邦学习需要用同态加密进行保护,同态加密比较低效,我们是否能设计一个不依赖于同态加密的联邦学习框架?
设计快速安全的联盟学习框架有如下特点:
第一,隐私能得到保护;
第二,利用树状通信结构,有效提升传输效率。利用不同的数聚合信息;
第三,新框架支持异步计算,能再次提升数据安全性。同时整个过程只涉及一些内积(此处不确定)计算,包括加噪后内积传递,所以该框架下不会用到同态加密,效率更高。
如图,模型隐私在传递过程中,会传递参数和特征的内积,再进行加噪保护,最终有数据结构的聚合。
整个框架的安全性如何?可以从理论上证明,这个算法能有效抵御精确攻击和近似推理攻击。
看主要算法步骤,在第二步可以看到聚合的是内积+噪声,以及聚合噪声,然后返回到coordinator计算所有参数和所有内积再减去聚合的噪声,得到决策值,不过此处并不得到模型参数,这也正是模型信息能被保护的原因。
coordinator在此只知道内积,不知道参数,所以它也无法推断各参与方信息。
实现过程要确保通信的安全,数据在通信过程中不会被联邦系统之外的攻击者所获取,也需要一个可信赖的第三方来进行调度。谁做coordinator?可以是监管机构,独立第三方机构等。
原始数据主要通过两项:1.任一通信节点接收到的均为加噪声后的内积,由于树状结构的差异,随机数又无法被移离,内积值因此得到保护。2.即使在串通的情况下,多个节点能移离随机数,根据内积本身也只能构造出方程,也无法通过方程精确推断所含变量。
有噪声、有内积,方程数明显少于变量数,树机制……这些多重机制都能保证安全性。
刚才所讲的逻辑回归还是线性模型范畴,怎样把线性模型推广到非线性模型?这也是关键,推广的非线性模型精度会大幅提升。
右边算法概念大致是:先产生随机特征,生成随机数,然后做cos生成随机特征;在随机特征域上,再做刚才提到的这种联盟学习框架,来完成随机特征的参数学习。
随机特征这一步引入了非线性函数,它能很好逼近原始核函数。此处,各参与方会有一部分随机特征,特征上的模型参数也保留在各方,不为他人所知。全程将通过噪声、聚合等方式提升安全性。
随机梯度下降法,是首次实现了快速安全的异步并行纵向联邦随机梯度算法,并理论上分析了其收敛率核问题的双随机梯度算法,则是首次实现了大规模、高速、安全的基于核方法的纵向联邦学习。
测试性能结果对比如下。LIBSVM是很多同学在研究机器学习时常用的工具,PP-SVMV是一个隐私保护算法,FDSKL则是我们目前所设计的算法。可以看到训练时间的对比。
PP-SVMV涉及核矩阵,因此在大样本上操作非常慢。FDSKL收敛速度与DSG类似,后者没有联邦学习的设置。FDSKL几乎达到了不在同态加密状态下的训练速度。
精度结果对比如下。FDSKL也接近了原始的不用联邦学习的效果。
京东数科的最新工作也将在KDD发表。
区块链联邦学习
区块链受到很大关注,数据上链有透明化、分布式、不能篡改等优势,它是一种不依赖第三方,通过自身分布式节点,进行网络数据存储验证传递和交流的技术方案。
区块链的分布式、去中心化特点,和联邦也有一些关系。实际上,联邦学习在大型的多方参与项目中都有类似机制,也可以考虑采用去中心化。
最简单的应用是,把联邦学习和区块链结合,建立在区块链上的联邦学习算法。我们也完成了二者更深层次的融合,包括共识机制等。
我们认为二者的结合在未来会有越来越多的应用。区块链可以解决数的存储,具有不可篡改性,联邦学习能对数据隐私做表保护,其中有不少地方互补。
互动问答精选
问:联邦学习可以不加入加密技术,不加密是不是也算对数据隐私保护?还是说得进行加密后,才算是各方进行隐私保护?
薄列峰:就像我刚才在横向联邦学习中提到的那样,第一种算法实际上不加密,是用均值进行保护,整个过程中并没有传递数据。
不同类型的联邦学习算法,有不同方向的数据保护。现在的问题是,哪一种对信息的保护级别更高,效率更高?同态加密是一种方法;差分隐私基本上就是给梯度加噪。这方面,像我们刚才提到的方法,都是不用同态加密对数据保护的联邦学习算法。
问:联盟学习在京东有实际的落地场景和业务吗?
薄列峰:有,其实联邦学习就是在做多方机构的落地,比如人脸识别、营销、风控等场景,京东数科都有案例。
问:联邦学习和边缘计算的区别是什么?
薄列峰:边缘计算讲的是每个用户端有自己的计算设施;联邦学习讲的是对数据隐私的保护,同时合作建模。大概念上还是非常不一样。当然,在做这种分布式联盟协议的时候,它也会用到各自的客户端,有自己的计算设备,在这一点上它会和边缘计算有一些结合点。
问:怎样保护在客户端的运算速度?
薄列峰:客户端的运算速度,得靠其自身计算资源来进行保护。如果计算资源比较有限,通常它的数据也比较有限,参与更少的计算。如果数据比较多,它的计算资源也多,如果是多个机构合作,这都可以协调。
问:实验中列出来的时间对比,是参与方与第三方之间通信,是内网还是外网?
薄列峰:我们在实验比较时,没有特别考虑网络延迟因素,是相对理想情况下的比较。有网络延迟的话,在计算的情况就会增加网络延迟。网络延迟针对每次具体的setting并不一样,所以并不容易做标准化的比较。我们比较的是没有网络延迟的情况,具体有网络延迟或者有各种情况,可能还是需要在具体设置里做更好的处理。
问:每个客户端上的特征异构以及标签异构如何理解?可以举个例子吗?
薄列峰:这个看是水平联邦学习还是垂直联邦学习。
在水平联邦学习情况下,各个客户端也有自己的标记。刚才我举了个例子,比如说image net,每一个有1000类,每一类有1000个样本,这样你有100万个样本。假设有100个客户端,然后每个客户端有1万个样本,它有1万个样本标记,然后大家可以用横向联盟学习框架,可以有效地利用每个人手上的样本来建模。最终,每个参与方建造的模型都用了别人的样本,但是又不会去实际获取别人的数据。
在纵向联盟框架下,举个例子,大机构和小机构做完用户对齐,大机构作为主动方,小机构是被动方,各参与方都可以商讨解决。
像横向联盟学习,在很多时候,参与方其实就是同一个公司的分布在不同的国家的情况,信任度实际上是有保证的。即使说不同的机构之间,大家也是有相互的信任度。如果完全没有信任度,要去做这样的联邦学习,可能还是比较难的。参与方可能会对整个框架进行攻击。它的安全性会变得更加复杂。所以,我们现在还是假设各参与方是honest,是相对比较协作的,在实际应用中是可以做很多协调的。
问:目前在联邦学习研究遇到的瓶颈有哪些?是否有后续未来的规划?
薄列峰:后续京东数科会在联邦学习上做大量的投入,因为我们认为联邦学习是整个人工智能,包括整个机器学习的基石,它有潜力去改变所有的机器学习算法。
我们会做重点布局,研发越来越多的联邦学习算法,来进一步提升联盟学习在各个领域的落地,提升它的有效性和效率,包括和区块链结合这种前沿方向。我们既会去提供一些可信度较高的软件,同时也会去落地,考虑前沿的研究,带动整个联邦学习生态的建设。
问:是否可以动态变更合作机构的数量?
薄列峰:合作机构的数量,是可以变化的。在纵向联盟学习里,相对比较复杂。它不参与之后,可能有些东西需要重新开始。
但横向联盟学习,相对比较容易,因为大家都是拥有不同的样本,假设有1000个参与方,两三个不参与,那就少了千分之2,千分之3的样本,并不影响整个联盟学习的框架。横向联盟学习里,也有一些机制,可以保证参与方突然不参与,还能完成这个模型的训练。
问:联邦学习可以用于表情识别吗?
薄列峰:可以。举个例子,不同机构之间有表情识别的不同数据,大家可以利用彼此的数据来增强模型,同时又不想把数据给到对方。表情识别更像是一个横向联盟学习问题,怎么激励大公司愿意跟小公司之间共享信息。
我的个人理解,它还是商业利益的驱动问题,怎么鼓励这件事。如果现在联邦学习的整个框架,只有一个小公司参与,大公司可能缺乏热情,但是如果有1000个小公司参与,那么这样以小积多,有更越来越多的可供交换的数据,大公司参与的意愿就会变强。
问:服务器端,共享梯度和共享模型参数有什么区别?
薄列峰:共享模型参数是做了几轮梯度下降,针对共享梯度,它的一大优势是通信代价会低;同时,对整个梯度信息的保护,也会更好。
关注「 AI金融评论 」,在对话框发送关键词“听课”进群,即可收看课程直播,和往期课程全部回放。
雷锋网(公众号:雷锋网)雷锋网
雷锋网原创文章,未经授权禁止转载。详情见转载须知。