联邦学习

发布时间 2023-08-08 17:16:56作者: 夜与萤火

基础知识(个人笔记)

以下笔记有很多是来自GPT,只做参考,不一定完全准确

SDN/NFV

  1. SDN

SDN是软件定义网络( SoftWare-defined Networking ) 的缩写,是一种网络管理方法,它支持动态可编程的网络配置,提高了网络性能和管理效率;使得网络服务能够像云计算一样提供灵活的定制能力。SDN将网络设备的转发面与控制面解耦,通过集中式的控制器来控制网络设备的转发行为。

  1. NFV

NFV是网络功能虚拟化( Network Functions Virtualization )的缩写,是一种关于网络架构的概念。它的目标是将所有物理网络资源进行虚拟化,允许网络在不添加更多设备的情况下增长,这依赖于标准的IT虚拟化技术。NFV是软硬件解耦,将网络功能从专用硬件中解耦出来,以软件的形式运行在通用服务器上。

ECA/ECN/ECI

ECA:边缘计算应用程序(Edge Computing Application)。ECA是指在边缘计算环境中运行的应用程序,通常被部署在边缘设备或边缘服务器上。ECA旨在提供低延迟、高可靠性和高效率的计算服务。 ECN:边缘计算网络(Edge Computing Network)。ECN是指用于连接边缘设备和边缘服务器的网络,通常由多个边缘节点组成。ECN的设计旨在提供低延迟、高带宽和高可靠性的通信服务。

ECI:边缘计算基础设施(Edge Computing Infrastructure)。ECI是指支持边缘计算应用程序和边缘计算网络的基础设施,包括边缘服务器、边缘存储、边缘路由器等硬件设备,以及边缘操作系统、边缘虚拟化、边缘容器等软件技术。ECI的设计旨在提供高可靠性、高可用性和高扩展性的计算和存储服务。

下行与上行网络带宽

  1. 下行带宽是指网络向用户电脑发送信息时的传输速率,也就是从网上下载文件时的速度。下行带宽受到网络环境、服务器负载、路由器设置等因素的影响。
  2. 上行带宽是指从用户电脑上传到网络的速度,也就是向网上发送文件的速度。上行带宽受到网络环境、服务器负载、路由器设置等因素的影响。

云计算

云计算(Cloud Computing)是一种基于网络的计算模式,通过互联网提供各种服务和资源,包括存储、计算、应用程序和数据等。简单来说,就是将计算机资源(如服务器、存储器、数据库、软件等)通过互联网提供给用户使用,用户不需要购买这些资源,只需要按需使用并支付相应费用。云计算的核心理念是将计算资源视为一种服务,用户可以通过网络访问并使用这种服务,而不需要关心资源的具体实现细节。

边缘计算

边缘计算(Edge Computing)是一种计算模式,它将计算资源和处理能力分布到网络边缘,使得数据可以在更接近用户的地方进行处理和存储。边缘计算的核心思想是在设备和云端之间建立一个中间层,将计算和数据处理分散到更接近用户的设备或节点上,从而降低网络延迟和带宽消耗,并提高数据安全性和隐私性。

云计算与边缘计算的区别

云计算与边缘计算的主要区别在于资源分配和处理方式。云计算是将计算资源集中在数据中心中,通过互联网提供服务。而边缘计算则是将计算资源分散到网络边缘,使得数据可以在更接近用户的地方进行处理和存储。因此,云计算更适合处理大规模数据和计算密集型任务,而边缘计算则更适合处理实时性要求高、数据量较小且需要低延迟的任务。

增量学习

增量学习是指在已有模型的基础上,通过新数据的训练,更新模型的参数,以适应新数据的特征。这种方法可以避免重新训练模型,从而节省时间和计算资源。增量学习用于在线学习和数据流学习等场景中,其中数据是动态生成的,并且需要及时更新模型以适应新数据。

迁移学习

迁移学习是一种机器学习方法,是把一个领域(源领域)的知识,迁移到另一个领域(目标领域),使得目标领域能够取得更好的学习效果。通俗来讲就是学会举一反三的能力,通过运用已有的知识来学习新的知识,其核心是找到已有知识和新知识之间的相似性,通过这种相似性的迁移达到迁移学习的目的。

迁移学习在某些机器学习场景中,由于直接对目标域从头开始学习成本太高,因此我们期望运用已有的相关知识来辅助尽快地学习新知识。比如,已经会下中国象棋,就可以类比着来学习国际象棋;已经会编写Java程序,就可以类比着来编写C++程序。

Collaborative Edge Computing

基础架构

img

协同式的资源管理

主要挑战

  • 边缘资源在大范围的地理区域是分散的
  • 边缘节点可能是属于不同的厂商,怎么让不同厂商愿意共享资源进行合作

具有跨节点虚拟化和激励机制的协同边缘网络,统一管理大规模分布式边缘资源

img

协同式的数据管理

主要挑战

  • 数据分布在不同利益相关者拥有的边缘节点上
  • 恶意边缘节点诱发

基于区块链的数据管理系统,具有安全和轻量级的共识协议,以促进高效的数据分布、共享和搜索

img

