联邦进修是机械进修中一个非常火热的领域,指多方在不传递数据的情况下共同训练模型。随着联邦进修的发展,联邦进修体系也层出不穷,例如 FATE, FedML, PaddleFL, TensorFlow-Federated 等等。然而,大部分联邦进修体系不支撑树模型的联邦进修训练。相比于神经网络,树模型具有训练快,可解释性强,适合表格型数据的特点。树模型在金融,医疗,互联网等领域有广泛的应用场景,比如用来做广告推荐、股票猜测等等。决策树的代表性模型为 Gradient Boosting Decision Tree (GBDT)。由于一棵树的猜测能力有限,GBDT 通过 boosting 的方法串行训练多棵树,通过每棵树用来拟合当前猜测值和标签值的残差的方式,最终达到一个好的猜测结果。代表性的 GBDT 体系有 XGBoost, LightGBM, CatBoost, ThunderGBM,其中 XGBoost 多次被 KDD cup 的冠军队伍所使用。然而,这些体系都不支撑联邦进修场景下的 GBDT 训练。近日,来自新加坡国立大学和清华大学的研究者提出了一种专注于训练树模型的联邦进修新体系 FedTree。
论文地址:https://github.com/Xtra-Computing/FedTree/blob/main/FedTree_draft_paper.pdf项目地址:https://github.com/Xtra-Computing/FedTreeFedTree 体系介绍FedTree 架构图如图 1 所示,共有 5 个模块: 接口,情况,框架,隐衷护卫以及模型。
图 1: FedTree 体系架构图接口:FedTree 支撑两种接口:命令行接口和 Python 接口。用户只需给定参数(参与方数量,联邦场景等),就可以用一行命令来运行 FedTree 举行训练。FedTree 的 Python 接口和 scikit-learn 兼容,可以调用 fit() 和 predict() 来举行训练和猜测。情况:FedTree 支撑在单机上模拟部署联邦进修,和在多机上部署分布式联邦进修。在单机情况上,FedTree 支撑将数据举行划分成多个子数据集,每一个子数据集作为一个参与方举行训练。在多机情况上,FedTree 支撑将每一个机械作为一个参与方,机械之间 通过 gRPC 举行通信。同时,除了 CPU 以外,FedTree 支撑使用 GPU 来加速训练。框架:FedTree 支撑横向和纵向联邦进修场景下 GBDT 的训练。横向场景下,分别参与方有着分别的训练样本和相同的特征空间。纵向场景下,分别参与方有着分别的特征空间和相同的训练样本。为了保证性能,在这两种情境下,多有参与方都共同参与每一个节点的训练。除此之外,FedTree 还支撑集成进修,参与方并行地训练树之后再举行聚拢,以此减少参与方之间的通信开销。隐衷:由于训练过程中传递的梯度可能会泄露训练数据的信息,FedTree 提供分别的隐衷护卫方法来进一步护卫梯度信息,包括同态加密 (HE) 和安全聚拢 (SA)。同时,FedTree 提供了差分隐衷来护卫最终训练得到的模型。模型:以训练一棵树为基础,FedTree 通过 boosting/bagging 的方法支撑训练 GBDT/random forest。通过设置分别的损失函数,FedTree 训练得到的模型支撑多种任务,包括分类和回归。实验表 1 总结了分别体系在 a9a, breast 和 credit 上的 AUC 和 abalone 上的 RMSE,FedTree 的模型结果和用所有数据训练 GBDT(XGBoost, ThunderGBM)以及 FATE 中的 SecureBoost (SBT) 几乎一致。而且,隐衷护卫策略 SA 和 HE 并不会影响模型性能。
表 1: 分别体系的模型结果比较表 2 总结了分别体系每棵树的训练时间(单位:秒),可以看到 FedTree 相比于 FATE 快了很多,在横向联邦进修场景下能达到 100 倍以上的加速比。
表 2: 分别体系每棵树的训练时间比较更多研究细节请参考 FedTree 论文原文。
原创文章,作者:机器之心,如若转载,请注明出处:https://www.iaiol.com/news/23029