【论文阅读】SecureBoost:A Lossless Federated Learning Framework

论文简介:SecureBoost:A Lossless Federated Learning Framework——安全联邦提升树(将XGBoost应用于纵向联邦学习的模型方法)

论文地址:SecureBoost: A Lossless Federated Learning Framework | IEEE Journals & Magazine | IEEE Xplore

目录

一、摘要

二、介绍

三、背景知识&相关工作 

四、问题阐述 

五、SecureBoost 下的联邦学习

​编辑六、联邦推理

七、理论分析 

八、安全性探讨

九、实验分析

Scalability

Performance of RL-SecureBoost

十、总结

十一、启示

一、摘要

用户隐私保护是机器学习中的一个重要问题,2018 年 5 月欧盟 (EU) 推出的通用数据保护条例 (GDPR) 就是一打证据。GDPR 旨在让用户更好地控制个人数据,这促使我们探索隐私保护的数据共享机器学习框架。为了实现这一目标,本文在联邦学习的环境中提出了一种称为 SecureBoost 的新型无损隐私保护的提升树系统SecureBoost 首先在隐私保护协议下进行实体对齐,然后通过加密策略跨多方构建提升树。这种联合学习系统允许学习过程在多方共同进行,具有共同的用户样本但不同的特征集(纵向联邦学习)。 SecureBoost 的一个优点是它提供了与非隐私保护方法相同的准确性,同时不透露每个私人数据提供者的信息。本文表明,SecureBoost 框架与其他需要集中数据的非联合梯度树增强算法一样准确,因此对于信用风险分析等应用具有高度可扩展性和实用性。同时,本文讨论了协议执行期间的信息泄漏,并提出了可证明减少它的方法。

二、介绍

现代社会越来越关注个人数据的非法使用和利用。 在个人层面,不当使用个人数据可能会对用户隐私造成潜在风险。 在企业层面,数据泄露可能对商业利益造成严重后果。 当前也采取了一些行动, 例如,欧盟颁布了一项称为通用数据保护条例 (GDPR) 的法律,旨在让用户更好地控制他们的个人数据。 在此背景下,许多严重依赖机器学习的企业将不得不进行彻底的改变。

尽管用户隐私保护的目标很难实现,不同组织在构建机器学习模型的同时进行协作的需求仍然很强烈。 实际上,许多数据所有者没有足够的数据量来构建高质量的模型。 例如,零售公司拥有用户的购买和交易数据,如果将其提供给银行进行信用评级应用,这些数据将非常有用。 同样,手机公司也有用户使用数据,但每家公司可能只有少量用户,不足以训练出高质量的用户偏好模型。 这些公司有强烈的动机联合开发出联合数据价值。

