知识蒸馏联邦学习的个性化技术综述
作者:Cyril_KI 发布时间:2022-07-04 21:03:51
前言
题目: Survey of Personalization Techniques for FederatedLearning
会议: 2020 Fourth World Conference on Smart Trends in Systems, Security and Sustainability (WorldS4)
论文地址:Survey of Personalization Techniques for FederatedLearning
前面讲到,客户端由于本地数据不足,无法通过自己的数据训练得到一个较好的模型,因此客户端需要参与联邦学习来获得一个全局共享模型。但由于各个客户端间数据的非独立同分布,全局模型在某些客户端上表现可能并不好,并且如果客户端自己拥有足够数据,他们是否还有必要参与联邦学习呢?
在这种情况下,个性化联邦学习应运而生。所谓个性化,是指对全局共享模型进行改进,改进后的模型相比于全局模型和本地模型,可能更适合客户端。
本文主要总结了七种个性化技术:添加用户上下文、迁移学习、多任务学习、元学习、知识蒸馏、基础+个性化层、全局模型和本地模型混合。其中有一些技术后期会有专门的论文解读来对其进行介绍。
摘要
联邦学习通常为所有客户端生成一个全局共享模型,但由于数据在设备间的非IID分布,统计上的异质性经常导致这样的情况:对于一些客户来说,仅根据其私有数据训练的本地模型比全局共享模型表现更好。目前已经提出了一些技术来个性化全局模型,以便更好地为个人客户工作,本文调查了最近关于这一主题的研究。
I. 引言
许多数据集本质上是分散的,在联邦学习中,这些数据分布在各个客户端。传统的机器学习将这些客户端的数据样本聚集到一个中央存储库中,并在此基础上训练机器学习模型。将数据从本地设备转移到中央存储库带来了两个关键挑战。首先,它损害了数据的隐私性和安全性。其次,它增加了通信开销。作为一种解决方案,联邦学习使多个用户(即客户端)能够在他们的集体数据上协作地训练出一个共享的全局模型,而无需将数据从本地设备中移动。
客户端参与联邦学习的主要动机是获得更好的模型。客户端如果没有足够的私人数据来开发准确的本地模型,就可以从联邦学习的模型中获益。然而,对于有足够私人数据来训练准确的本地模型的客户来说,参与联邦学习是否有好处是有争议的。对于许多应用程序来说,跨客户端的数据分布是非IID的,这种统计上的异质性使得很难训练出适用于所有客户的全局共享模型。
本文的目的是调查最近关于在联邦学习环境中为客户建立个性化模型的研究,这些模型预期比全局共享模型或本地个体模型表现更好。
II. 个性化需求
Wu等人总结了联邦学习系统在个性化方面面临的三个挑战:
存储、计算和通信能力方面的设备异质性。数据非IID分布导致的数据异质性。模型异质性:不同的客户需要针对其环境定制模型的情况。
为了应对数据的统计异质性和非IID分布所带来的挑战,需要对全局模型进行个性化处理,大多数个性化技术通常包含两个离散的步骤:
以协作的方式建立一个全局模型。使用客户端的私有数据来个性化全局模型。
为了使联邦学习个性化在实践中有用,以下三个目标必须同时解决,而不是独立解决:
开发改进的个性化模型,使大多数客户受益。开发一种准确的全局模式,使那些私人数据有限的客户受益。在少量训练轮次内实现模型快速收敛。
III. 方法
本节介绍为客户端调整全局共享模型的方法。
A. 添加用户上下文
如果客户的上下文和个人信息被适当地特征化并纳入数据集,共享的全局模型也可以生成高度个性化的预测。然而,大多数公共数据集并不包含上下文特征,开发有效整合上下文的技术仍然是一个重要的开放问题。
作为单个全局模型和纯本地模型之间的一种中间方法,Masour等人提出了用户聚类的建议,将类似的客户端分组在一起,并为每个组训练一个单独的模型。
B. 迁移学习
迁移学习使深度学习模型能够利用解决一个问题时获得的知识来解决另一个相关问题。
在一些论文中提供了一个具有泛化保证的学习理论框架:迁移学习利用经过训练的全局模型的参数对局部数据进行初始化训练,从而利用全局模型提取的知识,而不是从头学习。为了避免灾难性遗忘的问题,必须注意不要在本地数据上对模型进行过长时间的再训练。我们可以采用一种变体技术冻结全局模型的基础层,并仅在局部数据上重新训练最顶层。
C. 多任务学习
在多任务学习中,同时解决多个相关任务,使得模型可以通过联邦学习来挖掘任务之间的共性和差异。Smith等人的研究表明,多任务学习是建立个性化联邦模型的自然选择,他们在联邦设置中开发了用于多任务学习的MOCHA算法,以解决与通信、掉队和容错相关的挑战。在联邦设置中使用多任务学习的一个缺点是,由于它为每个任务生成一个模型,因此所有客户端都必须参与每一轮。
D. 元学习
元学习中需要对多个学习任务进行训练,以生成高适应性的模型,这些模型可以通过少量的训练实例进一步学习解决新任务。Finn提出了一种模型无关的元学习(MAML)算法,该算法与使用梯度下降训练的任何模型都兼容。MAML构建一个通常适用于多个任务的内部表示,因此为新任务微调顶层可以产生良好的结果。
MAML分两个阶段进行:元训练和元测试。元训练在多个任务上构建全局模型,而元测试则针对不同的任务分别调整全局模型。如果我们将联邦学习过程视为元训练,将个性化过程视为元测试,那么FedAVG就与一种流行的MAML算法Reptile非常相似。
E. 知识蒸馏
一些研究证明,可以将一个模型集合的知识压缩成一个更容易部署的模型。知识蒸馏通过让学生模仿教师,将一个大型教师网络中的知识提取到一个较小的学生网络中。在个性化过程中,过度拟合是一个重要的挑战,特别是对于本地数据集较小的客户。鉴于此,Yu提出将全局共享模型作为教师,将个性化模型作为学生,这样就可以减轻个性化过程中过拟合的影响。Li等人提出了FedMD,这是一个基于知识蒸馏和迁移学习的联邦学习框架,允许客户使用本地私有数据集和全局公共数据集独立设计自己的网络。
F. 基础+个性化层
为了缓解各个客户端数据分布差异的影响,一些人提出了FedPer:一种神经网络体系结构,其中基础层通过FedAvg进行集中训练,而顶层(也称为个性化层)通过梯度下降的变体进行局部训练。
FedPer与迁移学习的不同:
在迁移学习中,所有层首先在全局数据上训练,然后在局部数据上重新训练所有或部分层。FedPer在全局数据上训练基础层,在局部数据上训练个性化层。
G. 全局模型和本地模型混合
为了寻求全局模型和本地模型间的权衡,每个客户端学习到的应该不是单一的全局模型,而是全局模型和它自己的本地模型的混合。为了解决这一问题,Hanzely提出了一种新的梯度下降法——无环局部梯度下降法(LLGD)。LLGD只采取步骤求平均,而不是执行完全平均。
IV. 总结
联邦学习中,当本地数据集很小且数据分布为IID时,全局模型通常优于本地模型,并且大多数客户端都能从参与联邦学习过程中受益。但是,当客户端有足够多的私有数据集且数据分布为非IID时,本地模型通常比共享的全局模型表现出更好的性能,那么客户端就没有参与联邦学习的动机。
鉴于此,我们有必要对客户端建立个性化模型,这些模型预期比全局共享模型或本地个体模型表现更好。
来源:https://blog.csdn.net/Cyril_KI/article/details/122820370


