《联邦学习》——个人笔记(四)

第四章 横向联邦学习

4.1横向联邦学习的定义
横向联邦学习也称为按样本划分的联邦学习,可以应用于联邦学习的各个参与方的数据集有相同的特征空间和不同的样本空间的场景。

4.2 横向联邦学习架构

  • 4.2.1客户-服务器架构
    也被称为主-从架构或者轮辐式架构。在这种系统中,具有数据结构的K个参与方(也叫做客户或用户)在服务器(也叫做参数服务器或者聚合服务器)的帮助下,协作地训练一个机器学习模型。横向联邦学习系统的训练过程通常由下面四个步骤完成:

    (1)各参与方在本地计算模型梯度,并使用同态加密、差分隐私或秘密共享等加密技术,对梯度信息进行掩饰,并将掩饰后的结果(简称为加密梯度)发送给聚合服务器。
    (2)服务器进行安全聚合操作,如使用基于同态加密的加权平均。
    (3)服务器将聚合后的结果发送给各参与方。
    (4)各参与方对收到的梯度进行解密,并使用解密后的梯度结果更新自己的模型参数。

    上述步骤会持续进行,直到损失函数收敛或者达到允许的迭代次数的上限或允许的训练时间。

    需要注意的是,上述步骤中参与方将梯度信息发送给服务器,服务器将收到的梯度信息进行聚合(例如,计算加权平均),再将聚合的梯度信息发送给参与方。我们称这种方法为梯度平均。除了共享梯度信息,联邦学习的参与方还可以共享模型的参数。参与方在本地计算模型参数,并将它们发送到服务器。服务器对收到的模型参数进行聚合(例如,计算加权平均),再将聚合的模型参数发送给参与方。我们称这种方法为模型平均。

    模型平均和梯度平均都被称为联邦平均算法。

    如果联邦学习使用了安全多方计算或加法同态加密技术,则上述架构便能防范半诚实服务器的攻击,并防止数据泄露。然而在协同学习过程中,若有一个恶意的参与方训练生成对抗网络(GAN),将可能导致系统容易遭受攻击。

  • 4.2.2对等网络架构
    在这种架构下,不存在中央服务器或者协调方,横向联邦学习系统的K个参与方也被称为训练方或分布式训练方。每一个训练方负责只使用本地数据来训练同一个机器学习模型。此外,训练方们使用安全链路在相互之间传输模型参数信息。为了保证任意两方之间的通信安全,需要使用例如基于公共密钥的加密方法等安全措施。
    由于对等网络架构中不存在中央服务器,训练方们必须提前商定发送和接收模型参数的顺序,主要有两种方法可以达到目的:

    (1)循环传输
    在循环传输模式中,训练方们被组织成一条链。第一个训练方(即链首)将当前的模型参数发送给它的下一个训练方。该训练方接收来自上游的模型参数后,将使用本地数据集的小批量数据更新收到的模型参数。之后,它将更新后的模型参数传输给下一方,例如1一直传输到K,之后K在传输给1。直到模型参数收敛或达到允许的最大训练时间。

    (2)随机传输
    在随机传输中,第K个训练方随机从其他训练方中选择一个,将模型参数发送给训练方。在通过本地数据集训练更新后再随机选择一个训练方。重复这种操作,直到模型参数收敛或达到允许的最大训练时间。

  • 4.2.3 全局模型评估
    在横向联邦学习中,模型训练和评估是在每个参与方中分布执行的,并且任意方都不能获取其他方的数据集。所以,每个参与方都能轻易的使用自己的本地测试数据集来测试本地模型的性能,但得到全局模型的性能评价需要耗费更多资源。在这里,本地模型性能表示某一参与方在本地测试数据集上检验得出的横向学习模型的性能,全局模型性能表示所有参与方在测试数据集上对横向联邦学习模型进行测试得出的模型性能。模型性能可以表现为精确度、准确度和召回率等。

    对于客户-服务器架构,参与方和协作方能够协作地获得全局模型性能。在横向联邦学习的模型训练过程中和模型训练结束后,我们能根据以下步骤得到全局模型性能:

    (1)参与方使用本地的测试数据集,对现有的横向联邦学习模型进行性能评估。对于二分类任务,这一步将会生成本地模型测试结果(TP,FP,TN,FN),其中TP,FP,TN,FN分别表示真阳性、假阳性、真阴性和假阴性的测试结果的数量。
    (2)参与方将自身的模型预测结果发送给协调方
    (3)收集所有的本地模型预测结果后,协调方能够计算全局模型性能测试结果。
    (4)协调方将计算得到的全局模型性能发送回给所有参与方。

    对于对等网络架构,由于不存在中央协调方或者中央服务器,要得到全局模型性能将会更为复杂。一种可能的方式是选取某一个参与方来充当一个临时的协调方。之后我们能够根据为上述客户-服务器架构设计的解决方案,得到对等网络架构的全局模型性能。

