APP下载

基于联盟链的可信联邦学习方法

2023-12-20王金鹏李凯程付保川

计算机工程与设计 2023年12期
关键词:投毒联邦贡献

王金鹏,戴 欢,2+,李凯程,唐 毅,2,付保川

(1.苏州科技大学 电子与信息工程学院,江苏 苏州 215009; 2.苏州和数区块链应用研究院有限公司,江苏 苏州 215000)

0 引 言

当前,数字经济发展,大数据应用面临以下两个难题:①不同行业、不同部门之间存在壁垒,形成了所谓“数据孤岛”[1];②数据安全和数据隐私无法得到保障。为了解决以上问题,谷歌公司于2016年提出了联邦学习(federated learning,FL)架构[2],参与联邦学习的客户端无需上传本地隐私数据,只需上传每轮训练的本地模型,再通过中央服务器聚合成全局模型,因此,各个客户端可以在不共享原始数据的情况下共同完成机器学习任务。

传统的联邦学习系统需要一个可信的第三方服务器来聚合全局模型,这可能给联邦学习系统造成单点故障的安全隐患[3]。区块链技术具有去中心化、可追溯和难篡改等特点,与联邦学习结合,为有效解决其对第三方服务器的依赖提供了可能。同时,合理设计区块链自带的激励机制,也能够充分激励客户端参与联邦学习,提高联邦学习的模型性能。Kim H等[4]提出了一种基于区块链的联邦学习架构BlockFL,使用工作量证明(proof of work,POW)作为共识机制,在考虑通信时延、计算时延和共识时延的情况下,计算最优的块生成率。文献[5]提出了一种名为Deepchain的联邦学习框架,利用区块链保证模型的安全,并设计了激励机制鼓励参与方能够诚实地进行训练。然而,基于POW共识机制的区块链通常需要较大的计算开销来实施区块链的挖矿过程,这对电力资源耗费较大。

在传统联邦学习环境中,第三方服务器能够获取客户端上传的更新梯度,文献[6-8]表明,即使只拥有模型的梯度信息,攻击者也可以反推出部分原始数据,即联邦学习存在梯度泄露的安全隐患。常见的解决方案是在上传梯度时使用差分隐私[9]和同态加密[10]技术。Lu Y等[11]将差分隐私融入联邦学习进一步保护数据隐私,提出了一种面向工业物联网应用的分布式多方隐私保护数据共享机制。Bin Jia等[12]使用区块链代替中央服务器,设计了一种面向工业物联网的联邦学习模型,同时结合了差异隐私和同态加密技术来防止梯度泄露,该架构会造成模型精度的损失,并且计算量较大。上述方法,添加差分隐私噪声会对模型精度产生影响,使用同态加密技术需要在安全可信的环境下交换密钥,并且使用同态加密,加密梯度需要进行大量的密码学计算。此外,在保护梯度隐私的同时,如何降低通信成本也未得到有效解决。

数据质量是影响联邦学习训练结果的重要因素,然而,传统联邦学习缺乏激励机制来吸引客户端参与训练。区块链的激励机制可以与联邦学习有机结合,通过为使用优质数据参与训练的客户端节点提供奖励,激励客户端参与联邦学习。文献[13]提出了一种基于区块链和联邦学习的分布式深度学习框架,在保护用户隐私的前提下,设计了一种本地可信度评估机制来保证公平性。叶晋[14]设计了一种质量证明算法(proof of quality,PoQ),该算法基于客户端信誉和数据质量,在边缘计算框架基础上,提出了一种基于联邦学习和区块链技术的海洋物联网数据安全共享方法,能够高效且安全地进行模型训练。文献[15]中设计了一种基于EOS区块链的梯度检测算法,根据梯度质量为参与者提供奖励。文献[16]结合了差分隐私和梯度验证,保证了梯度安全的同时,选择合法的客户端数据进行全局模型更新,但是没有考虑通信和计算成本。

针对以上问题,本文做了以下工作:

(1)利用梯度压缩技术,减少联邦学习训练过程中梯度泄露的威胁,并降低了通信压力;

(2)设计了一种基于联盟链的联邦学习框架,解决传统联邦学习中单点故障的问题;提出了一种基于贡献的联邦学习聚合方法,该方法通过梯度验证遴选满足精度要求的客户端梯度,再根据客户端模型贡献分配权重进行全局聚合,降低了投毒攻击对模型的威胁;

(3)提出了一种基于双因子贡献的区块链共识算法,根据模型贡献选举共识委员会,根据行为贡献选举区块链记账节点;利用区块链的激励机制为参与模型训练的客户端和区块链节点提供激励,提高了客户端参与联邦学习训练的积极性和区块链系统的稳定性。

1 系统设计

1.1 系统架构

如图1所示,本文设计了一种基于联盟链的可信联邦学习系统架构,该架构使用区块链的分布式处理代替传统联邦学习的第三方服务器处理聚合客户端模型。

该系统节点共有3种角色:

(1)模型请求者

模型请求者是联邦学习任务的发起者,负责发布任务、设计和初始化联邦学习模型。

(2)参与模型训练的客户端节点

假设系统中一共有NC个客户端,客户端i(1≤i≤NC) 所拥有的数据集大小为Si。客户端节点利用本地数据集进行模型的本地训练,并向对应的区块链共识节点上传和下载模型梯度。梯度压缩能够有效防止梯度泄露,并且可以降低通信压力,提高系统整体通信效率。本系统采用基于残差累积的梯度稀疏化方法来实现客户端的梯度压缩。

(3)区块链共识节点

假设系统中共有NM个区块链共识节点,每个区块链共识节点j(1≤j≤NM) 绑定若干客户端节点。共识节点接收对应客户端节点的本地模型,验证其合法性之后转发给其它区块链节点。在接收到所有客户端模型或者达到最大等待时长后,所有区块链节点根据贡献评分选出共识委员会节点和领导人节点,领导人节点打包区块后转发给共识委员会节点进行区块验证,验证通过的区块保存至区块链中。

1.2 系统流程

系统整体流程如图1所示,共分为以下7个步骤:

步骤1 任务初始化

模型请求者R发布联邦学习任务请求,设计并初始化联邦学习模型,提出数据集的数据类型、学习率η、小批量梯度下降的批量大小bs、最大联邦训练轮数T、遴选率S。随后符合数据集要求的客户端节点以及区块链共识节点申请加入训练,参与训练的客户端节点和区块链共识节点发送各自的公钥,客户端公布本地的数据集的大小Si,任务发布者R向共识节点发送一小部分验证数据集Dv。

准备工作完成后,模型请求者R将初始模型打包成区块Block0,发布到区块链中。

步骤2 客户端训练模型并压缩梯度

客户端i从与其绑定的共识节点j下载最新的全局模型,然后用全局模型替代本地模型参数,使用本地隐私数据集进行训练。为了提高训练效率,客户端采用小批量梯度下降(mini-batch gradient descent,MBGD)进行训练,如式(1)、式(2)所示

(1)

(2)

客户端i在训练完成后,采用基于残差累积的梯度稀疏化方法来压缩梯度。基本思路是将每轮被压缩的小梯度累积在本地作为残差梯度,直到这些梯度达到某轮的压缩阈值。梯度压缩的具体过程如下。

(3)

(4)

(5)

算法1:ClientUpdate算法

输入:本地数据集Di,学习率η,压缩率C,全局训练轮次k。

(3) for batchDb∈Dido

(5)end for

(9) for layerlof all layers do

(14) end if

(15) end for

(16)end for

步骤3 客户端上传本地梯度

步骤4 节点验证阶段

共识节点j接收到客户端节点的交易后,使用i的公钥验证其数字签名,确认身份后转发该交易至其它区块链节点,并进行参数质量评分。

步骤5 根据贡献选出共识委员会节点

步骤6 领导人节点生成新区块