到目前为止,让不同的数据所有者协同构建高质量的机器学习模型,同时保护用户数据隐私和机密性仍然是一个挑战。当前已经进行了一些尝试来解决机器学习中的用户隐私问题。例如,Apple 提出使用差分隐私(DP 来解决隐私保护问题。 DP 的基本思想是在数据被第三方交换和分析时,向数据中添加经过适当校准的噪声,以尝试消除个人的可识别性。但是,DP只能在一定程度上防止用户数据泄露,并不能完全排除个人身份。此外,DP 下的数据交换仍然需要数据在组织之间转手,这可能是 GDPR 等严格法律所不允许的。此外,DP 方法在机器学习中是有损的,因为在注入噪声后建立的模型可能在预测精度上表现不令人满意。

最近,谷歌引入了联邦学习 (FL) 框架并将其部署在 Android 云上。 基本思想是允许单个客户端仅将模型更新到聚合模型的中央服务器,而不是将原始数据上传。 谷歌进一步引入了安全聚合协议,以确保模型参数不会将用户信息泄漏到服务器。 该框架也称为横向联邦=或数据分区联邦,其中每个分区对应于从一个或多个用户收集的数据样本的子集。

本文考虑了另一种情况,即多方协作构建他们的机器学习模型,同时保护用户和数据隐私。 我们的设置如图 2 所示,因为数据是按不同方之间的特征划分的,此场景通常被称为纵向联邦。 此设置具有广泛的实际应用。 例如,金融机构可以利用第三方的替代数据来提高用户和中小企业的信用评级。 来自多家医院的专利记录可以一起用于诊断。 我们可以将位于不同方的数据看作是对不同方的所有数据进行并集得到的虚拟大数据表的一个子集。

不同参与方的数据拥有以下性质:

  • 大数据表是垂直分割的,或者说按特征分割的;
  • 只有 data provider 有 label 信息;
  • 有一些用户是被所有参与方所共同拥有的。

我们的目标是让各方共同构建预测模型,同时保护各方不将数据信息泄露给其他方。 与大多数现有的隐私保护数据挖掘和机器学习工作相比,我们设置的复杂性显着增加。 与横向联邦不同,纵向联邦设置需要更复杂的机制来分解每一方的损失函数。 此外,由于只有一个数据提供者拥有标签信息,我们需要提出一种安全协议来指导学习过程,而不是在各方之间明确共享标签信息。 最后,数据机密性和隐私问题防止各方暴露自己的用户。 因此,实体对齐也应该以足够安全的方式进行。

提升树(Boosting Tree)是一种高效且应用广泛的机器学习方法,由于其高效性和可解释性强,在许多机器学习任务中表现出色。例如,XGBoost 已广泛用于各种应用,包括信用风险分析和用户行为研究。在本文中,我们提出了一种新颖的端到端隐私保护提升树算法框架,称为 SecureBoost,以在联邦环境中实现机器学习。Secureboost 已在开源项目 FATE 中实施,以支持工业应用。我们的联邦学习框架分两步运行。首先,我们在隐私保护约束下找到各方之间的共同用户。然后,我们协作学习共享分类或回归模型,而不会相互泄露任何用户信息。本文的主要贡献总结如下:

  • 我们正式定义了在联邦学习设置中对垂直分区数据进行隐私保护机器学习的新问题(纵向联邦)。
  • 我们提出了一种协同训练高质量提升树模型的方法,同时将训练数据保持在多方的本地。我们的协议不需要受信任的第三方的参与。
  • 我们证明了我们的方法是无损的,因为它与任何将所有数据集中到一个中心位置的集中式非隐私保护方法一样准确。
  • 此外,除了安全证明之外,我们还讨论了使协议完全安全所需的条件。

三、背景知识&相关工作 

为了保护模型训练中数据的隐私,论文[18]提出利用差分隐私 (DP) 来学习深度学习模型。 最近,谷歌引入了一个联邦学习框架,通过在每个移动终端模型训练来防止数据传输。 其基本思想是每个本地移动终端使用本地数据来训练本地模型。 全局模型可以简单地通过平均所有局部模型来更新。 遵循相同的想法,不同的机器学习模型也在联邦环境下进行实现,包括决策树、线性/逻辑回归和神经网络。

上述所有方法都是为水平分区的数据设计的。与纵向 FL 不同,横向 FL 需要更复杂的机制来分解每一方的损失函数。纵向 FL 的概念首先在线性模型和神经网络上提出了对应的协议。纵向上面也有一些方法,比如决策树。然而,这些方法必须揭示给定属性的类分布,这将导致潜在的安全风险。此外,它们只能处理离散数据,这对于现实生活场景不太实用。相比之下,本文提出的方法保证了对数据的保护,并且可以很容易地应用于连续数据种。 [29] 中提出的另一项工作通过泰勒展开近似非线性逻辑损失,对加密的纵向数据联合执行逻辑回归,这将不可避免地损害模型的性能。与这些方案相比,本文提出方法本质上是无损的

四、问题阐述 

 Active Party: 我们将主动方定义为同时拥有数据矩阵和类标签的数据提供者。 由于类标签信息对于监督学习是必不可少的,因此主动方自然会承担起联邦学习中的主导服务器的责任。

Passive Party:我们将只有数据矩阵的数据提供者定义为被动方。 被动方在联邦学习环境中扮演客户的角色。

五、SecureBoost 下的联邦学习

作为最流行的机器学习算法之一,梯度提升决策树在许多机器学习任务中表现出色,如欺诈检测、特征选择和产品推荐。 在本节中,我们在联邦学习设置中提出了一种称为 SecureBoost 的新型梯度提升算法。 它包括两个主要步骤。 首先,它在隐私约束下进行数据对齐(其实就是PSI)。 其次,它协同学习一个共享的梯度提升树模型,同时对所有训练数据保密。后文详细解释。

我们的第一个目标是在所有参与方中找到一组共同的数据样本,从而用这些数据建立一个联合模型 M。当数据在各方之间进行垂直划分时,不同方持有不同但部分重叠的用户,可以通过他们的 ID 来识别这些用户。问题是如何在不暴露非共享部分的情况下找到各方的共同数据样本。为了实现这一目标,我们在数据库间求交做隐私保护的数据对齐。

数据对齐之后,我们现在考虑不侵犯隐私的情况下,在多方上联合构建树模型的问题。在进一步讨论算法的细节之前,我们首先介绍联邦学习的一般框架。在联邦学习中,典型的迭代包括四个步骤。首先,每个客户端从服务器下载当前的全局模型。其次,每个客户端根据其本地数据和当前全局模型计算更新的模型。第三,每个客户端在加密的情况下将模型更新发送回服务器。最后,服务器聚合这些模型更新并构建更新的全局模型。

遵循联邦学习的一般框架,我们看到在联邦学习的设置中设计一个隐私保护的树提升框架,本质上我们必须回答以下三个问题:(1)每个客户端(即被动方) 不拿到标签的情况下如何根据本地数据计算更新的模型? (2)服务器(即主动方)如何聚合所有更新的模型,得到一个新的全局模型? (3)如何在不泄露任何信息的情况下,在各方之间共享更新后的全局模型?为了回答这三个问题,我们首先在非联合环境中回顾 XGBoost。

基于观察 (1) ,联邦情况下的拆分查找算法与 XGBoost 基本相同,只是为了适应联邦学习框架进行了细微调整。由于特征分离,SecureBoost 需要不同方为每个拆分存储一定的信息,以便对新样本进行预测。

六、联邦推理

本节描述了如何使用学习模型(分布在各方之间)对新实例进行分类,即使要分类的实例的特征是私有的并且分布在各方之间。由于每一方都知道自己的特征,但对其他方一无所知,因此我们需要一个安全的分布式推理协议来根据做出的决定来控制从一方到另一方的传递。为了说明推理过程,我们考虑一个具有三方的系统,如图 3 所示。具体而言,第一方是主动方,它收集的信息包括用户的每月账单支付、教育以及标签,用户X6 是否做过按时付款。乙方和丙方为被动方,分别持有年龄、性别、婚姻状况和授信额度等特征。假设我们希望预测用户X6 是否会按时付款,那么所有参与方都必须协作进行预测。整个过程由主动方协调。从根开始,通过参考记录[party id:1,record id:1],主动方知道party 1持有根节点,从而要求party 1从其查找表中检索相应的属性Bill Payment基于记录 id 1。由于分类属性是账单支付,并且参与方 1 知道用户 X6 的账单支付是 4367,小于阈值 5000,所以它决定它应该向下移动到它的左子节点节点1. 然后,主动方引用节点1关联的记录[party id:3,record id:1],要求3方进行同样的操作。这个过程一直持续到到达叶子为止。 

七、理论分析 

所谓的证明过程其实就是把 Paillier 同态加密的性质又放过来了一遍。又由于同态加密不像加噪声的机制一样,本身就是不会对数据造成影响,因此很显然,SecureBoost 是无损的。

八、安全性探讨

SecureBoost 避免在训练和推理过程中将各方持有的数据记录泄露给其他人,从而保护各方数据的隐私。但是,我们也强调在协议执行期间可能会有一些泄漏,这对于被动方和主动方来说是完全不同的。

九、实验分析

本文采用了以下两个公开数据集:

  • Credit 1: 分类数据集,表示每个人是否受到严重的经济困难,包含15万个样本10个属性。
  • Credit 2: 也是信用评分数据集,与预测用户是否会按时付款的任务相关。 它总共包含 30000 个数据和 25 个属性。

实验采用了 2/3 数据训练,剩下的用于测试。实验过程用了两方测试,也就是两方下的纵向联邦学习。为了公平比较不同的方法,最大树深度设置为了3,对于所有的方法,用于拟合单个回归树的样本比例为 0.8,学习率为 0.3。 加密方案采用 Paillier,密钥大小为 512 位。 实验环境是 8GB RAM 和 Intel Core i5-7200u CPU。

Scalability

SecureBoost 的效率可能会通过收敛速度和运行时间来反映,这可能会受到 (1) 单个回归树的最大深度的影响; (2) 数据集的大小。在本小节中,我们进行收敛分析以及研究所有变量对学习运行时间的影响。所有实验均在数据集 Credit2 上进行。

首先,我们对收敛速度感兴趣。我们将 SecureBoost 的收敛行为与非联邦算法比较,包括 GBDT 和 XGBoost。从图 4 可以看出,SecureBoost 在训练数据集上显示出与其他非联邦方法相似的学习曲线,甚至在测试数据集上的表现略好于其他方法。此外,SecureBoost 的训练和测试损失的收敛行为与 GBDT 和 XGBoost 非常相似。(我没搞懂,我觉得收敛速度应该和XGBoost一样的啊)

 接下来,为了研究单个树的最大深度如何影响学习的运行时间,我们在 {3,4,5,6,7,8} 之间改变单个树的最大深度,并记录运行时间。如图 5 (a) 所示,运行时间几乎随着单个树的最大深度线性增加,这表明我们可以用相对较少的额外时间来训练深度树,这在实践中非常有吸引力,尤其是在大型场景中数据。

最后,我们研究了数据大小对我们提出的系统运行时间的影响。我们通过求点积对特征进行增广。我们将单个回归树的最大深度固定为 3,并改变 {50, 500, 1000, 5000} 中的特征数和 {5000, 10000, 30000} 中的样本数。我们比较了运行时间,以研究每个变体如何影响算法的效率。我们对图 5 (b) 和图 5 (c) 进行了类似的观察,这意味着样本数和特征数对运行时间的贡献相同。此外,我们可以看到我们提出的框架即使在相对大的数据下也能很好地扩展。

Performance of RL-SecureBoost

为了研究 RL-SecureBoost 在安全性和预测准确性方面的性能,我们的目标是回答以下问题:(1)第一棵树是否仅基于主动方持有的特征,学习到足够的信息以减少信息泄漏? (2) 与 SecureBoost 相比,RL-SecureBoost 是否存在精度损失?

 接下来,为了研究 RL-SecureBoost 的预测性能,我们将 RL-SecureBoost 与 SecureBoost 在第一棵树的性能和整体性能方面进行比较。我们考虑常用的指标,包括准确度、ROC 曲线下面积 (AUC) 和 f1-score。结果如表 2 所示。正如观察到的,与 SecureBoost 相比,RL-SecureBoost 在几乎所有情况下的表现都一样好。我们还在 RL-SecureBoost 和 SecureBoost 之间进行了pairwise Wilcoxon signed-rank test。比较结果表明,RL-SecureBoost 与 SecureBoost 一样准确,显着性水平为 0.05。 RL-SecureBoost 的无损特性仍然得到保证。

十、总结

本文提出了一种无损隐私保护树提升算法 SecureBoost,以在纵向联邦环境下训练一个高质量的提升树模型。 我们从理论上证明,我们提出的框架与非联邦算法一样准确。 此外,我们分析了协议执行过程中的信息泄露,并提出了可证明的减少泄露的方法。

十一、启示

SecureBoost是微众银行提出的一个联邦学习算法,实质上是将XGBoost使用联邦学习的方式建模。首先,回顾一下XGBoost算法原理,如下图:

(1)首先是XGBoost的损失函数,gi和hi分别是一阶导数和二阶导数

(2)Ij是划分到每个叶子结点的样本集合

(3)Obj(t)是每一轮优化的目标(loss),经过合并,变形之后,可以看出当前每轮的损失函数只和每个样本的一阶导数和二阶导数的和有联系。换句话说,只要知道每一轮优化的一阶导数和二阶导数就可以计算出loss了(这一点很关键,很重要,关系到后面的同态加密)。

结点分裂的标准如下:

原理很简单,用分裂之后的分数减去未分裂的分数(和信息增益的概念差不多),这个分数的计算也是和一阶导数和二阶导数有关的。

XGBoost结点分裂的过程

(1)对于每个特征,随机生成分裂点(阈值),比如年龄,分裂结点定在0,18,26,30...类似;

(2)对每个特征,在遍历每个样本之后,以生成梯度直方图,这一步实际上是选择该分裂哪个特征,实际上,这一步是并行的。如在计算年龄和受教育程度的梯度直方图时(用来计算信息增益),两个特征之间是相互没有影响的。

(3)选择好改分裂的特征之后,(1)中对于每个特征有了分裂的阈值,按照这个进行分裂,计算左右叶子结点分数(看看G(L)的计算公式,这个地方体现了梯度提升的思想(面试考点)),根据gain的共识,计算最大的信息增益。后面就是重复的步骤了。

注:具体的很多细节,需要大家自己去啃论文了

整个XGBoost的训练过程过了一遍,实际上,大家记住一个地方就可以了:在结点分裂的时候,有一阶导数和二阶导数即可计算loss函数和信息增益gain。

用联邦学习的方式训练XGBoost叫做SecureBoost, 这时候可能大家可能有几个疑问:

(1)每一方的数据不都是保密的吗,那还怎么计算一阶导数和二阶导数呢?

(2)既然每方的数据都是保密的,那我怎么知道一个结点分裂完之后,下一个结点该谁分裂了呢?

SecureBoost的整个流程如下图:

几个概念:

active party:主动方,有数据,有标签;

passive party:被动方,有数据,没标签;

(1)party2分裂第一个结点,即根结点。这是SecureBoost中为了防止数据泄漏的所做的一个操作(重点),意思就是说,第一个结点是只有标签的一方分裂的(主动方),这样的话,即使你根据后面的分裂结果,最多只能反解到第二层,根结点你是解不出来的,相当于做了一个差分隐私;

(2)party2分裂根结点后,将一阶导数g1和二阶导数g2经过经过同态加密,传给party1,了解同态加密的性质可知,知道加密后的g1和h1,他们加密后再相加的结果等于他们先相加再加密的结果。一阶梯度的和 and二阶梯度的和传过来之后,party1就可以计算loss和gain了,就可以训练了。party1分裂之后,把自己分裂所得的一阶导数和二阶导数经过加密之后传给party2,这样就实现了active party和passive party的通信;

(3)party2 和3的过程同(2);

上面的过程是生成一棵树的过程,后面树的生成过程实质上是重复的。

如何保证主动方的标签信息不会泄漏?

secureBoost提出了completely secureBoost,主要思想是:第一颗树完全由主动方的特征构建,被动方完全不参与,因此,被动方只能接触到经过第一颗树后的残差,相当于做了一个差分隐私。这样就可以保证,主动方的标签基本上不会泄漏(论文中有详细公式证明,而且经过实验验证)。

下面这幅图是从整体上看整颗树构建过程,上面是从算法角度看(如同态加密传递梯度)

我们可以带着问题来看上面的图,在看SecureBoost论文的时候,我想到的几个问题是:

(1)一个结点分裂完了之后,怎么样知道下个结点该谁分裂了,是不是有一个类似于管理员类的角色来全局统筹;

(2)中间的信息真的不会泄漏吗?是真的安全吗

先来回答第一个问题:确实有一个类似于管理员的角色,就是active party 即主动方,有标签的一方,它知道整颗树的结构,但是它只知道自己分裂的结点的具体信息,如字段名,分裂阈值等,对于其他被动方,它只知道,到了这个结点,该你分裂了,但是不知道具体是哪个特征分裂,分裂阈值是多少。

从整体上看,整颗树的结构如上图,实质上这也是主动方手里掌握的结构,但是除了自己的结点,对于其他的结点,他只知道party id(该谁分裂),Record ID(该谁的第几个特征分裂),并不知道具体的含义(重点)。

注:需要提到一点,每个叶子结点只有主动方知道,因为叶子结点的计算需要用到标签(面试考点)。

通过上面的过程,我们就构建了SecoreBoost模型,下面是他的推理过程(预测过程):
参考:

论文阅读-SecureBoost: A Lossless Federated Learning Framework - 知乎 (zhihu.com)

(29条消息) 微众银行联邦学习SecureBoost论文学习笔记_bemyself24_1的博客-CSDN博客 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部