联合学习 | 纵向LR原理综述

【这里面不少是我自己的理解,保不齐有错误,仅供参考;如果错了请指正】


1.纵向LR的损失函数

FATE的代码里和一些论文里,写的实现纵向LR训练的时候,损失函数都是:

在这里插入图片描述这个损失函数和我们常见的形式不太一样。怎么来的可以参考标签为{+1,-1}时,逻辑回归损失函数推导。

这种形式的损失函数的好处是,在多方联合计算损失函数的时候,怎么对各方结果进行合并处理很清晰。


2.损失函数展开成多项式

用同态加密的话,原始的损失函数包含exp运算,这个运算目前同台加密不能直接支持,所以需要把exp函数展开成多项式函数。

2.1 用到的泰勒展开式

在这里插入图片描述
在这里插入图片描述

2.2 原损失函数展开并计算梯度

在这里插入图片描述【上述(1)中最后一项中的y可以去掉,以为 y^2=1】


上述公式(1)对w进行求导数,得到关于w的梯度:

在这里插入图片描述


3.关于同态加密

这个坑比较大,最简单的理解就是这种加密方法有一种特性:【操作一】对两个数加密之后再求和(或者求乘积),【操作二】两个数求和(或者求乘积)之后再加密;【操作一】和【操作二】二者结果相同。 所以上述的多项式只包含求乘积、求和,所以可以对数据加密,再发给别人去计算。


4.纵向LR整体流程

在这里插入图片描述如上图所显示:A、B为联合学习的两方,C为可信赖的协调者或者仲裁者(fate中称为abiter),其步骤如下:

(1)C把Public Key(公钥),发给A和B,C自己还有私钥 ;
(2)不妨设B为拥有label的一方。那么A把wx计算完再用公钥加密,然后把[[x]],[[wx]]发送给B。这样,根据前面的损失函数公式和梯度公式,B可以结合自己的数据(也用公钥加密)算出总的损失函数值和梯度;B把A需要的那部分梯度发给A;
(3)A、B把自己需要的那部分梯度发给C,C解密之后,把梯度各自发给A、B;
(4)A、B根据梯度更新自己的参数;
然后重复直到停止(比如C可以根据损失函数值不再变化就停止)。


5.参考资料

技术探讨类——纵向LR
:这篇资料里有代码,不过公式推导的细节不太全,我当时没咋看懂;

官方文档:联邦学习的研究与应用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值