联邦学习的算法主要可分为两个部分:中心联邦优化算法和联邦机器学习算法。其中,中心联邦优化算法作用于服务器,可以在服务器进行聚合计算时提升模型指标、收敛速度或达到其他特定目的。联邦机器学习算法是在传统机器学习算法的基础上,将计算步骤进行拆分、重组或近似,以达到不共享数据也能训练模型的目的。
FedAvg(Federated Averaging)是目前最常用的联邦学习优化算法 。与常规的优化算法不同,其本质思想是对数据持有方的局部随机梯度下降进行单机优化,并在中央服务器方进行聚合操作。FedAvg的目标函数定义如下:
其中, M 表示参与联合建模的数据持有方数量, ω 表示模型当前的参数。
FedAvg是一种比较基础的联邦优化算法,部署相对简单,应用领域很广泛。FedAvg的算法流程如下。
大部分联邦优化算法是在FedAvg的基础上发展而来的,例如FedProx、FedPer等(见表3-1)。感兴趣的读者可以查阅更多文献来了解此部分内容。
表3-1 中心联邦优化算法
Li, Tian, et al. Federated optimization for heterogeneous networks. arXiv preprint arXiv: 1812.06127(2018).
Karimireddy, Sai Praneeth, et al. SCAFFOLD: Stochastic controlled averaging for on-device federated learning. arXiv preprint arXiv: 1910.06378(2019).
Arivazhagan, Manoj Ghuhan, et al. Federated Learning with Personalization Layers. arXiv preprint arXiv: 1912.00818(2019).
联邦机器学习算法指在联邦学习框架下的经典机器学习算法。联邦机器学习,尤其是横向联邦学习,在整体模式上与分布式机器学习类似。但是由于联邦学习特有的迭代模式和特点,相较于传统的机器学习算法,联邦机器学习算法的实现显得更加复杂。联邦机器学习算法的实现往往基于上述联邦优化算法的框架,但因为机器学习算法之间的差异性,有时需要进行一些针对性的修改,同时需要考虑实际过程中的安全性等因素。下面将介绍3种目前常见的联邦机器学习算法。
联邦线性算法的种类很多,包括线性回归、逻辑回归、非广义线性回归等。以纵向逻辑回归为例,它是联邦学习框架下的一种非常典型的线性算法,其目标函数如下:
其中, ω 表示模型的参数, 表示模型损失函数。
在纵向联邦学习中,通常假设数据持有方分为有标签数据持有方和无标签数据持有方。这种算法在联邦优化算法的框架下结合了同态加密的思想,在训练过程中通过同态加密的方法对双方的数据和梯度进行加密。假设无标签数据持有方 α 数据为 d α = ω α T x,其中 ω α T 表示第 T 轮状态下的无标签数据持有方的模型参数。用 表示对 d α 的同态加密,整个训练过程可以描述如下。
无标签数据持有方 α 首先向有标签数据持有方 β 发送 , β 计算梯度与损失,加密后回传。中央服务器收集分别来自 α , β 的加密梯度后辅助 α , β 进行模型更新。为减少通信次数,降低通信消耗,这种方法引入了一个向量 s 来体现模型的变化,辅助更新,并使用了周期性梯度更新。
树模型是机器学习的重要分支,包括决策树、随机森林等。其中,联邦森林是一种基于中心纵向联邦学习框架的随机森林实现方法。在建模过程中,每棵树都实行联合建模,其结构被存储在中央服务器及各个数据持有方,但是每个数据持有方仅持有与己方特征匹配的分散节点信息,无法获得来自其他数据持有方的有效信息,这保障了数据的隐私性。最终整个随机森林模型的结构被打散存储,中央服务器中保留完整结构信息,节点信息被分散在各数据持有方。使用模型时,可以通过中央服务器对每个本地存储节点进行联调,这种方法降低了预测时每棵树的通信频率,对通信效率有一定的提升。
SecureBoost是一种基于梯度提升树(GBDT)的去中心化纵向联邦学习框架 。它同样包含有标签数据持有方和无标签数据持有方。梯度提升树算法交互的参数与线性算法有很大区别,涉及二阶导数项。根据一般的梯度提升树算法,我们的目标函数如下:
其中, F ( x )为预测残差的一阶、二阶导数之和,即泰勒二次展开式。为防止过拟合,在损失函数中添加正则项:
其中, γ 和 λ 为超参数,分别控制树和特征的数量。
在一般分布式机器学习中,可以通过向参与方发送 F ( x )实现联合建模。但是由于使用 F ( x )可以反推出数据标签,这样的方法显然不适用于联邦学习框架。因此,SecureBoost采用一种既能保护数据隐私又能保证训练性能的联合建模方法。有标签数据持有方 α 首先计算 F ( x )并将结果加密后发送给无标签数据持有方 β 。 β 根据同态加密求和方法进行局部求和并将结果回传。收到计算结果后, α 将数据按照特征分桶并进行聚合操作,将加密结果发送给 β 。最终由 α 将从 β 中收集的局部最优解聚合产生最优解,并下发回 β ,完成联合建模。需要说明的是,SecureBoost支持多方合作,即无标签数据持有方 β 表示所有无标签数据持有方的集合,但是有标签数据持有方仅为一方。SecureBoost在保障了模型准确率的情况下,保护了数据隐私,成功将纵向GBDT应用在联邦学习的框架中。
联邦支持向量机主要通过特征散列、更新分块等方式来保障数据的隐私性 。其目标函数如下:
其中, N 表示训练数据, ω 表示模型参数, L ( ω , x i , y i )为在点( x i , y i )的损失, λR ( ω )为损失函数的正则项,超参数 λ 控制惩罚力度。
在支持向量机中,其损失函数 L ( ω , x i , y i )=max{0,1- ω T x i y i }。类似于SimFL,这里也对特征值进行降维散列处理,隐藏实际的特征值。除此之外,由于在线性支持向量机中,中央服务器有一定概率根据更新梯度反推出数据标签,为了保护数据的隐私性,这里采用了次梯度法的更新方式。在实际表现中,这种支持向量机在联邦框架下的应用具有不亚于单机支持向量机的性能。
在联邦学习系统中,为了保障数据隐私安全,客户端在进行数据通信时,往往会对传输的信息进行编码和加密,同时由于原始用户数据对中央服务器不可见,所以训练样本在模型搭建时对中央服务器及模型设计人员不可观测。之前用于经典深度学习的相关模型在联邦学习系统中不一定是最优设计。为了避免网络模型的冗余,需要对经典深度学习模型NN、CNN、LSTM等进行相应的修改。此外,为了适应联邦学习的流程,提高训练效果,需要对学习训练的一些环节(如参数初始化、损失计算及梯度更新等)进行相应的调整。
H. Brendan等人曾用联邦学习框架下的NN和CNN分别在MNIST数据集上进行测试 。对于NN,模型的具体结构为含有两个隐藏层的神经网络,每个隐藏层包含200个神经元,且隐藏层用ReLU激活函数进行激活。他们将MNIST数据集分配到两个计算节点,每个计算节点含有样本量大小为600且无交集的子数据集。在进行联邦训练时,为了验证模型参数初始化和聚合比例带来的影响,将实验分为具有不同初始化方式的两组:一组使用相同的随机种子初始化分配在两个计算节点的模型参数,另一组则使用不同的随机种子初始化模型参数。然后每组实验用不同的比例整合来自不同节点的模型参数,以获取最终的联邦共享模型,即
ω FL = θω +(1- θ ) ω′
(3-6)
其中, ω FL 为联邦模型参数, ω 和 ω′ 为分布在不同节点的模型参数, θ 用来调整两个模型参数之间的比例。实验发现,在达到相同的精度时,联邦学习需要的训练回合更少,训练效率更高。在都使用联邦学习时,相同随机初始化种子的联邦模型具有较好的效果,在模型参数比例为1∶1时,达到最优损失。
LSTM(Long Short-Term Memory,长短期记忆网络)主要运用在联邦模型中,它可用于预测字符、情感分析等场景。在合适的超参数设置下,LSTM模型在非独立同步分布(non-IID)数据集下可达到常规情况下的模型精度。由于LSTM在模型训练过程中产生的参数量较大,容易造成通信堵塞,有研究者在卷积网络的基础上研究优化模型参数压缩在non-IID数据集下的应用 。在客户端与中央服务器通信时,相较于无压缩Baseline的2422 MB网络参数量,使用基于STC编码的通信协议的联邦学习系统可以在保证模型收敛效果的同时,将上行通信参数量压缩至10 MB左右,将下行通信参数量压缩至100 MB左右。