文章目录
一、预处理和隐私求交
1.预处理
- DataFrame:联邦表格数据的封装,由多个参与方的数据块构成,支持数据水平切分、垂直切分和混合切分,分别对应3 组 API:HDataFrame、VDataFrame、MixDataFrame。
- FedNdarray:联邦 ndarray 的封装,由多个参与方的数据块构成,支持水平和垂直切分,对应统一的 API: FedNdarray
注:处理过程中有些会计算并公开统计值(使用前评估是否包含隐私信息)
2.隐私求交PSI(Private Set Intersection)
隐私求交:使用密码学方法,获取两份数据内容的交集的算法。不泄露任务交集以外的信息。
在垂直拆分场景中,隐私求交常用于第一步的数据对齐,然后进一步做数据分析或机器学习建模。
在隐语中 PSI 有两种使用方式():
- 使用spu.psi_csv等接口
-, alice_psi_path = tempfile.mkstemp()
-, bob_psi_path = tempfile.mkstemp()
spu.psi_csv{
key="uid",
input_path = {alice: alice_path, bob: bob_path},
output_path = {alice: alice_psi_path, bob: bob_psi_path},
receiver="alice",
protocol="ECDH_PSI_2PC",
sort=True,
)
- 使用 data.vertical.read_csv 接口
from secretflow.data.vertical import read_csv as v_read_csv
vdf = v_read_csv(
{alice: alice_path, bob: bob_path},
# 以下参数在读取数据的时候自动完成psi,实现样本对齐
# 如果不传这些参数,需要先保证数据对齐
spu=spu,
keys="uid",
drop_keys="uid",
psi_protocl="ECDH_PSI_2PC",
)
vdf.columns
二、决策树模型和线性回归模型
1.决策树模型
SS-XGB:基于MPC协议 (安全性更高、通信成本更高)
SecureBoost:垂直联邦
水平XGBoost:水平联邦
2.线性回归模型
三、神经网络算法
隐语提供了两种神经网络算法:水平联邦学习、垂直拆分学习。
水平联邦学习和垂直拆分学习都属于非可证安全算法,其安全性需要根据场景具体分析。可以通过一些安全加固组件(安全聚合、差分隐私、稀疏化等)加强安全性
1.水平联邦学习
- 水平联邦学习 FLModel是一个通用的范式,而不是一个具体的模型或算法,是封装好的水平联邦模型训练器
- 支持 TensorFlow 和 PyTorch 两种后端,可以使用 tf 或 torch 原生的方式编写模型代码,然后使用FLModel 训练。同时,也可以直接使用各种封装好的模型库,比如:torchvision 和 tf.keras.applications
- 可自定义数据加载器,支持DataFrame、文件、图片等数据加载器
- 可选择内置或自定义的安全聚合算法以及联邦学习策略。
2.垂直拆分学习
-
垂直拆分学习SLModel是一个通用的范式,封装好的垂直联邦模型训练器
-
支持 TensorFlow 和 PyTorch 两种后端
-
与水平联邦相比,垂直拆分学习的架构略有不同,其模型被拆分成 2 份、3 份或者更多,分别分布在不同的参与方。建模时需要针对拆分学习架构重新设计模型结构。为此,隐语提供了一个拆分好的模型库:sf.ml.nn.applications
垂直拆分学习:各参与方保留模型的一部分网络结构。所有的子网络结构组合在一起,则构成一个完整的网络模型
水平联邦学习:各参与方保留完整的模型 -
可自定义数据加载器
-
可选择内置或自定义的通信优化算法,隐语内置了多种稀疏化、量化压缩算法
-
可选择内置或自定义的垂直拆分策略,隐语内置了多种加速训练的策略算法