联邦学习笔记

联邦学习

联邦学习

      联邦学习(Federated Learning简称FL)是一种机器学习设置,其中多个实体(客户端)在中央服务器或服务提供商的协调下协作解决机器学习问题。每个客户的原始数据都存储在本地,并且不会交换或转移;从而代替了用于立即聚合的有针对性的更新用于实现学习目标。

数据孤岛

数据孤岛是指数据孤立存储,彼此之间并不连通。

例如企业发展到一定阶段,就会出现很多个部门,比如人事部,市场部,技术部等等,各个部门之间有各自的数据,往往各自存储,各自定义。每个部门的数据就像一个个孤岛一样不能或很难做到与企业内部的其他数据连通互动。这样的情况称为数据孤岛——就是数据间缺乏关联性,数据库彼此无法兼容。

典型的联邦学习过程

服务器 (服务提供商) 通过重复以下步骤来协调训练过程,直到训练停止(由监控训练过程的模型工程师决定):

  1. 客户端选择: 服务器从一组符合资格要求的客户端中采样。
  2. 广播: 选定的客户端从服务器下载当前模型权重和训练程序。
  3. 客户端计算: 每个选定的设备通过执行训练程序来本地计算模型的更新,例如,训练程序可能会在本地数据上运行SGD (如联合平均)
  4. 聚合: 服务器收集设备更新的汇总。为了提高效率,一旦有足够数量的设备报告了结果,用户就可以在此处放弃。
  5. 模型更新: 服务器根据从当前轮中参与的客户端计算的聚合更新,本地更新共享模型。

分类

根据数据的分布特征分类:

  1. 横向联邦学习

特点:有相同的特征空间,但是样例空间不同。

例如,上海浦发银行和贵阳的贵阳银行,因为其所在的地域不同,各自所服务的人群有显著的区别,即样本空间不同,但是由于其提供的服务(比如存取款,转账,贷款等等)是大致相同的,即特征空间相同。

横向联邦学习架构

在该系统中,具有相同数据结构的k个参与者通过参数或云服务器协作学习机器学习模型。

横向联邦学习系统的训练过程通常包含以下四个步骤:

•步骤1:参与者本地计算训练梯度,使用加密、差异隐私或秘密共享技术屏蔽梯度,并将屏蔽结果发送给服务器;

•步骤2:服务器在没有关于任何参与者的学习信息的情况下执行安全聚合;

•步骤3:服务器向参与者发送聚合的结果;

•步骤4:参与者使用解密的梯度更新各自的模型。

  1. 纵向联邦学习

特点:有相同的样例空间,但是特征空间不同。

例如,考虑同一城市中的两个不同公司,一个是银行,另一个是电子商务公司。他们的用户集可能包含该区域的大多数居民,因此他们的用户空间的交叉很大。然而,由于银行记录了用户的收支行为和信用评级,电子商务保留了用户的浏览和购买历史,所以其特征空间有很大的不同。假设我们希望双方都有一个基于用户和产品信息的产品购买预测模型。

纵向联邦学习架构

由于数据隐私和安全原因,AB不能直接交换数据。以确保联邦学习过程中数据的保密性 ,涉及第三方合作者C。在此,我们假设合作者C诚实,并不与AB串通,并且AB是诚实的,但彼此好奇。、

纵向联邦学习系统的训练过程通常包含以下步骤:

Part1:加密实体对齐。由于两家公司的用户组并不相同,所以系统使用基于加密的用户ID对齐技术。 关于双方的用户,AB没有暴露他们各自的数据。在实体对齐过程中,系统不会公开不重叠的用户。

Part2:加密模型训练。在确定公共实体后,可以利用这些公共实体的数据来训练机器学习模型。训练过程可分为以下四步:

·步骤1:协作者C创建加密对,将公钥发送给AB

·步骤2AB加密和交换中间结果进行梯度和损失计算;

·步骤3AB分别计算加密梯度,并分别添加附加掩码,B还计算加密损失;ABC发送加密值;

·步骤4C解密并发送解密梯度和损失回到ABAB打开梯度,相应地更新模型参数。

  1. 联邦迁移学习

特点:特征空间、样例空间都不相同