领导人节点将本轮的全部合法事务打包成新区块Blockk,区块头中保存前一个区块的哈希值hashk-1、当前区块的哈希值hashk、时间戳timestampk、领导人的公钥PKleader(k)、领导人的数字签名signleader(k)和本轮的全局梯度gk,区块体以Merkle树的数据结构保存全部的合法事务。为降低投毒攻击对模型的影响,计算全局梯度时以客户端得分为遴选标准,根据遴选率S选择客户端梯度进行全局梯度的聚合。经过超过三分之二共识委员会节点验证通过后,新区块将广播给其它区块链节点保存上链。

步骤7 客户端下载区块,继续训练

接收到新区块的区块链节点将其转发给与其绑定的所有客户端节点,客户端下载后根据其中的全局梯度gk更新本地模型,并开始下一轮训练。

重复步骤2~步骤7,直到训练次数达到联邦学习目标训练轮数。

2 基于双因子贡献的区块链共识机制

共识机制是区块链系统[19-21]的核心组件之一,实用拜占庭容错(practical byzantine fault tolerance,PBFT)共识算法[22]相比于工作量证明和权益证明(proof of stake,PoS)等[23]需要提供挖矿证明的算法,共识效率高,系统吞吐量也更大,能够满足联邦学习对系统吞吐量的需求。

然而,传统PBFT共识算法选取领导人节点是随机的,可能会选出拜占庭节点。为了提高基于联盟链的联邦学习系统的稳定性和效率,本文设计了一种基于双因子贡献的PBFT共识机制,该机制首先根据联邦学习模型贡献选举共识委员会,再通过节点行为贡献选举领导人节点,有效激励拥有优质数据集的客户端参与模型训练,同时提高区块链系统的稳定性。

2.1 模型贡献评估机制

系统中的区块链节点分为领导人节点、委员会节点和普通节点,委员会节点由普通节点根据模型贡献选举得出,领导人节点是行为贡献最高的委员会节点。每个区块链节点j都绑定了若干联邦学习客户端i。在每轮训练中,根据客户端提交的参数质量为客户端评分,评分公式如下

(6)

(7)

因此,为了综合考量节点的历史模型贡献,本方法使用了一种基于牛顿冷却定律的时间衰减函数来计算节点历史模型贡献值。

(8)

(9)

投毒攻击是联邦学习中常见的一种攻击方式,该攻击通过恶意修改本地训练样本或者上传错误的梯度来降低联邦学习质量。为了抵御投毒攻击,本文结合模型贡献评估机制,提出了一种基于贡献的联邦学习聚合算法,在每轮聚合全局梯度时,根据遴选率S聚合评分较高的客户端提交的梯度,并根据客户端评分分配权重。每轮聚合全局模型的公式如下

(10)

式中:L是遴选出的评分较高的客户端评分序列,scoreL是遴选出的客户端评分之和。

全局模型训练的伪代码如下所示:

算法2:GlobalTrain算法

输入:目标训练轮数T,客户端节点数量NC,验证集Dv,学习率η,梯度压缩率C,客户端遴选率S。

输出:全局模型wT。

(1)initial:w0;

(2)forkin range(T) do

(3) foriin range(NC) do

(5) end for

(6)L←sortClient(scorek,S);

(7)gk←0;

(10) end for

(11)wk+1←wk-gk;

(12)end for

(13)returnwT;

在所有客户端都上传了梯度或者达到最大等待时长后,进入共识委员会选举阶段。计算节点的模型贡献分,由模型贡献最高的若干节点组成共识委员会。

2.2 行为贡献评估机制

区块链系统需要节点共同参与维护,系统的稳定性取决于节点的行为。因此,本文引入了节点的行为贡献机制来反映节点的性能与表现,通过节点的行为贡献机制增加可信节点参与区块链系统事务的概率。成功完成系统任务的节点将获得行为贡献分,未能按时完成工作的节点将被扣除部分行为贡献分。在选举出共识委员会节点后,节点的行为贡献用于从中选举打包区块的领导人节点。

