Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据不动模型动-联邦学习的通俗理解与概述

数据不动模型动-联邦学习的通俗理解与概述

作者头像
CV君
发布于 2022-03-30 03:22:30
发布于 2022-03-30 03:22:30
1.7K0
举报

联邦学习是一种机器学习设定,其中许多客户端(例如:移动设备或整个组织)在中央服务器(例如:服务提供商)的协调下共同训练模型,同时保持训练数据的去中心化及分散性。联邦学习的长期目标则是:在不暴露数据的情况下分析和学习多个数据拥有者(客户端或者独立的设备)的数据

进一步而言,联邦学习可定义为:Federated Learning = Collaborative Machine Learning without Centralized Training Data(没有集中训练数据的协作机器学习)[1]将机器学习的能力与将数据存储在云中的需求进行分离

图1:Google联邦学习框架图(链接[1])

图2:Federated Learning Survey(链接[2])

接下来我们将从联邦学习中的挑战和未来进展剖析联邦学习。

联邦学习中的挑战

1. Expensive Communication:联邦学习可能由大量设备(例如数百万部智能手机)组成,网络中的通信可能比本地计算慢许多数量级;网络中的通信可能比传统数据中心环境中的通信昂贵得多;为了使模型更适合联邦网络,因此有必要开发出通信高效的方法,在训练过程中迭代发送小消息或模型更新,而不是通过网络发送整个数据集

通信是在开发联邦网络的方法时需要考虑的一个关键瓶颈:具体而言,可分为以下三种解决方法:

(1)local updating methods本地更新方法;

(2)compression schemes压缩方法;

(3)decentralized training分布式训练

local updating methods:如下图所示,通过局部小批量更新可以降低通信代价,在每一轮通信中并行地在每台机器上应用可变数量的本地更新,从而使计算量与通信相比更加灵活。

图3:关于多次局部小批次更新示意图(链接[3])

compression schemes:通常而言,稀疏化、子采样和量化等模型压缩方案可以显著减少每一轮通信的消息的大小;但是在联邦学习环境中,设备的低参与度、Non-IID的本地数据和本地更新方案对这些模型压缩方法提出了新的挑战。

然而,一些工作在联邦学习中提供了实用的策略:迫使设备与服务器间更新的模型具有稀疏性和低秩性,并使用使用结构化随机旋转进行量化(Federated learning: strategies for improving communication efficiency)、使用有损压缩和Dropout技术来减少服务器到设备之间的通信(Expanding the reach of federated learning by reducing client resource requirements)。

decentralized training:在数据中心环境中,当在低带宽或者高延迟的网络上运行时,分散训练已被证明比集中训练更快;类似地,在联邦学习中,分散的算法在理论上可以降低设备与中心服务器之间的高通信成本。有研究提出,分层通信模式,以进一步减轻中心服务器的负担,首先利用边缘服务器聚合来自边缘设备的更新,然后依赖云服务器聚合来自边缘服务器的更新。

图4:关于集中式与分散式训练示意图(链接[3])

2. Systems Heterogeneity:由于硬件、网络连接和电源电量的差异,联邦网络中每个设备的存储、计算和通信能力可能会有所不同;此外每个设备上的网络规模和系统相关限制通常会导致只有一小部分设备同时处于活动状态,例如在数百万设备网络中可能只有数百台设备处于活动状态;同时每个设备也可能不可靠,活动设备在给定的迭代中退出的情况并不少见。

基于上述问题,系统异构性层面的解决方法大致可以分为如下所示:

(1)异步通信;

(2)主动设备采样;

(3)容错机制

Asynchronous Communication:虽然异步参数服务器在分布式数据中心中取得了成功,但经典的有界延迟假设在联邦设置中可能是不现实的,其中延迟可能在数小时到数天或完全无界,因此需要设计出基于异步通信针对设备层面的联邦学习算法

Active Sampling:在联邦网络中,通常只有一小部分设备参与每轮训练,为了减少系统异构性的影响,我们可以在每一轮中主动选择参与设备。但是,如何扩展这些方法以处理实时的、特定于设备的计算和通信延迟波动仍然是还未解决的。

Fault Tolerance:当在远程设备上学习时,容错机制变得更加关键,因为一些参与设备在给定训练迭代完成之前的某个时间点退出是很常见的。一种实用的策略是简单地忽略此类设备故障,但是可能会引入偏差,经过训练的联邦模型将偏向具有良好网络条件的设备。

