首页 > 编程语言 >隐语课程学习笔记5-隐私保护机器学习算法概要

隐语课程学习笔记5-隐私保护机器学习算法概要

时间:2024-06-13 18:59:43浏览次数:21  
标签:场景 概要 模型 学习 算法 联邦 隐语 mpc

隐语课程第5课,简单介绍了隐语的算法能力,包括预处理、隐私求交、决策树模型、线性回归模型、神经网络模型,并且支持数据水平切分(横向联邦)、垂直切分(纵向联邦)、混合切分(横纵向联邦)。

隐语提供了包括对DataFrame的封装,以及提供联邦ndarray的封装,和python的使用基本一致,上手较快,比较平滑。横向、纵向联邦场景都比较容易理解,横向一般面向to C场景,纵向一般解决to B的场景。关于混合切分场景,则会有些难理解,个人理解,一般在大型的机构(包含同业务多个子公司)的联邦场景下,可能会用到。比如两家运营商机构,既可能存在特征的互补,有可能同时存在内部多子公司对于数据的水平切分。

DataFrame以及FedNdarray提供的能力,与python明文场景类似。提供的某些预处理函数,可以直接使用dataframe的api处理。也可以采用sf.preprocessing包中的方法处理,与sklearn功能类似。这部分对于平时用python、sklearn比较多的同学来说门槛不大。

在垂直拆分场景,一般需要用到隐私求交算法,隐语提供了多种psi算法。用法也有多种,可以将psi当成独立的一种服务能力。也可以放在纵向联邦场景中去使用。

隐语提供了关于集成树模型的多种不同实现,ss-xgb是指底层使用mpc协议实现的xgb模型,从业内的多家厂商实践来看,比较适合在带宽友好的场景下使用,通信成本较高,但安全性较好。sgb则是通过半同态加密算法实现,算法设计来自fate团队,且后续又推出了优化改进版本,性能不错,但从已知的论文讨论来看,可能会存在一定的安全风险,不过也有相应的缓解措施,适合在带宽受限的场景下使用,通信压力较小,计算量较大。而sfxgboost则是普通的联邦,不推荐使用。横向对比业内厂商的算法实现,在性能层面,各家彼此差距不大。隐语的优势可能还是在安全攻防层面的充分测试。

隐语支持多种线性回归模型,推出的ss-sgd采用mpc协议进行实现,安全性较好,通信量大,支持线性回归以及逻辑回归。hess-sgd采用同态加密和秘密共享混合使用的模式,将mpc和同态加密的优势互补,业内蓝象、洞见、华控、富数基本也有采用类似的方案,同态加密通信量较小、mpc协议的计算量较小。不过只实现了逻辑回归。ssglm实现了广义线性回归,依然采用mpc协议,隐语团队可能对安全性的要求相对较高,偏好使用可证安全的mpc协议进行实现,但性能上可能会受到一定影响。后来听说在某些场景下会采取安全退让的方式,在性能与安全性之间做平衡。如果性能满足不了商用,那么安全性也将无从谈起。横向对比各家厂商的算法性能,也是基本在同一水平,可能借助硬件加速等手段还能进一步助力性能的提升。

隐语针对神经网络算法,分别提供了两套api,分别是FLModel以及SLModel。SLModel就是拆分学习。

关于水平联邦神经网络算法,比较容易理解,各方都有完整的训练数据,无非就是需要做权重参数的聚合平均等操作,所以你可以使用tf和torch作为backend来编写模型代码,然后采用隐语内置的多种安全聚合策略来实现权重参数的联合更新,就可以在flmodel框架下完成水平模型训练。

垂直拆分学习,同样支持tf和torch作为backend。和水平联邦不同的是,各方只持有完整模型的一部分。一般实现的模型结构为bottom+top结构,bottom分布在各个参与方本地,本地计算多层网络,最后一层输出的结果会将采取某种安全方式,发送到guest方进行拼接或者聚合等操作(也称为交互层),然后继续训练top层,再结合真实的标签信息,来完成误差计算和反向传播迭代更新参数。由于神经网络参数规模一般较大,因此隐语提供了多重稀疏化和量化压缩的算法,来支持计算的加速。

