现在我们介绍另一种联邦学习算法:纵向联邦学习(Vertical Federated Learning)。纵向联邦学习的参与方拥有相同样本空间、不同特征空间的数据,通过共有样本数据进行安全联合建模,在金融、广告等领域拥有广泛的应用场景。和横向联邦学习相比,纵向联邦学习的参与方之间需要协同完成数据求交集、模型联合训练和模型联合推理。并且,参与方越多,纵向联邦学习系统的复杂度就越高。

image-20231221184019649

纵向联邦学习VFL一般由两部分组成:加密实体对齐,加密模型训练。

加密实体对齐

由于A方和B方公司的用户群体不同,系统使用一种基于加密的用户ID对齐技术,来确保A方和B方不需要暴漏各自的原始数据便可以对齐共同用户。在实体对齐期间,系统不会将属于某一家公司的用户暴露出来。

加密模型训练

在确定共有实体后,各方可以使用这些共有实体的数据来协同地训练一个机器学习模型。训练过程可以被分为以下四个步骤:

  • 协调者C创建密钥对,并将公共密钥发送给A方和B方
  • A方和B方对中间结果进行加密和交换,中间结果用来帮助计算梯度和损失值
  • A方和B方计算加密梯度并分别加入附加掩码。B方还会计算加密损失。A方和B方将加密的结果发送给C方
  • C方对梯度和损失信息进行解密,并将结果发送回A方和B方。A方和B方解除梯度信息上的掩码,并根据这些梯度信息来更新模型参数

在样本对齐中,最常使用地便是隐私集合求交(Private Set Intersection,PSI)技术。业界PSI实现方案有多种:基于电路、基于公钥加密、基于不经意传输协议和基于全同态加密等。不同PSI方案各有优劣势。例如,基于公钥加密方案不需要辅助服务器运行,但公钥加密的计算开销大;而基于不经意传输方案计算性能高,但通信开销较大。因此在具体应用时,要根据实际场景来选择功能、性能和安全之间的最佳平衡方案。

基于RSA盲签名是一种基于公钥加密的经典PSI方法,也是当前业界纵向联邦学习系统中广泛应用的技术之一。下面以企业A和企业B为例描述RSA盲签名算法的基本流程。

image-20231221185618332

企业A作为服务端,拥有一个包含了标签数据+样本ID的集合。企业B则作为客户端,拥有样本ID集合。首先,企业A利用RSA算法生成私钥和公钥。其中,私钥保留在服务端,公钥则发送给企业B。

服务端利用RSA算法计算出参与样本对齐的ID的签名:

tj=H(Ka:j)t_j=H^`(K_{a:j})

其中Ka:j=(H(aj))d(modn)K_{a:j}=(H(a_j))^d(\mod n)是采用私钥d加密的对H(aj)H(a_j)的RSA加密的结果。

同样,在客户端侧对样本ID进行公钥加密,并乘以一个随机数用于加盲扰动:

yi=H(bi)(Rb,i)emodny_i=H(b_i)(R_{b,i})^e\mod n

客户端侧将上述计算出来的{y1,...,yv}\{y_1,...,y_v\}值传输给服务端侧。服务端侧收到yiy_i值后,使用私钥dd进行签名并计算:

yi=yidmodny_i^`=y_i^d\mod n

然后将计算出的{y1,...,yv}\{y_1^`,...,y_v^`\}{t1,...,tw}\{t_1,...,t_w\}发送给客户端侧。 而客户端侧收到yiy_i^`tjt_j后,首先完成去盲操作:

Kb:i=yi /Rb,iK_{b:i}=y_i^~/R_{b,i}

并将自己的ID签名与服务端发过来的ID签名进行样本对齐,得到加密和哈希组合状态下的ID交集II

ti=H(Kb:i)I={t1,...,tw}{t1,...,tv}t_i^`=H^`(K_{b:i})\\ I=\{t_1,...,t_w\}\cap\{t_1^`,...,t_v^`\}

最后,将对齐后的样本ID交集II发送给服务端,服务端利用自身的映射表单独求取明文结果。这样企业A和企业B在加密状态下完成了求取相交的用户集合,并且在整个过程中双方非重叠样本ID都不会对外暴露。