一步搞清楚本地客户端和全局服务器是如何更新模型的

我们可以把它想象成一个 “老师”和“学生” 协作学习的过程。

  • 全局服务器 = “老师”

  • 本地客户端 = “学生”

整个模型更新的过程遵循一个核心原则:“数据不动,模型动”。原始数据永远留在本地客户端,只有模型的参数(即模型的“知识”)在服务器和客户端之间流动。

下面我们以最经典、最常用的 联邦平均算法(Federated Averaging, FedAvg) 为例,分步拆解这个更新过程。


1、总体流程概览

整个过程是一个循环迭代的过程,每一轮通信(Communication Round)都包含以下四个核心步骤,如下图所示:


2、第一步:服务器端-初始化与广播(老师布置作业)

  1. 初始化:中央服务器会随机初始化一个全局模型,我们称之为 W_global(全局模型)。这就像一个刚毕业的新老师,脑子里有一套基础但还不精准的知识体系。

  2. 选择与广播

    • 在每一轮训练开始时,服务器会从所有可用的客户端(比如上百万部手机)中,随机选择一小部分(例如1000部)。这么做主要是为了效率,不可能每次都让所有人参与,不然会增加通信开销。

    • 服务器将当前的全局模型 W_global 发送给这些被选中的客户端。

    • 这就好比老师(服务器)把今天的教案(全局模型)发给了班上的一部分同学(客户端)


3、第二步:客户端 - 本地模型更新(学生自己做功课)

收到全局模型的每个客户端,会开始执行本地训练:

  1. 加载数据:客户端从自己的本地存储中加载私有的训练数据(比如你手机上的照片、输入法记录)。

  2. 本地训练

    • 客户端用收到的 W_global 作为初始模型,用自己的本地数据进行训练,执行多次(比如10次)梯度下降(SGD)迭代。

    • 训练完成后,客户端手上的模型参数更新了,我们称之为 W_local(本地参数)

    • 这就好比每个同学(客户端)都按照老师发的教案(W_global)自学,并结合自己的练习题(本地数据),总结出了一套自己的解题心得(W_local)。注意,每个同学的练习题都不一样,所以他们的心得也各有侧重(这个就设计到现实生活中的数据异构性,每个客户端的数据不一样,训练的参数也会不一样,甚至最后可能无法收敛,这过程中也会出现坏学生为了应付了事随便写的参数,或者伪造参数,就会导致最后模型的性能降低。当然也会有坏客户为了破坏模型性能,会选择伪造参数,窃取参数,也就需要对参数进行加密等操作)。

    • 全局模型 = 一本不断再版的 “通用教材”

    • 本地客户端 = 使用这本教材的 “学生”(每个学生都有自己的私人练习题)

    • 联邦学习的过程 = 共同编写和修订这本教材的过程

  3. 计算更新

    • 客户端计算出本地模型与初始全局模型的差异(即更新量):ΔW = W_local - W_global。有些实现也会直接上传整个 W_local

    • 关键: 客户端绝不会上传它的原始数据,只上传模型的“更新量”或“新参数”。这完美保护了隐私。


4、全局模型

  1. 每一轮训练,服务器都会收集一批客户端的“学习心得”(模型更新),然后把这些心得中最有价值的部分融合起来,更新到这本“教材”里。所以,全局模型是所有参与客户端集体智慧的结晶。

  2. 最终的产品与目标

    • 联邦学习的最终目标,就是要训练出这个高质量的全局模型。我们所有的工作——本地计算、通信、聚合——都是为了让它变得更好、更智能、更通用。

    • 训练完成后,这个全局模型可以被部署到新设备上直接使用,或者作为基础模型供进一步微调。它就是整个项目的产出物