节点的行为包括:打包区块、参与委员会共识、验证客户端参数。3种行为对应的贡献用 〈b1,b2,b3〉 表示,对于区块链节点j,每种行为贡献计算公式如下

(11)

(12)

(13)

BS(j)=δ1×b1(j)+δ2×b2(j)+δ3×b3(j)

(14)

式中:δ1,δ2,δ3表示3种行为对应的权重,满足δ1+δ2+δ3=1。 打包区块和达成共识对区块链系统的稳定至关重要,因此,3种权重的赋值应该遵循δ1>δ2≥δ3的原则。

为了降低区块链系统中心化的程度,本文在共识机制中加入了领导人节点选举冷却机制,通过设置节点选举冷却间隔q来限制某一节点垄断生成区块权。即节点当选为领导人节点之后的q轮无法参与领导人节点的竞争。

选举领导人节点时,根据行为贡献分将共识委员会中的节点进行排序,由不处于冷却间隔中的行为贡献分最高的节点担任本轮的领导人节点。选出共识委员会和领导人节点后,由领导人节点聚合该轮全局梯度gk,并生成区块Blockk。

领导人节点打包区块后,进入PBFT共识阶段,PBFT共识分为4个阶段:pre-prepare、prepare、commit和reply。在共识委员会节点确认新区块为合法区块后,提交合法更新的客户端、领导人节点和共识委员会节点获得区块链奖励,奖励与贡献评分成正比。在不超过三分之一节点为拜占庭节点的情况下,PBFT算法能够保证最终一致性。

3 实验与仿真

3.1 实验设计

实验数据集为经典MNIST数据集,该数据集由60 000个训练样本和10 000个测试样本组成,每个数据样本都是一张28×28的灰度图像。联邦学习需要考虑客户端数据非独立同分布(non independently identically distribution,Non-IID)的情况,为了测试Non-IID情况下系统性能,本实验先将60 000个训练样本按照标签排序,排序后均匀分成200份,每份300个样本。实验客户端数量为50,每个客户端拥有4份数据。在IID情况下,本实验将训练样本随机打乱后均匀分配。给客户端评分的验证集来自测试集中按标签均匀选取的100个样本,全局模型测试集为全部的10 000个测试样本。

实验中客户端采用卷积神经网络(conventional neural network,CNN)作为训练模型。共包含3层3×3的卷积层,激活函数为Relu,学习率为0.01,损失函数为交叉熵损失函数。更新全局模型时采用本文提出的基于贡献的聚合算法。基于Python3.7、Tensorflow2.5和Keras框架设计神经网络。实验在本机设置50个客户端节点模拟联邦学习场景,使用Django框架仿真区块链功能,提供创建事务、上传事务、打包区块和下载区块等功能。

实验环境配置参数:处理器Intel(R)Core(TM)i7-9750H CPU @ 2.60 GHz 2.59 GHz,显卡NVIDIA GeForce GTX1650,内存16 GB,操作系统Windows10。

3.2 实验结果与分析

3.2.1 模型精度与压缩率关系分析

本节分析了模型精度与梯度压缩率的关系。如图2、图3所示,在两种不同分布情况下,随着梯度压缩率的提高,模型收敛速度有所下降。iid分布时,与不压缩梯度的联邦学习算法对比,采用90%和95%梯度压缩率的模型精度几乎没有损失,采用99%压缩率时精度下降略高,达到了1.52%。Non-iid分布下,采用95%以下的梯度压缩率,模型精度也几乎没有降低,在采用99%压缩率时精度下降了1.05%。

图2 iid分布下压缩率与模型准确率关系

图3 Non-iid分布下压缩率与模型准确率关系

实验结果表明,采用过大的梯度压缩率,会因丢弃太多梯度,对联邦学习模型精度产生较大影响。采用95%以下的梯度压缩率对模型精度的影响很小,而且上传压缩后的梯度能够防止梯度泄露,保护客户端数据隐私。

3.2.2 模型鲁棒性分析

