统计异质性对联邦学习构成一个重要难题。当客户端数据分布 Pk(x,y) 差异很大时,通过标准FedAvg训练的单个全局模型可能对许多(如果不是所有)客户端表现不佳。这种方法代表一种折衷,可能无法捕获任何特定客户端数据中存在的具体模式。尽管完全个性化模型(我们稍后会讨论)旨在为每个客户端创建独有模型,聚类联邦学习(CFL)提供一种居中方法。
CFL的核心理念是直观的:如果客户端根据其数据特性或模型目标自然形成群组,为何不为每个群组训练一个单独的模型?CFL不是将单个模型强加于不同群体,而是将客户端划分成群集,并为每个群集训练一个专门的模型。同一群集内的客户端协作训练其共享的群集模型,从中获得比在标准FL设置中从不同客户端处接收到的更相关的更新。
联邦学习中聚类的工作方式
实施CFL需要解决两个主要问题:我们如何衡量客户端之间的相似度?以及我们如何执行聚类本身?
衡量客户端相似度
由于服务器无法直接访问客户端数据,相似度必须间接推断。常见的方法包括:
- 模型更新相似度: 客户端计算的梯度或模型权重更新反映其本地数据分布。数据相似的客户端可能产生相似的更新。可使用客户端更新向量之间的余弦相似度等度量来衡量相似性。
- 模型性能: 可以评估不同模型(可能是现有群集模型)在客户端本地数据上的表现。特定模型表现最佳的客户端可以分组。这通常是迭代聚类算法的基础。
- 损失函数相似度: 与模型性能相关,损失函数的形状或值可以显示相似性。
- 数据表示相似度(较少使用): 方法可能涉及客户端共享其数据分布的高度抽象、隐私保护表示,但这会增加复杂性,如果处理不当,可能带来隐私风险。
与标准FedAvg相比,衡量相似度通常需要额外的通信轮次或计算。
聚类机制
一旦定义了相似度度量,各种聚类算法即可适应联邦环境。该过程通常是迭代的,由中心服务器管理:
- 初始化: 从一组初始群集模型开始(例如,随机初始化,或从全局模型导出)。
- 客户端分配: 客户端确定其群集归属。这可能涉及客户端下载候选群集模型,在本地评估它们,并根据所选的相似度指标(通常是最低损失)报告其偏好的群集。或者,服务器可以根据提交的更新计算相似度并分配客户端。
- 群集内训练: 客户端执行本地训练,通常从其分配的群集模型开始。
- 群集内聚合: 服务器仅聚合同一群集内客户端的更新,以生成该群集模型的下一版本。每个群集内可使用标准聚合方法,如FedAvg。
- 迭代: 重复步骤2-4。随着群集模型的演变和改进,客户端分配可能在后续轮次中改变。
聚类联邦学习概览。数据分布相似的客户端(A1-A3, B1-B2)被分组。它们主要与其各自的群集模型(模型 A, 模型 B)交互,这些模型由服务器管理。服务器还根据相似度处理群集分配。
代表性聚类算法
有几种算法实现了这些思路。一个知名的例子是迭代联邦聚类算法(IFCA),有时也被称为HypCluster。在IFCA中,服务器维护多个候选模型(每个潜在群集一个)。在每一轮中:
- 服务器将所有当前群集模型发送给参与客户端。
- 每个客户端在其本地数据上评估这些模型,并识别产生最低损失的模型。这决定了客户端在该轮的群集分配。
- 客户端使用其分配的群集模型作为起点进行本地训练。
- 客户端将其更新发送回服务器。
- 服务器单独聚合每个群集的更新,更新对应的群集模型。
其他方法可能使用层次聚类方法来创建嵌套群组或相似度图,其中边权重代表客户端相关性。
聚类联邦学习的优势
- 提高异质数据上的准确度: 通过为客户端子群组训练专用模型,CFL可以比单个全局模型实现更高的准确度,尤其是在客户端数据存在明显不同模式时。
- 隐式个性化: CFL提供一种个性化形式,因为客户端受益于基于与自身数据相似的数据训练的模型,而无需为每个客户端提供完全独有的模型。
- 更好的收敛性: 在更同质的群集内训练有时可以带来更快、更稳定的收敛,相比于在标准FL中平均高度多样化的更新。
挑战与考量
尽管有其益处,CFL也带来一系列难题:
- 确定群集数量: 选择最优群集数量 (k) 通常很困难且依赖于数据。可能需要先验知识或超参数调整。
- 聚类开销: 衡量相似度、分配客户端以及可能通信多个模型的过程,与FedAvg相比,可能会增加计算和通信成本。
- 群集稳定性和客户端漂移: 客户端可能在群集之间来回切换,或者最优聚类结构可能随时间变化,需要强大的分配机制。
- 群集不平衡: 群集中的客户端数量可能差异很大,影响训练动态和模型质量。
- 冷启动问题: 将新客户端分配到适当的群集需要一种高效且无显著开销的机制。
- 偏差增强的可能性: 如果群集与敏感属性高度相关,若不谨慎实施,CFL可能会增强这些子群组中存在的偏差。
聚类联邦学习是一组有价值的方法,用于减轻统计异质性的负面影响。它在单个全局模型的简洁性与完全个性化的复杂性之间取得平衡,当客户端可以根据其数据或学习目标进行有意义的分组时,它能够提升性能。然而,实际部署需要认真考量聚类机制、相关开销以及特定应用的最佳群集数量。