3. Statistical Heterogeneity:设备经常以不同的方式在网络中生成和收集数据:例如预测移动电话用户的下一个单词任务中用户在上下文中可能会使用不同的语言。此外跨设备之间的数据数量可能会有很大差异,并且获取设备及其相关分布之间的关系结构或许很难;这种数据生成范式违背常用的独立同分布假设,并可能增加建模、分析和评估方面的复杂性

当从设备上分布不相同的数据中训练联邦模型时,就会出现统计异构性的挑战,其中比较有效的则是对异构数据进行建模。在机器学习中有大量的文献通过元学习和多任务学习等方法来建模统计异质性,这些想法最近被扩展到联邦设置:

1)通过学习每个设备独立但相关的模型来实现个性化,同时通过多任务学习共享表示(Federated multi-task learning);

2)在一些共享的代理数据上集中训练一个全局模型后,通过运行FedAvg来探索个性化的迁移学习(Federated learning with non-iid data)。

联邦学习中的未来进展

基于此前提出的挑战,首先在通信方面提出:

1)Extreme communication schemes 极端通信方案:最近,一次性或者少量的启发式通信方案最近被提出作为联邦学习通信方面的设置;

2)Communication reduction 减少通信:在联邦训练中减少通信的几种方法,如本地更新和模型压缩(梯度压缩和量化方法),进一步考虑的是,在相同的通信预算下实现比任何其他方法更大的精度;

其次,在数据层面提出:

1)Self-supervised learning 自监督学习:现实的联邦网络中生成的许多数据可能是未标记的或弱标记的,在联邦网络中解决监督学习之外的问题可能需要解决可伸缩性、异质性和隐私方面的类似挑战;

2)个性化算法:对于单个客户端可用的Non-IID数据分布下的完全分散方案,一项重要任务是设计用于学习个性化模型集合的算法

总结

从广义上来说,联邦学习更像是某一类问题或需求的总称:在确保数据隐私的基础下,如何联合多个数据拥有方共同训练出更好的模型;狭义上来说则是指:一类基于客户-服务器的特定算法,通过仅仅暴露出某些中间信息来换取更高效率、模型精度以及安全的隐私保护算法

就当前来看,主要还是聚焦于联邦学习中Non-IID数据的处理策略(个性化、设计异构算法、基于多任务/元学习、用户选择与聚类)、通信效率优化(剪枝+量化,与知识蒸馏结合的文章也有许多,知识蒸馏/迁移学习+联邦学习是热点)与降低联邦网络训练能耗方向。

个人研究方向是基于Non-IID的联邦学习算法设计,现在就主要就该问题进行一些深入,希望可以给大家带来一些新的idea。Non-IID指的是:变量之间非独立,或者非同分布(由于联邦学习特殊的场景,每个设备不可能完全一样,因此其设备上的数据往往是非同分布的)。每个用户本地的数据分布会随着用户所在地以及用户偏好而变动。

如何降低Non-IID带来的模型精度下降/不稳定/泛化能力差等缺点,即怎么才能减少联邦学习中异构性带来的模型影响?我觉得主要可以从四个方面来看:

1)个性化联邦学习;

2)异构联邦学习;

3)多任务及元学习;

4)用户选择和聚类。

1)个性化联邦学习:由于用户数据的高度Non-IID以及用户对模型性能要求的不一致,单个的Global model很难满足所有参与者的需求,因此需要采用一种个性化的方法使得Global model针对每个用户进行优化。

从本质上来说,个性化联邦学习的方案将Non-IID作为联邦学习的一种优点,因为这些Non-IID数据能够提供用户独特的使用习惯和属性,不同用户能够通过本地数据的差异得到更适合自己的训练模型。

该文章(链接[4])提出了一种用于个性化联邦学习的超网络,在这种方法中,训练一个中央超网络模型,用来给每个客户生成模型,具有生成多样化个性化模型的能力。

另一篇文章(链接[5])主要思想是对于本地模型,在原来传统方法(例如FedAvg算法:链接[6])的基础上加了一个正则项,使其满足全局模型和本地模型间的平衡。

总结下来思路都是一个:全局模型作为基础,再利用每个独立的设备(客户端)上个性化的数据再来微调模型(或者理解为加上客户端自身数据的某些先验知识)。

