在介绍联邦学习实现方式之前,快速回顾一下线性模型。假设示例样本
包含
个特征,即
,
表示第
个特征上
的值。线性模型就是利用不同特征的线性组合来得到一个预测函数,即
(3-1-1)
一般用向量形式写成
(3-1-2)
式中,
。在确定了权重
和
后,就能够得到模型。此外,
与特征的重要性有关,在特征标准化后可直接表征特征的重要性。所以,线性模型的可解释性比较好,在应用中受到广泛欢迎。下面再具体介绍几种经典的线性模型。
给定数据集
。式中,
。“线性回归”希望学习出一个线性模型来拟合真实输出值,当特征
时,就是“一元线性回归”。更一般的情形是
大于1,此时我们试图学得
(3-1-3)
这被称为“多元线性回归”。式中,
和
的值一般利用最小二乘法进行估计,具体计算过程可以参考文献[41]。记
,
,令
为
按纵向排列组成的矩阵。当
矩阵满足满秩或正定时,最终得到的多元线性回归模型为
(3-1-4)
当
的列数比行数多,
不是满秩矩阵时,最小二乘意义下的解不唯一。此时需要修改求解的问题来保证解的唯一性。最常见的解决方法是根据对解应满足性质的先验知识加入正则化项。
刚刚介绍了如何用线性模型来做回归分析,而在分类问题中,只需将实际值
和线性模型的预测值
联系起来。具体到二分类问题,它的实际值
,而模型的预测值
是实数值,所以这里的实数值
需要变换成0或1。而对数概率函数
就是这样一种能够将
值变换成0和1之间的
值的函数。将
代入对数概率函数,得到
(3-1-5)
可变化为
(3-1-6)
这样得到了“逻辑回归”模型。利用极大似然估计的思想,通过极大化似然比,就可以得到逻辑回归模型中的参数估计。
不过当
表示事件发生次数时,这类计数变量一般只能取不连续的非负整数,无法作为一般线性模型的因变量。所以,在针对计数变量时,往往使用泊松回归模型。通常先假定发生次数
满足泊松分布,接着再学习得到一个泊松回归模型。假设事件发生次数
Y
是一个只取非负整数的随机变量,引入一个参数
,令
的概率为
(3-1-7)
式中,
={0,1,2},
Y
的分布就是泊松分布。参数
大于0,其既等于该分布的均值,又等于该分布的方差。在线性模型中,假设
,通过极大似然估计建立的模型就是泊松回归模型,其中
是特征
对应的回归系数。
在介绍完上述线性模型之后,我们将介绍如何在不泄露各参与方数据的前提下,基于分布式数据训练联邦线性模型。首先,依据数据在不同参与方的分布形式,联邦学习分为横向联邦学习和纵向联邦学习两种典型场景。由于在实际业务中,企业更需要在横向联邦学习或纵向联邦学习的环境下实现联合建模,所以下面就以这几种线性模型为例分别介绍在横向联邦学习和纵向联邦学习环境下联合建模的实现方式。
在横向联邦学习系统中,各参与方拥有的数据结构是一致的,然后它们借助网络进行参数传输,合作训练出一个机器学习模型。这里有一个假设是这些参与方都不会允许向服务器泄露原始数据 [42] 。整个系统的训练过程如下。
(1)参与方各自用本地数据计算模型参数对模型损失函数的梯度贡献,选择加密技术对更新的梯度进行加密,然后将加密的结果发送给服务器。
(2)服务器对接收到的结果进行安全聚合。
(3)服务器将聚合后的结果发送给参与方。
(4)参与方对梯度进行解密,并更新自己本地的模型。
(5)服务器判断损失函数是否收敛,检测是否满足停机条件。
实践证明,如果使用安全多方计算 [43] 或同态加密 [42] 聚合梯度,那么以上过程能够抵抗半诚实服务器引起的数据泄露。在实现过程中,加密是重要的过程,不过它可能会遭到恶意参与方在合作学习联邦模型时训练生成对抗网络 [44] (Generative Adversarial Network,GAN)的攻击。
横向联邦逻辑回归: 由于一开始A方和B方都具有相同的模型结构,所以这里仅以逻辑回归为例来阐述上述训练过程,其他线性模型的训练步骤同理。横向联邦学习适用于数据在特征层面重合多、在用户层面重合少的情况。
假设客户机A和主机B具有完全相同的特征,但所属样本不同,横向联邦逻辑回归模型的训练过程如图3-1-1所示。最初客户机A和主机B都具有相同的模型结构,当开始每一轮训练时,客户机A和主机B都会用各自的本地数据训练模型,分别将加密后的梯度上传给可信的第三方C,第三方C将这些梯度聚合,再将聚合的梯度分别发送给客户机A和主机B,用于它们更新各自的模型,直到联邦模型收敛达到停机条件。更详细的过程可参考文献[43]。
图3-1-1 横向联邦逻辑回归模型的训练过程
在纵向联邦学习系统中,具有不同数据结构的参与方A和B想要合作训练一个模型。其中,只有B方有标签。由于隐私保护的需求和解决方法的需要,A方和B方不会直接传输数据,而是为了保证传输中数据的安全性加入了第三方C。这里,我们假设C方是诚实的且不会与A方或B方串通,为了保证C方合理且可信,可以让官方机构承担,或者用安全计算节点来替代。整个系统通常分为以下两个部分。
(1)实体对齐。由于两个参与方的样本不一致,联邦系统会使用基于加密的样本id对齐技术在不暴露参与方各自数据的前提下确定公共的样本。在这个过程中,不会泄露不重合的样本。
(2)模型训练。在公共的样本确定后,基于这些样本训练模型。训练步骤如下。
①第三方C生成密钥对,把公钥分别发送给A方和B方。
②A方和B方对中间值进行加密传输,完成梯度和损失的更新计算。
③A方和B方更新各自加密的梯度,B方还要完成加密损失的计算。然后,A方和B方将加密的值发送给C方。
④C方对接收的值解密,并将解密后的损失和梯度返还给A方和B方。A方和B方对模型参数进行更新。
下面分别以逻辑回归、线性回归和泊松回归为例,对上述过程进行阐述。
纵向联邦逻辑回归:
文献[45]提出了一种基于隐私保护和信息安全的纵向联邦逻辑回归模型,通过对损失和梯度公式运用泰勒展开使Paillier半同态加密算法能适用于隐私保护计算。该算法支持加法运算和标量乘法运算,即对于任意明文
和
,有
(3-1-8)
还有标量乘法公式,
表示密文
的个数,即
(3-1-9)
所以,需要对逻辑回归和随机梯度下降公式做一些调整。首先,假设数据不是分布式存储的,而是都存放在一处的。基于样本
和对应的标签
,可以学习到逻辑回归模型
。基于
n
个
组成的训练集
,平均损失函数为
(3-1-10)
反之,基于训练样本的样本数量为
的子集
计算的随机梯度为
(3-1-11)
虽然模型学习只需要梯度,而不需要损失,但是这里采用简单交叉验证,在大小为
的验证集
上监测损失函数
以便提前终止训练,防止模型过拟合。
在加法同态加密算法下,我们需要考虑如何计算逻辑回归中的损失和梯度的近似值。为了实现这一点,我们在
的周围进行
的泰勒级数展开,即
(3-1-12)
在验证集
上评估的损失函数
的二阶近似为
(3-1-13)
上式中对于任意的
,有
。为了区分,数据集
上的梯度为
(3-1-14)
接下来,为损失和梯度添加加密的掩码
,则数据集
上的加密梯度为
(3-1-15)
验证集
上的加密损失为
(3-1-16)
式中,
,
。常数项
与最小化无关,之后将其设置为0。
下面介绍如何用随机梯度下降训练纵向联邦逻辑回归模型。假设第一阶段的实体对齐已经完成,也就是参与方A和B具有相同的
行数据。用矩阵
表示完整的数据集,这个矩阵的数据是由参与方A和B的数据并列而成的,而不是真实地存储于同一处,即
(3-1-17)
只有参与方A具有标签
,
可以分解为
(3-1-18)
算法1是安全逻辑回归的计算流程,由第三方C执行。首先,C方创建一组密钥对,将公钥分享给A方和B方。然后,C方将加密的掩码
发送给A方和B方,这里的训练过程允许在C方忽略划分验证集和小批量采样的情况下完成。算法2对损失进行了初始化,并缓存了
用于计算之后的逻辑损失。此外,任何随机梯度算法都可以用于优化,如果选择随机平均梯度
[46]
(Stochastic Average Gradient,SAG)进行实验,那么C方会保留之前的梯度。算法3用于监视验证集上
的损失以便提前停止训练。在任何加法同态加密方案下,损失的计算成本都很高。算法4是梯度的安全计算过程,在算法1的每轮计算中都需调用它。可以看到,在整个过程中,唯一清楚发送的、A方和B方可以共享的信息只有模型
和每批数据
。其他所有信息都是加密的,C方只接收到
。更详细的过程可参考文献[46]。
纵向联邦线性回归: 线性回归是统计学习中最基础的方法。
一般来说,基于梯度下降的方法来训练线性回归模型。现在需要对模型训练中涉及的损失和梯度进行安全计算。其中,学习率为
,
为正则化参数,
为数据集,模型参数
分别对应了特征
和
,则模型的训练目标表示为
(3-1-19)
让
,
,则加密的损失为
(3-1-20)
式中,同态加密算法定义为
。让
,
,
,则有
(3-1-21)
同理,让
,则梯度表示为
(3-1-22)
(3-1-23)
模型的具体训练过程如下。
(1)A方和B方对参数
、
做初始化,C方生成密钥对,将公钥发送给A方和B方。
(2)A方计算
、
并将其发送给B方;B方计算
、
、
,然后发送
给A方,发送
给C方。
(3)A方初始化一个随机数
,计算
并将其发送给C方;B方初始化一个随机数
,计算
并将其发送给C方;C方根据解密后的损失
判断模型是否收敛,并对加密梯度解密后再发送
和
给对应的A方和B方。
(4)A方和B方减去之前引入的随机数,依据得到的真实梯度对参数
、
进行更新。
模型的评估过程如下:
(1)C方分别向A方和B方发送样本ID
。
(2)A方计算
并将其发送给C方,B方计算
并将其发送给C方;C方获得结果
。
基于上述训练过程,可以看到训练中的信息传输并没有暴露数据隐私,A方和B方的数据一直保存在本地,即便泄露给C方数据也未必会被视为侵犯隐私。不过为了尽可能地预防数据被泄露给C方,A方和B方可以考虑加入加密随机掩码进一步保护数据。从而,A方和B方完成了在联邦环境下协同训练一个共有模型。由于在构建模型时,每个参与方得到的损失和梯度应该与不限制隐私、将数据聚集在一处训练模型时学习的损失和梯度一致,所以该联邦模型理应是没有损失的,即模型训练的成本会受到数据加密所造成的通信和计算资源的影响。由于在每轮训练中,A方和B方互相传送的数据会随重合样本量的变化而变化,因此该算法的效率能通过采取分布式计算技术得到提高。
从安全性方面来看,在训练过程中并没有向C方泄露任何数据,C方得到的都是加密的梯度和随机数,与此同时,加密矩阵的安全性也是有保证的。在上述训练过程中,虽然A方在每步都学习自身的梯度,但A方并不能依照公式
就从B方处获得相关信息,因为要求解
n
个未知数就必须有至少
n
个方程才能确定方程的唯一解,这一必要性保证了标量积计算的安全性。在此处,我们假定样本数
远大于特征数
。同理,B方也无法从A方处获得任何相关的信息,从而证明了该过程的隐私性。值得注意的是,假设两个参与方都是半诚实的,但是当存在一个参与方是恶意攻击者时,它会伪造输入进行欺骗,如A方仅提交一个只有一个不为零的特征的非零输入,则系统可以识别出该输入的这一特征
,但系统无法识别出
或
,同时偏差会使得之后的训练结果失真,从而告知另一参与方停止训练。在结束时,A方或B方都不会知晓对方的数据结构,都只能得到和自己的特征有关的参数,达不到联合训练的效果。在推断时,双方需要使用上述评估步骤来共同预测结果,这同样也不会暴露数据,更详细的过程可参考文献[2]。
纵向联邦泊松回归: 泊松回归是针对事件发生次数利用特征构建的回归模型,满足事件之间的发生是相互独立的,事件的发生次数服从泊松分布。在模型训练之前,需要对不同参与方的数据进行基于隐私保护下的实体对齐,然后基于重叠样本构建联邦模型,训练过程如图3-1-2所示。
(1)A方和B方各自对参数
、
做初始化,C方生成密钥对并发送公钥给A方和B方,A方将用公钥加密后的
传输给B方。
(2)B方在拿到加密数据后,结合目标值
,计算可得
,然后用公钥加密后将
传输给A方。
(3)B方结合本地数据计算得到B方梯度
,A方结合本地数据计算得到A方梯度
,然后B方和A方分别将各自的梯度
和
发送给C方。
(4)C方将获得的梯度
、
进行汇总和解密后得到一个完整的梯度,最后将优化后的完整梯度拆分成新的
和
,并将其分发给对应的B方和A方。
(5)B方和A方利用优化后的梯度对模型进行更新,同时C方根据B方设置的停止标准,在每次迭代结束时判断联邦模型是否收敛。如果收敛,那么C方分别向B方和A方发送停止迭代标识。
图3-1-2 纵向联邦泊松回归模型的训练过程