协同式的任务调度

主要挑战

  • 计算、数据和网络资源是分散的
  • 资源需要联合优化
  • 由于大量的边缘节点以及大规模的网络,任务的管理是复杂的

协同任务调度算法同时考虑了边内和跨边的分区、调度和迁移,以满足应用的QoS和移动性要求

img

协同式的EdgeAI 管理

主要挑战

  • 人工智能任务的处理,如数据处理、训练和推理,是消耗资源和相互依赖的
  • 在计算和网络资源不同的异构边缘节点上,人工智能模型的部署具有不同的性能

开发面向服务的边缘人工智能平台和资源感知的训练和推理机制,以灵活部署和高效执行

img

边缘计算的关键挑战

  • 边缘计算细分领域众多,互操作性差
  • 边云通信网络质量低,时延高,且边缘经常位于私有网络,难以实现双向通信
  • 边缘离线时,需要具备业务自治本地故障恢复等能力
  • 边缘资源受限,需要轻量化的组件管理运行边缘应用
  • 边缘节点高度分散,如何高效管理,降低运维成本
  • 如何对异构资源进行标准化管理和灵活配置

模型的收敛速度

机器学习模型的收敛速度是指模型在训练过程中,损失函数值下降的速度。如果使用比较小的学习率(low lr)来训练模型,模型收敛的速度会很慢,需要等待很长时间模型才能收敛1。NLP 模型通常只需要1~3个epoch就可以达到收敛,而CV模型则需要更多epoch才能收敛2。在训练过程中,Loss一开始有个极速下降的过程,然后开始斜坡缓慢下降,最后通过学习率衰减再得到一个快速下降完成训练3

数据非独立同分布为什么会导致准确性下降和收敛速度变慢?

数据非独立同分布会导致模型的准确性下降和收敛速度变慢的原因是因为模型在训练时会假设数据是独立同分布的,如果数据不满足这个假设,那么模型就会出现偏差。

例如,在联邦学习中,由于数据集分布不同,每个客户端的数据集可能不同,这就导致了数据的非独立同分布性质。

因此,为了解决这个问题,可以使用一些方法来处理非独立同分布的数据,例如联邦学习中的联邦平均算法、局部加权线性回归等。


纵向联邦学习 和 横向联邦学习

纵向联邦学习是样本空间对齐,横向联邦学习是特征空间对齐。

​ 在横向联邦学习中,各个设备之间拥有共同的特征,只是标签不同。因此,需要将数据进行特征对齐以协同训练。例如,考虑一个医疗应用程序,设备A和设备B都拥有相同的病人特征向量,但是标签不同,比如不同风险等级。在这种情况下,横向联邦学习将尝试将特征向量对齐,然后在不显露数据的情况下将模型集成到一起。

​ 在纵向联邦学习中,各个设备可以拥有不同的特征和标签。例如,在一个人脸识别应用中,一台设备只具备人脸图像,而另一台设备只具备人脸对应的身份信息。在这种情况下,纵向联邦学习的目标是对数据进行样本空间对齐,以合并不同的特征和标签。因此,这个过程需要合并数据的样本空间,才能更好地实现跨设备的训练。


Straggler problem

Straggler problem (滞后器问题)是指在分布式计算中,由于某些任务的执行较慢或者出现故障,导致整个计算任务的完成时间大大延长的情况。具体地说,由于一个节点运行缓慢,整个计算过程会等待迟缓节点的完成,这样会浪费其他节点的计算资源,降低系统性能。解决该问题的方法有很多,其中比较常用的方法是采用备用节点、复制执行任务等。


Single-process Simulation

Single-process Simulation是联邦学习中用于在单个设备上进行分布式模拟的方法。它通过模拟联邦学习中涉及的多个参与方的行为,来验证、测试和评估联邦学习算法。

在Single-process Simulation中,通过创建多个虚拟的本地设备,模拟多个参与方。这些本地设备可以运行在单个计算机上或者在单个容器、虚拟机中运行。每个本地设备使用相同的算法和数据集,但每个本地设备在本地独立训练模型。然后,这些虚拟的本地设备将模型参数发送给中央服务器进行聚合,从而生成一个新的全局模型参数。整个过程重复进行,直到收敛为止。

Single-process Simulation的好处是能够方便地进行模拟测试和调试,同时避免了在物理设备上进行实验所面临的安全和隐私问题。但是,它也存在一些缺陷,例如由于所有虚拟本地设备共享计算资源,模拟的运行时表现可能不太逼真。因此,为了更精确地验证算法,通常还需要进行实际的联邦学习环境测试。


Cross-silo FL

Cross-silo FL (Cross-silo federated learning) 是一种联邦学习的方法,用于多个组织间协同训练模型。不同于传统的联邦学习,Cross-Silo FL 允许不同组织间共享模型及部分数据,同时保护数据的隐私性。在 Cross-Silo FL 中,每个组织的训练数据集只是部分共享给其他组织,以实现更快的训练和更好的模型精度。这种方法被广泛应用于金融、医疗、安全等等需要处理敏感数据的场景。


Cross-device FL

