1 联邦学习提出的背景

在大多数情况下,数据分散的保存在各个企业手中,而各个企业希望在不公开自己数据的情况下,联合其他企业(利用各个企业所持有的数据)一起训练一个模型,该模型能够帮助企业获取更大的利益。

对于收集零散的数据,传统的方法是通过搭建一个数据中心,在数据中心对模型进行训练,但随着越来越多的法律限制加上数据拥有者不愿意透露自己的数据,这种方法已经渐渐行不通了。

2 联邦学习的介绍

定义:联邦学习(federated learning),全称联邦机器学习(federated machine learning),为了解决联合训练模型时的隐私问题,提出的一种方法:让各个企业自己进行模型的训练,各个企业在完成模型的训练之后,将各自模型的参数上传至一个中心服务器(也可以是点对点),中心服务器结合各个企业的参数(可以上传梯度,也可以是自己更新后的参数),重新拟定新的参数(例如通过加权平均,这一步叫做联邦聚合),将新的参数下发至各个企业,企业将新参数部署到模型上,从而继续新的训练,这个过程可以进行反复的迭代,直到模型收敛,或者满足其他的条件。


使用联邦学习模型的效果会比直接将数据集中起来进行训练要差,这样的效果损失(但实际情况下可能并没有损失,数据丢失可能类似于做了正则,效果可能反而会提升)换取了隐私的保护,是可以接受的。

3 联邦学习的分类

为了更好的理解联邦学习的分类,首先对数据进行定义:

各个企业拥有的数据可以看成是一张表格,表格的每一行是一个带有多个特征(features)以及标签(label)的样本,每一列是一个特征或者标签,例如下图可以是某企业整理的各地房价数据:

横向联邦学习、纵向联邦学习、联邦迁移学习分类的依据是各个参与方数据相似情况,而联邦强化学习的重点是基于各方环境进行决策(take action)。

3.1 横向联邦学习

横向联邦学习(Horizontal Federated Learning)指的是各方拥有的数据的特征(features)是基本一致的也都拥有各自的标签(label),如果将各方的数据集中成一个中心体,各方拥有的则是中心体的不同样本(横向指的是对中心体进行横向划分)。

横向联邦学习(带有中心服务器)的过程可以概括为下图:

3.2 纵向联邦学习

