一篇没用的笔记【联邦学习】

摘要:没整理,没逻辑的文字sheet,不值一看

联邦学习(Federated Learning)是一种分布式机器学习技术 ,其核心思想是通过在多个拥有本地数据的数据源之间进行分布式模型训练,在不需要交换本地个体或样本数据的前提下,仅通过交换模型参数中间结果的方式,构建基于虚拟融合数据下的全局模型,从而实现数据隐私保护数据共享计算平衡,即“数据可用不可见”、“数据不动模型动”的应用新范式 。

本质:联邦学习本质上是一种分布式机器学习技术,或机器学习框架。

目标:联邦学习的目标是在保证数据隐私安全合法合规的基础上,实现共同建模,提升AI模型的效果

联邦学习优势

  1. 数据隔离,数据不会泄露到外部,满足用户隐私保护和数据安全的需求;
  2. 能够保证模型质量无损,不会出现负迁移,保证联邦模型比割裂的独立模型效果好;
  3. 参与者地位对等,能够实现公平合作;
  4. 能够保证参与各方在保持独立性的情况下,进行信息与模型参数的加密交换,并同时获得成长。

联邦学习的目标是训练来自多个数据源的单个模型,其约束条件是数据停留在数据源上,而不是由数据源(也称为节点、客户端)替换,也不是由地方服务器进行编排训练(如果存在的话)。

联邦学习的架构分为两种,一种是中心化联邦(客户端/服务器)架构,一种是去中心化联邦(对等计算)架构。

针对联合多方用户的联邦学习场景,一般采用的是客户端/服务器架构,企业作为服务器,起着协调全局模型的作用;

针对联合多家面临数据孤岛困境的企业进行模型训练的场景,一般可以采用对等架构,因为难以从多家企业中选出进行协调的服务器方。

相关词流览:

随着人类社会数字化进程越来越快,产生了大量数据。通过机器学习技术可以自动化地挖掘数据中蕴藏的宝藏。

分布式机器学习框架   数据共享,共同建模 实现数据隐私保护和数据共享分析的平衡

隐私保护下的在线机器学习 解决医疗在线安全联邦学习问题 是联邦学习系统构架层面的突破 邦学习算法框架应用于移动互联网手机终端的隐私保护 知识联邦理论体系 IEEE正式发布联邦学习首个国际标准

根据各方数据集的贡献方式不同,可以将联邦学习具体分为横向联邦学习各数据持有方的业务类型相似,用户特征多而用户空间较少重叠,模型的准确度和泛化能力。】、纵向联邦学习共同用户,用户空间交叉较多,但因为业务类型不同,用户的特征相差较大。】和联邦迁移学习对横向联邦学习和纵向联邦学习的补充,适用于各参与方用户空间和特征空间都重叠较少的场景,每种技术细分对应不同场景

横向联邦学习数据的特征维度为导向,取出参与方特征相同用户不完全相同的部分进行联合训练。在此过程中,通过各参与方之间的样本联合,扩大了训练的样本空间,从而提升了模型的准确度和泛化能力。

纵向联邦学习是以共同用户为数据的对齐导向,取出参与方用户相同特征不完全相同的部分进行联合训练。因此,在联合训练时,需要先对各参与方数据进行样本对齐,获得用户重叠的数据,然后各自在被选出的数据集上进行训练。

此外,为了保证非交叉部分数据的安全性,在系统级进行样本对齐操作,每个参与方只有基于本地数据训练的模型。

联邦迁移学习基于各参与方数据或模型之间的相似性,将在源域中学习的模型迁移到目标域中。大多采用源域中的标签预测目标域中的标签准确性

联邦学习可使用的机器学习算法不局限于神经网络,还包括随机森林等重要算法。联邦学习有望成为下一代人工智能协同算法和协作网络的基础。

联邦学习的一大特点就是它解决了为什么不同机构要加入联邦共同建模的问题,即建立模型以后模型的效果会在实际应用中表现出来,并记录在永久数据记录机制(如区块链)上。提供数据多的机构所获得的模型效果会更好,模型效果取决于数据提供方对自己和他人的贡献。这些模型的效果在联邦机制上会分发给各个机构反馈,并继续激励更多机构加入这一数据联邦。以上三部分的实施,既考虑了在多个机构间共同建模的隐私保护和效果,又考虑了以一个共识机制奖励贡献数据多的机构。所以,联邦学习是一个「闭环」的学习机制。