Cross-device FL (Cross-device federated learning)是一种联邦学习的方法,旨在协同训练模型,同时保护用户数据隐私。Cross-device FL 是一种分散式的机器学习方法,使得多个用户可以使用他们设备上的本地数据来共同训练一个模型。在 Cross-device FL中,参与方向中央服务器发送模型参数,然后本地设备使用其本地数据对参数进行更新和反馈,从而实现联合学习。Cross-device FL的好处是有效地帮助用户保护其隐私,同时实现更好的机器学习模型的训练。这种方法被广泛应用于搜索引擎、社交媒体和智能手机等设备上的智能应用程序中。

Cross-silo FL和Cross-device FL两种联邦学习方法的核心目标是相同的,即在多个设备或组织之间共同训练模型,同时保护数据隐私。但Cross-device FL和Cross-silo FL的区别在于以下方面:

  1. 联邦学习的参与者范围不同:Cross-device FL的参与者是许多设备上的本地用户,而Cross-silo FL的参与者是多个不同的组织或机构。
  2. 参与者使用的数据不同:Cross-device FL的参与者使用的是自己设备上的本地数据,而Cross-silo FL的参与者使用的是组织或机构之间共享的数据。
  3. 隐私保护方法不同:在Cross-device FL中,每个参与者都应用本地隐私保护机制来保护其本地数据,然后使用加密技术将模型参数发送到中央服务器。与此不同,Cross-silo FL中,隐私保护是由组织协调进行的,使用密钥共享等技术来保护数据隐私。
  4. 联邦学习过程中涉及的算法不同:Cross-device FL通常需要采用一些特殊的算法,如差分隐私算法、同态加密算法,使得在保护用户隐私的同时可以联合训练计算。Cross-silo FL则通常需要采用垂直分区算法和水平分区算法等,以便将来自不同组织的数据合并为可用于联合学习的数据集。

数据非独立同分布(None-IID)

在联邦学习中,如果参与方之间的数据分布不同或具有不同的特征,则称该数据为非独立同分布数据(non-i.i.d data)。这种情况下,训练集中的每个数据样本都具有与其他训练集所用样本不同的分布特征,这会对模型训练过程和最终的模型性能带来影响。

在这种情况下,训练出良好的模型会变得更加困难,因为模型需要考虑到所有参与方的数据的分布和特征。由于不同数据分布的存在,算法无法在数据发生变化时进行适当的更新,这很可能导致模型在某些地方出现过拟合或欠拟合的情况。

为了解决此问题,可以采用联邦学习中的一些算法如同态加密、差分隐私或联邦迁移学习等,这些算法不仅可保护数据隐私,更重要的是可以解决非独立同分布数据的问题。此外,不同设备的数据集之间的差异也可以通过稍微调整模型架构、使用迁移学习或设置可能共享的全局参数等方法来解决。


什么是数据分布不同?

在联邦学习中,由于来自不同参与方的数据可能来自不同的地区、不同的用户、不同的设备或不同的时间段,因此会导致数据的分布不同。由于数据分布的偏差,可能会导致使用传统机器学习算法(训练数据分布相同的假设)不能在联邦学习环境中进行有效训练,进而影响模型的准确度。

举个例子,在医疗领域,如果一个医院的病人年龄普遍较大,而另一个医院的病人年龄普遍较小,那么这两个医院的数据分布就不同。如果使用这些数据融合成一个统一的数据集进行训练模型,可能会导致训练出来的模型不能很好地适应这两个医院的病人。这种情况下,需要用到联邦学习技术来解决这个问题,通过在本地设备上进行模型训练和参数更新,保护数据隐私的同时,最终实现模型共同的学习。

为了解决联邦学习中的数据分布问题,可以采用以下方法:

  1. 使用针对非独立同分布数据的联邦学习算法。
  2. 在联邦学习中,将参与方的数据分布进行归一化处理,以此来消除数据分布的不同之处。
  3. 采用水平同构联邦学习 (Federated Horizontal Learning) 或者垂直同构联邦学习(Federated vertical Learning) 将数据分布不同的参与方分别分配到每个联邦节点中。
  4. 选择合适的模型和算法,尤其是增加模型的可扩展性分析。

Statistical heterogeneity

在联邦学习中,statistical heterogeneity通常指在不同参与方(个体)中观测到的数据分布不同。这种异质性可能由于参与方之间的地理位置、传感器配置、用户特征等因素引起。由于数据分布的异质性,当使用联邦学习方法来建立机器学习模型时,需要采用特殊的技术和算法来处理这种异质性,以达到更好的模型性能和泛化性能。例如,可以使用联邦学习中的模型聚合来集成来自不同参与方的模型。

解决联邦学习中的统计异质性需要根据具体情况采用不同的方法。以下是一些常用的方法:

  1. 数据预处理:可以对参与方的数据进行预处理,使其更加相似,例如对数据进行标准化、降噪等操作。
  2. 模型调整:在联邦学习过程中,可以根据各参与方的异质性调整模型参数或结构,以适应不同的数据分布。
  3. 聚合方法:可以采用不同的聚合方法来平衡不同参与方的权重,例如使用加权平均或使用联合核方法等。
  4. 组合模型:可以使用组合模型来解决统计异质性问题,例如使用异构组合模型或度量学习等方法。
  5. 差分隐私:差分隐私可以在数据共享的情况下,保护数据隐私并减轻统计异质性的影响。
  6. 数据调节(Daat moderation)
  7. 个性化(Personalization)