2)异构联邦学习:在联邦学习中一直以来存在不同参与设备间通信、计算和存储性能的差异(系统异构);数据分布、数据量的差异(统计异构);对不同环境、不同任务间所需建模的差异(模型异构)。异构联邦学习的方案是在模型层面减少因Non-IID数据导致的权重差异对全局收敛的影响,在算法步骤中通过各种方式减少模型间的差异。

近期论文将联邦学习和知识蒸馏进行了结合,例如(链接[7])提出了一种解决异构FL的无数据知识蒸馏方法,其中服务器学习轻量级生成器以无数据的方式集成用户信息,然后将其广播给用户,使用所学知识作为归纳偏差改进模型。异构联邦学习主要是算法层面,可以通过改变模型结构,或者在客户端/服务器端训练过程中添加一些操作来改进模型。

3)多任务及元学习:多任务学习以及元学习在面对Non-IID数据的时候非常有效,其性能甚至可能超过最好的全局共享模型。因为元学习其在数据量较少的情况下也可以发挥出较为稳定精确的性能。

就多任务学习而言,如果我们将每个客户(设备)的本地问题(本地数据集上的学习问题)视为一项单独的任务(而不是单个数据集的一个划分),在多任务学习中,训练过程的结果是每个任务得到一个模型,这样通过对模型进行集成后的精度肯定高于原始模型。

4)用户选择和聚类:用户选择与聚类在联邦学习中也有所研究。通过用户聚类可以将相似数据的用户进行聚合,再通过用户选择抽取具有代表性的用户进行训练。一方面能够减少所有用户参与训练过程中造成的大量通信成本,另一方面也能剔除异常用户,减少被恶意攻击的风险。

具体应用而言,例如该论文(链接[8])则是在用户选择中引入了聚类抽样(选择+抽样,可运用到联邦学习中的设备采样阶段),并证明了聚类抽样能提高用户的代表性,并减少不同客户权重聚合时的差异。

参考文献

[1] https://ai.googleblog.com/2017/04/federated-learning-collaborative.html

[2] Analyzing Federated Learning through an Adversarial Lens.

论文链接:https://arxiv.org/abs/1811.12470

[3] Federated Learning:Challenges, Methods, and Future Directions.

论文链接:https://arxiv.org/abs/1908.07873

[4] Personalized Federated Learning using Hypernetworks.

论文链接:https://arxiv.org/abs/2103.04628

[5] Ditto Fair and Robust Federated Learning Through Personalization.

论文链接:https://arxiv.org/abs/2012.04221

[6] Communication-Efficient Learning of Deep Networks from Decentralized Data.

论文链接:https://arxiv.org/abs/1602.05629

[7] Data-Free Knowledge Distillation for Heterogeneous Federated Learning.

论文链接:https://arxiv.org/abs/2105.10056

[8] Clustered Sampling: Low-Variance and Improved Representativity for Clients Selection in Federated Learning.

论文链接:https://arxiv.org/abs/2105.05883

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hadoop阅读笔记(三)——深入MapReduce排序和单表连接
JackieZheng
2018/01/08
1.8K0
Hadoop 中利用 mapreduce 读写 mysql 数据
有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv、uv 数据,然后为了实时查询的需求,或者一些 OLAP 的需求,我们需要 mapreduce 与 mysql 进行数据的交互,而这些特性正是 hbase 或者 hive 目前亟待改进的地方。 好了言归正传,简单的说说背景、原理以及需要注意的地方: 1、为了方便 MapReduce 直接访问关系型数据库(Mysql,Oracle),Hadoop提供了DBInputFormat和DBOutputFormat两个类。通过DBInp
用户1177713
2018/02/24
2.2K0
Eclipse下Hadoop的MapReduce开发之mapreduce打包
点击next,使用默认选择,再点击next,在最下面的Main class处选择项目里的MapReduceTest
尚浩宇
2018/08/17
7960
Eclipse下Hadoop的MapReduce开发之mapreduce打包
Hadoop 在 Centos7 下的单机布署(二).HDFS.Pseudo-Distributed Operation
Hadoop 生态圈中的其它项目可以参考 Hadoop-related projects
franket
2021/08/12
4330
Hadoop 调试第一个MapReduce程序过程详细记录总结
开发环境搭建参考     <Hadoop 在Windows7操作系统下使用Eclipse来搭建Hadoop开发环境>: http://www.linuxidc.com/Linux/2014-12/111061.htm
星哥玩云
2022/07/03
8310
Hadoop 调试第一个MapReduce程序过程详细记录总结
Hadoop运行wordcount出现异常解决
近学习Hadoop,在Windows+Eclipse+虚拟机Hadoop集群环境下运行Mapreduce程序遇到了很多问题。上网查了查,并经过自己的分析,最终解决,在此分享一下,给遇到同样问题的人提供参考。
星哥玩云
2022/07/03
7580
一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序
别先生
2018/01/02
1.4K0
一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序
Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
  (1)历史数据约56GB,统计到2012-05-29。这也说明,在2012-05-29之前,日志文件都在一个文件里边,采用了追加写入的方式。
