论文笔记--FEDERATED LEARNING: STRATEGIES FOR IMPROVING COMMUNICATION EFFICIENCY
论文笔记--FEDERATED LEARNING: STRATEGIES FOR IMPROVING COMMUNICATION EFFICIENCY
- 1. 文章简介
- 2. 文章概括
- 3 文章重点技术
- 3.1 联邦学习(federated learning, FL)
- 3.2 Structured updates
- 3.3 Sketched Update
- 4. 文章亮点
- 5. 原文传送门
1. 文章简介
- 标题:FEDERATED LEARNING: STRATEGIES FOR IMPROVING COMMUNICATION EFFICIENCY
- 作者:Jakub Konecny, H. Brendan McMahan, Felix X. Yu, Ananda Theertha Suresh, Dave Bacon
- 日期:2016
- 期刊:arxiv
2. 文章概括
文章给出了一种联邦学习(federated learning, FL)的新的方法,可以提升多终端之间的交流效率,从而支持多台设备在不稳定网络下的快速传输。
3 文章重点技术
3.1 联邦学习(federated learning, FL)
先简要叙述下联邦学习的概念:一个共享的全局模型被部署于中央服务器,然后各个客户端通过本地数据进行训练,并将更新后的模型传输回中央服务器。假设FL的目的是学习一个参数为 W ∈ R d 1 × d 2 W\in\mathbb{R}^{d_1\times d_2} W∈Rd1×d2的模型,则联邦学习的第 t ≥ 0 t\ge 0 t≥0轮按如下几个步骤执行:
- 随机选择 n t n_t nt个可用的客户端集合 S t S_t St,在这些客户端上从中央服务器下载当前的模型 W W W
- 上述选定的客户端用各自的本地数据更新模型,得到更新后的参数分别为 W t 1 , … , W t n t W_t^1, \dots, W_t^{n_t} Wt1,…,Wtnt,从而各自的更新量为 H t i : = W t i − W t , i = 1 , … , n t H_t^i := W_t^i - W_t ,i = 1, \dots, n_t Hti:=Wti−Wt,i=1,…,nt,
- 上述选定的客户端将更新量 H t 1 , … , H t n t H_t^1, \dots, H_t^{n_t} Ht1,…,Htnt分别发送到中央服务器
- 服务器将所有更新的模型进行聚合(通常采用均值): H t : = 1 n t ∑ i ∈ S t H t i H_t := \frac 1{n_t} \sum_{i\in S_t} H_t^i Ht:=nt1∑i∈StHti,并更新全局模型: W t + 1 = W t + η t H t W_{t+1} = W_t + \eta_t H_t Wt+1=Wt+ηtHt。
其中, η t \eta_t ηt表示每一轮的学习率,简单起见文章采用 η t = 1 \eta_t=1 ηt=1。
上述步骤中,第3步耗时较长,尤其是模型很大或者网络不稳定的时候。文章提出了两种方法来减少第3步的耗时:Structured updates和Sketched updates。
3.2 Structured updates
文章提出的第一种效率提升方式为结构更新,即限制更新的 H t i H_t^i Hti为某种预定义的结构。文章考虑了两种预定义的结构
- low rank:限制每一轮更新的参数矩阵 H t i ∈ R d 1 , … , d 2 H_t^i \in \mathbb{R}^{d_1, \dots, d_2} Hti∈Rd1,…,d2的秩最多为某个固定数值 k k k。为此,我们可以将 H t i H_t^i Hti表示为两个矩阵的乘积: H t i = A t i B t i H_t^i = A_t^i B_t^i Hti=AtiBti,其中 A t i ∈ R d 1 , … , k , B t i ∈ R k , … , d 2 A_t^i \in \mathbb{R}^{d_1, \dots, k}, B_t^i \in \mathbb{R}^{k, \dots, d_2} Ati∈Rd1,…,k,Bti∈Rk,…,d2,则由 rank ( A B ) ≤ rank ( A ) \text{rank} (AB) \le \text{rank} (A) rank(AB)≤rank(A)可以知道 H t i ≤ k H_t^i \le k Hti≤k。我们初始化一个随机的 A t i A_t^i Ati,然后训练的时候仅更新 B t i B_t^i Bti的参数。则模型上传的时候我们只需上传 A t i A_t^i Ati的随机种子和 B t i B_t^i Bti的参数即可。故我们将效率从 d 1 × d 2 d_1 \times d_2 d1×d2提升为 k × d 2 k \times d_2 k×d2,提升了 d 1 / k d_1/k d1/k倍。
- random rank:限制每一轮更新的参数矩阵 H t i ∈ R d 1 , … , d 2 H_t^i \in \mathbb{R}^{d_1, \dots, d_2} Hti∈Rd1,…,d2为一个稀疏矩阵,满足某种与定义的稀疏模式(只需随机选出non-zero的索引即可),更新的时候我们只更新non-zero的参数。上传模型的时候只需上传稀疏化的随机种子和非零元素的更新值即可。
3.3 Sketched Update
文章提出的第二种效率提升方法为sketched update,核心思想为在各个客户端训练完整的参数更新,然后将更新的参数进行压缩上传,再在中央服务器上解压然后更新全局模型的参数。文章实验了几种不同的压缩方法:
- subsampling:各个客户端每次更新完模型之后从 H t i H_t^i Hti中随机采样一小部分值 H ^ t i \hat{H}_t^i H^ti发送到中央服务器,然后取各个客户端的平均更新值作为全局的更新值。当每个客户端每一轮的随机mask独立时,我们有 E [ H ^ t ] = H t \mathbb{E} [\hat{H}^t] = H_t E[H^t]=Ht。
- probabilistic quantiazation:首先介绍one-bit的情况。令 h = ( h 1 , … , h d 1 × d 2 ) h = (h_1, \dots, h_{d_1\times d_2}) h=(h1,…,hd1×d2)为 H t i H_t^i Hti的平铺向量,取 h m a x = max j ( h j ) h_{max} = \max_j (h_j) hmax=maxj(hj), h m i n = min j ( h j ) h_{min} = \min_j (h_j) hmin=minj(hj),则可以将 h h h压缩为: h ‾ j = { h m a x , with probability h j − h m i n h m a x − h m i n h m i n , with probability h m a x − h j h m a x − h m i n \overline{h}_j = \begin{cases} h_{max}, \quad \text{with probability} \quad \frac {h_j - h_{min}}{h_{max}-h_{min}}\\h_{min}, \quad \text{with probability} \quad \frac {h_{max} - h_j}{h_{max}-h_{min}}\end{cases} hj={hmax,with probabilityhmax−hminhj−hminhmin,with probabilityhmax−hminhmax−hj,则可以得到 E [ h ‾ ] = h m a x h − h m i n h m a x − h m i n + h m i n h m a x − h h m a x − h m i n = h \mathbb{E} [\overline{h}] = h_{max} \frac {h - h_{min}}{h_{max}-h_{min}} +h_{min} \frac {h_{max} - h}{h_{max}-h_{min}} = h E[h]=hmaxhmax−hminh−hmin+hminhmax−hminhmax−h=h,从而 h ‾ \overline{h} h为 h h h的无偏估计。上述为one-bit的情况,我们可以增加bit数,将 [ h m i n , h m a x ] [h_{min}, h_{max}] [hmin,hmax]划分为 2 b 2^b 2b个区间,然后按照上述定义将每个子区间内的 h j h_j hj进行压缩。发送的时候我们只需要发送区间数和每个子区间端点的个数即可,对应的发送量为 2 b 2^b 2b。
- Quantilization by structured random rotations:上述方法当不同维度的数值比较相近的时候效果较好。比如大部分的值为0,但 m a x = 1 , m i n = − 1 max =1, min = -1 max=1,min=−1,则上述压缩方法有明显的误差。为此,我们可以先对 h h h应用一个旋转(乘一个随机正交矩阵),则上述误差可以得到有效控制(有其它研究可以支撑)。解码阶段,需要首先将压缩后的参数乘正交矩阵的逆阵再进行聚合、更新。
4. 文章亮点
文章提出了两类联邦学习加速的算法:基于预定义参数和基于参数压缩的方法。数值实验表明我们的方法可以在精度损失很少的情况下更快地发送参数。
5. 原文传送门
FEDERATED LEARNING: STRATEGIES FOR IMPROVING COMMUNICATION EFFICIENCY
相关文章:

论文笔记--FEDERATED LEARNING: STRATEGIES FOR IMPROVING COMMUNICATION EFFICIENCY
论文笔记--FEDERATED LEARNING: STRATEGIES FOR IMPROVING COMMUNICATION EFFICIENCY 1. 文章简介2. 文章概括3 文章重点技术3.1 联邦学习(federated learning, FL)3.2 Structured updates3.3 Sketched Update 4. 文章亮点5. 原文传送门 1. 文章简介 标题:FEDERATE…...

STM32MP157驱动开发——按键驱动(异步通知)
文章目录 “异步通知 ”机制:信号的宏定义:信号注册 APP执行过程驱动编程做的事应用编程做的事异步通知方式的按键驱动程序(stm32mp157)button_test.cgpio_key_drv.cMakefile修改设备树文件编译测试 “异步通知 ”机制: 信号的宏定义&#x…...

医疗器械维修工程师心得
彩虹医械维修技能班9月将开展本年第三期长期班,目前咨询人员也陆续多了起来,很多刚了解到医疗行业的,自身也没有多少相关的基础,在咨询时会问到没有基础能否学的会? 做了这行业的都知道,无论多么复杂的设备…...

Vue3 Radio单选切换展示不同内容
Vue3 Radio单选框切换展示不同内容 环境:vue3tsviteelement plus 技巧:v-if,v-show的使用 实现功能:点击单选框展示不同的输入框 效果实现前的代码: <template><div class"home"><el-row …...

FreeRTOS之二值信号量
什么是信号量? 信号量(Semaphore),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代 码段不被并发调用。 信号量这个名字,我们可以把它拆分来看,信号可以起到通知信号的作用&am…...

ChatGPT API进阶调用指南
原文:ChatGPT API进阶调用指南 ChatGPT API 进阶调用指南 ChatGPT API 是基于 OpenAI 的 GPT模型的一个强大工具,可以用于构建各种对话式应用。以下是一些使用 Markdown 语法的进阶调用指南,以帮助您更好地利用 ChatGPT API。 设置用户角色…...

人工智能术语翻译(四)
文章目录 摘要MNOP 摘要 人工智能术语翻译第四部分,包括I、J、K、L开头的词汇! M 英文术语中文翻译常用缩写备注Machine Learning Model机器学习模型Machine Learning机器学习ML机器学习Machine Translation机器翻译MTMacro Average宏平均Macro-F1宏…...

kubernetes持久化存储卷
kubernetes持久化存储卷 kubernetes持久化存储卷一、存储卷介绍二、存储卷的分类三、存储卷的选择四、本地存储卷之emptyDir五、本地存储卷之 hostPath六、网络存储卷之nfs七、PV(持久存储卷)与PVC(持久存储卷声明)7.1 认识pv与pvc7.2 pv与pvc之间的关系7.3 实现nfs类型pv与pvc…...

【Rust笔记】意译解构 Object Safety for trait
意译解构Object Safety for trait 借助【虚表vtable】对被调用成员函数【运行时内存寻址】的作法允许系统编程语言Rust模仿出OOP高级计算机语言才具备的【专用多态Ad-hoc Polymorphism】特性。 计算机高级语言中的“多态”术语是一个泛指。它通常可被细化为 基于继承关系的“子…...

Spring Boot单元测试入门指南
Spring Boot单元测试入门指南 JUnit是一个成熟和广泛应用的Java单元测试框架,它提供了丰富的功能和灵活的扩展机制,可以帮助开发人员编写高质量的单元测试。通过JUnit,开发人员可以更加自信地进行重构、维护和改进代码,同时提高代…...

《面试1v1》如何能从Kafka得到准确的信息
🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结…...

2023秋招面试题持续更新中。。。
目录 1.八股文渐进式MVVM三次握手,四次挥手viteajax组件化和模块化虚拟dom原理流程浏览器内核浏览器渲染过程回流和重绘nextTick 2.项目相关1.声明式导航和编程式导航重写push和replace方法:性能优化图片懒加载路由懒加载 http请求方式 1.八股文 渐进式…...

Java | 数组排序算法
一、冒泡排序 冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移到数组前面,把较大的元素移到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部升到顶…...

android studio 连接SQLite数据库并实现增删改查功能
功能代码及调试代码 package com.example.bankappdemo;import android.annotation.SuppressLint; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.view.View; im…...

跑步适合戴什么样的耳机、最好的跑步耳机推荐
每个人对于运动的方式都不尽相同,但大多数热爱运动的朋友都离不开音乐的陪伴。运动和带有节奏感的音乐能够激发我们更多的热情和动力。特别是在夏日的时候,我非常喜欢跑步。在酷热的天气里,如果没有音乐的伴随,跑步会变得单调乏味…...

物联网的通信协议
物联网的通信协议 目录 物联网的通信协议一、UART串口通信1.1 串口通信1.2 异步收发1.3 波特率1.4 串口通信协议的数据帧1.5 优缺点1.5.1 优点1.5.2 缺点 二、I^2^C2.1 I^2^C2.2 I^2^C2.3 数据有效性2.4 起始条件S和停止条件P2.5 数据格式2.6 协议数据单元PDU2.7 优缺点2.7.1 优…...

【业务功能篇56】SpringBoot 日志SLF4J Logback
3.5.1 日志框架分类与选择 3.5.1.1 日志框架的分类 日志门面 (日志抽象)日志实现JCL(Jakarta Commons Logging) SLF4J(Simple Logging Facade for Java)Jul(Java Util Logging) , Log4j , Log4j2 , Logback 记录型日志框架 Jul (Java Util Logging):JDK中的日志…...

leetcode 53. 最大子数组和
2023.7.28 要求找最大和的 连续子数组, 我的思路是用一个temp记录局部最优值,用ans记录全局最优值。 然后在每次for循环进行一个判断:当前遍历元素temp值 是否大于当前遍历元素的值,如果大于,说明temp值是帮了正忙的&a…...

js 下载url返回的excel数据,并解析为json
XLSX GitHub地址:https://github.com/SheetJS/sheetjs/blob/github/dist/xlsx.full.min.js 需要先引入:XLSX.full.min.js // 下载文件的请求 fetch(downloadFileUrl).then(response > {return rsp.blob() }).then(data > {let reader new FileR…...

图文教程:使用 Photoshop、3ds Max 和 After Effects 创建被风暴摧毁的小屋
推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 在 Photoshop 中设置图像 步骤 1 打开 Photoshop。 打开 Photoshop 步骤 2 我已经将小屋的图像导入到Photoshop中以演示 影响。如果您愿意,可以使用其他图像。 图片导入 步骤 3 由于小…...

学习Maven Web 应用
Maven Web 应用 本章节我们将学习如何使用版本控制系统 Maven 来管理一个基于 web 的项目,如何创建、构建、部署已经运行一个 web 应用。 创建 Web 应用 我们可以使用 maven-archetype-webapp 插件来创建一个简单的 Java web 应用。 打开命令控制台,…...

page allocation stalls for 问题调研
一.现象分析和内存管理基本概念介绍 最近有一台linux出现卡死的状态,系统不反应,无法ssh登录,只能通过电源关机重启操作恢复,重启后登录系统后台,拉取kernel日志,如下 Jul 12 18:48:06 kernel: [141294.374983] send process: page allocation stalls for 10108ms, orde…...

JUC并发工具类
一、ReentrantLock 特点:独占、可重入、公平/非公平、可中断、支持多个条件变量 1、常用api ReentrantLock实现了Lock接口,Lock类规范定义了如下方法 lock():获取锁,调用该方法的线程会获取锁,当锁获得后࿰…...

【雕爷学编程】MicroPython动手做(10)——零基础学MaixPy之神经网络KPU
早上百度搜“神经网络KPU”,查到与非网的一篇文章《一文读懂APU/BPU/CPU/DPU/EPU/FPU/GPU等处理器》,介绍各种处理器非常详细,关于“KPU”的内容如下: KPU Knowledge Processing Unit。 嘉楠耘智(canaan)号…...

MySQL~SQL语句
一、SQL 1.什么是SQL? Structured Query Language:结构化查询语言 每一种数据库操作的方式存在不一样的地方,称为“方言”。 2.SQL通用语法 SQL 语句可以单行或多行书写,以分号结尾 可使用空格和缩进来增强语句的可读性 MyS…...

从零开始构建基于YOLOv5的目标检测系统
本博文从零开始搭建基于YOLOv5模型的目标检测系统(具体系统参考本博主的其他博客),手把手保姆级完成环境的搭建。 (1)首先Windows R输入cmd命令后打开命令窗口,进入项目目录,本博文以野生动物…...

PDF尺寸修改:等比绽放(标准面单100*150mm)
PDF修改尺寸 需要注意:第一个方法返回的是转换后PDF的base64。第二个方法返回的是文件流,这个方法才是转的核心。 /*** 修改PDF尺寸** param pdfUrl PDF链接* param pdfWidthInMillimeters 指定宽 mm* param pdfHeightInMillimeters 指…...

C++ - list介绍 和 list的模拟实现
list介绍 list 是一个支持在常数范围内,任意位置进行插入删除的序列式容器,且这个容器可以前后双向迭代。我们可以把 list 理解为 双向循环链表的结构。 于其他结构的容器相比,list在 任意位置进行插入和函数的效率要高很多;而li…...

干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充
前言 不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。 如…...

深度学习初探
1.深度学习模型训练过程 1)数据(数据清洗标注) 2)模型(模型的构建和初始化) 3)损失(前向传播的过程,得到模型的输出和真实标签的差异值,称之为损失&#x…...