联邦学习&&集成学习

1.Federated Forest
IEEE Transactions on Big Data 2020

  该文章在纵向联邦学习(客户端有相同的样本但特征空间不相同)方向上提出了一个基于CART树和bagging的联邦森林框架,它既能处理分类问题,又能处理回归问题。这个框架具有一定的隐私保护,预测是通信负担不高。

  首先,先本文假设有数据标签y为主服务器(只有一个),没数据标签的为客户机,主服务器和客户端加起来总数为M,主服务器有标签y,并将加密后的标签y分发给其它客户端。主服务器和客户端的数据特征都不相同。数据例子的编号都已经对齐,每个例子有唯一的ID。
在这里插入图片描述

模型构建
  主服务器首先从整个数据中随机选择特征和样本的子集。然后主服务器将私下通知每个客户机所选的特性和样本id。对于选定的特征,主服务器将私下通知每个客户端。例如,如果主服务器选择了十个特征,而客户机1只拥有其中的三个特征,则客户机1将仅显示这三个特征已被选中。它永远不会知道在全局范围内选择了多少特征,更不用说这些特征是什么了。在建树过程中,经常检查预剪枝条件。如果条件成立,客户机和主机将相应地创建叶节点。如果不触发终止条件,则所有客户端进入分枝状态,通过比较基尼值,选择当前树节点的最佳拆分特征。
  首先,每个客户机确定局部最优分割特征。然后主服务器收集所有局部最优特征和基尼值,从而找到全局最优特征。第二,服务器通知提供全局最佳特征的客户机,相应的客户机将拆分样本并将数据分区结果(分为左子树和右子树的样本ID)发送到主服务器。对于当前树节点,只有提供最佳拆分功能的客户端才会保存此分枝的详细信息。其他客户机只知道所选特征不是由他们自己贡献的。分枝信息如阈值和分割特征对其它客户机来说也是未知的。最后,递归地创建子树并返回当前树节点。在建模中,如果子树节点创建成功,则父节点不需要保存子树的样本id。否则,如果连接断开,可以很容易地从断点恢复建模(最后两句我也没理解)

模型保存
  树预测模型由两部分组成:树结构和用于每个分枝的特征和阈值等分割信息。由于森林是由所有客户机协同工作构建的,因此每个客户机上的每棵树的结构都是相同的。但是,对于给定的树节点,客户机可能存储详细信息。只有主服务器能够存储完整的模型。对于每个树节点,只有当客户端提供了分枝特征时,才会存储相应的分枝阈值。否则,客户端将不在当前节点存储任何内容,而只保留节点结构。我们将完整的树节点表示为 T T T,并将客户端i存储的没有完整细节的树节点表示为 T i T_{i} Ti。因为树形结构是一致的,所以 T i ⊂ T T_{i} \subset T TiT ,并且 T 1 ⋂ T 2 ⋂ T 3 . . . ⋂ T M = L T_{1} \bigcap T_{2} \bigcap T_{3}... \bigcap T_{M}=L T1T2T3...TM=L,其中是叶子节点集合(上面说了主服务器会将加密后标签y分发给其它客户端,所以每一个叶子节点对应一个加密后的y)。完整的树是由全部客户端的树的并集,即 T i ⊂ T T_{i} \subset T TiT ,并且 T 1 ⋃ T 2 ⋃ T 3 . . . ⋃ T M = T T_{1} \bigcup T_{2} \bigcup T_{3}... \bigcup T_{M}=T T1T2T3...TM=T

模型预测
  作者设计了一种预测算法,每次预测只需对整个森林的每棵树进行一轮集体通信。首先,每个客户机使用本地存储的模型来预测样本。对于第i个客户端上的树 T i T_{i} Ti,每个预测样本从根节点进入 T i T_{i} Ti,最终会落入一个或多个叶子节点中。当样本经过每个节点时,如果模型将分枝信息存储在该节点上,则通过检查分枝阈值确定该样本进入左子树或右子树。如果模型在此节点没有分枝信息,则示例同时输入左子树和右子树。递归地执行树节点的路径确定,直到每个样本落入一个或多个叶节点。当这个过程完成后,客户端i上的树 T i T_{i} Ti的每个叶子节点将保存一批预测样本,我们用 S i l S^{l}_{i} Sil来表示属于树模型 T i T_{i} Ti的叶节点 l l l的预测样本,其中 l ⊂ L l \subset L lL
  最后,对于每个客户端的 S i l S^{l}_{i} Sil,我们取 { S i l } i = 1 M \{S^{l}_{i}\}^{M}_{i=1} {Sil}i=1M的交集,结果为 S l S^{l} Sl,将 S l S^{l} Sl与主服务器的标签y对应即可得到预测结果。其中为什么取 { S i l } i = 1 M \{S^{l}_{i}\}^{M}_{i=1} {Sil}i=1M的交集,论文中有详细证明,感兴趣的可以去看论文,我这里就不说了。


2.Practical Federated GradientBoosting Decision Trees
AAAI 2020

摘要
  梯度提升决策树(GBDT)是近年来发展起来的一种非常成功的方法,在机器学习和数据挖掘的竞争中取得了许多进展。最近有一些关于如何在联邦学习环境中训练gbdt的研究。在本文中,我们关注横向联邦学习,其中具有相同特征的数据样本被分布多方中。但是现有的研究在实际应用中不够有效。它们要么由于使用大量的数据转换(如安全共享和同态加密)而效率低下,要么由于差异隐私设计而导致模型精度低下。本文研究了一个具有宽松隐私的实用联邦环境约束条件。在这种环境下,一个不诚实的一方可能获得其他方数据的一些信息,但是不诚实的一方仍然不可能得到其他方的实际原始数据。具体地说,每一方通过利用基于局部敏感散列的相似性信息来提升大量的树。我们证明了我们的框架是安全的,不会将原始记录暴露给其他方,同时保持了训练过程中的过度计算低。我们的实验研究表明,与单独使用各方本地数据进行的常规训练相比,我们的方法可以显著提高预测精度,利用各方数据达到与原GBDT相当的精度。

