论文地址:https://ieeexplore.ieee.org/abstract/document/9293091
文章提出了一种基于区块链的去中心化、自治的 FL 架构来应对现阶段所面临的各种挑战(架构如Fig.1所示)。在FL节点管理上,基于联盟链的架构保证了节点的权限控制。在存储方面,文章设计了模型和更新的链上存储模式,通过这种模式,节点可以快速获取最新的模型。每个经过验证的更新都会记录在区块链上并保持不被篡改。考虑到区块链上巨大的存储消耗,部分节点可以放弃历史区块以释放存储空间。在区块共识机制方面,提出了一种新颖的委员会共识机制,仅增加少量验证消耗,在恶意攻击下获得更高的稳定性。在每一轮 FL 中,更新都会由少数节点(即委员会)进行验证和打包。委员会共识机制让最诚实的节点互相补充,不断完善全局模型。少量不正确或恶意的节点更新将被忽略,以避免损坏全局模型。同时,BFLC(Blockchain-based Decentralized Federated Learning Framework with Committee Consensus)训练community具有灵活性,节点可以随时加入或离开,不会破坏训练过程。结合有效的激励机制,做出贡献的节点可以获得实际奖励,从而促进整个训练community的良性循环发展。
文章贡献总结如下 :(1)提出了基于区块链的联邦学习框架BFLC,详细定义了模型存储模式、训练过程和新颖的委员会共识机制。(2)从技术上讨论了BFLC的可扩展性,包括community的节点管理、恶意节点攻击的分析以及存储优化。(3)通过对真实世界 FL 数据集的实验证明了 BFLC 的有效性,还通过模拟恶意攻击来验证 BFLC 的安全性。
区块链的去中心化特性可以取代传统联邦学习中央服务器的位置,其功能可以通过智能合约来实现,并通过区块链上的交易来驱动。BFLC中参与节点通过区块链进行FL,维护全局模型和本地更新。考虑到 FL 的通信成本,利用一种新颖的授权共识机制来解决梯度选择和区块生成的任务。
为了实现权限控制,BFLC的存储是联盟区块链系统,只有授权的设备才能访问FL训练内容。区块链中设计了两种不同的区块来存储全局模型和本地更新,统称为学习信息。为了简单起见,假设一个块中只放置一个学习信息。
首先,随机初始化的模型被放入#0号块中,然后开始第0轮训练。节点访问当前模型并进行本地训练,并将验证后的本地梯度放入新的更新块中。当持续有足够多的更新区块时,智能合约触发聚合,生成下一轮的新模型并上链。需要注意的是,FL训练仅依赖于最新的model block,并且存储历史块以用于故障回滚和区块验证。
将每轮所需的更新次数表示为 k k k,并将轮数表示为 t t t。# t × ( k + 1 ) t\times(k+1) t×(k+1)号区块包含第 t t t轮的模型,称为model block。# [ t × ( k + 1 ) + 1 ] [t\times(k+1)+1] [t×(k+1)+1]至# [ ( t + 1 ) × ( k + 1 ) − 1 ] [(t+1)\times(k+1)-1] [(t+1)×(k+1)−1]号区块存储第t轮的模型更新,称为update block。一个模型区块包括:区块头、轮数 t t t和全局模型。一个更新区块包括:区块头、轮数 t t t、本地更新梯度、上传者地址、更新分数(update score)。
区块链的链式结构保证了不可篡改。因此,将正确的区块附加到链上是共识机制工作的关键组成部分。基于竞争的共识机制首先将区块附加到链上,然后进行共识。相反,基于通信的生成机制在附加块之前达成一致。
考虑到共识的计算和通信成本,文章提出了一种高效且安全的委员会共识机制(Committee Consensus Mechanism, CCM),在将局部梯度附加到链之前对其进行验证。在这种设置下,少数诚实的节点将组成一个委员会,负责局部梯度的验证和区块的生成。与此同时,其余节点执行本地训练并将本地更新发送给委员会。然后委员会验证更新并为其打分。只有符合条件的更新才会被打包到区块链上。下一轮开始时,根据上一轮节点的得分选举新的委员会。值得注意的是,更新验证是 CCM 的关键组成部分。因此,委员会成员通过将其数据视为验证集来验证本地更新,验证准确性(validation accuracy)作为分数。委员会无需进行进一步操作,只需要运行学习模型的基本能力。综合各委员会成员的分数后,中位数将成为本次更新的分数。
BFLC具有以下优势:(1)高效率(High efficiency),只有少数节点会验证模型更新,而不是广播到各个节点达成共识。(2)K-fold交叉验证(K-fold cross-validation),委员会成员不参加本轮本地训练。因此,将委员会的本地数据作为验证集。随着每轮委员会成员的交替,验证集也会发生变化。在此设置中,实现了 FL 上的 K-fold交叉验证。(3)反恶意(Anti-malevolence),根据验证分数,智能合约将选出相应性能较好的节点,并组成新的委员会进行下一轮的培训。这意味着所选的本地数据分布是群居的并且节点没有恶意。
除委员会外的节点每轮进行本地训练。在FL中,出于安全和隐私的考虑,原始数据将保存在本地节点中,这些节点只将梯度上传到区块链上。此外,还有两个主要挑战:(1)本地数据分布为non-IID。(2)设备并不总是可用。
为了解决第一个挑战,每轮只需要一定数量的本地更新,委员会共识机制可以通过委员会成员的数据分布验证本地更新来最大化全局模型的泛化能力。为了解决第二个问题,为节点设计了一种主动的本地学习进程。节点可以随时主动获取当前的全局模型并进行本地训练。梯度将发送给委员会并进行验证。当符合条件的更新被打包到区块链上时,作为奖励,可以将代币附加到它们上。
如上所述,每轮都需要一定数量的有效更新。因此,当委员会验证足够的本地更新时,聚合过程就会被激活。这些经过验证的更新由委员会汇总成一个新的全局模型。聚合可以在局部梯度或局部模型上进行,这两种方法的网络传输消耗是相等的。新的全局模型打包到区块链上后,将再次选举委员会,并开始下一轮的训练。
BFLC的训练过程依赖于节点的相互促进,节点管理也是BFLC的关键部分。参与节点不仅可以访问全局模型,还可以上传更新来影响全局模型。为了控制权限,我们指定了构成训练社区的初始节点负责节点管理,即管理者。每台设备在加入训练社区之前都必须经过管理人员的验证。此验证采用黑名单模式:如果设备因不当行为(例如提交误导性更新、传播私有模型)而被踢出社区,则该设备将被拒绝。
根据所提出的区块链存储结构,新节点加入后可以在链上快速找到最新的全局模型。节点可以立即使用模型完成本地任务,也可以使用本地数据更新模型,并在共识委员会验证后获得链上分数。值得注意的是,每轮聚合只需要一定数量的有效更新,并且也只有部分节点在线参与。因此,只要节点主动提交更新,就有可能参与全局模型更新并获得分数。同时,部分离线节点不会阻碍FL进度。
社区中的节点始终可以使用模型而无需提交更新,因此需要有效的激励来鼓励节点向全局模型提供更新。为了解决这个问题,提出了一种称为按贡献分享利润(profit sharing by contribution)的激励机制。(1)权限费用(Permission fee):每台设备都需要支付全局模型的访问权限费用,这些费用由管理者保留。然后,节点可以无限制地访问社区中的最新模型。(2)利润分享(Profit sharing):每轮汇总后,管理者根据所提交更新的得分向相应节点分配奖励。因此,频繁提供更新可以获得更多奖励,不断更新的全局模型将吸引更多节点参与。这种激励机制具有很高的可扩展性,可以适应不同的现实应用。许可费用的配置、利润分成比例或分红模式都值得研究。
每轮结束时,都会从经过验证的更新提供者中选出一个新的委员会。在去中心化的训练环境中,这次选举会显著影响全局模型的性能,因为委员会决定将聚合哪些本地更新。委员会选举方式包括以下几类:(1)随机选举:新的委员会成员从经过验证的节点中随机选出。从机器学习的角度来看,这种方法提高了模型的泛化性并减少了过度拟合。然而,恶意节点伪装成正常节点,对恶意攻击的抵抗能力较弱。(2)按分数选举:验证分数最高的提供商组成新委员会。由于委员会中缺少部分节点,这可能会加剧样本分布的不均匀。但对于恶意节点攻击来说,这种方式显着增加了攻击成本,并带来了更多的安全性和稳定性。(3)多因素优化:该方法考虑设备的多个因素(即网络传输速率)和验证分数来进行最优选择。但这种优化会带来额外的计算开销。因此,应根据实际场景和相关要求来应用该方法。
恶意节点被定义为提交不正确的恶意模型更新的节点。在原始 FL 设置中,FedAvg将所有更新聚合到新的全局模型中。如果存在恶意更新,全局模型就会中毒并获得较低的性能。如上所述,根据委员会共识机制,更新将在汇总之前由委员会验证。在本小节中,我们从理论上分析了恶意攻击的因素和成功的可能性。
将所有节点的数量记为 N N N,其中委员会成员的数量为 M M M,其余 N − M N−M N−M个节点为训练节点。显然,当且仅当超过 M 2 \frac{M}{2} 2M个委员会成员进行合作时,恶意更新才会被接受。然而,该委员会成员是上一轮表现最好的 M M M个,这意味着这些恶意成员的更新被上一委员会中的其他 M 2 \frac{M}{2} 2M个恶意节点所接受。这是一个无限依赖循环,因此,只要第一个委员会中有超过 M 2 \frac{M}{2} 2M个诚实节点,就没有恶意节点可以进入委员会并损害全局模型。
考虑另一种极端情况:恶意节点合谋冒充正常节点来赢得委员会席位。当恶意节点占据一半席位时,攻击开始。为了分析这种攻击模式,将参与节点的数量记为 A A A, A A A中恶意节点的百分比为 q ∈ ( 0 , 1 ) q\in(0,1) q∈(0,1),委员会的百分比为 p ∈ ( 0 , 1 ) p\in(0,1) p∈(0,1)。攻击目标是在委员会中拥有 A × p 2 \frac{A\times p}{2} 2A×p个以上席位。假设每个节点的性能相似。因此,攻击成功概率可以计算为该事件的概率:选取 A × p A×p A×p个节点来自全部节点,其中一半以上来自 A × q A×q A×q(恶意节点)。通过固定 A = 1000 A=1000 A=1000,在Figure 3 中绘制了沿 p p p和 q q q的概率变化。需要注意的是,只有当恶意百分比大于50%时,攻击成功概率才会明显大于0。这个结论与PoW区块链系统中的51%攻击类似。换句话说,在去中心化的社区中,恶意节点应该持有51%的计算资源来攻击系统,这样的成本远远大于收益。此外,历史模型和更新都存储在区块链上,因此,在攻击发生后,故障恢复始终是一种选择。
在实际应用中,存储开销是决定训练设备硬件要求的重要因素。基于上述区块链存储方案,可以快速找到最新的全局模型。历史模型和更新虽然可以提供灾后恢复功能,但也占用了巨大的存储空间。在这里,我们给出一个简单可行的存储开销降低方案:容量不足的节点可以在本地删除历史区块,只保留本轮的最新模型和更新。这样可以解决部分节点存储空间不足的问题,同时在核心节点上保留灾难恢复和区块验证的能力。但这种方法的缺点也很明显。区块链的可信度随着节点的删除而降低。在相互不信任的训练社区中,出于安全考虑,每个节点可能不会使用此方案。
因此,可信可靠的第三方存储可能是更好的解决方案。区块链只维护每个模型或更新文件所在的网络地址以及修改操作的记录。其他节点与中心化存储交互,获取最新模型或上传更新。这个集中存储将负责灾难恢复备份和分布式文件存储服务。
将BFLC 与basic FL框架(fedAvg)和stand-alone训练框架作为基线进行比较。每个框架都执行经典图像分类模型AlexNet作为全局模型,并固定一组模型超参数以确保公平性。在实验设置上,将每轮active节点的比例定义为 k k k%,其中40%将在下一轮被选举为BFLC的委员会成员。 Basic FL 的训练节点比例也是 k k k%。同时,stand-alone训练将利用整个数据集。在不同 k k k值的条件下,我们将它们的性能记录在TABLE 1中。
从TABLE 1中可以看出,随着active节点比例的增加,BFLC的性能不断接近基本FL框架的效果,仅与完整数据集的stand-alone训练相比略有损失。值得一提的是,BFLC 通过委员会共识机制可以显着减少共识的消耗。例如,如果训练节点数量为 P P P,委员会规模为 Q Q Q,则活跃节点为 P + Q P+Q P+Q。对于BFLC,每轮共识的计算量可以表示为 P × Q P×Q P×Q,而广播方式是 ( P + Q ) 2 (P+Q)^2 (P+Q)2。与独立训练相比,BFLC还具有联邦学习的隐私数据保护功能,并且不需要可信的中心服务器来管理,从而显着降低了隐私泄露的风险。
训练社区中的恶意节点会产生有害更新,如果被集成,将显着降低全局模型的性能。我们模拟恶意节点攻击来演示所提出的 BFLC、basic FL 和 CwMed在active节点中不同恶意比例下将受到怎样的影响。假设恶意节点的攻击模式是带有点状高斯随机噪声的随机扰动。
basic FL不会执行任何防御措施,并且将集成随机选择的活动节点生成的模型更新。 CwMed 构造一个全局梯度,其中每个条目是具有相同坐标的局部梯度中条目的中值。 BFLC 依靠上述委员会共识来抵御攻击。每次更新都会从委员会获得一个分数(即局部预测准确度中位数)。
为了增强攻击的有效性,假设恶意节点是串通的,即恶意委员会的成员会对恶意更新给予随机高分(例如,90%-100%)。活跃节点比例固定为10%,其中20%将当选为下一轮委员会。如Figure 4所示,与对比方法相比,BFLC能够抵抗更高的恶意节点比例。这说明了BFLC在委员会机制的帮助下的有效性。