4.3联邦平均算法介绍

  • 4.3.1 联邦优化
    (1)数据集的非独立同分布
    对于一个在数据中心内的分布式优化,确保每一台机器都有着独立同分布的数据集是容易办到的,因此所有参与方的模型参数更新操作非常相似。而在联邦优化中,这一条件难以实现,因为由不同参与方的拥有的数据可能有着完全不同的分布,即我们不能对分布式数据集进行IID假设。例如,相似的参与方可能拥有相似的本地训练数据,而两个随机选取的参与方可能拥有不同的训练数据,因而他们会产生非常不同的模型参数更新。
    (2)不平衡的数据量
    联邦学习的不同参与方通常拥有不同规模的训练数据集。例如,相似的参与方可能拥有相似体量的本地训练数据集,而两个随机选取的参与方可能会拥有不同大小的训练数据集
    (3)数量很大的参与方
    使用联邦学习的应用可能需要涉及许多参与方,尤其是使用移动设备的参与方。每一个用户都可以在理论上参与到联邦学习中来,这使得会出现参与方的数量和分散程度远远超过数据中心的情况。
    (4)慢速且不稳定的通信连接
    在数据中心里,人们期望计算节点彼此间能够快速通信,并且丢包率很低。然而,在联邦学习中,客户和服务器间的通信依赖于现有的网络连接。

    联邦平均算法适用于下列有限加和形式的损失函数:
    Min f(w) = 1/n ∑fi(w)
    n表示训练数据的数量,
    w∈Rd 表示d维的模型参数 。
    对于机器学习问题,我们一般选取 fi(w) = L(xi,yi;w)。其中L(xi,yi;w)表示在给定模型参数w上对样本(xi,yi)进行预测所得到的的损失结果,xi和yi分别表示第i个训练数据点及其相关标签。

    假设有K个参与方在一个横向联邦学习系统中,设Dk表示由第k个参与方所拥有的数据集,Pk表示位于客户k的数据点的索引集。设nk = |Pk|,表示Pk的基数(即集合的大小)。也就是说,我们假设第k个参与方有nk个数据点。因此,当总共有K个参与方时,上式可以写为:
    F(w) = ∑nk/n Fk(w) , Fk(w) = 1/nk ∑fi(w)

    如果联邦学习的K个参与方拥有的数据点是独立同分布的,我们可以得到EDk[Fk(w)] = f(w),其中期望值EDk[.]表示对第k个参与方所拥有的数据点进行求期望。

    随机梯度下降可以方便的用于联邦优化中,其中一个简单的小批量梯度计算在每一轮训练中都会被执行。在这里一轮表示将本地模型更新从参与方发送至服务器和从服务器将聚合的结果发回参与方的步骤。这种方法在计算上式非常有效的,但需要非常多轮次的训练才能得到令人满意的模型。但,我们可以增加额外的计算来减少训练模型所需的通信轮次,有两种主要的增加计算方法:
    (1)增加并行度。我们可以加入更多的参与方,让它们在通信轮次间各自独立地进行模型训练。

    (2)增加每一个参与方的计算。每一个参与方可以在两个通信轮次之间进行更复杂的计算,例如进行多次本地模型更新迭代,而不是仅仅进行如单个批次的梯度计算这类简单的计算。

  • 4.3.2 联邦平均算法
    -联邦平均算法允许我们能够使用上述两种方法来增加计算,计算量由三个关键参数控制:
    (1)参数ρ。指在每一轮中进行计算的客户的占比。
    (2)参数S。指在每一轮中,每一个客户在本地数据集上进行训练的步骤数。
    (3)参数M。指客户更新时使用的小批量的大小。我们使用M = ∞来表示完整的本地数据集被作为一个批量来处理。

    ρ控制着全局批的大小,当ρ=1时,表示所有参与方拥有的所有数据上试用全部训练数据梯度下降。我们仍然通过选定的在参与方上使用所有的数据来选择批量,我们称这种简单的基线算法为FederatedSGD。假设由不同参与方拥有的数据集符合IID条件,且批量的选取机制与通过随机选取样本的方式不同,由FederatedSGD算法得到的批梯度g仍然满足E[g] = ∇f(w)
    假设协作方或服务器拥有初始模型,且参与方了解优化器的设定。对于拥有固定学习率μ 的分布式梯度下降的典型实现,在第t轮更新全局模型参数时,第k个参与方将会计算gk = ∇Fk(wt),即它在当前模型参数wt的本地数据的平均梯度,并且协调方将会根据以下公式聚合这些梯度并使用模型参数更新信息:
    Wt+1 ←wt - μ∑nk/n gk
    式中,∑nk/n gk = ∇f(wt),假设由不同参与方拥有的数据集符合IID条件。协调方之后能够将更新后的模型参数Wt+1送给各个参与方。或者协调方可将平均梯度gt= ∑nk/n gk 发送给各参与方,且参与方将根据上式计算更新后的模型参数wt+1。这种方法被叫做梯度平均。

