当前位置: 首页 > news >正文

联邦学习之----联邦批量归一化(FedBN)

1. FedBN 是什么?

联邦批量归一化(FedBN) 是一种联邦学习客户端本地模型优化算法。它的核心思想是:在联邦学习的客户端本地训练过程中,保留并独立更新批量归一化层(Batch Normalization, BN)的参数,而不将这些参数上传到服务器进行聚合。

这意味着,每个客户端都拥有自己独特的批量归一化层参数,这些参数捕捉了其本地数据分布的特性,从而有效缓解了数据异构带来的模型性能下降问题。

2. 它解决了什么问题?

FedBN 旨在解决联邦学习中最常见且最具挑战性的问题:客户端数据非独立同分布(Non-IID Data)

  • 什么是Non-IID? 在真实世界的物联网设备(如不同地区的手机、医院、传感器)中,每个设备收集的数据分布可能截然不同。例如:

    • 特征分布偏移(Feature Distribution Skew):北京和上海的摄像头拍摄的街景(光照、建筑风格、天气)不同。

    • 标签分布偏移(Label Distribution Skew):一家儿科医院和一家骨科医院的病历数据标签分布完全不同。

  • 带来的挑战:标准的联邦学习算法(如FedAvg)假设数据是IID的,在Non-IID数据上直接平均所有模型参数会导致模型偏差(Model Bias) 和收敛缓慢,最终全局模型的性能会很差。

FedBN 通过一种“部分个性化”的方式巧妙地应对了这一挑战。

3. 为什么使用它?

使用FedBN的主要原因和优势包括:

  1. 有效提升模型性能:这是最直接的优势。通过允许每个客户端保持其独特的归一化统计量,模型能更好地适应本地数据特征,从而显著提高最终全局模型在异构数据上的准确率。

  2. 几乎零额外通信开销:FedBN不需要上传或下载任何额外的参数。它只是选择性地不聚合BN层的参数,通信量与标准FedAvg完全一样,非常适合资源受限的物联网环境。

  3. 强大的隐私保护:BN层的参数(均值和方差)本质上包含了客户端本地数据的统计信息。不共享这些参数,避免了潜在的数据分布隐私泄露,提供了另一层隐私保护。

  4. 实现简单:无需改变联邦学习的整体框架,只需在服务器端聚合时跳过BN层的参数即可,非常容易集成到现有联邦学习系统中。

4. 它是如何实现的?

FedBN的实现可以集成到最经典的联邦平均算法(FedAvg)中,步骤如下:

假设:神经网络模型中包含一些批量归一化(BN)层。

服务器端执行流程:
  1. 初始化:服务器初始化全局模型 $W_0$,并将其下发给所有参与的客户端。

  2. 客户端选择:在第 $t$ 轮通信中,服务器随机选择一部分客户端$C_t$

  3. 分发模型:将当前的全局模型 $W_t$ 分发给这些客户端。

  4. 客户端本地训练:每个选中的客户端$k$在本地用自己的数据训练模型,得到本地更新后的模型 $W_t^{k}$

  5. 收集模型:服务器接收来自客户端的模型更新${W_t^{k} | k \in C_t}$

  6. 选择性聚合:这是FedBN的核心!服务器在聚合模型参数时,跳过所有批量归一化层(BN层)的参数

    • 聚合非BN层参数:对于模型中所有非BN层的参数(如卷积层、全连接层的权重和偏置),使用加权平均(如FedAvg)进行聚合。
      $W_{t+1}^{\text{non-bn}} = \sum_{k=1}^{K} \frac{n_k}{n} W_{t, \text{non-bn}}^{k}$

    • 保留BN层参数:全局模型中BN层的参数保持不变(或理解为不聚合,继续使用上一轮的全局BN参数,但这些参数在后续下发时又会被客户端的本地BN参数覆盖,实际上服务器端的BN参数从未被使用过)。

  7. 开始下一轮:将聚合后的新全局模型 $W_{t+1}$用于下一轮训练。

