目录
零.基础
主要包含三个组成部分:
- Guest:数据应用方。纵向联邦时是拥有标签的一方;
- Host:数据提供方。纵向联邦中不含label的建模方;
- Arbiter:协作者,中立第三方,作用是聚合多方模型;
加密方案:
- Paillier Encryption 加法同态加密算法
- Affine Homomorphic Encryption 仿射同态加密算法,加法同态
- IterativeAffine Homomorphic Encryption 变换仿射同态加密算法,加法同态基于同态加密的逻辑回归使用的是Paillier加法同态。
详细的内容可查阅Paillier、Affine Homomorphic Encryption。(了解同态性质即可继续阅读)
一.横向联邦学习
主要解决的问题是,用户数据特征维度相同,但各方所拥有的用户不同。(不太用,不太考)
流程:
(0)各参与方使用本地数据进行一次本地训练;
(1)各参与方与协调方通讯,上传模型参数(Guest:明文;Host:同态加密);
(2)协调方Arbiter聚合各方模型,对于HomoLR,做加权平均;
(3)各方获取更新的模型(Guest:明文;Host:同态加密);
(4)重复0~3,直到损失函数收敛或者达到迭代次数上限或者训练时间;
注意:
协调方是含有私钥的所以存在隐私威胁,必须假定他是半诚实的,但后期增加了随机数,这些随机数相加可以抵消,从而保护了host的数据。
二.纵向联邦学习
主要解决数据提供方用户相同,但是用户的特征维度不同。(重点!)
(1)Host(UA)算出它所拥有数据的单边w1 * x,记为ua;并把ua进行同态加密然后发给Guest(UB);
(2)Guest(UB)根据自己的数据计算单边w2 * x,记为ub;则两方数据总wx=ua+ub;把总wx代入(0.25 * wx - 0.5 * y)即可求得总d;Guest(UB)把d同态机密后返回给Host(UA);
===>> 至此,Host和Guest都拥有了:求解梯度公式中的d,且d是同态加密的;
(3)Host和Guest分别求出各自的单边梯度∑d*x,即ga和gb,并发给Arbiter;注:ga和gb也是同态加密的;
(4)Arbiter根据获得的ga和gb,使用加密私钥解密后,就可以求得真正的梯度g;然后切分后把相应的部分明文返回给guest和host;guest和host就可以拿着获得的梯度更新本地模型了;
注意:每个参与方只会拥有与自己特征相关的模型参数乘;对于横向联邦,数据应用方(Guest)能拿到完整模型,所以可以单独完成预测;但对于纵向联邦,数据应用方(Guest)只能拿到部分模型,所以需要与数据提供方(Host)一起联合预测。
参考:FATE横向联邦解析、FATE纵向联邦解析。