纵向联邦学习及相关算法

二. 纵向联邦学习

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

纵向联邦学习步骤

  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,直到到达叶节点得到分类标签以及该标签的权值。

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

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值