联邦学习分为横向学习和纵向学习两类
1 横向联邦学习
解决数据不够多的问题。双方各自有样本(特征值和标签),拥有共同的数据特征和数据标签,FedAverage算法,支持深度学习。各自训练自己小模型,加上随机数(保密)后放到第三方去优化,第三方汇总后,随机数彼此抵消,优化模型。再把优化后参数返回给他们。不存在把数据给对方或者一个第三方。
2 纵向联邦学习
解决特征(或结果)不够多的问题。一方有样本的特征值,另一方有其他特征值,或者有样本的数据标签(结果表现)。前者没有数据标签无法训练参数,所以要和后者先进行样本匹配,然后交换数据(中间值)。
2.1-纵向联邦学习的第一步
基于隐私保护的样本匹配(样本对齐)
A有u1,u2,u3,u4数据,B有u1,u2,u3,u5数据,彼此交换后,A和B共同有u1,u2,u3数据,分别保留自己的u4和u5数据。
Step1 B把n和e作为公钥发给A
Step2 A把e作为随机数的指数,乘上自己数据的哈希值。得到Ya返回给B。因为有随机数,所以B无法知晓A的原始数据。
Step3 B用私钥d作为Ya的指数,根据费马小定理,用d加幂后就等于随机数乘上(A数据哈希值)的d次方。得到Za
Step4 B先对自己数据取哈希值,再用私钥d作为指数,再取一次哈希值,得到(B数据哈希值d次方)的哈希值,Zb,连同Za一起返回给A。由于A不知道B的私钥d,所以他无法解开Zb,无法知晓B的原始数据。
Step5 A拿到Za后,先除以自己的随机数,得到(A数据哈希值)的d次方,再做一次哈希。得到(A数据哈希值d次方)的哈希值,Da
Step6 A将Da和Zb取交集。因为两者都是(数据哈希值d次方)的哈希值。
Step7 A将交集返回给B,双方各自获得交集数据
2.2 数据工程
A有x,B有x,y
Step1 B对y和(1-y)做同态加密,连同对应id一起发给A
Step2 A根据收到的一组id,找出其对应的一组x,然后加总并加密后返回B
Step3 B获得对x后解密,得到加总的x,然后做本地运算。
2.3 模型训练
A把特征数据加密运算后给B,B和标签比对后计算得到中间值梯度,给第三方,第三方再优化梯度,调整A和B的参数,再计算梯度,再给第三方,最终结果。