客户端本地执行流程:
  1. 接收模型:客户端$k$ 从服务器接收全局模型$W_t$

  2. 关键步骤:客户端用自己本地的BN参数替换掉收到模型中的BN参数。这意味着每个客户端从一开始就使用的是适合自己的归一化统计量。

  3. 本地训练:客户端基于本地数据集和当前的模型(包含本地BN参数)进行多个epoch的训练。在训练过程中,BN层的参数会随着本地数据分布进行更新

  4. 返回模型:将训练后的整个模型(包括更新后的本地BN参数)返回给服务器。

5、对FedBN的直观理解

可以把FedBN理解为一种 “和而不同” 的策略:

  • “和”:所有客户端在模型结构非BN层参数上协同合作,学习一个通用的特征表示和决策逻辑。这是通过服务器聚合实现的。

  • “不同”:每个客户端允许保留自己独特的数据标准化方式(BN层参数)。这相当于承认了“你们的數據分布不同是客观事实”,并让模型自适应地处理这种差异,而不是强行用全局平均来抹杀这种差异。

6. 批量归一化层是什么?

批量归一化层是深度神经网络中的一种特殊结构,它的核心目的是解决“内部协变量偏移” 问题。

  • 内部协变量偏移是什么?
    简单来说,在训练深度网络时,每一层的输入分布都会随着前一层参数的更新而不断改变。这就像是一个移动的目标,导致后续层需要不断适应新的数据分布,使得训练变得困难、缓慢且不稳定。

  • BN层如何解决?
    BN层的做法非常直接:它对每一批输入数据都进行标准化处理,将其强制转换为一个均值为0、方差为1的标准分布

  • 公式:对于一个小批量数据 $B = {x_1, x_2, ..., x_m}$

  • $\mu_B = \frac{1}{m} \sum_{i=1}^{m} x_i$

  • // 计算批数据的均值


  • $\sigma_B^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_B)^2$

  • // 计算批数据的方差
    $\hat{x_i} = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}$

  • // 将数据标准化($\epsilon$是一个极小常数,防止除零错误)

这样做的巨大好处是:

  1. 加快训练收敛速度:稳定了每一层的输入分布,使得目标不再“移动”,网络可以更快、更稳定地收敛。

  2. 允许使用更大的学习率:标准化后的数据更稳定,不容易因学习率稍大而导致梯度爆炸或训练发散。

  3. 有一定的正则化效果:由于每个批次的均值方差都不同,这种噪声化的处理在一定程度上可以防止过拟合,减少对Dropout等技术的依赖。


7. 批量归一化层的参数是什么?有什么作用?

这是最关键的部分。BN层并不仅仅是做简单的标准化,它最后还加入了两个可学习的参数缩放参数(γ) 和 平移参数(β)

完整的BN操作包含最后一步:

$y_i = \gamma \hat{x_i} + \beta$


其中$y_i = \gamma \hat{x_i} + \beta$ 是上面标准化后的值。

现在我们来详解这两个参数:

a) 参数是什么?
  1. γ (gamma)缩放参数(Scale Parameter),一个向量。

  2. β (beta)平移参数(Shift Parameter),一个向量。

它们的维度都与输入该BN层的特征通道数(Channels)相同。例如,如果BN层接在一个有64个通道的卷积层后面,那么γ和β都是长度为64的向量。

b) 参数的作用是什么?为什么要引入它们?

作用:让网络自己决定是否要恢复以及如何恢复数据的原始分布。

  • 为什么需要这个功能?
    最开始的标准化操作(减均值、除方差)虽然稳定了分布,但太过暴力。它强制把数据变成了一个均值为0、方差为1的分布。然而,对于某些层来说,原来的分布可能才是最优的。强制改变可能会破坏网络已经学到的特征表示。

  • γ和β如何工作?

    • 如果网络认为标准化后的分布更好,它就可以学会将$\gamma$ 设置为1,$\beta$ 设置为0。此时BN层就等价于最初的标准化操作。

    • 如果网络认为原始的分布更好,它就可以学会通过 $\gamma$$\beta$将数据“恢复”回原来的样子

      • 假设原始数据的均值是$\mu$,方差是$\sigma^2$

      • 如果设置$\gamma = \sigma$,$\beta = \mu$,那么:
        $y_i = \sigma \cdot \hat{x_i} + \mu = \sigma \cdot (\frac{x_i - \mu_B}{\sigma_B}) + \mu$

      • 当训练完美收敛,批次统计量等于整体统计量($\mu_B \approx \mu, \sigma_B \approx \sigma$)时,

      • $y_i \approx x_i$。这意味着BN层几乎变成了一个恒等映射,保留了原始输入。

    因此,γ和β赋予了网络强大的灵活性:它可以选择“完全标准化”、“完全不标准化”、或者“部分标准化成任何一种均值和方差”的分布。 网络可以自主学习对于当前层来说,什么样的分布是最有利于最终任务(分类、回归等)的。