纵向联邦学习(Vertical Federated Learning)指的是各方拥有的数据有着很多不同的特征,但是可能会有许多相同的样本个体(例如同一个人在银行和保险公司的信息),同样将数据集中成一个中心体的话,各方拥有的是样本的不同属性(纵向指的是对中心体进行纵向划分。

纵向联邦学习实际上只有一方拥有标签,通过纵向联邦学习对相交数据进行训练。

纵向联邦学习的过程要稍微复杂一些,首先需要进行的是数据的对齐,由于不能泄漏数据,是将加密后的数据进行对齐,如下图所示:

对齐后的数据大致如下(对其操作只会获取两个数据中相交的样本,下图中即U1和U2:

由于只有一方拥有标签,但是双方(以两个参与方为例)进行了预测,这里将损失函数重新定义:
L = 1 2 ∑ ( y A ( i ) + y B ( i ) − y ) 2 L=\frac 1 2 \sum(y_A^{(i)}+y_B^{(i)}-y)^2 L=21​∑(yA(i)​+yB(i)​−y)2
而各个模型拥有的参数只有自己涉及特征的参数,以上面的例子为例,也就是:
y A ( U 1 ) = w 3 X 3 + w 4 X 4 + w 5 X 5 y B ( U 1 ) = w 1 X 1 + w 2 X 2 \begin{aligned} &y_A^{(U_1)} = w_3X_3+w_4X_4+w_5X_5\\ &y_B^{(U_1)} = w_1X_1+w_2X_2 \end{aligned} ​yA(U1​)​=w3​X3​+w4​X4​+w5​X5​yB(U1​)​=w1​X1​+w2​X2​​
这里只是简单举例,实际上是以矩阵的形式进行,同时会包含多个隐藏层。

这也就表示不管是在训练还是在预测的时候,都需要参与方进行协调,进行数据的交换(参与方需要各自计算自己的预测值与梯度将结果发送给中心服务器进行聚合)。

3.3 联邦迁移学习

联邦迁移学习(Federated Transfer Learning)指的是,参与方数据的重叠很少的情况(产生数据的人不同,数据的特征也大不相同),将数据题整合成中心体的话,会有大量的位置是空白信息,而各个参与方近似拥有的中心体的独立划分。

我们定义如下参数:

  • ϕ \phi ϕ:分类函数,作用于 u i B u_i^B uiB​;
  • D c D_c Dc​:图中红色方框;
  • D A B D_{AB} DAB​:图中蓝色方框。

联邦迁移学习中只有一方拥有标签,通过联邦迁移学习可以利用相交的数据给没有标签的一方数据打上标签。

一个简单的模型如下图所示:

模型的损失函数(不考虑正则):
L = L 1 + γ L 2 L 1 = ∑ i N c l o g ( 1 + e − y i ϕ ( u i B ) ) L 2 = ∑ i N A B ∣ ∣ u i A − u i B ∣ ∣ F 2 \begin{aligned} &L=L_1+\gamma L_2\\ &L_1=\sum_i^{N_c}log(1+e^{-y_i\phi(u_i^B)})\\ &L_2=\sum_i^{N_{AB}}||u_i^A-u_i^B||^2_F \end{aligned} ​L=L1​+γL2​L1​=i∑Nc​​log(1+e−yi​ϕ(uiB​))L2​=i∑NAB​​∣∣uiA​−uiB​∣∣F2​​
上面的公式表表名我们希望最小化两部分(以二分类问题为例标签取值为-1和1):

  • L 1 L_1 L1​:代表与真实标签的接近程度,当 y i = 1 y_i=1 yi​=1时要是上式最小 ϕ ( u i B ) \phi(u_i^B) ϕ(uiB​)应该尽可能接近 1 1 1,当 y i = − 1 y_i=-1 yi​=−1时则应该尽可能接近 − 1 -1 −1;
  • L 2 L_2 L2​:代表两个模型representation的相似程度,应为训练两个模型的训练数标签是相同的,所以我们希望两个特征表示(representation)尽可能相似。

3.4 联邦强化学习

联邦强化学习(Federated Reinforcement Learning)指的是将强化学习与联邦学习进行结合,联帮强化学习分为纵向和横向两种,定义与之前类似,横向联邦强化学习(Horizontal Federated Reinforcement Learning)的简单模型如下:

上图中,各自参与方根据自己的环境进行训练,训练出来的模型上传到中央服务器进行聚合后,服务器再下发模型继续进行训练。

纵向联邦强化学习(Vertical Federated Reinforcement Learning)的简单模型如下(图中的虚线表示可以不存在):

在上图的过程与横向联邦强化学习的过程类似。

4 联邦学习与分布式机器学习


个人认为联邦学习实际上是分布式机器学习的一种变体(variant),传统的分布式机器学习(也叫面向拓展的分布式机器学习)关注的是在硬件资源不够的情况下,如何利用分布式集群对一个庞大的模型进行训练,而联邦学习是,数据本身就在各个节点上,但是由于隐私保护的原因不得不采用类似分布式学习的方法进行学习(这样看来传统的分布式机器学习效果是要好于联邦学习的,因为传统的分布式学习是拥有所有数据的)。而之后提出的面向隐私保护的分布式机器学习,就有点像联邦学习的雏形了。面向隐私保护的分布式机器学习是指参与方拥有相同数据的不同特征,希望在隐私保护的前提下训练出一个模型(可以看到非常想纵向联邦学习)。后面的联邦学习对面向隐私保护的分布式学习进行了拓展。

二者的韦恩图大致如下:

5 REFERENCE

《联邦学习》 杨强等人著

联邦学习是什么?联邦学习简介相关推荐

  1. 重磅!全球首个可视化联邦学习产品与联邦pipeline生产服务上线

    [导读]作为全球首个联邦学习工业级技术框架,FATE支持联邦学习架构体系与各种机器学习算法的安全计算,实现了基于同态加密和多方计算(MPC)的安全计算协议,能够帮助多个组织机构在符合数据安全和政府法规 ...

  2. 【联邦学习】横向联邦学习(Horizontal Federated Learning,HFL)

    文章目录 一.横向联邦学习的定义 二.横向联邦学习的安全性 三.横向联邦学习架构 1. 客户-服务器架构 2. 对等网络架构 四.联邦优化 五.联邦平均算法 参考链接 一.横向联邦学习的定义 横向联邦 ...

  3. 【学习笔记】联邦计算

    相关概念 数据孤岛 指 数据像孤岛一样分散存储在多个组织. 群体之间,且相互闭塞,难以用常规手段打通. 联合计算 是一种在原始数据不出本地的条件下进行多方联合计算 的新型数据共享计算范式.逐渐成为破除 ...

  4. Spark基础学习笔记08:Scala简介与安装

    文章目录 零.本讲学习目标 一.Scala简介 (一)Scala概述 (二)函数式编程 (三)Scala特性 1.一切都是对象 2.一切都是函数 3.一切都是表达式 (四)在线运行Scala 二.选择 ...

  5. EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略

    EL之AdaBoost:集成学习之AdaBoost算法的简介.应用.经典案例之详细攻略 目录 AdaBoost算法的简介 1.理解AdaBoost算法 1.1.从前向逐步递增角度来看理解AdaBoos ...

  6. DL框架之Caffe:深度学习框架之Caffe的简介、安装、使用方法详细攻略

    DL框架之Caffe:深度学习框架之Caffe的简介.安装.使用方法详细攻略 目录 Caffe的简介 Caffe的安装 Caffe的使用方法 1.基本函数 ​ Caffe的简介 全称Convoluti ...

  7. DL框架之AutoKeras框架:深度学习框架AutoKeras框架的简介、特点、安装、使用方法详细攻略

    DL框架之AutoKeras框架:深度学习框架AutoKeras框架的简介.特点.安装.使用方法详细攻略 Paper:<Efficient Neural Architecture Search ...

  8. DL框架之Keras:深度学习框架Keras框架的简介、安装(Python库)、相关概念、Keras模型使用、使用方法之详细攻略

    DL框架之Keras:深度学习框架Keras框架的简介.安装(Python库).相关概念.Keras模型使用.使用方法之详细攻略 目录 Keras的简介 1.Keras的特点 2.Keras四大特性 ...

  9. DL框架之MXNet :深度学习框架之MXNet 的简介、安装、使用方法、应用案例之详细攻略

    DL框架之MXNet :深度学习框架之MXNet 的简介.安装.使用方法.应用案例之详细攻略 目录 MXNet 的简介 1.优缺点 2.相关文章 3.相关链接 MXNet 的安装 MXNet 的使用方 ...

  10. TensorFlow:深度学习框架TensorFlow TensorFlow_GPU的简介、安装、测试之详细攻略

    TensorFlow:深度学习框架TensorFlow & TensorFlow_GPU的简介.安装.测试之详细攻略 目录 TensorFlow的简介 TensorFlow的安装 1.tens ...

最新文章

  1. {转} Eclipse 高亮显示选中的相同变量
  2. careercup-高等难度 18.5
  3. OpenCV图像处理——iOS端人脸检测
  4. Cloud for Customer UI Designer里embedded component刷新的讨论
  5. [js] ReferenceError和TypeError有什么区别?
  6. Tree(树分治入门)
  7. 专访McAfee“M双侠” 感受McAfee云安全自信
  8. java 链式写法_JAVA中实现链式操作(方法链)的简单例子
  9. 二分查找在java中的实现
  10. DirectX Repair
  11. 蒟蒻打CF#729div 2
  12. 【Paper Reading】二值化网络——BNN
  13. NRF24L01模块实现一发一收和多发一收
  14. MQ--1( Message queuing)RabbitMQ
  15. 在LINUX-DEBIAN系统下挂载新硬盘的方法
  16. mtd block device和block device区别,MTD设备的一般不宜挂载fat,ext2,ext3等文件系统原因
  17. 勇者斗恶龙———算法题
  18. 英语阅读重点单词总结
  19. 听力完全攻略-陈海泓(转)
  20. 基于C的PCM音频数据的读取、处理与写入(一)

热门文章

  1. 中心损失和单中心损失
  2. Teager能量算子(TEO)_Python实现
  3. 亲测Linux服务器安装JKD操作流程
  4. 唱歌发声的基础知识与训练方法
  5. 7.3 习而学与CDIO,来自工程教育思想的启示——《逆袭大学》连载
  6. 多模态机器学习简述(Guide to Multimodal Machine Learning)
  7. 2.1.15 行首确保不是标点符号
  8. 泉州计算机编程培训班,泉州编程小学生培训班
  9. 微服务架构,springcloud核心组件和实战,docker容器
  10. statusBar控件