在真实的系统运行环境中,可能会出现低质量数据影响模型整体质量,甚至恶意节点使用投毒攻击破坏模型的情况。为了评估系统的鲁棒性,实验模拟了投毒攻击的情形,根据投毒率将部分客户端训练样本的标签进行更改。实验中梯度压缩率设置为95%。

文献[24]算法基于客户端模型准确率筛选客户端进行全局模型聚合来抵御投毒攻击,Multi-Krum[25]算法通过计算客户端梯度与其它梯度的距离,为客户端打分,选择得分最低的部分梯度作为合法梯度参与聚合。图4和图5分别展示了在iid和Non-iid分布下,30%投毒攻击时,本文聚合算法与FedAvg算法、文献[24]算法、Multi-Krum算法的模型损失对比结果,其中,本文聚合算法的遴选率设置为70%。

图4 iid分布时不同算法在投毒攻击下模型的损失

图5 Non-iid分布时不同算法在投毒攻击下模型的损失

由图4可知,在客户端数据集符合iid的条件下,30%投毒攻击会让采用传统FedAvg聚合算法的模型无法收敛,因为FedAvg算法只是对所有客户端梯度进行了简单的加权平均,恶意梯度会严重影响全局模型;使用文献[24]聚合算法的收敛速度明显下降,因为以准确率作为聚合标准存在一定的随机性,恶意梯度有可能和正常梯度得到相同准确率;采用70%遴选率的本文聚合算法的模型收敛性能几乎能达到无投毒攻击的水平,而且也未出现收敛速度下降的情况,这是因为恶意梯度的损失低于正常梯度的可能性极低,因此,以损失作为评价标准效果优于文献[24]提出的以准确率作为评价标准。Multi-Krum算法在iid分布下效果也较好,但是由图5可知,在Non-iid分布下,Mutli-Krum算法无法收敛,其模型性能甚至低于FedAvg算法,因为在Non-iid分布下,客户端之间的梯度本来就存在很大差别,梯度之间的距离平方和无法作为判断恶意梯度和正常梯度的标准。本文聚合算法在客户端数据符合Non-iid的情况下也能达到很好的收敛效果,30%投毒攻击情况下,本文聚合算法的收敛速度和最终模型损失都优于以上几种联邦学习聚合算法,模型损失接近无投毒攻击水平。

表1和表2分别详细记录了本文聚合算法在iid条件下和Non-iid条件下,不同投毒率和遴选率对模型精度的影响(带*号的表示采用传统FedAvg聚合算法)。实验结果表明,过大的遴选率无法充分抵御投毒攻击,过小的遴选率会导致在没有恶意节点的情况下模型精度下降较多。采用70%遴选率的模型综合性能最好,能够抵御30%比例的投毒攻击。

表1 iid条件下投毒率、遴选率和准确率关系

表2 Non-iid条件下投毒率、遴选率和准确率关系

综上所述,在两种不同分布的情况下,使用本文聚合算法的模型性能优于其它聚合算法。这是因为本文聚合算法是根据客户端参数质量进行遴选的,在无投毒攻击的情况下,少量丢弃质量较低客户端梯度并不会对整体模型产生较大影响,并且在面对投毒攻击的情况下,本文聚合算法在保证模型收敛的同时,收敛速度也未显著下降。

3.2.3 区块链共识机制分析

实验首先将诚实参与训练的50个客户端节点平均分配给10个区块链节点。PBFT共识算法需要共识节点数量满足3f+1,本实验设定共识委员会节点数量为4。为了测试区块链节点的行为贡献,实验时将10个区块链节点的行为完成度ac设置为0.95,0.9,0.85,0.8和0.75,ac表示节点成功打包区块、成功参与共识和验证客户端参数的概率。每两个节点设置同一种ac,节点1和节点6的ac为0.95,节点2和节点7的ac为0.9,以此类推。所有节点初始行为贡献分都设置为0。3种行为的权重分别设置为δ1=0.5,δ2=0.25,δ3=0.25, 惩罚系数设置为α1=2,α2=2。 节点选举冷却机制的冷却间隔设置为3。