数据调节

在联邦学习中,Data moderation也称为数据调节,是一种用于处理联邦学习中数据分布异质性问题的方法。数据调节旨在使每个参与方(个体)在每一轮更新时提供相同数量的数据,并且每个参与方对模型更新的贡献相等,从而减轻数据分布异质性的影响,提高模型的性能。

具体来说,数据调节包括以下步骤:

  1. 选择数据样本:从每个参与方的数据集中选择一组相同数量的样本,这些样本可以是随机选择的、具有代表性的或根据某些标准选择的。
  2. 统计数据:统计所选样本中的数据数量和标签分布,确定每个参与方需要提供的数据量和每类标签的数据量。
  3. 数据重复:使用一些技术(例如数据复制、标签平滑等)可对样本数量不足或标签数分布不均的参与方进行数据重复,以使每个参与方提供的数据数量相等。
  4. 同步更新:在进行模型更新时,确保每个参与方都参与相同数量的训练迭代,并对其做出相同的贡献,从而平衡数据分布异质性的影响。

需要指出的是,数据调节不适用于所有联邦学习场景,因为将数据量相等地分配给每个参与方可能会影响训练过程中的模型性能。因此,需要在实践中评估数据调节对模型性能和训练效率的影响,以确定是否需要采用数据调节方法。

需要注意的是,不同的方法适用于不同的应用场景,需要针对具体问题进行选择和评估。

个性化(Personalization)

​ 在联邦学习中,个性化(Personalization)是一种用于解决统计异质性问题的方法,通过在联邦学习模型中引入个性化因素,使得每个参与方的模型更新过程更加独特和专业,从而提高模型性能。

在个性化方法中,每个参与方可以具有自己独特的模型,而不是仅仅从全局模型中学习参数。这样,参与方可以在本地训练自己的模型,根据自己的数据特点和领域知识进行训练。在合并模型时,可以使用联合学习(Federated Learning)等方法,将不同参与方的个性化模型合并成一个全局模型,从而生成更具有鲁棒性和适应性的模型。

个性化方法可以用于处理不同参与方的数据样本数量、质量、噪声等方面的差异,以及处理不同参与方之间的可信度、数据安全等方面的问题。需要注意的是,个性化方法需要在多方利益平衡的基础上进行,以保证模型更新的公平性和精度。

在联邦学习中,个性化方法可以通过以下操作来实现:

  1. 聚合方法:可以使用必要的协调策略来平衡个性化模型和全局模型之间的权衡关系,例如使用不同的加权平均或学习方法来聚合个性化模型。
  2. 局部和全局模型:在个性化方法中,可以将全局模型分解为局部参数和全局参数。每个参与方可以训练只包含局部参数的模型,以学习偏向本地数据的参数,然后在用联合学习的方法来更新全局参数,从而形成一个全局模型。这种方法可以提高模型的性能,减少局部数据的误差,并且保护参与者的数据隐私。
  3. 模型跨越:在个性化方法中,可以使用模型跨越的技术来向参与者提供有关全局参数的信息,以帮助其训练更好的本地模型。该技术可以使较小的参与方得到更好的启发,从而提高其在联邦学习中的表现。
  4. 聚类方法:在个性化方法中,可以使用聚类方法来将参与者分组,从而使相似的参与者训练相似的模型。这种方法可以减少不同参与者之间的距离和差异,使全局模型更加稳健和可靠。(E-Tree里面用的就是这个)

需要注意的是,在联邦学习中实施个性化方法需要考虑保护数据隐私的问题,确保个性化方法的操作不会泄露用户的个人数据和信息。


流式传输

​ 在联邦学习中,流式传输是指一种按流式传输数据的技术。这种技术可以将固定大小的数据块拆成更小的块流式传输到模型中进行训练。与批量传输相比,流式传输允许程序在接收到新数据后即时处理,从而保证数据的快速到达模型,同时也可以避免长时间等待新数据到达的情况。

​ 传统的批量传输需要等待所有数据都到达才能进行下一步操作,可能需要等待很长时间。而流式传输允许模型逐步地接收新的数据,适用于在模型完全更新之前不断到达新数据的情况。在联邦学习中,每个设备都在本地对自己的数据进行训练,然后将训练后的模型更新(例如,梯度)上传到中央服务器,中央服务器聚合更新后,再将模型参数分发给各个设备。一旦设备完成本地训练,就可以通过流式传输的方式,即时将其更新上传到服务器,而不是等到所有设备都完成本轮训练后再进行模型聚合和通信。

​ 流式传输可以显著减少等待时间,同时也能够更快地响应新的数据,提高了模型的训练效率和吞吐量。此外,流式传输还可以减轻网络负载和占用带宽,降低通信开销。因此,在联邦学习中,流式传输能够有效解决长时间等待和通信开销大的问题,提高了整个联邦学习系统的效率。


