分类目录:《深入理解联邦学习》总目录
假设进行联邦学习的数据提供方为 A A A和 B B B,第三方为 C C C,则纵向联邦学习步骤如下:
- 在系统级做加密样本对齐,在企业感知层面不会暴露非交叉用户
- 对齐样本进行模型加密训练:
- 由第三方 C C C向 A A A和 B B B发送公钥,用来加密需要传输的数据;
- A A A和 B B B分别计算和自己相关的特征中间结果,并加密交互
- A A A和 B B B分别计算各自加密后的梯度并添加掩码发送给 C C C,同时拥有类标侧计算加密后的损失发送给 C C C
- C C C解密梯度和损失后回传给 A A A和 B B B
- A A A和 B B B去除掩码并更新模型
我们以岭回归为例说明纵向联邦学习的训练过程。假设存在数据集 { x i A } ( i ∈ D A ) \{x_i^A\}(i\in D_A) {xiA}(i∈DA) 和数据集 { x i B , y i B } ( i ∈ D B ) \{x_i^B, y_i^B\}(i\in D_B) {xiB,yiB}(i∈DB) ,其中 B B B为拥有类标的数据拥有方,我们以线性回归为例说明纵向联邦学习的训练过程:
- A A A和 B B B分别初始化模型参数 Θ A \Theta_A ΘA和 Θ B \Theta_B ΘB,则目标函数为: min Θ A , Θ B ∑ i ( Θ A x i A + Θ B x i B − y i ) 2 + λ 2 ( ∣ ∣ Θ A ∣ ∣ 2 + ∣ ∣ Θ B ∣ ∣ 2 ) \min_{\Theta_A, \Theta_B}\sum_i(\Theta_Ax_i^A+\Theta_Bx_i^B-y_i)^2+\frac{\lambda}{2}(||\Theta_A||^2+||\Theta_B||^2) ΘA,ΘBmini∑(ΘAxiA+ΘBxiB−yi)2+2λ(∣∣ΘA∣∣2+∣∣ΘB∣∣2)
- 令 u i A = Θ A x i A u_i^A=\Theta_Ax_i^A uiA=ΘAxiA和 u i B = Θ B x i B u_i^B=\Theta_Bx_i^B uiB=ΘBxiB,则对原目标函数同态加密后( [ [ ⋅ ] ] [[\cdot]] [[⋅]]表示同态加密)可表示为: [ [ L ] ] = [ [ ∑ i ( u i A + u i B − y i ) 2 + λ 2 ( ∣ ∣ Θ A ∣ ∣ 2 + ∣ ∣ Θ B ∣ ∣ 2 ) ] ] = [ [ ∑ i ( u i A ) 2 + λ 2 ∣ ∣ Θ A ∣ ∣ 2 ] ] + [ [ ∑ i ( ( u i B − y i ) 2 ) + λ 2 ∣ ∣ Θ B ∣ ∣ 2 ] ] + 2 ∑ i ( [ [ u i A ] ] ( u i B − y i ) ) \begin{aligned}[[L]] &= [[\sum_i(u_i^A+u_i^B-y_i)^2+\frac{\lambda}{2}(||\Theta_A||^2+||\Theta_B||^2)]]\\&=[[\sum_i(u_i^A)^2+\frac{\lambda}{2}||\Theta_A||^2]]+[[\sum_i((u_i^B-y_i)^2)+\frac{\lambda}{2}||\Theta_B||^2]]+2\sum_i([[u_i^A]](u_i^B-y_i))\end{aligned} [[L]]=[[i∑(uiA+uiB−yi)2+2λ(∣∣ΘA∣∣2+∣∣ΘB∣∣2)]]=[[i∑(uiA)2+2λ∣∣ΘA∣∣2]]+[[i∑((uiB−yi)2)+2λ∣∣ΘB∣∣2]]+2i∑([[uiA]](uiB−yi))
- 我们令: [ [ L A ] ] = [ [ ∑ i ( u i A ) 2 + λ 2 ∣ ∣ Θ A ∣ ∣ 2 ] ] [ [ L B ] ] = [ [ ∑ i ( ( u i B − y i ) 2 ) + λ 2 ∣ ∣ Θ B ∣ ∣ 2 ] ] [ [ L A B = 2 ∑ i ( [ [ u i A ] ] ( u i B − y i ) ) ] ] [ [ d i ] ] = [ [ u i A ] ] + [ [ u i B − y i ] ] \begin{aligned}[[L_A]]&=[[\sum_i(u_i^A)^2+\frac{\lambda}{2}||\Theta_A||^2]] \\ [[L_B]]&=[[\sum_i((u_i^B-y_i)^2)+\frac{\lambda}{2}||\Theta_B||^2]] \\ [[L_{AB}&=2\sum_i([[u_i^A]](u_i^B-y_i))]] \\ [[d_i]]&=[[u_i^A]]+[[u_i^B-y_i]]\end{aligned} [[LA]][[LB]][[LAB[[di]]=[[i∑(uiA)2+2λ∣∣ΘA∣∣2]]=[[i∑((uiB−yi)2)+2λ∣∣ΘB∣∣2]]=2i∑([[uiA]](uiB−yi))]]=[[uiA]]+[[uiB−yi]]则 [ [ L ] ] = [ [ L A ] ] + [ [ L B ] ] + [ [ L A B ] ] [[L]]=[[L_A]]+[[L_B]]+[[L_{AB}]] [[L]]=[[LA]]+[[LB]]+[[LAB]]
- 计算梯度: [ [ ∂ L ∂ Θ A ] ] = ∑ i [ [ d i ] ] x i A + [ [ λ Θ A ] ] [ [ ∂ L ∂ Θ B ] ] = ∑ i [ [ d i ] ] x i B + [ [ λ Θ B ] ] \begin{aligned}[[\frac{\partial L}{\partial\Theta_A}]]&=\sum_i[[d_i]]x_i^A+[[\lambda\Theta_A]]\\ [[\frac{\partial L}{\partial\Theta_B}]]&=\sum_i[[d_i]]x_i^B+[[\lambda\Theta_B]]\end{aligned} [[∂ΘA∂L]][[∂ΘB∂L]]=i∑[[di]]xiA+[[λΘA]]=i∑[[di]]xiB+[[λΘB]]
针对数据提供方为 A A A和 B B B以及第三方为 C C C,纵向联邦学习的训练步骤如下:
\qquad\quad | 数据提供方为 A A A | 数据提供方为 B B B | 第三方为 C C C |
---|---|---|---|
步骤 1 1 1 | 初始化参数 Θ A \Theta_A ΘA | 初始化参数 Θ B \Theta_B ΘB | 创建加密秘钥对,并将公钥发送给数据提供方为 A A A和 B B B |
步骤 2 2 2 | 计算 [ [ u I A ] ] [[u_I^A]] [[uIA]]和 [ [ L A ] ] [[L_A]] [[LA]]并发送给数据提供方 B B B | 计算 [ [ u I B ] ] [[u_I^B]] [[uIB]]、 [ [ d i ] ] [[d_i]] [[di]]和 [ [ L ] ] [[L]] [[L]],并将 [ [ d i ] ] [[d_i]] [[di]]发送给数据提供方 A A A,将 [ [ L ] ] [[L]] [[L]]发送给第三方 C C C | |
步骤 3 3 3 | 初始化掩码 R A R_A RA,计算 [ [ ∂ L ∂ Θ A ] ] + [ [ R A ] ] [[\frac{\partial L}{\partial\Theta_A}]]+[[R_A]] [[∂ΘA∂L]]+[[RA]] 并发送给第三方 C C C | 初始化掩码 R B R_B RB,计算 [ [ ∂ L ∂ Θ B ] ] + [ [ R B ] ] [[\frac{\partial L}{\partial\Theta_B}]]+[[R_B]] [[∂ΘB∂L]]+[[RB]] 并发送给第三方 C C C | 解密 L L L并发送 ∂ L ∂ Θ A + R A \frac{\partial L}{\partial\Theta_A} + R_A ∂ΘA∂L+RA给数据提供方 A A A,发送 ∂ L ∂ Θ B + R A \frac{\partial L}{\partial\Theta_B} + R_A ∂ΘB∂L+RA给数据提供方 B B B |
步骤 4 4 4 | 更新参数 Θ A \Theta_A ΘA | 更新参数 Θ B \Theta_B ΘB |
在整个过程中参与方都不知道另一方的数据和特征,且训练结束后参与方只得到自己侧的模型参数,即半模型。由于各参与方只能得到与自己相关的模型参数,预测时需要双方协作完成:
- 第三方 C C C将待预测用户ID分别发送给数据提供方 A A A和 B B B
- 数据提供方 A A A和 B B B分别计算 u A u^A uA和 u B u^B uB并进行同态加密得到 [ [ u A ] ] [[u^A]] [[uA]]和 [ [ u B ] ] [[u^B]] [[uB]]
- 数据提供方 A A A和 B B B将同态加密后的 [ [ u A ] ] [[u^A]] [[uA]]和 [ [ u B ] ] [[u^B]] [[uB]]发送给 第三方 C C C
- 第三方 C C C计算同态加密后的预测值 [ [ y ] ] = [ [ u A ] ] + [ [ u B ] ] [[y]]=[[u^A]]+[[u^B]] [[y]]=[[uA]]+[[uB]]再解密得到预测值 y y y
参考文献:
[1] 杨强, 刘洋, 程勇, 康焱, 陈天健, 于涵. 联邦学习[M]. 电子工业出版社, 2020
[2] 微众银行, FedAI. 联邦学习白皮书V2.0. 腾讯研究院等, 2021