考虑两个机构,一个是位于中国的银行,另一个是位于美国的电子商务公司。由于地域的限制,两个机构的用户群有一个小的交叉点。另一方面,由于业务的不同,双方的功能空间只有一小部分重叠。在这种情况下,可以应用迁移学习技术为联邦下的整个样本和特征空间提供解决方案(图2c)。特别地,使用有限的公共样本集学习两个特征空间之间的公共表示,然后应用于获取仅具有单侧特征的样本预测。为了将它的覆盖范围扩展到整个样本空间,我们引入了迁移学习。

联邦迁移学习架构

整体架构和纵向联邦学习类似,但在A,B双方交换中间结构的细节有些不同,联邦迁移学习不需要主服务器(协调方)作为各参与方之间的协调者。

    典型的联邦迁移学习训练过程主要包括以下步骤:

      步骤参与方根据自身数据集构建本地模型。

      步骤参与方分别运行各自的本地模型,获得数据表征以及一组中间结果,加密后发送给对方。

      步骤对方利用接收到的中间结果计算模型的加密梯度和损失值,加入掩码后发给原参与方。

      步骤各方对接收到的信息进行解密后发回给对方,然后各方利用解密后的模型信息更新各自的模型。

安全模型

安全模型是评价一个联邦学习系统是否满足隐私保护要求的标准之一,要求一个安全的联邦学习系统应当满足以下几个安全属性:

隐私性

它要求能有效保证系统内部各方的数据安全和隐私安全。

正确性

需要能够保证每个参与方都能输出计算结果,且计算结果是正确的。

公平性

使得系统能公平看待各方的计算贡献,公平地进行计算结果的聚合。

攻击模型

联邦学习想要满足安全模型的要求,通常会面临着 4 种常见的潜在敌手以及安全威胁。针对联邦学习系统的攻击模型主要包括以下几种:

1.源自服务器的攻击

诚实但好奇的服务器敌手

一个诚实但好奇的服务器会试图从参与方的模型更新信息中反推出参与方的隐私数据特点等,但不会提供负反馈信息给参与者,使其错误地更改本地模型。

恶意的服务器敌手

恶意服务器不仅会试图从参与方的模型更新信息中反推出参与方的隐私数据特点等,还会恶意篡改聚合模型,或者提供错误的信息给参与方,破坏参与方的模型性能。

 混合的服务器敌手

混合的服务器敌手则同时或者不间断地充当诚实但好奇的服务器敌手和恶意的服务器敌手

【注】:区别服务器(参与者)敌手是否恶意的依据:是否提供负反馈信息给参与者,使其错误地更改本地模型。

2.源自参与者的攻击

诚实但好奇的参与者敌手

恶意的参与者敌手

混合的参与者敌手

【注】:有的参与者是诚实但好奇的,它希望窃听其他参与方以及主服务器共享的数据信息,以期从中推理出某些有用的信息。这会对联邦内部造成数据安全的威胁,同时它对模型更 新会比较消极,不利于联邦模型性能的提升。其次,还有恶意的参与者存在,他们的主要目的是反馈错误的模型信息到 主服务器,使得联邦模型向着消极的方向更新迭代。同样 地,也存在混合类型的敌对参与方。

3.源自外部的攻击

参与者和服务器之间通信更新时,通道上可能存在外部窃听者窃听信息,并由此反推出一些有关模型等的隐私数据,造成联邦内部的通信安全威胁。

客户端的不稳定性

客户端在训练过程中出现故障,目前看来,使用安全聚合的方式实现FL时,当大量设备掉线时可能存在影响隐私风险。

这其中降低故障的方法就是提高安全聚合的效率,这样可以降低时间窗口。

另一种方法是开发一种异步的安全聚合方法,还有一种想法是每次采用多轮训练的参数,这样掉队的客户端可能会在后续聚合中。

数据管道故障

数据管道存在于客户端,主要用于将原始数据处理为适应FL训练的训练数据,此管道中的错误或意外操作可能会极大地改变联邦学习过程。

模型参数带噪(失真,由于网络不稳定或其他原因)

即使不存在攻击者,发送到服务器的模型更新也可能由于网络和体系结构因素而失真。这在跨客户端设置中尤其可能,在这些设置中,单独的实体控制服务器、客户端和网络。由于客户端数据可能会发生类似的失真。即使客户端上的数据不是故意恶意的,它也可能具有噪声特征。无论是由于网络因素还是噪声数据,上述的污染都可能损害联邦学习过程的收敛性。