标签分布偏斜( Label distribution stew )

​ 在联邦学习中,由于每个参与方(例如设备、终端等)持有的数据分布不同,因此可能会导致某些参与方的标签分布偏斜。也就是说,有些参与方的数据中某些标签数量较多,而其他参与方的数据中该标签数量较少。这种标签分布的不平衡通常称为“标签分布偏斜”(Label Distribution Skewness)。

​ 标签分布偏斜可能会影响联邦学习模型的性能。在训练过程中,模型的目标是最小化整个数据集上的损失函数,而标签分布的偏斜可能会导致一些类别的损失函数被忽略或少考虑,从而影响模型的准确性和泛化性能。

为了解决标签分布偏斜问题,可以采用以下方法:

  1. 重新分配数据,使每个参与方的数据分布尽可能均匀地包含所有类别的标签。这可以通过使用有关标签分布的先验知识来实现。
  2. 使用标签平衡策略(Label Balancing Strategies),对于标签分布偏斜较为明显的类别,增加其权重,减少其损失函数中对模型性能的影响。
  3. 利用迁移学习的方法,将源领域和目标领域中更少样本的类别之间的信息进行迁移,以增强标签分布偏斜的类别。

总之,解决标签分布偏斜问题是联邦学习中的一个重要挑战,需要采用适当的方法来处理不平衡的类别分布,以获得更好的模型性能。

feature distribution skew 和 quantity stew 也差不多的意思


数据预处理

  1. 标准化

​ 标准化是指将数据转化为均值为0、标准差为1的指定分布,以便于对不同尺度或不同单位的变量进行比较和统计分析。

​ 标准化主要应用于增强数据的稳定性和可比性,避免不同变量的单位或量纲对结果产生影响,比如将评分、薪酬和利润等数据转化为相同的分布形态。

​ 具体操作为:对于一组数据,先计算其均值、标准差,然后对每个数据点进行如下处理:
$$
x' = \frac{x-\overline{x}}{s}
$$
​ 其中,$x$为原始数据点,$\overline{x}$为该组数据的均值,$s$为该组数据的标准差。处理后得到的$x'$即为标准化后的数据。

​ 标准化可以使不同变量的数据处于同一尺度,从而方便进行统计分析和建模;同时也可以消除数据间的单位差异,避免数据范围大的变量对模型的影响过大。

  1. 归一化

​ 归一化是将数据缩放到[0, 1]或[-1, 1]范围内的处理过程,在数据预处理中应用非常广泛。

​ 归一化主要应用于将不同单位或不同量级的数据放到同一量级比较或处理。比如,将人口、收入和贫困率等指标缩放到相同的值域。

​ 常见的归一化方法有两种:最小-最大缩放和Z-score标准化。

​ 最小-最大缩放法(Min-Max Scaling)是将数据线性转化到[0, 1]之间,公式为:
$$
x' = \frac{x - min(x)}{max(x) - min(x)}
$$
​ 其中,$x$为原始数据点,$x'$为归一化后的数据,$min(x)$和$max(x)$分别为数据集的最小值和最大值。

​ Z-score标准化法是将数据转化为均值为0,标准差为1的正态分布,公式为:
$$
x' = \frac{x - \mu}{\sigma}
$$
​ 其中,$x$为原始数据点,$x'$为归一化后的数据,$\mu$为数据的均值,$\sigma$为数据的标准差。

​ 两种归一化方法的选择视数据的具体情况而定,如数据存在明显的异常值或离群点时,可采用Z-score标准化;当数据集的数据较为分散时,可采用最小-最大缩放法。

总之,归一化和标准化是常见的数据预处理方法,但它们的应用场景不同。根据不同的数据特征和目标,选择合适的方法能够提高分析的可靠性和准确性。


Partial sampling(部分采样)

​ 在联邦学习中,Partial Sampling是一种样本选取方法,它旨在解决跨参与方统计数据分散性高、噪声严重的问题。Partial Sampling允许参与方只随机选择部分本地数据进行共享,以此来提高跨参与方训练模型的质量和效率。

​ 具体而言,Partial Sampling将训练数据划分为核心数据和剩余数据两部分。在训练期间,核心数据会在不同的设备之间进行交互和共享,而剩余数据则仅在本地使用,不会用于共享。

Partial Sampling的优点有:

  1. 减少通信复杂性:由于仅将核心数据用于跨参与方交互,Partial Sampling可以在减少跨参与方通信所需的数据量同时又保证了模型的质量。
  2. 提高模型可训练性:由于训练数据的分散性和噪声问题,跨参与方训练模型时,对所有本地数据的使用可能会导致过拟合或误差率增加等问题。而Partial Sampling通过随机选择数据,使得每个参与方训练的数据子集更具代表性,可以更好地减少样本偏差和方差偏差,从而提高模型的可训练性和可扩展性。

Partial Sampling的缺点也有:

  1. 任务划分不够充分:如果划分不当,即使使用Partial Sampling也可能会出现不同设备训练某些数据的依赖性,从而影响模型的质量。
  2. 对参与方的要求较高:Partial Sampling的实施需要参与方具有一定的机器学习和统计知识,使得实现该技术需要元素较多,部署过程较为复杂。