5、服务器端 - 聚合更新(老师批改作业,汇总答案)

  1. 收集更新:服务器等待所有被选中的客户端上传它们的模型更新 ΔW₁, ΔW₂, ..., ΔW_k(或它们的新参数 W_local₁, W_local₂, ...)。

  2. 加权平均:

    • 服务器不会简单地把所有更新一平均了事。它会做一个加权平均

    • 权重取决于每个客户端本地数据的数量。数据量越大的客户端,它的“话语权”就越大。

    • 计算公式
      新的全局模型: $W_{\text{global}}^{\text{new}} = \frac{n_1 \cdot W_{\text{local}_1} + n_2 \cdot W_{\text{local}_2} + \cdots + n_k \cdot W_{\text{local}_k}}{n_1 + n_2 + \cdots + n_k}$

      • 其中 n₁, n₂, ..., n_k 是每个客户端本地数据的样本数量。

    • 这就好比老师(服务器)收上所有同学的作业(模型更新),发现有的同学做的题多(数据量大),有的做的题少。老师更相信做题多的同学的经验,于是给他们的答案更高的权重,最后汇总所有答案的优点,形成了一份全新的、更完善的教案(W_global_new)。

    • 全局模型=一本不断再版的 “通用教材”

    • 本地客户端=使用这本教材的 “学生”(每个学生都有自己的私人练习题)

    • 联邦学习的过程 = 共同编写和修订这本教材的过程


6、循环迭代

服务器用这个更新后的 W_global_new 替换掉旧的全局模型。然后,整个过程重复第一步:选择新的一批客户端,广播新的全局模型,开始下一轮的学习。

如此循环往复,直到全局模型达到一个令人满意的精度或收敛为止。


7、全局模型与联邦训练之间的关联(“教材”与“编写过程”如何互动?)

全局模型既是联邦训练的“输入”,也是它的“输出”。这个“输入-处理-输出”的循环,构成了训练的完整闭环。

  1. 作为“输入” (Starting Point)

    • 在每一轮训练开始时,当前版本的全局模型(W_global^t)被分发给选中的客户端。

    • 作用: 它确保了所有客户端是在同一个知识基础上进行学习和改进的。如果每个客户端都从自己的随机点开始,最终就无法将它们的知识融合到一起。

  2. 经历“处理” (Processing)

    • 客户端收到全局模型后,用它在本地的、私有的数据上进行学习。这个学习过程可以看作是对全局模型的一次 “检验”和“ refinement(精炼)” 。

    • 检验: 模型在用户A的数据上可能表现好,在用户B的数据上表现差,这暴露了模型的不足和偏差。

    • 精炼: 每个客户端都会根据本地数据的特点,对模型进行微调,让它更适应自己的数据分布。这个过程相当于每个学生用私人练习题去验证和补充教材内容,并做了自己的笔记。

  3. 作为“输出” (Updated Product):

    • 服务器将客户端返回的更新(“学生们的笔记”)进行聚合(加权平均),生成一个新版本的全局模型(W_global^{t+1})。

    • 作用: 新模型融合了更多样、更广泛的知识,理论上比旧模型更全面、性能更好、泛化能力更强。这就像老师汇总了所有学生的优秀笔记,修订出了教材的“第二版”。

    • 这个新模型立即成为下一轮训练的输入,循环往复。

重点:

  • 不能把全局模型想象成一个固定的“指挥官”。

  • 把它想象成一个不断进化、不断成长的“核心”。它从一张白纸(随机初始化)开始,通过不断地“听取”成千上万客户端的意见(聚合更新),吸收全世界的知识,最终成长为一个见多识广、能力强大的模型。

8、总结

步骤执行者动作输入输出比喻
1. 广播全局服务器选择客户端并发送模型当前全局模型 W_globalW_global (发送)老师布置作业
2. 本地更新本地客户端本地训练W_global + 本地数据本地模型 W_local学生自己做功课
3. 聚合全局服务器加权平均所有客户端的 W_local新全局模型 W_global_new老师批改汇总
4. 循环重复过程
  1. 隐私保护:数据始终在本地,只传输模型参数更新,这是联邦学习的立身之本。

  2. 通信效率:客户端本地进行多次迭代,大大减少了服务器和客户端之间的通信轮数,这是FedAvg算法的巨大优势。

  3. 非独立同分布:每个客户端的数据分布不同,这是联邦学习的主要挑战。加权平均是一种有效的聚合策略,旨在求取“最大公约数”。

  4. 异构性:客户端的设备、网络、数据量都不同,所以你的开题设计需要考虑如何选择客户端、如何处理掉队者等问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98081.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨平台超低延迟RTSP播放器技术设计探究

