纵向联邦学习及相关算法

二. 纵向联邦学习

简单一句话介绍:纵向联邦学习的参与方是用户群体相同,特征空间不同(比如同一地区的银行和电商平台)

纵向联邦学习步骤

  1. 对齐共同用户(不暴露各自数据)
  2. 加密模型训练

(1) C创建密钥对,将公钥发送给A,B

(2)   A,B对中间结果进行加密和交换,中间结果帮助计算梯度和损失值

(3) A B加密梯度,并加上附加掩码(防止C窥探信息),B还会计算加密损失,A B将结果发送给C

(4)C解密 将结果给A B,A B解除掩码,更新模型。

接下来介绍算法:安全联邦线性回归和安全联邦提升树

  1. 安全联邦线性回归

保护每一个参与方的本地数据

用梯度下降的方法训练一个线性回归模型,为了保护数据隐私,还要用安全的方法计算模型损失和梯度。

本节要用的符号如图所示:

加密的梯度和损失函数计算如下:

A和B先初始化本地的模型参数,C作为协作方创建密钥对,并将公共密钥发给参与方;A计算中间结果,发给B,B计算中间结果分给A,且将加密后的损失发给C;然后A,B计算加了掩码的加密梯度,发给C,C解密A发送的梯度发给A,解密B发送的梯度发给B,最后更新参与方更新模型参数。C全程只是起了加密解密的作用,A和B的信息不会泄露,加了掩码后,C也不能窥探到参与方信息。这个算法安全系数很高。

  1. 安全联邦提升树

XGBoost相关知识不在此赘述。

𝑔𝑖和h𝑖是损失函数上的一阶和二阶梯度;

主动方是不仅拥有数据也拥有样本特征和样本标签,被动方只有数据,但是梯度需要标签才能计算出来,故𝑔𝑖和h𝑖必须由主动方得到,而且需要所有的被动方都知道𝑔𝑖和h𝑖,为了保护梯度,需要对他们进行同态加密。

SecureBoost算法训练过程:

 1. 主动方计算𝑔𝑖和h𝑖,然后用加法同态算法加密,主动方将𝑔𝑖和h𝑖发给所有的被动方;

     2. 被动方将当前样本空间的所有样本特征进行分桶,将每个特征的特征值映射到桶中。基于分桶后的特征值,被动方将聚合相应的加密梯度统计信息,将结果给主动方;

3. 主动方对被动方发来的信息进行解密,根据算法5-2算出全局最优分割,将(特征id)𝑘op𝑡和(阈值id)𝑘op𝑡返回给被动方;

4. 被动方根据从主动方发送的阈值和特征值,对当前样本空间进行划分,建立一个查找表[id 𝑘op𝑡  𝑘op𝑡],并将划分后节点左侧的样本空间𝐼𝐿发给主动方;

5. 主动方根据收到的样本空间对当前节点进行划分,并将当前节点与[参与方id,记录id]关联;

6. 迭代2-5,直到达到停止条件或者最大深度,最终主动方知道整个树的结构。

在2中,被动方进行特征映射的算法:聚合梯度统计值

在3中,主动方进行的算法:

SecureBoost算法预测过程

将新的未标注的样本进行分类,样本分散在各个参与方,从主动方的root开始

1. 主动方查询当前结点的[参与方id,记录id]记录,根据这个记录,主动方向节点相关的参与方发送待标注样本的id和记录id,并询问下一步方向(向左子节点或者右子节点);

2. 被动方收到主动方发送的待标注样本的id和记录id后,将待标注样本的id和本地的[记录id,特征,阈值]中的阈值进行比较,得到下一步的搜索方向。然后,该被动方将搜索结果发给主动方;

3. 主动方收到被动方的搜索结果,前往相对应的节点;

4. 迭代1-3,直到到达叶节点得到分类标签以及该标签的权值。

重复上述,遍历所有决策树,最终对所有决策树得到的类标签进行加权求和,得到最终类标签。

要从零开始实现纵向联邦学习算法,我们可以按照以下步骤进行操作: 1. 获取数据集:首先,我们需要获取用于训练和测试的数据集。你可以从公开的数据集中获取数据,比如Boston Housing数据集。 2. 数据集切分:将获取到的数据集切分为纵向联邦的形式。这意味着将数据集分成多个部分,分配给不同的参与方,每个参与方只能访问自己分配到的数据。 3. 数据输入:在联邦学习中,每个参与方需将自己的数据提供给联邦学习平台。参与方可以使用FATE平台提供的API将数据输入到平台中。 4. 样本对齐:在纵向联邦学习中,不同参与方的数据可能存在差异。为了进行联邦学习,需要进行样本对齐,即确保不同参与方的数据在特征上保持一致。可以使用特征对齐的方法来实现样本对齐。 5. 模型训练:在联邦学习中,可以使用线性回归等模型来进行训练。每个参与方使用自己的数据进行模型训练,然后将训练好的模型参数上传到联邦学习平台上。平台会进行模型聚合,得到全局的模型参数。 6. 模型评估:在联邦学习中,模型评估是一个重要的步骤。可以使用测试集来评估训练好的模型在新数据上的性能。可以计算模型的准确率、均方误差等指标来评估模型的表现。 通过以上步骤,就可以从零开始实现纵向联邦学习算法。利用FATE平台,可以更加方便地进行数据切分、数据输入、样本对齐、模型训练和模型评估等操作。希望这个回答对你有帮助!
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值