总之,Partial Sampling是联邦学习中一种重要的样本选择方法,在进行跨参与方训练模型时可以有效减少计算量和通信开销,提高模型的联邦训练效果。


Batch Normalization(批量归一化)

​ 联邦学习中的Batch Normalization(联邦学习批量归一化)是一种用于减少神经网络中协作学习的抑制措施。它通过在每个本地模型的局部批次上,自适应地标准化隐藏神经元的激活值,从而实现了对在较少本地样本的情况下学习的稳定性提高的操纵。

​ 具体来说,一个普通的神经网络在训练时,通常会对每一个样本做一次前向传播并进行一次反向传播。但在联邦学习的场景中,由于数据的分散和本地访问限制,无法对所有样本进行全局训练。因此,局部模型的训练范围通常是在本地某个设备上的一批数据内完成的。

​ 在每一轮训练期间,Batch Normalization通过对每个组中的激活进行归一化来实现本地批次中的模型概括调整。具体而言,对于当前的正则化参数$\gamma$和$\beta$,使用以下式子完成:
$$
BN(X) = \gamma\cdot\frac{X - \mu_x}{\sqrt{\sigma^2_x + \epsilon}} + \beta
$$
其中,$X$为当前批量大小的输入数据,$\mu_x$和$\sigma^2_x$分别是数据的均值和方差。$\epsilon$为误差项,即是为了防止规范化出现分母为0的情况。

总之,联邦学习中的Batch Normalization是一种用于采用精细化的模型调整方法,以确保在普通神经网络理论模型的基础上不会增加过多的额外计算负担。该方法的应用可以显著提高联邦学习算法的性能和可拓展性。‘’


领域自适应

​ 联邦学习中的domain adaption(领域自适应)是指探索如何在不同的设备或数据集之间迁移训练一个可靠和鲁棒的模型。在联邦学习中,由于设备之间的数据分布和数据类型可能会有很大的差异,因此我们需要通过对模型进行领域自适应,来提高模型的泛化能力,以便对新的数据进行预测。

​ 具体而言,领域自适应可以通过数据扩充、基于对抗网络的方法、迁移学习等方法来实现。例如,可以使用数据扩充技术来增加训练数据的数量,使得模型在不同设备之间的数据分布上具有更好的泛化能力。另一方面,可以使用基于对抗网络的方法,对模型进行对抗性训练,使其在不同场景下都能正确地分类数据。

​ 同时,在联邦学习中,也可以使用迁移学习的方法来进行领域自适应。迁移学习是指将已有的知识迁移到新任务中,以提高模型的泛化能力。具体而言,可以将已经在某些设备上训练过的模型、模型参数迁移到其他设备上,从而快速训练新的模型。

总之,领域自适应是一种重要的联邦学习技术,使得模型能够更好地适应不同设备或数据集之间的变化,提高模型的泛化能力。b


特征分布 和 标签分布

(features distribution ) & (Labels distribution),这个知识点在学习关于Non-IID 数据分布的时候能用上,在模拟Non-IID环境时会提到该知识点

​ 在联邦学习(Federated Learning)中,指的是在每个设备上的数据集之间可能存在不同的特征(features),但是它们的标签(labels)分布却是相同的。这意味着不同设备上的数据集可能包含有关相同问题的不同方面的信息。通过联邦学习,这些不同设备上的信息可以收集和整合,从而使模型能够更好地适应更广泛的数据分布。在许多情况下,这使得模型能够获得比在任何单个设备上训练的模型更好的性能。

假设我们有一个面部识别任务,我们想要根据人们的面部图像将他们分类为不同的类别,如男性或女性。(来自GPT,可能解释的有些问题)

  • 示例1:不同分布的特征

​ 我们有两个设备,其中一个设备有许多来自东亚人的面部图像,而另一个设备有来自非洲人的图像。这意味着每个设备的特征分布不同,因为亚洲人和非洲人的面部特征有所不同。但它们的标签分布相同,即男性和女性的比例是相同的。通过联邦学习,我们可以将这些不同设备上的数据合并起来,生成一个更具代表性的训练数据集。这将提高我们的面部识别模型的准确性。

  • 示例2:不同数量的样本

​ 我们有两个设备,其中一个设备有大量来自年轻人的面部图像,而另一个设备有来自老年人的图像。尽管两个设备之间的特征分布可能相似,但是它们的样本数量不同。有了联邦学习,我们可以将不同设备上的数据集整合起来,从而使我们的模型在不同年龄段的人群中得到更好的泛化性能。

  • 示例3:不同设备上的噪声 (加噪声来模拟 特征不均衡)

​ 我们有两个设备,一个设备的数据集中的面部图像质量非常高,而另一个设备的数据集中的面部图像质量较差,并且可能包含平移或模糊等噪声。尽管两个设备之间的标签分布相同,但是数据质量不同。联邦学习可以在不同设备上训练模型,从而消除噪声并提高模型的泛化性能。


Lipschitz smooth (利普希思平滑)