小结BN参数:
  • γ (gamma):控制输出的缩放程度。如果γ大,说明该特征通道的方差大,重要性高。

  • β (beta):控制输出的偏移程度。决定了该特征通道的中心位置。


8. 在联邦学习(FedBN)中的视角

现在再回看FedBN,就非常容易理解了:

  1. BN参数是数据分布的“指纹”:γ和β是在训练过程中根据数据分布学习得到的。不同分布的数据(如猫的图片和狗的图片)会学到完全不同的γ和β参数。

  2. Non-IID数据的冲突:在联邦学习中,客户端A( mostly 猫的图片)和客户端B( mostly 狗的图片)学到的BN参数会差异巨大。如果服务器强行将这两个“指纹”平均,会得到一个既不像猫也不像狗的模糊“指纹”,这个模糊的指纹下发给任何一个客户端,都会破坏其本地数据的正常分布,导致模型性能下降。

  3. FedBN的解决方案不聚合BN参数。让客户端A保留适合“猫分布”的BN参数,客户端B保留适合“狗分布”的BN参数。这样,每个客户端都能在自己的数据上获得最佳的标准化效果,从而极大提升全局模型的表现。

http://www.xdnf.cn/news/1351297.html

相关文章:

  • 非线性规划学习笔记
  • 【KO】前端面试题一
  • 浮点数比较的致命陷阱与正确解法(精度问题)
  • 【Linux】深度学习Linux下的包管理器yum/apt
  • 自动化知识工作AI代理的工程与产品实现
  • 文献阅读笔记【物理信息神经网络】:Physics-informed neural networks: A deep learning framework...
  • 深入理解 Linux 系统文件 I/O:从 open 到重定向的底层逻辑》
  • CA6150主轴箱系统设计cad+设计说明书
  • Spring:IOC(控制反转 )、DI(依赖注入 )、AOP(通知类型、事务、拦截器)
  • 博士招生 | 美国圣地亚哥州立大学 Yifan Zhang 课题组博士招生,AI 安全领域顶尖平台等你加入!
  • ​崩坏世界观中的安全漏洞与哲学映射:从渗透测试视角解构虚拟秩序的脆弱性​
  • lanczso算法中的额外正交化代码解释
  • Linux问答题:分析和存储日志
  • Leetcode—931. 下降路径最小和【中等】
  • 告别静态网页:我用Firefly AI + Spline,构建次世代交互式Web体验
  • 同类软件对比(一):Visual Studio(IDE) VS Visual Studio Code
  • 支持电脑课程、游戏、会议、网课、直播录屏 多场景全能录屏工具
  • LeetCode 448.找到所有数组中消失的数字
  • Ubuntu通过 systemd 管理 gpt4free,需为其创建 g4f.service 文件,定义服务的启动、停止等操作(未实践)
  • 97. 小明逛公园,Floyd 算法,127. 骑士的攻击,A * 算法
  • SQL注入1----(sql注入原理)
  • csrf漏洞学习笔记
  • 【KO】前端面试三
  • RobotFramework介绍与使用
  • 改华为智能插座为mqtt本地控制
  • 计算机视觉工程师业务场景题:智能推荐视频封面
  • ros 消息类型与查阅相关内容
  • Redis面试精讲 Day 28:Redis云原生部署与Kubernetes集成
  • 鸿蒙中CPU活动分析:CPU分析
  • Java—— 动态代理