摘要 RTSP 播放在实验室里“跑起来”并不难,难的是在真实场景中做到 超低延迟、跨平台、高稳定,并长期可靠运行。大牛直播SDK(SmartMediaKit)的全自研跨平台 RTSP 播放栈,正是把这些工程难题转化为可用、可控、可交付的…

知识点汇集——web(三)

1.index.php 的备份文件名通常为index.php.bak 2.PHP2是服务器端脚本语言,主要用于处理和生成网页的内容,当用户访问一个网站时,PHP脚本会在服务器上执行,生成动态的HTML页面,然后将页面发送给用户的浏览器进行显示。p…

变频器【简易PLC】功能中的时间问题

一、变频器的简易PLC功能简易PLC功能是将提前设置好的多端速频率,进行自动运行,类似于PLC程序中的CASE指令一样,我们需要提前设置好几段频率,该频率所维持的时间,以及加减速时间,按下启动后,变频…

Swift 解题:LeetCode 372 超级次方(Super Pow)

文章目录摘要描述题解答案题解代码分析代码解析示例测试及结果时间复杂度空间复杂度总结摘要 在算法题里,有一些问题看似“简单”,比如算一个幂次方,但一旦放大规模就完全不同了。LeetCode 372 超级次方就是这样的题目。普通的幂运算没什么难…

揭秘23种设计模式的艺术与技巧之结构型

结构型模式:优化软件结构的策略代理模式(Proxy Pattern)代理模式就像一个经纪人,代表真实对象进行操作。比如,在网络访问中,我们可能会通过代理服务器来访问外部网站。在软件中,当一个对象由于某…

PyTorch图像数据转换为张量(Tensor)并进行归一化的标准操作