Pytorch开发项目的时候,常常将项目代码分为数据处理模块、模型构建模块与训练控制模块

联邦学习算法原理:

联邦学习算法原理 - 知乎

在工程实践中,算法处理的对象是数据,而联邦学习根据其处理的数据形态的不同,主要分为横向联邦学习、纵向联邦学习与联邦迁移学习,接下来将一一介绍其算法原理。

横向联邦

基本框架与目前常见的分布式机器学习框架类似,从外表上看还是Master/Worker形式,每个参与方相当于一个Worker,参与方本地计算梯度,由一个数据中心(相当于Master或者Parameter Server)统一收集参与方的梯度并更新模型。一般包含以下几个步骤:

  1. 所有参与方从Sever A下载最新模型;
  2. 每个参与方利用本地数据计算梯度,然后梯度加密上传到Sever A,Sever A再聚合这些梯度更新模型参数;
  3. Sever A将更新后的模型分发给各参与方;
  4. 所有参与方更新本地模型。

但横向联邦学习与分布式机器学习只是形似,背后理念却有着本质的不同,主要体现在:

  • 分布式机器学习中所有的worker受master支配,而联邦学习中所有的参与方都是自由的主体,有权决定是否加入学习;
  • 分布式机器学习中,数据统一被收集到数据中心,由master随机均匀的切分给worker使用,每个worker的数据分布一致,而联邦学习中所有参与方的数据都是相互隔离的,相互之间不允许由任何直接或者间接的数据传输,最多只能传输一些不可逆的中间转换结果。

机器学习的过程是通过最小化一个损失函数实现的, 是根据客户端t上的每个batch的数据计算出的updates。可以通过每个客户端上计算出的损失函数 fi(w) to通过加权平均法计算出来,即:

Y标签,缺少特征,缺少样本,;联合建模

样本对齐方案,1.

2.

加密,发送,计算,费马定理,欧拉小定理

得到两个参与方交集,适合A方数据集远大于B方,A方庞大加密过程可在本地提前完成

逻辑回归LR:

对0求导得到梯度

梯度,更新权重值,得到权重

【逻辑回归】发起方【y,公】,数据提供方。

横向联邦学习,都有y,都训练,上传,聚合,安全聚合协议

混淆,聚合恢复,不影响

混合联邦算法,纵向逻辑,更新权重。协议生成,优化权重。

从分散数据中实现深度网络的通信高效学习

联邦学习算法。

基线实验

# 基线实验以常规方式训练模型。
# 要使用 CPU 在 MLP 上使用 MNIST 运行基线实验:或者在 GPU 上运行它(例如:如果 gpu:0可用):
# python src/baseline_main.py --model=mlp --dataset=mnist --epochs=10
# python src/baseline_main.py --model=mlp --dataset=mnist --gpu=0 --epochs=10

联邦学习主函数

# 联合试验涉及使用许多本地模型训练全局模型。在 CNN (IID) 上运行 CIFAR 的联合实验:
# python src/federated_main.py --model=cnn --dataset=cifar --gpu=0 --iid=1 --epochs=10
# 要在非 IID 条件下运行相同的实验,请执行以下操作:
# python src/federated_main.py --model=cnn --dataset=cifar --gpu=0 --iid=0 --epochs=10
# 您可以更改其他参数的默认值以模拟不同的条件。请参阅选项部分、并转至options.py

操作参数

# 参数设置文件
# 解析到实验的各种参数的默认值以 options.py 给出。给出了其中一些参数的详细信息:
#
# 在代码文件夹option.py的args_parser()当中,其中定义了包括
# 全局回合数、用户数量K、用户选取比例C、本地训回合数E、本地批量大小B、学习速率、SGD的动量为0.5(???)
# 模型参数:模型、核数量、核大小、通道数、归一化、过滤器数量、最大池化
# 以及一些其他参数和默认值

采样、数据更新、实用程序

 Torch not compiled with CUDA enabled

Fed_Avg

data_provider数据提供者

双层神经网络

channel

模型选择,损失,数据训练传输

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值