总体来看,隐语提供的联邦算法,倾向于基于mpc协议实现,不过带来的问题就是通信量大。因此需要看具体应用场景,灵活选择合适的算法。

标签:场景,概要,模型,学习,算法,联邦,隐语,mpc
From: https://blog.csdn.net/weixin_65514978/article/details/139606943

相关文章

  • [论文学习] 全密态数据库密态计算关键技术综述
    原文链接全密态数据库的功能和挑战其概述。全密态数据库的应用个场景和3种典型架构。后续3章对3种架构的关键技术做总结和分析。基于软件的加密方案。基于可信硬件TEE的关键技术。基于软硬融合的关键技术。保护访问模式的相关技术的总结分析。未来展望全密态数据库概述......
  • pwn学习-栈迁移
    栈迁移:简单理解就是在栈溢出的时候可溢出的字符过少,只能溢出ebp和ret的地址,可以使用leave_ret这个gadget来实现栈的迁移。在栈中,默认情况下汇编语言在栈结束的时候都默认会执行一次leave和ret指令,我们利用这个特性将返回地址修改为leave_ret的gadget,将会执行两次leave和ret的操......
  • CPN Tools学习——时间和队列【重要】
    -TimedColorSets时间颜色集-TokenStamps令牌时间戳-EventClock全局/事件/模拟时钟-TimeDelaysonTransitions过渡的时间延迟-ListColorSet列表颜色集-Queue排队1.时间颜色集在定时CPN模型令牌中有:(1)象征性的颜色(2)时间戳:时间戳是一个非负整数.句法:1`e@+表......
  • 机器学习项目--库存需求预测3--LSTM模型
    一、导入库和数据集代码环境:主要的包版本如下python==3.10scikit-learn==1.0.2tensorflow==2.15.0导入库importpandasaspdimportnumpyasnpfromkeras.modelsimportSequentialfromkeras.layersimportDense,LSTM,Dropoutfromkeras.regularizersimport......
  • 孩子上初中厌学怎么办?家长做好3件事,能让孩子爱上学习
    孩子上初中厌学www.zjia8.com会直接导致学习成绩下滑,甚至会染上很多不良习惯,成为危害社会的“不稳定因子”。而改变这种状况,不能只靠初中生个人,更多的要靠家长。如果家长能做好以下3件事,就有希望让孩子爱上学习。第一件事:找出原因,进行相应的调整初中是小学向高中......
  • 【esp32 学习笔记】 入门使用u8g2库(以OLED驱动芯片SSD1306为例)
    一、常用APIU8g2库提供了丰富的API,用于控制各种显示器并在屏幕上绘制文本、图形等元素。以下是U8g2库中一些常用的API:1.初始化-------U8G2U8G2(display,rotation,[,reset[,clock,data,cs,dc,reset,cs1,cs2,cs3]]) 初始化U8g2对象,其中display表示所使用的显示器......
  • CPU指令集学习——gather
    每次偏移int索引*scale个字节,每次取4字节。注意int索引是倒序的,如__m128i vindex有4个int索引,先取最后一个索引。举例:__m128i _mm_i32gather_epi32 (intconst* base_addr, __m128i vindex, constint scale)intint_array[8]={100,200,300,400,500,600,700,......
  • 跟着杨中科学习(六)EFCore(四)
    自引用的组织结构树classOrgUnit{publiclongId{get;set;}publiclong?ParentId{get;set;}publicstringName{get;set;}publicOrgUnit?Parent{get;set;}publicList<OrgUnit>Children{get;set;}=newList<OrgUnit&g......
  • 学习前端第二天之css
    1.CSS简介CSS的全称为:层叠样式表(CascadingStyleSheets)。CSS也是一种标记语言,用于给HTML结构设置样式,例如:文字大小、颜色、元素宽高等等。2.css的编写位置1行内样式(只能对当前标签起作用,对其他标签无效)<h1style="color:red;font-size:60px;">学习使人快......
  • Python 学习笔记
    第二章编程基础那点事2.6模块在Python用import或者from...import来导入相应的模块。一个模块就是一个文件,模块是保存代码的最小单位,在模块中可以声明变量、函数、属性和类等Python代码元素。将整个模块导入,格式为: importsomemodule 从某个模块中导入某个函数,格......