联邦平均算法:

在协调方执行:
初始化模型参数w0,并将原始的模型参数w0广播给所有的参与方。
For 每一全局模型更新轮次t = 12.....do
	协调方确定Ct,即确定随机选取的max(Kρ,1)个参与方的集合。
	For 每一参与方k∈Ct并行do
		本地更新模型参数:w(k)t+1  ←  参与方更新(k,wt)
		将更新后的模型参数w(k)t+1  发送给协调方。
	End for
	协调方将收到的模型参数进行聚合,即对收到的模型参数使用加权平均:wt+1 = 	∑nk/n w(k)t+1 (加权平均只考虑对于k∈Ct的参与方)。
	协调方检查模型参数是否已经收敛。若收敛 ,则协调方给各个参与方发送信号,使	其停止模型训练。
	协调方将聚合后的模型参数wt+1广播给所有参与方。
End for


在参与方更新(k,wt):
从服务器获取最新的模型参数,即设w1,1(k) = wt
For 从1到迭代次数S的每一本地迭代i do
	批量(batches)←随机将数据集Dk划分为批量M的大小
	从上一次迭代获得本地模型参数,即设w1,i(k)  = wB,i-1(k)
	For 从1到批量数量B = nk/M的批量序号b do
		计算批量梯度gk(b)
		本地更新模型参数:wb+1,i(k) = wb,i(k)-μgk(b)
   End for
End for
获得本地模型参数更新wt+1(k) = wB,S(k),并将其发送给协调方。
  • 4.3.3安全的联邦平均算法
    联邦平均算法会暴露中间结果的明文内容,例如从SGD或DNN模型参数等优化算法中产生的梯度信息。他没有提供任何安全保护,如果数据结构也被泄露,模型梯度或者模型参数的泄露可能会导致重要数据和模型信息的泄露。我们可以利用隐私保护技术,从而保护联邦平均中的用户隐私和数据安全。

    下面我们以同态加密为例:

安全的联邦平均算法:
在协调方执行:
初始化模型参数w0,并将原始的模型参数w0广播给所有的参与方。
For 每一全局模型更新轮次t = 12.....do
	协调方确定Ct,即确定随机选取的max(Kρ,1)个参与方的集合。
	For 每一参与方k∈Ct并行do
		本地更新模型参数:[[w(k)t+1]]  ←  参与方更新(k,[[wt]])
		将更新后的模型参数[[w(k)t+1  ]]以及相关的损失函数Lt+1(k)发送给协调方。
	End for
	协调方将收到的模型参数进行聚合,即对收到的模型参数使用加权平均:[[wt+1]] = ∑nk/n [[w(k)t+1]] (加权平均只考虑对于k∈Ct的参与方)。
	协调方检查损失函数 ∑nk/n Lt+1(k)是否已经收敛。若收敛 ,则协调方给各个参与方发送信号,使其停止模型训练。
	协调方将聚合后的模型参数[[wt+1]]广播给所有参与方。
End for


在参与方更新(k,[[wt]]):
从服务器获取最新的模型参数,即设w1,1(k) = [[wt]]
For 从1到迭代次数S的每一本地迭代i do
	批量(batches)←随机将数据集Dk划分为批量M的大小
	从上一次迭代获得本地模型参数,即设w1,i(k)  = wB,i-1(k)
	For 从1到批量数量B = nk/M的批量序号b do
		计算批量梯度gk(b)
		本地更新模型参数:wb+1,i(k) = wb,i(k)-μgk(b)
   End for
End for
获得本地模型参数更新wt+1(k) = wB,S(k),在wt+1(k)上执行同态加密得到[[wt+1(k)]],并将[[wt+1(k)]]和相关损失Lt+1(k)发送给协调方。

4.4 联邦平均算法的改进

  • 4.4.1 通信效率的提升
    (1)压缩的模型参数更新 参与方正常计算模型更新,之后进行本地压缩。压缩的模型参数更新通常是真正更新的无偏估计值,这意味着它们在平均之后是相同的。一种执行模型参数更新压缩的可行方法是使用概率分层。参与方之后给协调方发送压缩更新,这样可以降低通信开销。
    (2)结构化的模型参数更新 在联邦模型训练过程中,模型参数更新被限制为允许有效压缩操作的形式。例如,模型参数可能被强制要求是稀疏的或者低阶的,或者可能被要求在一个使用更少变量进行参数化的限制空间内进行模型参数更新计算,之后优化过程将找出这种形式下最有可能的更新信息,再将这个模型参数更新发送给协调方,以便降低通信开销。
  • 4.4.2 参与方选择
    参与方选择的方法被推荐用来降低联邦学习系统的通信开销和每一轮全局模型训练所需的时间。一种用于参与方选择的方法,共包含两个步骤。第一步是资源检查,即向随机筛选出来的参与方发送资源查询信息,询问他们的本地资源以及与训练任务相关的数据规模。第二步是协调方使用这些信息估计每一个参与方计算本地模型更新所需的时间,以及上传更新所需的时间。之后,协调方将基于这些估计决定选择哪一参与方。在给定一个全局迭代轮次所需的具体时间预算下,协调方希望选择尽可能多的参与方。

4.5 挑战和展望
第一个主要挑战是在横向联邦学习系统里,我们无法查看或者检查分布式的训练的数据。这导致了我们面对的主要问题之一,就是很难选择机器学习模型的超参数以及设定优化器,尤其是在训练DNN模型时。
第二个主要挑战是如何有效的激励公司和机构参与到横向联邦学习系统中来。
第三个主要挑战是如何防止参与方的欺骗行为。我们通常假设参与方都是诚实的,然而在现实生活场景中,诚实只有在法律和法规的约束下才会存在。例如,一个参与方可能欺骗性地宣传自己能够给模型贡献训练的数据点的数量,并谎报训练模型的测试结果,以此获得更多的益处。为了解决这种问题,我们需要涉及一种着眼全局的保护诚实参与方的方法。

你可能感兴趣的:(联邦学习,联邦学习)