Edison Zhou
2018/08/20
1.6K0
Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
Hadoop阅读笔记(一)——强大的MapReduce
该文摘要总结:通过Hadoop命令行工具进行格式化读取文本文件并输出到控制台,同时通过Java代码实现MapReduce作业,将文本文件内容按行进行分割,对每一行进行统计,并输出到控制台。
JackieZheng
2018/01/08
8240
Hadoop阅读笔记(一)——强大的MapReduce
Hadoop2.6安装配置以及整合Eclipse开发环境
4.sudochown -R castle:castle hadoop-2.6.0修改权限
星哥玩云
2022/07/04
3790
Hadoop2.7.6_02_HDFS常用操作
  点击流日志每天都10T,在业务应用服务器上,需要准实时上传至数据仓库(Hadoop HDFS)上
踏歌行
2020/10/15
4520
Hadoop2.7.6_02_HDFS常用操作
Hadoop单机模式安装
Java是Hadoop的主要先决条件。首先,应该使用命令“java-version”验证 java 存在在系统中。Java version 命令的语法如下。
黑洞代码
2022/05/16
4810
Sqoop1.4.5 导入 hive IOException running import job: java.io.IOException: Hive exited with status 1
hive.HiveImport: Exception in thread "main" Java.lang.NoSuchMethodError: org.apache.thrift.EncodingUtils.setBit(BIZ)B
星哥玩云
2022/07/03
9580
hadoop生态之sqoop
在使用大数据的时候,各种不同的数据都要将数据采集同步到数据仓库中,一个是属于业务系统的RDBMS系统,也就是各种关系型数据库,一个是hadoop生态的存储,中间用于传输的数据的工具可以使用sqoop,也就是sql to hadoop。
SRE运维实践
2021/03/04
7720
hadoop生态之sqoop
对于Hadoop的MapReduce编程makefile[通俗易懂]
根据近期需要hadoop的MapReduce程序集成到一个大的应用C/C++书面框架。在需求make当自己主动MapReduce编译和打包的应用。
全栈程序员站长
2022/07/06
4970
Hadoop基础教程-第6章 MapReduce入门(6.2 解读WordCount)
WordCount程序就是MapReduce的HelloWord程序。通过对WordCount程序分析,我们可以了解MapReduce程序的基本结构和执行过程。
程裕强
2022/05/06
1K0
Hadoop基础教程-第6章 MapReduce入门(6.2 解读WordCount)
一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现
1:首先搞好实体类对象:   write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toStr
别先生
2018/01/02
1.7K0
Hadoop基础教程-第5章 YARN:资源调度平台(5.4 YARN集群运行)
求解wordcount过程中,我们可以观察页面http://192.168.80.131:8088,
程裕强
2022/05/06
2610
Hadoop基础教程-第5章 YARN:资源调度平台(5.4 YARN集群运行)
Hadoop: MapReduce2的几个基本示例
1) WordCount  这个就不多说了,满大街都是,网上有几篇对WordCount的详细分析 http://www.sxt.cn/u/235/blog/5809 http://www.cnblogs.com/zhanghuijunjava/archive/2013/04/27/3036549.html 这二篇都写得不错, 特别几张图画得很清晰 2) 去重处理(Distinct) 类似于db中的select distinct(x) from table , 去重处理甚至比WordCount还要简单,假如我
菩提树下的杨过
2018/01/19
1.1K0
Caused by: java.net.ConnectException: Connection refused/Caused by: java.lang.RuntimeException: com.
1、使用sqoop技术将mysql的数据导入到Hive出现的错误如下所示: 第一次使用命令如下所示: 1 [hadoop@slaver1 sqoop-1.4.5-cdh5.3.6]$ bin/sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password 123456 --table tb_user --hive-import --m 1 2 Warning: /home/hadoop/soft/s
别先生
2018/05/28
2.2K0
推荐阅读
相关推荐
Hadoop阅读笔记(三)——深入MapReduce排序和单表连接
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档