一种缓解策略将是使用防御措施来对抗模型更新和数据中毒攻击。鉴于目前在联邦环境下缺乏明显的健壮训练方法,这可能不是一个实际的选择。即使存在这样的技术,它们对于许多联邦学习应用来说可能过于计算密集。

这里的开放性工作涉及开发对小到中等水平的噪声具有鲁棒性的训练方法。例如,标准联邦训练方法(如联邦平均法[289])对少量噪声具有内在的鲁棒性。

4.源自系统漏洞的攻击

模型更新中毒

        拜占庭攻击

拜占庭用户可以给服务器发送任意值,而非发送本地更新后的模型。这会导致全局模型在局部最优处收敛,甚至会导致模型发散。可以采用基于中值的,或者其他的等更加健壮的聚合方法来减弱这类攻击。

另一种模型更新中毒防御机制使用冗余和洗牌数据来减轻拜占庭式攻击。

针对性模型更新攻击

攻击者控制一小部分客户端,比如10%,通过将毒药数据发送给服务器从而给模型留下后门。中毒模型更新的外观和行为(在很大程度上)类似于没有受到目标攻击的模型,这使得单单是检测后门的存在就十分困难。此外,由于对手的目标是只影响少量数据点的分类结果,同时保持全局学习模型的整体准确性,因此针对非目标攻击的防御通常无法解决目标攻击。

现有的针对后门攻击的防御要么需要仔细检查训练数据、访问一组类似分布式数据的保留集,要么需要完全控制服务器上的训练过程,而在联邦学习设置中这些都不可能实现。

未来工作可以尝试的一个有趣途径是探索使用零知识证明来确保用户提交的更新属性是预先确定的属性。基于硬件认证的解决方案也可以考虑。例如,用户的手机可能有能力证明共享的模型更新是使用手机摄像头生成的图像正确计算的。

数据中毒

数据中毒是一种比模型更新中毒更具潜在限制性的攻击类型。在这种模式下,对手不能直接损坏到发送到中心节点的信息。相反,对手只能通过替换数据的标签或特定特征来操作客户端数据。与模型更新中毒一样,数据中毒可以分为针对攻击和非针对攻击。

数据中毒会导致模型更新中毒,在联邦学习中,即便只是检测有毒数据的存在(不要求对其纠正或用有毒数据标识被入侵的客户端)也是一项挑战。当该数据中毒攻击企图安装后门时,该困难还将进一步增大,因为就算是全局训练精度或单用户训练精度这些性能指标也不足以探测出后门的存在。

相比模型更新中毒,数据中毒可能实现起来非常简单,可以执行数据中毒攻击的客户端的最大数量可能比能执行模型更新中毒攻击的数量高得多。

推理阶段的攻击(Evasion Attacks )

攻击者可以通过观察模型(黑盒模型)或者直接获取模型参数(白盒模型)来定制化数据,使得模型输出错误的结果,对抗性训练(adversarial training)被证明应对这种攻击是有效的。

但是,将对抗性学习方法引入到联邦学习环境中的需求引发了许多新的问题。例如,对抗训练在获得显著的稳健性之前可能需要许多时间。然而,在联邦式学习,尤其是跨设备的联邦式学习中,每一种训练样本的学习次数是有限的。一般来说,对抗性训练主要是针对IID数据开发的,尚不清楚它在非IID环境下的表现。

其次生成对抗性样本相对昂贵。虽然一些对抗性训练框架试图通过重用对抗性样本来最小化这一成本,但这些方法仍然需要大量客户端计算资源。这在算力较弱的客户端中可能存在问题,在这种情况下,对抗性样本生成可能会加剧内存或电量的使用。

目前想要同时解决推理阶段的攻击和训练阶段的攻击,更复杂的解决方案可能是将训练时间防御(如健壮聚合或差异隐私)与对抗训练结合起来。

隐私保护技术

联邦学习想要保证联邦内部各参与方的数据安全和隐私安全,那么必然要采用一些隐私保护技术,联邦学习常见的隐私保护技术有以下几种:安全多方计算隐私集合交集差分隐私以及同态加密等。不经意传输、混淆电路、秘密共享属于是安全多方计算的关键性技术,安全多方计算主要是用于解决一组互不信任的参与方各自持有秘密数据,协同计算一个既定函数的问题。安全多方计算在保证参与方获得正确计算结果的同时,无法获得计算结果之外的任何信息。在整个计算过程中,参与方对其所拥有的数据始终拥有绝对的控制权。

