[隐私计算学习笔记]5——基于隐私保护的机器学习算法介绍

目录

1. 预处理和隐私求交

1.1 预处理

1.2 隐私求交

2. 决策树模型和线性回归模型

2.1 决策树模型

2.2 线性回归模型

3. 神经网络算法

3.1 水平联邦学习

3.2 垂直拆分学习

4.小结

1. 预处理和隐私求交

1.1 预处理

        提供DataFrameFedNdarray两种数据结构:

  • DataFrame:联邦表格数据的封装,由多个参与方的数据块构成,支持数据水平切分、垂直切分和混合切分,分别对应3 组 API:HDataFrame、VDataFrame、MixDataFrame。
  • FedNdarray:联邦 ndarray 的封装,同样由多个参与方的数据块构成,支持水平和垂直切分,对应统一的 API: FedNdarray(支持水平和垂直切分,不支持混合切分)。

        安全提示:一些预处理算子会计算并公开用于辅助计算的统计值,如最大值、最小值,或者一些统计接口本身就会计算和公开统计值,如标准化转换中隐式包含最大值、最小值信息,使用前需要评估统计值是否可以被公开。

附:水平切分、垂直切分及混合切分

        水平切分:特征一致、样本不同;

        垂直切分:特征不同、样本对齐;

        混合切分:数据既包含水平切分,也包含垂直切分。先后无序。

1.2 隐私求交

        隐私求交(Private Set Intersection,PSI)是一种使用密码学方法,获取两份数据内容的交集的算法。PSI过程中不泄露任务交集以外的信息。在垂直拆分场景中,隐私求交常用于第一步的数据对齐,进一步做数据分析或机器学习建模。

在隐语中 PSI 有两种使用方式(调用同一个kernel,实现方式不同但完全等价)分别如下。同时隐语支持多种 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}, 

    #实现样本对齐
    spu=spu, 
    keys="uid", 
    drop_keys="uid",
    psi_protocl="ECDH_PSI_2PC",
)
vdf.columns

附:已实现的隐私求交协议(码住,后续专开一篇介绍)

  • Semi-honest ECDH-based two-party PSI protocol [HFH99]
  • Semi-honest ECDH-based three-party PSI protocol
  • Semi-honest OT-based two-party PSI protocol [KKRT16]
  • Semi-honest PCG/VOLE-based two-party PSI protocol (with improved communication efficiency) [BC22]
  • Semi-honest EC-OPRF based two-party Unbalanced PSI protocol
  • Differentially Private (DP) PSI Protocol [DP-PSI]

2. 决策树模型和线性回归模型

2.1 决策树模型

支持多种决策树算法(XGB),同时支持回归和二分类训练,可根据使用场景和安全性需求选用。

2.2 线性回归模型

支持多种线性回归模型,满足不同的使用场景,并有一些针对性的优化。

3. 神经网络算法

       根据使用场景不同,隐语提供了两种神经网络算法:水平联邦学习、垂直拆分学习。

安全提示:水平联邦学习和垂直拆分学习都属于非可证安全算法,其安全性需要根据场景具体分析。可以通过一些安全加固组件(安全聚合、差分隐私、稀疏化等)加强安全性。

3.1 水平联邦学习

  • API:secretflow.ml.nn.FLModel
  • 水平联邦学习 FLModel是一个通用的范式,而不是一个具体的模型或算法,是封装好的水平联邦模型训练器;
  • 支持自定义数据加载器(DataFrame、文件、图片等)、内置或自定义的安全聚合算法以及联邦学习策略;
  • 支持 TensorFlow 和 PyTorch 两种后端,可以使用 tf 或 torch 原生的方式编写模型代码,然后使用FLModel 训练。同时,也可以直接使用各种封装好的模型库,比如:torchvision 和 tf.keras.applications。
FLModel选项

3.2 垂直拆分学习

  • API:secretflow.ml.nn.SLModel
  • 垂直拆分学习SLModel也是一个通用范式,是封装好的垂直拆分模型训练器;
  • 支持自定义加载数据器(DataFrame、文件、图片等)、内置或自定义的通信优化算法(稀疏化、量化压缩算法)以及垂直拆分策略(加速训练);
  • 支持 TensorFlow 和 PyTorch 两种后端,可以使用 tf 或 torch 原生的方式编写模型代码,然后使用SLModel 训练;
  • 与水平联邦相比,垂直拆分学习的架构略有不同,其模型被拆分成 2 份、3 份或者更多,分别分布在不同的参与方。建模时需要针对拆分学习架构重新设计模型结构。为此,隐语提供了一个拆分好的模型库:sf.ml.nn.applications。
SLModel选项

4.小结

        本篇文章简单介绍了预处理及隐私求交方法,总结对比各决策树模型及各线性回归模型的API、场景、安全性、性能及算法,最后介绍了神经网络算法:水平联邦学习以及垂直拆分学习的封装模式及使用方法。

(PS:感谢您读完,坚持不易,谢谢支持!!!)
  • 41
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值