猜你喜欢
- Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架。它是Python API开发
- 定义字典并直接输出,结果输出结果中文是乱码展示d={'name':'lily','age':
- 本文实例为大家分享了Django文件上传与下载的具体代码,供大家参考,具体内容如下文件上传1.新建django项目,创建应用stu: pyt
- 一.魔法方法1.属性访问通常可以通过点(.)操作符的形式去访问对象的属性。class C:def __init__(self):self.x
- 本教程使用python来生成随机漫步数据,再使用matplotlib将数据呈现出来开发环境操作系统: Windows10 IDE: Pych
- 如何生成指定区间中的随机数要求生成区间[a, b]中的随机数。若要求为浮点数,则Python中只能近似达到这一要求,因为随机函数的取值区间一
- 对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,
- 1. 错误提示 Warning: Cannot send session cookie - headers already sent War
- 一、CNN简介1. 神经网络基础输入层(Input layer),众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。
- 前言MySQL查看表占用空间大小CentOS7 环境下MySQL常用命令MySQL: 范围查询优化环境介绍 :服务器: 阿里云轻量应用服务器
- golang.org不能访问的问题解决golang.org被屏蔽了,直接访问不了,解决办法如下:在 http://ping.eu/
- 用简单的方法生成随机性较大的密码仅用20行代码随机生成密码核心思路:利用random模块random模块随机生成数字,大小写字母,循环次数w
- numpy.where (condition[, x, y])numpy.where() 有两种用法:1. np.where(conditi
- 1、数组a第0个元素(二维数组)下的所有子元素(一维数组)的第一列import numpy as npb=np.arange(24)a=b.
- 简单单例模式单例模式是创建类型的模式,它是为了保证执行期间内只有一个实例。使用 Golang 指针可以很容易的实现单例模式,通过指针保持相同
- 在pandas中创建category类型数据的几种方法之详细攻略 T1、直接创建 category类型数据可知,在category
- 引言自ChatGPT出现,各种基于它的软件扩展纷至沓来,目前Word支持ChatGPT的add-in有两款,可以通过:插入->获取加载
- 本文实例讲述了PHP实现获取第一个中文首字母并进行排序的方法。分享给大家供大家参考,具体如下:最近在做储值结算,需求里结算首页需要按门店的首
- quicktool/view.py文件修改视图函数index(),渲染一个home.html模板from django.shortcuts
- 如何删除某个字段的最后四个字符我们有的时候在进行数据操作的时候,会遇到一些情况,例如有的时候,某个字段会多出现多余的东西。比如城市code