安全多方计算

安全多方计算主要是用于解决一组互不信任的参与方各自持有秘密数据,协同计算一个既定函数的问题。安全多方计算在保证参与方获得正确计算结果的同时,无法获得计算结果之外的任何信息。在整个计算过程中,参与方对其所拥有的数据始终拥有绝对的控制权。

不经意传输、混淆电路、秘密共享属于是安全多方计算的关键性技术。

不经意传输 

是发送方把多条数据基于不同的密钥加密,并将所有公钥发送给接收方,接收方按需使用特定的公钥生成随机数,双方再分别进行异或运算等,最后接收方只会得到特定数据的明文信息,其余数据的运算结果为乱码。

混淆电路

属于不经意传输的一种应用,基本思路是:根据运算函数设计出一个电路,加密方首先对该电路进行加密,即加密方负责电路的生成任务。解密方在不能得知原始电路的情况下,双方通过不经意传输使得解密方可以获得相应的数据,即解密方负责电路的解密任务。

秘密共享

基本思路是化整为散,将需要计算的秘密分割成多份小秘密,分别分发给若干个参与方进行处理,最后将结果进行聚合。在此设计下,因为各方只得到了一小部分的秘密,无法重构出真实的秘密,保证了数据的安全性和隐私性。

隐私集合交集

是一种基于多方的单独输入寻找多方数据的交集,并返回给特定方的技术。隐私集合交集技术常被用于联邦学习的数据对齐任务中。

差分隐私

基本思路是针对需要保密的数据加入噪声的处理。该动作虽然有效保护了数据的安全性与隐私性,但噪声的加入会对计算结果产生一定的影响。

同态加密

相较于其他加密算法,同态加密的最大优势在于在计算过程中不需要频繁进行加解密的操作,可以直接对密文进行计算,且计算结果解密后得到的值,与直接使用明文计算得到的结果一致,有效提高了计算效率。

发展问题

1)提高通信效率

       主要可以从三个方面提高通信效率:

​    (a)梯度压缩,减少从客户端到服务器通信的对象的大小,该对象用于更新全局模型;

​      (b)模型广播压缩,减小从服务器向客户端广播的模型的大小,客户端从该模型开始本地训练;

​    (c)减少本地计算(其实也是一种算法压缩),修改整体训练算法,使本地训练过程在计算上更加高效。

目前的压缩方法:

量化方法:降低更新参数的分辨率,例如:将参数整数化,二值化。

低秩矩阵:将通信内容结构化,低秩分解。

稀疏化:只传递足够重要的信息,例如:设置参数矩阵的阈值百分比。

知识蒸馏:将大模型知识迁移到小模型(有点类似元学习?),例如根据大模型生成小模型,在客户端训练小模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
学习MATLAB时,编写学习笔记是一种很好的方法,可以帮助您记录重要的概念、语法和技巧,以及解决问题的步骤。以下是一些关于编写MATLAB学习笔记的建议: 1. 组织结构:使用清晰的标题和分节来组织您的学习笔记。将不同的主题分成单独的部分,并使用子标题来进一步细分内容。 2. 内容概要:在每个部分或子标题下,写下该主题的概要。这样可以帮助您回顾和理解该主题的关键点。 3. 示例代码和输出:对于每个主题,包括一些示例代码和相应的输出结果。这有助于您理解和演示具体的MATLAB语法和功能。 4. 问题与解答:如果您在学习过程中遇到了一些困惑或问题,将其记录下来,并在笔记中提出并解答这些问题。这样可以帮助您深入思考并加深对该主题的理解。 5. 笔记补充:除了基本概念和语法外,您还可以添加一些额外的笔记,如最佳实践、编程技巧、常见错误等。这些额外的笔记可以提供更多的实用信息和提示。 6. 参考资料:在您的学习笔记中,包括引用的参考资料,如教程、文档、书籍或网站链接。这样,您可以随时回顾并深入研究相关的主题。 7. 总结和复习:在学习笔记的结尾,添加一个总结部分,回顾和总结您学到的重点和关键概念。此外,定期复习您的学习笔记也是加深理解和记忆的好方法。 以上是关于编写MATLAB学习笔记的一些建议。希望这对您有所帮助,并祝您在MATLAB学习过程中取得成功!如果有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值