​ Lipschitz smooth是一个函数的一种特殊类型。 如果一个函数�在其定义域内的任何两个点之间的变化量都不会超过一个固定的常数�乘以这两个点之间的距离,那么它被称为Lipschitz连续的。 当这个常数非常小的时候,这个函数被称为Lipschitz smooth的,通常这个常数非常小的函数在数学和计算机科学中都非常有用。 Lipschitz smooth函数的一个重要特征是它们在可微领域内处处可导,并且它们的梯度不会突然地变化或“爆炸”,这使得这种类型的函数在优化问题中非常有用。

    def aggregate(self, w_locals):
        training_num = 0
        for idx in range(len(w_locals)):
            (sample_num, averaged_params) = w_locals[idx]
            training_num += sample_num

        (sample_num, averaged_params) = w_locals[0]
        for k in averaged_params.keys():
            for i in range(0, len(w_locals)):
                local_sample_number, local_model_params = w_locals[i]
                w = local_sample_number / training_num
                if i == 0:
                    averaged_params[k] = local_model_params[k] * w
                else:
                    averaged_params[k] += local_model_params[k] * w
        return averaged_params

FedProx 是一种联邦学习模型优化算法,它是对 FedAvg 算法的一种改进。在 FedAvg 中,每个设备或用户对于全局模型的更新权重是相等的,但是在实际应用中,不同设备或用户之间的数据分布和数据量可能会有很大差异,这就意味着数据分布不同或数据量较少的设备或用户对于模型更新的贡献要小于其他设备或用户。为了解决这个问题,FedProx 引入了一种本地正则化的方式,以让每个参与方在更新全局模型时的权重更加平衡。

具体来说,FedProx 在本地求解时加入了一个客观函数,在损失函数中增加了一个正则化项,以近似每个设备或用户之间的数据分布。这样,数据分布差异或数据量较少的设备或用户可以更好地与其他设备或用户对模型进行更新。对于损失函数 $L_i(f)$,可以定义一个不带正则化项的本地优化问题:

$$\min_{w} L_i(w) \equiv \mathbb{E}_{(x,y)\sim\mathcal{D}_i}[\ell(w;(x,y))]$$

其中,$\mathcal{D}_i$ 表示设备 $i$ 上的数据集,$\ell(w;(x,y))$ 是损失函数。为了解决数据分布差异的问题,FedProx 在此基础上将问题进行修改,引入一个正则项 $\frac{\mu}{2}||w-w_0||^2$:

$$\min_{w} L_{i}(w) + \frac{\mu}{2}||w-w_0||^2$$

其中,$w_0$ 是全局模型参数,$\mu$ 是超参数,决定了正则化项的比重。在这种加入了正则项的损失函数下,设备 $i$ 就会优先选择更新和 $w_0$ 更加接近的模型参数,从而使数据分布不同或数据量较少的设备或用户更容易向全局模型参数对模型进行更新。

  def train(self, train_data, device, args):
		... 
        for epoch in range(args.epochs):
            batch_loss = []
            for batch_idx, (x, labels) in enumerate(train_data):
                x, labels = x.to(device), labels.to(device)
                model.zero_grad()
                log_probs = model(x)
                loss = criterion(log_probs, labels)  # pylint: disable=E1102
                # if args.fedprox:
                fed_prox_reg = 0.0
                for name, param in model.named_parameters():
                    fed_prox_reg += ((args.fedprox_mu / 2) * \
                        torch.norm((param - previous_model[name].data.to(device)))**2) # 局部更新策略
                loss += fed_prox_reg
                loss.backward()
                # Uncommet this following line to avoid nan loss
                # torch.nn.utils.clip_grad_norm_(self.model.parameters(), 1.0)
                optimizer.step()

特征白化

​ 特征白化是通过批量白化层来减少分布差异,并使模型学到的表示在不同客户端之间实现对齐。在每个局部更新后,在每个客户端上计算协方差矩阵,并对其进行特征值分解,进而获得矩阵的特征向量。然后将特征向量用于批量白化层,该层可以使输入特征映射的均值为零,方差为1。这个过程旨在减少多个客户端之间的分布差异,使得每个客户端学习到的特征可以更好地与其他客户端对齐,从而提高分类性能。

在这篇文章中,batch whitening layer 的定义如下:

首先,对于 $m$ 个数据样本的集合 $\mathbf{X} \in \mathbb{R}^{m\times n}$,其中 $n$ 是图像的特征维度,对 $\mathbf{X}$ 进行中心化处理,其结果为:

$\widetilde{\mathbf{X}} = \mathbf{X} - \boldsymbol{\mu}$,其中 $\boldsymbol{\mu}$ 表示 $\mathbf{X}$ 的均值向量。

接着,使用 $\widetilde{\mathbf{X}}$ 来计算 $\mathbf{X}$ 的标准差:

$\mathbf{C} = \frac{1}{m}\widetilde{\mathbf{X}}^T\widetilde{\mathbf{X}}$,其中 $\mathbf{C}$ 是 $\widetilde{\mathbf{X}}$ 的协方差矩阵。

