浅谈联邦学习Federated Learning

2023-05-16

最近人工智能、大数据领域的公众号疯狂给我推送“联邦学习”相关的文章,使得本来并不好奇的我,有了一丝丝揭开它神秘面纱的冲动。公众号的每篇推文写得都很好,但同时也十分学术,作为刚上路的我,当然是基本没能看懂(写得真好,下次不许再写了)。于是在我的穷追猛击下,这篇文章诞生了,从新手小白的角度阐述一下我眼中的联邦学习。

联邦学习的本质

先说结论,联邦学习本质上就是一种机器学习/深度学习方法。为什么这么说呢?你首先看名字,叫作联邦学习,既然带有“学习”二字,那它和机器学习、深度学习必然有密不可分的关系。对于我们平常所见的机器学习和深度学习,整个的学习过程大致可以分为训练、预测和推理三个部分,联邦学习也绕不开这三个过程,它保留着学习方法最本质的特征。因此本质上来说,联邦学习就是机器学习/深度学习,但是它是将多方的数据放在一起进行,然后再去构建学习过程。如果某个公司提出的联邦学习框架号称能够提升算法精度,我觉得这是一句废话,因为联邦学习可以简单理解为增加了样本量进行学习,在保证样本质量的情况下增加样本量,训练结果大部分情况下都会更好,因为这完全不是在同一个维度进行比较的。

为什么需要联邦学习

既然联邦学习的本质就是机器学习/深度学习,那我们为啥需要联邦学习这么个东西,直接在普通机器学习/深度学习过程中加入更多的样本量,它就升级成联邦学习了?
并不是这样的,我们之前只谈论了“联邦学习”中“学习”二字的由来,“联邦”二字代表着多方联合。比如你在A院校,你的同学在B院校,你们想互相交流合作搞学习,这就叫联邦学习。联邦学习出现的背景是数据安全的管控越来越严格,导致很多企业、部门、高校之间的数据不能互通,这就形成了数据孤岛。每个合作方都有大量的数据,却无法使用各方的数据进行合作,创造出更大的价值。联邦学习所需要完成的事情就是:数据不出本地,在保证数据安全的情况下实现多方共同建模,为业务赋能。简单来说,多方合作会形成两方势力:一方被称作guest方,就是甲方爸爸,负责出钱买数据;另一方被称作host方,就是数据的供应方,负责贡献数据。当联邦学习真正运作起来后,其实就是host方将自己的数据提供给guest方,丰富guest方的样本集和样本量,使得guest方能够获得精度更高的模型,而host方开开心心数钱就好了。一般而言,guest方只有一个,host方可以有多个。

联邦学习的分类

联邦学习会涉及到多个不同的参与方,并且每个参与方提供的数据特征会不一样,一般被分类为三种:横向联邦学习、纵向联邦学习和联邦迁移学习。联邦的过程其实就是对数据的对齐,假设有两方各持有一份数据,联邦的过程可以理解为两张表的对齐过程,主要有如下几种对齐方式。

横向联邦学习

横向联邦学习使用场景是:

  • 参与方的业务类型相同或相似
  • 特征重叠多,用户重叠少

例如参与方A和参与方B的数据都是零售数据,在学习过程中的特征列选取可能类似,都包含着商品购买量、购买价格等特征列,此时就可以选择横向联邦学习,这种方式其实是一种样本的联合,通过对齐特征列的方式扩充了样本数量。

纵向联邦学习

纵向联邦学习使用场景是:

  • 参与方的业务用户相同或相似
  • 特征重叠少,用户重叠多

例如参与方A和参与方B的数据处于不同领域,但是都包含着用户生日这一列数据,此时可以选择纵向联邦学习,通过用户列将参与方的数据进行对齐,这种方式是一种特征的联合,通过对齐用户的方式扩容了特征列的数量。

联邦迁移学习

联邦迁移学习使用场景是:

  • 参与方的业务和用户基本无交集
  • 特征重叠少,用户重叠少

在两个几乎毫无交集的领域想要进行联邦学习,就可以使用联邦迁移学习,其过程和普通的迁移学习类似,只是整个过程基于联邦学习平台,保证了数据的安全性和私密性。

总结

其实从上面也可以看出,联邦学习对于普通的学习者和工作者来说是十分遥远且毫不相干的,因为它只在涉及到数据安全的情况下才有必要使用,且使用成本巨大。因此联邦学习框架,也都掌握在几个巨头公司手中,如百度的PaddleFL、微众的Fate(都已开源),腾讯的PowerFL(仅有部署文档,尚未开源)等。虽然联邦学习对于普通学习者而言没有机会使用到,但是它作为相对前沿的技术,涉及到深度学习框架、同态加密算法和分布式计算等技术,对它进行一些简单的了解,能够给我们提供更加开阔的技术视野,感兴趣的同学也可以一起研究,一起探讨~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈联邦学习Federated Learning 的相关文章