算法细节
  在了解算法之前,需要知道
  1.GBDT树的构造过程。我这里就不介绍了,网上有很多GBDT的学习资料。
  2.Locality-Sensitive Hashing (LSH)。LSH函数具有以下性质:(1)两个相邻的点的哈希值有很大的概率是相同的。意思就是如果LSH函数的输入相似,那么输出有很大的概率是相同的;(2)两个不相邻的点的哈希值有很大的概率是不相同的;

  本文假设有 M M M各参与方,每个参与方被标记为 P i ( i ∈ [ 1 , M ] ) P_{i}(i \in[1,M]) Pi(i[1,M])。用 I M = { ( x i m , y i m ) } ( ∣ I M ∣ = N m , x i m ∈ R d , y i m ∈ R ) I_{M}= \{ (x^{m}_{i},y^{m}_{i})\}(|I_{M}|=N_{m},x^{m}_{i} \in R^{d},y^{m}_{i} \in R) IM={(xim,yim)}(IM=Nm,ximRd,yimR)来表示在 P m P_{m} Pm中的样本。对于每个参与方的样本都有一个全局的ID。

  下面正式介绍本文提出的算法Similarity based Federated Learning (SimFL)。这个算法分为两个阶段,分别是预处理阶段和训练阶段。

预处理阶段
  这个阶段的目的是为了让每个样本找到与其他参与方相似的样本ID。具体操作如下,对于每个参与方 P m P_{m} Pm生成一个矩阵 S m ∈ R N m × M S^{m} \in R^{N_{m} \times M} SmRNm×M,其中 S i j m S^{m}_{ij} Sijm表示在 P j P_{j} Pj参与方中与参与方 P m P_{m} Pm x i m x^{m}_{i} xim相似的样本ID。为了让每个参与方在不泄露原数据的情况下而获得这个矩阵,这就要用到上面提到的LSH函数了。
  先随机生成L个LSH函数,然后每个参与方都让本地的每个样本计算这L个LSH函数得到L个哈希值。当每个参与方都完成上述工作后就进行AllReduce操作。其中AllReduce操作的输入是全部参与方的样本ID和对应的L和哈希值,作用就是联合相同的哈希值样本ID。(至于输出是什么文中没有细讲,我也不太清楚,但并不影响我们接下来的理解。)进行AllReduce操作后每个参与方就会得到一个Hash Tables然后根据Hash Tables计算 S m S^{m} Sm,具体来说就是在参与方 S m S^{m} Sm中,对于一个样本 x i m x^{m}_{i} xim,在参与方 S j S^{j} Sj中相似的例子就是相同哈希值计数最高的那个样本。如果有多个样本具有相同的最高计数,我们随机选择一个相似的样本。以下算法描述
在这里插入图片描述

训练阶段
  在训练阶段中,每个参与方依次构建一棵树,构造完后并将这棵树分享给其它参与方。当参与方 P m P_{m} Pm构建树时,为了充分利用不同参与方样本之间的相似性信息,提出了一种新的树生成方法,即 Weighted Gradient Boosting(WGB)。其基本思想是,如果一个样本与许多其他样本相似,那么它是很重要的和具有有代表性的。因为梯度可以代表一个样本的重要性,我们建议在训练中使用加权梯度。接下来详细描述WGB。
对于一个样本 x q m ∈ I m x^{m}_{q} \in I_{m} xqmIm,让 W m q n = { k ∣ S k m n = q } W^{n}_{mq}=\{{k|S^{n}_{km}=q} \} Wmqn={kSkmn=q} W m q n W^{n}_{mq} Wmqn表示在 I m I_{m} Im中与样本 x q m x^{m}_{q} xqm相似的ID,即找到在所有参与方中与样本 I m I_{m} Im相似的ID。让 g q m g^{m}_{q} gqm h q m h^{m}_{q} hqm分别代表 x q m x^{m}_{q} xqm的第一梯度和第二梯度的损失函数。当 P m P_{m} Pm建树的第i轮是WGB最小化下面的损失函数,不拿看出,这个损失函数与正常的GBDT损失函数多了划红线的部分。
在这里插入图片描述
在这个损失函数中,不是仅仅用了 x q m x^{m}_{q} xqm的梯度 g q m g^{m}_{q} gqm h q m h^{m}_{q} hqm,而是用了与 x q m x^{m}_{q} xqm相似的样本的梯度的总和,用 G m q G_{mq} Gmq H m q H_{mq} Hmq来表示。
  文中也举了一个例子来解释:假设有两个参与方 P a P_{a} Pa P b P_{b} Pb,当计算参与方 P a P_{a} Pa的相似信息时,得到样本 x 1 a x^{a}_{1} x1a和样本 x 2 a x^{a}_{2} x2a的相似样本都是 x 3 b x^{b}_{3} x3b。然后当在 P a P_{a} Pa建树计算 x 3 b x^{b}_{3} x3b的梯度时,不仅仅只考虑 x 3 b x^{b}_{3} x3b。而是要考虑 x 1 a x^{a}_{1} x1a x 2 a x^{a}_{2} x2a以及 x 3 b x^{b}_{3} x3b。所以当一个参与方构建一棵树时,其它参与方计算梯度并加起来后在发给正在建树的参与方以减少通讯消耗。以下算法描述
在这里插入图片描述
下面这幅图是SimFL算法总体概述
在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值