知识蒸馏联邦学习的个性化技术综述

 更新时间:2022年05月11日 15:22:16   作者:Cyril_KI  
这篇文章主要为大家介绍了知识蒸馏联邦学习的个性化技术综述,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

题目: 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时,本地模型通常比共享的全局模型表现出更好的性能,那么客户端就没有参与联邦学习的动机。

鉴于此,我们有必要对客户端建立个性化模型,这些模型预期比全局共享模型或本地个体模型表现更好。

以上就是知识蒸馏联邦学习的个性化技术综述的详细内容,更多关于联邦学习的资料请关注脚本之家其它相关文章!

相关文章

  • 详解HTTP协议(很经典)

    详解HTTP协议(很经典)

    HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。本文给介绍http 协议非常经典,需要的朋友参考下吧
    2017-09-09
  • 算法系列15天速成 第十二天 树操作【中】

    算法系列15天速成 第十二天 树操作【中】

    先前说了树的基本操作,我们采用的是二叉链表来保存树形结构,当然二叉有二叉的困扰之处,比如我想找到当前结点的“前驱”和“后继”,那么我们就必须要遍历一下树,然后才能定位到该“节点”的“前驱”和“后继”,每次定位都是O(n),这不是我们想看到的,那么有什么办法来解决呢
    2013-11-11
  • git fetch与git pull的区别详解

    git fetch与git pull的区别详解

    这篇文章主要介绍了git fetch与git pull的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • i++循环与i-–循环的执行效率(递增与递减效率)

    i++循环与i-–循环的执行效率(递增与递减效率)

    i++循环与i-–循环的执行效率(递增与递减效率),需要的朋友可以参考下。
    2011-01-01
  • flash 挡住层的解决方法

    flash 挡住层的解决方法

    使用层制作的下拉菜单下正好有FLASH动画,菜单被动画遮挡.
    2009-08-08
  • vscode检测到#include错误请更新includePath的解决方法

    vscode检测到#include错误请更新includePath的解决方法

    这篇文章主要介绍了vscode检测到#include错误请更新includePath的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • IntelliJ IDEA卡死,如何优化内存

    IntelliJ IDEA卡死,如何优化内存

    这篇文章主要介绍了IntelliJ IDEA卡死,如何优化内存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Git建立本地仓库并上传到Gitee的详细步骤

    Git建立本地仓库并上传到Gitee的详细步骤

    这篇文章主要介绍了Git建立本地仓库并上传到Gitee,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • php和asp利用Shell.Application来执行程序的代码

    php和asp利用Shell.Application来执行程序的代码

    关于用Shell.Application来执行程序,在海阳顶端asp木马里已有示例。用的是ShellExecute 这个方法。
    2008-12-12
  • Jenkins配置maven项目之打包、部署、发布的全过程

    Jenkins配置maven项目之打包、部署、发布的全过程

    这篇文章主要介绍了Jenkins配置maven项目,打包、部署、发布,需要的朋友可以参考下
    2022-02-02

最新评论