transform ToTensor() 是 PyTorch 中用于将图像数据转换为张量(Tensor)并进行归一化的标准操作,以下是对其功能的逐层解析及关键细节:核心功能总结功能描述类型转换将 PIL Image / numpy 数组 → PyTorch Tensor (dtype: torch.f…

HarmonyOS学习

一,DevEoc Studio基本内容学习项目工程目录entry 默认的项目入口模块ets 界面相关文件(目前都放入pages文件内即可)resource资源文件,配置文件index.est默认文件’ ‘开头的一般为装饰器,修饰功能,来约定后…

【大前端】Vue 和 React 主要区别

Vue 与 React 的主要区别 在前端开发领域,Vue 和 React 是两大最受欢迎的框架/库。尽管它们都可以帮助我们构建现代化的 Web 应用,但在设计理念、开发方式、生态系统等方面有许多不同。本文将从多个角度对两者进行对比。 目录 框架与库的定位核心理念…

高级RAG策略学习(五)——llama_index实现上下文窗口增强检索RAG

LlamaIndex上下文窗口实现详解 概述 本文档详细讲解基于LlamaIndex框架实现的上下文窗口RAG系统,重点分析关键步骤、语法结构和参数配置。 1. 核心导入与环境配置 1.1 必要模块导入 from llama_index.core import Settings from llama_index.llms.dashscope import …

Doris 数据仓库例子

基于 Apache Doris 构建数据仓库的方案和具体例子。Doris 以其高性能、易用性和实时能力,成为构建现代化数据仓库(特别是 OLAP 场景)的优秀选择。一、为什么选择 Doris 构建数据仓库?Doris(原名 Palo)是一个…

WebRTC进阶--WebRTC错误Failed to unprotect SRTP packet, err=9

文章目录 原因分析 SRTP Anti-Replay 机制 客户端源码 err=9 的定义: 为什么会触发 replay_fail ✅ 解决方向 原因分析 SRTP Anti-Replay 机制 SRTP 收包时会用一个 Replay Window(64/128个序列号大小)检查 seq 是否合理。 如果你构造的恢复包 recover_seq 比当前接收窗口…

Web服务与Nginx详解

文章目录前言一、Web 概念1.1 Web 的基本概念1.1.1 特点1.2 B/S 架构模型1.3 Web 请求与响应过程1.4 静态资源与动态资源1.5 Web 的发展阶段1.6 实验:搭建最小 Web 服务1.6.1 实验目标1.6.2 实验步骤1.7 小结二、HTTP 与 HTTPS 协议2.1 HTTP 与 HTTPS 的区别2.2 HTT…

CC-Link IE FB 转 DeviceNet 实现欧姆龙 PLC 与松下机器人在 SMT 生产线锡膏印刷环节的精准定位控制

案例背景在电子制造行业,SMT(表面贴装技术)生产线对设备的精准控制要求极高。某电子制造企业的 SMT 生产线中,锡膏印刷机、SPI(锡膏厚度检测仪)等前段设备采用了基于 CC-Link IE FB 主站的欧姆龙 NJ 系列 P…

IP5326_BZ 支持C同口输入输出的移动电源芯片 2.4A的充放电电流 支持4LED指示灯

IP5326 是一款集成升压转换器、锂电池充电管理、电池电量指示的多功能电源管理 SOC,为移动电源提供完整的电源解决方案。得益于 IP5326 的高集成度与丰富功能,使其在应用时仅需极少的外围器件,并有效减小整体方案的尺寸,降低 BOM 成本。IP532…

若依基础学习

若依基础学习 1.修改数据库密码以及连接名: RuoYi-Vue-master\ruoyi-admin\src\main\resources\application-druid.yml2.各个文件作用: ruoyi-admin (主启动)├── ruoyi-framework (框架核心)│ ├── ruoyi-common (通用工具)│ └── ruoyi-sy…

靶向肽Dcpep

名称:靶向肽Dcpep三字母序列:NH2-Phe-Tyr-Pro-Ser-Tyr-His-Ser-Thr-Pro-Gln-Arg-Pro-OH单字母序列:NH2-FYPSYHSTPQRP-OH分子式:C69H94N18O19分子量:1479.62备注:仅供科研,不用于人体简述&#x…

华为在国内搞的研发基地有多野?标杆游学带你解锁“研发界顶流”

宝子们!原来华为在国内有这么多“宝藏研发基地”,之前总觉得遥不可及走进深圳坂田总部——1.3平方公里的园区,走进去就像进了“科技版大观园”,21层研发主楼看着就很有气势,天鹅湖边的路全用科学家名字命名&#xff0c…

linux缺页中断频繁怎么定位

1,怎么看内存是否有缺页中断 查看日志: dmesg | grep “do fault” perf record -e page-faults -g -p <PID> 系统级监控: 使用 vmstat 查看全局缺页中断(si/so 表示换入/换出页数) vmstat 1 # 每秒刷新,观察 si/so 列 iostat显示磁盘使用情况,举例iostat -x …

06-Hadoop生态系统组件(2)

4. 数据查询组件 4.1 Apache Hive详解 from typing import Dict, List, Any, Optional, Tuple, Union from dataclasses import dataclass from enum import Enum from datetime import datetime import re import jsonclass HiveTableType(Enum):"""Hive表类型…

【自动化实战】Python操作Excel/WORD/PDF:openpyxl与docx库详解

在现代办公环境中&#xff0c;我们经常需要处理各种文档格式&#xff0c;如Excel表格、Word文档和PDF文件。手动处理这些文档不仅耗时&#xff0c;而且容易出错。Python提供了多个强大的库来实现文档处理的自动化&#xff0c;本文将重点介绍如何使用openpyxl和docx库来操作Exce…