「隐语小课」联邦学习之基本方法

简介: 「隐语小课」联邦学习之基本方法


一、引言

联邦学习是最近两年比较热门的技术,结合隐语项目的开源,我们团队最近主要做联邦学习的研究和落地,将在「隐语小剧场」陆续分享出我们对联邦学习技术的思考、解决实际应问题的方法等内容,如:“联邦学习之通信优化” “联邦学习之Non-IID问题”“隐私保护图神经网络”敬请期待!本篇主要介绍联邦学习之基本方法。

二、基本方法

自Google于2016年提出了联邦学习的概念【1】,最初的联邦学习指水平联邦学习,即client的数据为水平切分数据(特征空间相同,样本空间不同),如图1所示;此外还有垂直联邦学习,即client的数据为垂直切分数据(样本空间相同,特征空间不同),与水平联邦学习的方法就较大差异【2】。一般来说,如无特殊说明,联邦学习(例如FedAVG)均指水平联邦学习。

 1水平联邦学习和垂直联邦学习

2.1 原理

联邦机器学习的数据分布在各个client中。以非凸神经网络模型为例,假设模型为w,损失函数为f,样本总量为n,在中心化模型中,求解模型参数即为:

相应的,在联邦学习中,假设共有k个client,每个client的数据集为Pk,基于client之间数据分布为独立同分布(IID)的假设可得【3】:EPk[Fk(w)]=f(w),即:

因此:

进而可得:


综上可得,联邦学习中,对分布式数据进行训练而得到的聚合模型等价于对聚合数据进行训练所得到的中心化模型。


2.2 FedAVG算法

2联邦学习算法示意图

FedAVG是联邦学习中最基本的算法之一【1】,clients在服务器server的协助下进行训练,所有的clients和server具有相同的模型结构,如图2所示。如Algorithm1所示,假设联邦训练中共有K个clients,B为client本地训练的batchsize,C为参与联邦聚合时clients的比例,E为两次联邦聚合之间client本地训练的次数,具体过程如下:

(1)在训练开始前server首先进行模型初始化得到初始模型,client将本地数据按照batch_size=B进行数据划分。

(2)联邦训练开始之后,(2)在第t+1次联邦训练迭代过程中,clientk从server获取最新的模型参数,利用划分好的数据集和SGD优化器训练E个epoch,得到更新后的本地模型

(3)Clientk将更新后的模型权重上传至server,server对K个clients采样C*K个,得到采样集合,并对中的client模型权重进行加权平均得到server模型:

4)重复上述步骤(2)和(3),直到完成相应的迭代次数。

三、分析和讨论

3.1 FedSGD VS FedAVG

在Google的论文中还介绍了一种FedAVG的特殊形式——FedSGD。在FedSGD算法中,client将本地的训练集整体作为一个batch进行训练,且client每进行一次模型更新就将模型上传至服务器进行一次模型聚合。综上所述,当C=E=1,B=∞时的FedAVG算法即为FedSGD。

3.2 模型聚合VS梯度聚合

在原始的FedAVG算法中,client与server之间传输的为模型参数,如果传输模型梯度,也可以得到相似的效果。clientk本地训练得到模型梯度(SGDoptimizer),并上传至server端进行加权聚合得到整体梯度:

更新server端模型

下传至各个client端。

对于FedSGD来说,模型聚合与梯度聚合的结果完全相同;对于FedAVG来说,C、E有一个不为1时,模型聚合与梯度聚合的结果会有一定的差别,具体分析如下:

假设client上传间隔ΔT=C∗E,对于FedAVG_Weight模型(模型聚合),在T+ΔT迭代中,server端更新后的模型为

公式1:

对于FedAVG_Gradient模型(梯度聚合),在T+ΔT迭代中,server端更新后的模型:

公式2:

比较公式(1)和(2)可得:

3.3 隐私泄漏

在client上传模型参数或者梯度时,直接上传明文的方式会造成数据隐私泄漏,server可以根据明文的模型参数或者梯度对原始数据进行攻击【4】。对此可以采用同态加密、秘密分享、差分隐私、TEE等方法对明文数据进行加密,从而实现一定程度上的数据安全聚合,具体方法「隐语小剧场」公众号将在后续陆续发布相关文章,敬请关注!


四、Reference

【1】KonečnýJ, McMahan H B, Yu F X, et al. Federated learning: Strategies forimproving communication efficiency[J]. arXiv preprintarXiv:1610.05492, 2016.
【2】YangQ, Liu Y, Chen T, et al. Federated machine learning: Concept andapplications[J]. ACM Transactions on Intelligent Systems andTechnology (TIST), 2019, 10(2): 1-19.
【3】ZhaoY, Li M, Lai L, et al. Federated learning with non-iid data[J]. arXivpreprint arXiv:1806.00582, 2018.
【4】KairouzP, McMahan H B, Avent B, et al. Advances and open problems infederated learning[J]. arXiv preprint arXiv:1912.04977, 2019.

相关文章
|
存储 JavaScript 前端开发
除了 Vuex,还有以下一些常见的状态管理库
【10月更文挑战第18天】随着技术的不断发展和演进,新的状态管理库也可能不断涌现,我们需要保持关注和学习,以适应不断变化的开发需求。
332 1
|
3月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
415 0
|
算法 Python
Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)
Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)
2121 0
Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)
|
机器学习/深度学习 Linux Python
服务器上后台运行python程序
服务器上后台运行python程序
1294 0
|
JSON 测试技术 API
连测试大拿都不敢说熟练掌握的HTTPRUNNER2.x使用技巧
这篇文章详细介绍了HTTPRunner 2.x的高级使用技巧,包括工具的设计思想、核心功能、分层测试思想,以及如何搭建开发环境、理解基础概念、掌握关键知识点和进行框架扩展使用。
223 2
连测试大拿都不敢说熟练掌握的HTTPRUNNER2.x使用技巧
|
机器学习/深度学习 数据采集 存储
机器学习在推荐系统中的应用
【7月更文挑战第31天】随着机器学习技术的不断发展和普及,推荐系统在电子商务、社交媒体、新闻资讯等领域的应用越来越广泛。机器学习算法的应用为推荐系统优化提供了全新的思路和方法,使得推荐系统能够更加智能化和个性化地为用户提供服务。未来,随着数据量的不断增加和算法的不断创新,推荐系统将会变得更加精准和高效,为用户带来更加优质的体验。
|
机器学习/深度学习 PyTorch 测试技术
深度学习入门:使用 PyTorch 构建和训练你的第一个神经网络
【8月更文第29天】深度学习是机器学习的一个分支,它利用多层非线性处理单元(即神经网络)来解决复杂的模式识别问题。PyTorch 是一个强大的深度学习框架,它提供了灵活的 API 和动态计算图,非常适合初学者和研究者使用。
283 0
|
存储 JSON API
用Python做一个简单的后端框架
【1月更文挑战第14天】用Python做一个简单的后端框架
427 3
|
数据采集 自然语言处理 数据可视化
数据分析案例-基于snownlp模型的MatePad11产品用户评论情感分析(上)
数据分析案例-基于snownlp模型的MatePad11产品用户评论情感分析
728 0
|
机器学习/深度学习 分布式计算 安全
一文详解隐私计算「四大技术路线」
隐私计算是一个快速发展的领域,涉及密码学、安全硬件、信息论、分布式计算等多个学科。目前公开的隐私计算技术资料和白皮书已经非常丰富,但是缺乏对各技术优缺点的深入分析和对比。本文将从性能、安全、隐私、功能、研发难度等多个角度分析对比各技术路线。
一文详解隐私计算「四大技术路线」

热门文章

最新文章