随机推荐

  • IOS10-IOS13屏蔽系统更新描述文件|去除‘设置’①小红点教程

    大家都知道在iPhone系统更新的时候都会提示咱们进行更新 xff0c 但是有些小伙伴不想更新 xff0c 但是不更新有一个小红点1这样人很烦躁 xff0c 对于强迫症的人实在是忍不了 xff0c 今天我就给大家分享一个方法 xff0c 只
  • iOS13屏蔽系统自动更新,去除①红标,这个文件复活了!

    iPhone手机系统每一次发布新版本 xff0c 大家经常会接收到系统自动推送的升级提示 xff0c 经常会在大家不知情的情况下系统就在后台自动把系统升级包给自动下载下来了 xff0c 经常会弹出一个提示窗提醒升级 xff0c 这对于一些不
  • AC代码

    此处省略一万分AC代码 加油咯 xff01 xff01 xff01 代码还是尽量自己写 xff0c 看别人的博客不是不可以 xff0c 看别人的代码也不是不可以 xff0c 如果你不看比人的博客 xff0c 不看别人的代码 xff0c 不看
  • Oracle group by 扩展函数详解(grouping sets、rollup、cube)

    文章目录 1 概述2 分组函数2 1 group by xff1a 一起分组 xff08 1 xff09 2 2 grouping sets xff1a 单独分组 xff08 N xff09 2 3 rollup xff1a 累计累加 xf
  • Oracle 索引详解(index)

    文章目录 1 概述2 索引管理2 1 创建索引2 2 删除索引2 3 修改索引2 4 查询索引 3 索引类型3 1 B Tree 平衡树索引3 2 bitmap 位图索引3 3 反向键索引3 4 基于函数索引 4 扩展4 1 走不走索引的情
  • Windbg调试(使用方法)

    一 Windbg版本信息 Windbg分32位和64位版本 xff0c 32位程序应使用32位Windbg调试 xff0c 64位程序应64位Windbg调试 若想使用64位的Windbg分析32位的程序 使用如下命令进行CPU模式的切换
  • Hi3861开发环境搭建 ||避坑指南|| [适用于几乎所有以Hi3861为主控的开发板]

    Hi3861开发环境搭建 避坑指南 适用于几乎所有以Hi3861为主控的开发板 前言 xff1a 这几天为了搭建Hi3861的开发环境 xff0c 看了不少官方文档和视频 xff0c 但是依然折腾了很久才配置好编译 上传都能正常的环境 xf
  • 论文分享——Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering

    文章目录 文章简介1 背景介绍研究背景概念介绍问题描述IC与VQA领域的主要挑战 2 相关研究CNN 43 RNN体系架构Attention mechanismBottom Up and Top Down AttentionBottom U
  • spring mvc 源码分析之父子容器问题

    spring mvc 源码分析 spring mvc 源码分析之父子容器问题 spring mvc 源码分析前言为什么要弄两个ioc容器 xff1f 一个不可以吗存在两个容器 父容器是spring ioc容器自容器是springmvc io
  • C++11特性

    C 43 43 11已经出来很久了 xff0c 网上也早有很多优秀的C 43 43 11新特性的总结文章 xff0c 在编写本博客之前 xff0c 博主在工作和学习中学到的关于C 43 43 11方面的知识 xff0c 也得益于很多其他网友
  • CentOS 7 Squid缓存代理服务器搭建——筑梦之路

    简介 xff1a Squid 是 Linux Unix 平台下最为流行的高性能免费应用层代理服务器 xff0c 它具有权限管理灵活 性能高和效率快的特点 代理服务器可以提供文件缓存 复制和地址过滤等服务 xff0c 充分利用有限的出口带宽
  • python列表的基础操作

    python列表的操作 列表是python最为基础的数据结构 xff0c 极为重要 这话怎么理解呢 xff1f 是最常用的 xff0c 想不到其他的 xff0c 就用列表是其他数据结构的基础 xff0c 可以继承列表然后定义属于自己的数据类
  • C++正则表达式(regex_match、regex_search与regex_replace)

    前言 正则表达式是在字符串处理中常用和重要的工具 xff0c 主要用于字符串的匹配 在C 中正则表达式的使用非常方便 xff0c 但到了C 43 43 中让我有点懵逼了 xff0c 花了些时间查阅了很多资料 xff0c 下面主要会写到C 4
  • Java爬虫详解

    这是 Java 爬虫系列文章的第一篇 第一篇是关于 Java 爬虫入门内容 在该篇中我们以采集开源情报网站中的ip数据为例 需要提取的内容如下图所示 Statistics AbuseIPDB nbsp nbsp nbsp 我们需要提取图中圈
  • ubuntu安装过程

    feat 新增功能 fix 修复 bug docs 文档相关的改动 style 对代码的格式化改动 xff0c 代码逻辑并未产生任何变化 test 新增或修改测试用例 refactor 重构代码或其他优化举措 chore 项目工程方面的改动
  • SpringSecurityOAuth和Jwt

    一 SpringSecurityOAuth简介 grant type为授权模式password为密码模式 64 EnableAuthorizationServer表示定义认证服务器 64 EnableResourceServer表示定义资源
  • 无法使用ssh的可能

    1 SSH服务未启动 xff1a 请确保SSH服务在远程计算机上已经启动 在Ubuntu上 xff0c 可以通过运行以下命令来启动SSH服务 xff1a sudo service ssh start 2 防火墙阻止了SSH连接 xff1a
  • CentOS7.0 关闭防火墙

    systemctl stop firewalld service 停止firewall systemctl disable firewalld service 禁止firewall开机启动
  • 如何查看张量tensor,并将其转换为numpy数据

    在tensorflow 中一般数据都是用tensor来表示 xff0c 而在python 中一般是用numpy包 xff0c 然而有时候需要打印变量的数据 xff0c 可用以下方法来打印 xff1a 一 import tensorflow
  • 浅谈联邦学习Federated Learning

    最近人工智能 大数据领域的公众号疯狂给我推送 联邦学习 相关的文章 xff0c 使得本来并不好奇的我 xff0c 有了一丝丝揭开它神秘面纱的冲动 公众号的每篇推文写得都很好 xff0c 但同时也十分学术 xff0c 作为刚上路的我 xff0