二. 纵向联邦学习
简单一句话介绍:纵向联邦学习的参与方是用户群体相同,特征空间不同(比如同一地区的银行和电商平台)
纵向联邦学习步骤
(1) C创建密钥对,将公钥发送给A,B
(2) A,B对中间结果进行加密和交换,中间结果帮助计算梯度和损失值
(3) A B加密梯度,并加上附加掩码(防止C窥探信息),B还会计算加密损失,A B将结果发送给C
(4)C解密 将结果给A B,A B解除掩码,更新模型。
接下来介绍算法:安全联邦线性回归和安全联邦提升树
保护每一个参与方的本地数据
用梯度下降的方法训练一个线性回归模型,为了保护数据隐私,还要用安全的方法计算模型损失和梯度。
本节要用的符号如图所示:
加密的梯度和损失函数计算如下:
A和B先初始化本地的模型参数,C作为协作方创建密钥对,并将公共密钥发给参与方;A计算中间结果,发给B,B计算中间结果分给A,且将加密后的损失发给C;然后A,B计算加了掩码的加密梯度,发给C,C解密A发送的梯度发给A,解密B发送的梯度发给B,最后更新参与方更新模型参数。C全程只是起了加密解密的作用,A和B的信息不会泄露,加了掩码后,C也不能窥探到参与方信息。这个算法安全系数很高。
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,直到到达叶节点得到分类标签以及该标签的权值。
重复上述,遍历所有决策树,最终对所有决策树得到的类标签进行加权求和,得到最终类标签。