最后,根据 $\mathbf{C}$ 和 $\widetilde{\mathbf{X}}$ 来计算特征白化后的向量 $\mathbf{Y}$:

$\mathbf{Y} = \widetilde{\mathbf{X}}\mathbf{C}^{-1/2}$,

其中 $\mathbf{C}^{-1/2}$ 表示 $\mathbf{C}$ 的平方根的逆矩阵。通过这个过程,数据的均值变成了 $0$,方差变成了 $1$,从而减少了数据在不同客户端之间的分布差异,在此基础上可以更好的共同学习和分类。

上面是标准定义

实际上,我之前给出的方程式是一个标准的 batch whitening layer 的定义,但是这篇论文中定义的 batch whitening layer 稍微有些不同。具体来说,这篇论文的 batch whitening layer 是基于白化变换和对角线线性变换的组合,目的是减少数据的相关性,这里给出论文中的具体定义:

首先,假设输入的特征向量为 $\mathbf{x} \in \mathbb{R}^n$,并且其均值为 $\boldsymbol{\mu} \in \mathbb{R}^n$,方差为 $\boldsymbol{\sigma}^2 \in \mathbb{R}^n$。然后,计算白化变换后的特征向量 $\widetilde{\mathbf{x}}$:

$\widetilde{\mathbf{x}} = \frac{\mathbf{x} - \boldsymbol{\mu}}{\sqrt{\boldsymbol{\sigma}^2+\epsilon}}$

其中 $\epsilon$ 是一个微小项,避免了分母为 $0$ 的情况。这样得到的 $\widetilde{\mathbf{x}}$ 会有 $0$ 均值和 $1$ 方差。

之后,进行对角线线性变换,并且同样加入一个缩小系数 $\gamma$,将输入的特征向量映射到新的特征向量 $\mathbf{y} \in \mathbb{R}^n$:

$\mathbf{y} = \gamma \widetilde{\mathbf{x}} + \beta$

其中 $\beta$ 是偏移项。通过这个过程,数据的相关性降低,使得模型更快地收敛,并且能够处理小的 batch size,提高模型的稳定性和泛化能力。

以下是我问chatGPT的问题

  1. 这里你说的数据相关性降低了,模型更快收敛,原因是什么呢,可以详细说说吗?

​ 数据相关性通常指的是特征向量之间的相关性或依赖关系,这会导致优化算法面临以下两个主要问题:

1.梯度更新不稳定:如果两个特征向量高度相关,则它们可能会通过梯度更新的方式相互抵消或增强,导致梯度更新不稳定,算法难以收敛。

2.计算代价增大:如果特征向量高度相关,则它们不仅是冗余的,而且可能还会导致计算代价的增加,因为算法需要计算相似或重复的特征。

batch whitening layer 可以通过白化变换和对角线线性变换来降低特征向量之间的相关性,解决上述问题。通过白化变换,数据的协方差矩阵被转换为单位矩阵,特征向量之间的相关性被消除,从而使得模型训练更加稳定。而通过对角线线性变换,模型可以更容易地学习到特征之间的关系,从而加速优化算法的收敛速度。

总之,batch whitening layer 的引入可以帮助减少特征向量之间的相关性,从而优化联邦学习模型的训练,提高模型的稳定性和泛化能力。

  1. 对于这篇文章中的数据相关性,如果在联邦学习中,有两个客户端,它们的数据集中有相同的特征,那数据相关性如何,数据相关性和IID有关系吗?

​ 在联邦学习中,如果有两个客户端,它们的数据集中有相同的特征,那么这些特征向量可能会高度相关,使得联邦学习中的优化算法难以显著提高模型的性能。特别地,如果这些特征向量是线性相关的,那么它们将有很强的相关性,会导致优化算法的收敛速度很慢,并且可能会导致模型的过拟合或欠拟合。

​ 值得注意的是,数据的相关性与独立同分布(IID)的概念密切相关,IID 数据是指在不同节点之间采样的数据是经过独立采样且样本分布相同的。如果数据集是IID的,则可以将它们视为相互独立和无相关性的,可以应用标准的联邦学习算法来更新共享模型。然而,在实际情况中,由于环境的不同,分布可能会有偏差,不同客户端的数据样本也可能会存在显著的相关性。针对这些问题,可以使用批量白化技术等对抗数据相关性的方法来优化联邦学习算法。

  1. 如果按照以上说法,降低数据相关性是否会使得客户端之间的数据异质性增强,数据异质性越强的话模型收敛速度不是应该更慢吗?

​ 您提出的问题非常有意义,事实上,降低数据之间的相关性确实可能导致客户端数据集的异质性增强。而数据的异质性指的是不同客户端数据集之间的抽样分布不同,因此,在缺乏有效的方法来解决数据异质性的情况下,这个异质性可能会阻碍联邦学习算法的收敛速度和性能。

不过,对于本文中所提到的特征白化方法,其白化变换是在局部进行的,即每个客户端只对自己的数据做特征白化,而不需要知道其他客户端的数据分布情况。因此,特征白化减少了数据之间的相关性,但并未增加数据的异质性,同时也不会影响模型的收敛速度。相反,由于白化变换减少了 。。。