节点行为贡献分与区块链长度的关系如图6所示,随着区块链长度的增加,节点的行为贡献分整体呈增长趋势,并且行为贡献分与ac呈正相关关系。有时低ac节点贡献分大于高ac节点,这是因为只有模型贡献较高的节点才有资格进入共识委员会参与共识和竞争打包区块的资格。行为贡献分降低是因为节点当选为领导人后未能按时生成新区块,或成为委员会节点却未能完成共识任务。

图6 行为贡献分与区块链长度关系

图7 打包区块次数对比

为验证本文共识算法在提高系统稳定性方面的有效性,本实验与AHBFT[26]共识算法进行了对比。图7展示了不同节点在采用两种共识算法的情况下打包区块次数的对比,AHBFT共识算法将模型准确率作为选举主节点的指标,虽然增加了随机数提高了节点选举的随机性,但是并未考虑节点参与区块链事务的能力,因此在节点的模型质量相差不大的情况下,节点成为主节点的次数大致一样,这给区块链系统带来了不稳定的风险。本文共识算法不仅考虑了模型的质量,还将节点的行为贡献作为领导人节点的选举指标,ac高的节点成为领导人节点的机会更多,能够提高区块链系统的稳定性。而且并未出现单个节点垄断区块打包权的情况,说明节点选举冷却机制能够有效降低系统中心化程度。

实验结果表明,基于双因子贡献的区块链共识机制能够有效激励节点参与模型训练和提高区块链系统的稳定性,节点冷却机制能够有效降低系统中心化程度。

3.2.4 系统时延分析

完成一轮模型训练的时间分为3部分:客户端本地模型训练时间、区块链共识时间、客户端上传和下载模型时间。本方法在客户端上传梯度时使用了梯度压缩,经过测试,在压缩95%梯度之后,仅传输梯度的索引和值,数据量大小约为无压缩时的9.25%。基于双因子贡献的PBFT共识算法在选举委员会节点和领导人节点时需要进行客户端和区块链共识节点的贡献评分和排序,评分阶段耗时与节点数量呈正相关关系,排序阶段使用堆排序,耗时与评分相比可以忽略不计。

在不同数量客户端参与训练的情况下,使用本文算法和使用PBFT共识的传统基于区块链的联邦学习算法(blockchain based federated learning,BFL)的区块链共识时延对比如图8所示,区块链共识时间随客户端数量增加而增长,这是因为随着客户端数量的增多,共识时转发的数据量也在增加。在使用了95%梯度压缩之后,共识时间大大减少,平均共识时间减少为原始算法的18.75%。

图8 共识时延对比

实验结果表明,本文算法在保证模型质量的同时,能有效减少通信压力,并且设计的基于双因子贡献的区块链共识机制,能够吸引高质量节点积极参与训练,提升区块链系统共识效率和稳定性。

4 结束语

本文提出了一种基于联盟链的可信联邦学习方法,利用区块链解决了传统联邦学习中单点故障的问题;通过使用梯度压缩减少了通信压力,并且上传压缩后的梯度可以降低梯度泄露的风险;提出了一种基于贡献的联邦学习聚合算法,根据模型质量进行参数遴选和聚合权重分配,降低了投毒攻击和低质量数据对全局模型的影响;设计了一种基于双因子贡献的区块链共识算法,综合考虑节点的模型贡献和行为贡献,在防止系统中心化的前提下能够激励优质节点参与系统的训练和维护。在未来的工作中,考虑将节点收益用于联邦学习模型交易,并进一步研究区块链共识协议的效率和公平性。

猜你喜欢

投毒联邦贡献
食物中毒案
中国共产党百年伟大贡献
一“炮”而红 音联邦SVSound 2000 Pro品鉴会完满举行
为加快“三个努力建成”作出人大新贡献
303A深圳市音联邦电气有限公司
贡献榜
投毒凶手
把投毒看作“开玩笑”是情感荒漠化表现
Kaminsky域名系统缓存投毒防御策略研究
20年后捷克与斯洛伐克各界对联邦解体的反思