李开复口中的“联邦学习” 到底是什么?| 技术头条
近日,在百大人物峰会上,创新工场创始人李开复谈及数据隐私保护和监管问题时,表示:“人们不应该只将人工智能带来的隐私问题视为一个监管问题,可尝试用‘以子之矛攻己之盾’——用更好的技术解决技术带来的挑战,例如同态加密、联邦学习等技术。”
那么最近备受关注、被越来越多提及的联邦学习是什么?如何解决人工智能应用中数据隐私保护带来的挑战?
▌“联邦学习”到底是什么?能解决什么问题?
在回答 “联邦学习” 是什么之前,我们需要了解为什么会有这样的技术出现,它的出现是为了解决什么问题。
近年来,随着人工智能技术的发展和更广泛的应用,数据隐私保护也被越来越多地关注,欧盟出台了首个关于数据隐私保护的法案《通用数据保护条例》(General Data Protection Regulation, GDPR),明确了对数据隐私保护的若干规定,中国在 2017 年起实施的《中华人民共和国网络安全法》和《中华人民共和国民法总则》中也指出 “网络运营者不得泄露、篡改、毁坏其收集的个人信息,并且与第三方进行数据交易时需确保拟定的合同明确约定拟交易数据的范围和数据保护义务。” 这意味着对于用户数据的收集必须公开、透明,企业、机构之间在没有用户授权的情况下数据不能交换。
这给人工智能应用给机器学习带来的挑战是:如果机构之间的数据无法互通,一家企业一家机构数据量有限,或者是少数巨头公司垄断大量数据,而小公司很难获得数据,形成大大小小的“数据孤岛”。在这种没有权限获得足够多的用户数据的情况下,各个公司尤其是小公司,如何建模?
在这种情况下,“联邦学习”的概念应运而生。所谓 “联邦学习”,首先是一个“联邦”。不同于企业之前的“各自为政”,拥有独立的数据和独立的模型,联邦学习通过将企业、机构纳入“一个国家、一个联邦政府” 之下,将不同的企业看作是这个国家里的 “州”,彼此又保持一定的独立自主,在数据不共享的情况下共同建模,提升模型效果。所以“联邦学习” 实际上是一种加密的分布式机器学习技术,参与各方可以在不披露底层数据和底层数据的加密(混淆)形态的前提下共建模型。
Google 公司率先提出了基于个人终端设备的“横向联邦学习”(Horizontal Federated Learning),其核心是,手机在本地进行模型训练,然后仅将模型更新的部分加密上传到云端,并与其他用户的进行整合。目前该方法已在 Google 输入法中进行实验。一些研究者也提出了 CryptoDL 深度学习框架、可扩展的加密深度方法、针对于逻辑回归方法的隐私保护等。但是,它们或只能针对于特定模型,或无法处理不同分布数据,均存在一定的弊端。
在国内,联邦技术的研究由微众银行首席人工智能官(CAIO)杨强教授带领微众银行 AI 团队主导,并且首次提出了基于 “联邦学习” 的系统性的通用解决方案,强调在任何数据分布、任何实体上,均可以进行协同建模学习,解决个人 (to C) 和公司间 (to B) 联合建模的问题,开启了将联邦学习技术进行商用,建立联邦行业生态的探索。
▌如何在保护数据隐私前提下打破数据孤岛?
因为孤岛数据具有不同的分布特点,所以在联邦学习的技术方案中,也大致分为:横向联邦学习、纵向联邦学习、联邦迁移学习三种方案。
考虑有多个数据拥有方,每个数据拥有方各自所持有的数据集 Di 可以用一个矩阵来表示。矩阵的每一行代表一个用户,每一列代表一种用户特征。同时,某些数据集可能还包含标签数据。如果要对用户行为建立预测模型,就必须要有标签数据。可以把用户特征定义为 X,把标签特征定义为 Y。
比如,在金融领域,用户的信用是需要被预测的标签 Y;在营销领域,标签是用户的购买愿望 Y;在教育领域,则是学生掌握知识的程度等。用户特征 X 加标签 Y 构成了完整的训练数据(X,Y)。但是,在现实中,往往会遇到这样的情况:各个数据集的用户不完全相同,或用户特征不完全相同。具体而言,以包含两个数据拥有方的联邦学习为例,数据分布可以分为以下三种情况:两个数据集的用户特征(X1,X2,…)重叠部分较大,而用户 (U1,U2…) 重叠部分较小;两个数据集的用户 (U1,U2…) 重叠部分较大,而用户特征(X1,X2,…)重叠部分较小;两个数据集的用户 (U1,U2…) 与用户特征重叠(X1,X2,…)部分都比较小。
可以看出,联邦迁移学习解决了不同样本(数据集)、不同特征维度之前联合建模的问题,第一次让不同领域的企业之间在保护彼此数据隐私的前提下实现跨领域创造价值。例如,银行拥有用户购买能力的特征,社交平台拥有用户个人偏好特征,而电商平台则拥有产品特点的特征,传统的机器学习模型无法直接在异构数据上进行学习,联邦学习却能在保护三方数据隐私的基础上进行联合建模,从而打破数据壁垒,构建跨领域合作。
为了更加清楚方案背后的逻辑,以包含两个数据拥有方(即企业 A 和 B)的场景为例来介绍联邦学习的系统构架,这个架构可以拓展延伸到包含多个数据拥有方的场景。
假设企业 A 和 B 想联合训练一个机器学习模型,它们的业务系统分别拥有各自用户的相关数据。此外,企业 B 还拥有模型需要预测的标签数据。出于数据隐私和安全考虑,A 和 B 无法直接进行数据交换。此时,可使用联邦学习系统建立模型,系统构架由两部分构成,如图 a 所示。
图:联邦学习系统构架
第一部分:加密样本对齐。由于两家企业的用户群体并非完全重合,系统利用基于加密的用户样本对齐技术,在 A 和 B 不公开各自数据的前提下确认双方的共有用户,并且不暴露不互相重叠的用户。以便联合这些用户的特征进行建模。
第二部分:加密模型训练。在确定共有用户群体后,就可以利用这些数据训练机器学习模型。为了保证训练过程中数据的保密性,需要借助第三方协作者 C 进行加密训练。以线性回归模型为例,训练过程可分为以下 4 步(如图 b 所示):第①步:协作者 C 把公钥分发给 A 和 B,用以对训练过程中需要交换的数据进行加密;第②步:A 和 B 之间以加密形式交互用于计算梯度的中间结果;第③步:A 和 B 分别基于加密的梯度值进行计算,同时 B 根据其标签数据计算损失,并把这些结果汇总给 C。C 通过汇总结果计算总梯度并将其解密。第④步:C 将解密后的梯度分别回传给 A 和 B;A 和 B 根据梯度更新各自模型的参数。
迭代上述步骤直至损失函数收敛,这样就完成了整个训练过程。在样本对齐及模型训练过程中,A 和 B 各自的数据均保留在本地,且训练中的数据交互也不会导致数据隐私泄露。因此,双方在联邦学习的帮助下得以实现合作训练模型。
第三部分:效果激励。联邦学习的一大特点就是它解决了为什么不同机构要加入联邦共同建模的问题,即建立模型以后模型的效果会在实际应用中表现出来,并记录在永久数据记录机制(如区块链)上。提供的数据多的机构会看到模型的效果也更好,这体现在对自己机构的贡献和对他人的贡献。这些模型对他人效果在联邦机制上以分给各个机构反馈,并继续激励更多机构加入这一数据联邦。以上三个步骤的实施,既考虑了在多个机构间共同建模的隐私保护和效果,又考虑了如何奖励贡献数据多的机构,以一个共识机制来实现。所以,联邦学习是一个 “闭环” 的学习机制。
由此我们也可以看出联邦学习的几个显著特征:
一、各方数据都保留在本地,不泄露隐私也不违反法规;
二、多个参与者联合数据建立虚拟的共有模型,实现各自的使用目的、共同获益;
三、在联邦学习的体系下,各个参与者的身份和地位相同;
四、联邦学习的建模效果和传统深度学习算法的建模效果相差不大;
五、“联邦”就是数据联盟,不同的联邦有着不同的运算框架,服务于不同的运算目的。如金融行业和医疗行业就会形成不同的联盟。
▌联邦学习目前进展
说了那么多,联邦学习目前到底有哪些技术进展呢?
最新消息显示,Google 推出了首个产品级的联邦学习系统并发布论文 “Towards Federated Learning at Scale:System Design”,介绍了联邦学习系统的设计理念和现存挑战并提出了自己的解决方案。国内方面,微众 AI 团队对外开源了自研的 “联邦学习 FATE(Federated AI Technology Enabler)” 学习框架,目前在信贷风控、客户权益定价、监管科技等领域已经推出了相应的商用方案。
在系统框架之外,围绕联邦学习的技术标准也在陆续推进中。今年 2 月份,IEEE P3652.1(联邦学习基础架构与应用)标准工作组第一次会议在深圳召开,作为国际上首个针对人工智能协同技术框架订立的标准,不仅明确了联邦学习在数据合规、行业应用等方面的重要意义,还为立法机构在涉及隐私保护的问题时提供技术参考。
总而言之,无论是技术理论的探索还是统一标准的制定,在全球范围内对联邦学习的落地探索都会继续,联邦学习作为一个新兴的人工智能基础技术,还有很长的路要走。我们也有理由期待,随着联邦学习理论、应用体系的逐渐丰富,隐私保护问题所带来的技术挑战将得到有效解决。
(本文为投稿文章,转载请微信联系原作者)
长三角开发者联盟代码就是力量,长三角的开发者联合起来!
加入「长三角开发者联盟」将获得以下权益
长三角地区明星企业内推岗位
CSDN独家技术与行业报告
CSDN线下活动优先参与权
CSDN线上分享活动优先参与权
扫码添加联盟小助手,回复关键词“长三角2”,加入「长三角开发者联盟」。
推荐阅读:
打开阿兹海默之门:华裔张复伦利用RNN成功解码脑电波,合成语音 | Nature
Python程序员Debug利器,和Print说再见 | 技术头条
前端程序员别哭,优化性能的经验分享给你
如何使用Python玩转PDF各种骚操作?
人工智能先驱 Nils Nilsson 去世,吴恩达、Yann LeCun 悼念!
关于谷歌云,你应该知道的一切! | 技术头条
养生 996 的崛起:马云竟给他最痛恨的「兔子」站台?
澳洲生活7年, 前阿里程序员谈我们的区块链差距究竟在哪?
她说:为啥程序员都特想要机械键盘?这答案我服!
点击阅读原文,了解「CTA核心技术及应用峰会」。
相关文章:

业务逻辑应该在哪里实现更为合理呢?
请大牛们讨论下业务逻辑应该在哪实现较为合理 1、java业务逻辑层。 2、后台存储过程。 因为本人一直都在业务逻辑层实现。但新项目中领导要求将业务写到后台存储过程,java业务逻辑层不承载业务逻辑的实现功能。 先说本人的观点: 本人偏向写在java业务逻辑…

前端不哭!最新优化性能经验分享来啦 | 技术头条
作者 | Dimitris Kiriakakis译者 | 风车云马编辑 | Jane出品 | Python大本营(id:pythonnews)【导语】Angular、React、VueJS 是现在一些主流的 JS 框架,那它们在构建网站或前端程序时,是如何保证性能,减少大…

【FFmpeg】如何通过字符串到对应的封装器,以flv为例
1、简述 使用avformat_alloc_output_context2创建封装器上下文AVFormatContext时,只需将封装器的名字传递给形参format_name,就可以获取对应的封装器。这篇博客就是追寻avformat_alloc_output_context2的调用关系,探明原因。 函数原型如下: int avformat_alloc_output_co…

坚持使用Override 注解(36)
2019独角兽企业重金招聘Python工程师标准>>> 1、覆盖超类时千万小心,一不小心就变成重载了 2、现代的IDE 会在覆盖父类方法而没有使用Override 时给出一个警告 在具体类中不必标注你确信覆盖了的抽象方法声明的方法(虽然这样做没什么不好&…

sql语句动态创建连接服务器
--建立连接服务器 EXEC sp_addlinkedserver --要创建的链接服务器名称 DMZLINK,--产品名称 MS,--OLE DB 字符 SQLOLEDB,--数据源 192.168.0.68 EXEC sp_addlinkedsrvlogin DMZLINK, false, NULL, --远程服务器的登陆用户名 sa, --远程服务器的登陆密码 sa go 转载于:h…

【FFmpeg】FFmpeg中操作目录、文件的接口
1、简述 在学习FFmpeg源码中的例子时,发现FFmpeg封装了操作目录和文件的接口。这篇博客把这些接口罗列出来,作为笔记简单记录下。 2、接口列表 打开目录,准备读取目录信息 int avio_open_dir(AVIODirContext **s, const char *url, AVDictionary **options); 参数说明: u…

Scrapy爬取IT之家
创建项目 scrapy startproject ithome 创建CrawSpider scrapy genspider -t crawl IT ithome.com items.py 1 import scrapy 2 3 4 class IthomeItem(scrapy.Item): 5 # define the fields for your item here like: 6 # name scrapy.Field() 7 title scrapy.F…

高效读CV论文法则:先在GitHub上立Flag!| 资源
整理 | 琥珀出品 | AI科技大本营(id:rgznai100)今天介绍一份在 GitHub 上发现的最新干货资源——计算机视觉论文笔记,该项目是由一位名叫 ahong007007 的网友贡献的。该项目上线仅 20 天,尚未获得太多人的关注…

JS+CSS控制左右切换鼠标可控的无缝图片滚动代码
代码简介: 以前见过这种效果,但是是基于FLASH技术,现在是纯用JS实现的,代码有点多,不过效果还不错,实际上它也是一个图片滚动,只不过它完全是用鼠标点击控制的,也就是说鼠标不点击的…

【FFmpeg】自定义回调函数处理AVIOContext中的数据
1、简述 AVIOContext是FFmpeg管理输入输出数据的结构体,它的成员变量有指向数据的指针、大小以及处理数据的回调函数指针等等。如果使用avio_open或avio_open2来创建,它会根据指定的url协议,将协议处理数据的回调函数指针赋值给AVIOContext的相应成员变量。 我们也可以自己…

ZooKeeper系列(4):ZooKeeper的配置文件详解
ZooKeeper系列文章:https://www.cnblogs.com/f-ck-need-u/p/7576137.html#zk zkServer.sh读取的默认配置文件是$ZOOKEEPER_HOME/conf/zoo.cfg。如果要用其它配置文件。如下传递配置文件参数: zkServer.sh start your_config zkServer.sh stop your_co…

明星企业内推+BAT面经,长三角的开发者联合起来!
“为什么公司宁愿花20K招新人,也不愿给老员工加到20K?”这个热门的微博话题戳起了很多人的痛处,但根据 CSDN &《程序员》杂志发布的「中国软件开发者薪资调查报告」,有32.98%的开发者在过去曾换过工作,其中有72.5%…

《一江春水向东流》之随笔
这篇文章,更像是为后任正非时代的华为,进行的定调。开篇任总提到小时候的教育和意识养成的个人英雄主义,这种性格让自己四十岁之前遭遇坎坷。四十不惑之后,领悟了团结就是力量的政治内涵,开始妥协、包容。全篇浓墨重彩…

程序员拯救乐坛?OpenAI用“逆天”GPT2.0搞了个AI音乐生成器
作者 | 琥珀出品 | AI科技大本营(id:rgznai100)基于深度神经网络进行语音合成、音乐风格迁移,正成为不少致力于“让人人成为音乐家”的研究人员所追求的事情。像此前我们报道的微软小冰作词又作曲,AI帮清华博士写说唱歌…

centos7 JDK1.8
安装之前先检查一下系统有没有自带open-jdk rpm -qa |grep java rpm -qa |grep jdk 卸载找出的已安装Java相关rpm文件:rpm -e --nodeps 重新输入rpm -qa |grep java ,卸载完成 下载jdk1.8 for linux的安装包 jdk-8u11-linux-x64.tar.gz,下载…

【FFmpeg】详解FFmpeg解封装、解码流程
目录 1、获取媒体信息头2、获取媒体流信息3、准备解码器3.1 获取视频、音频、字幕流在解封装上下文 AVFormatContext 的流列表 AVStream **streams 中的索引3.2 使用已经获取的流信息创建对应的解码器及其上下文,以视频解码器为例3.3 初始化解码器上下文4、准备用于保存解码前…

Win2008远程多用户登陆的配置方法
核心提示:在使用Windows 2008远程登录功能时,如果需要进行多用户登录,可以采用以下配置方法 在使用Windows 2008远程登录功能时,如果需要进行多用户登录,可以采用以下配置方法: 首先要启用远程桌面这一功能…

策略梯度搜索:不使用搜索树的在线规划和专家迭代 | 技术头条
作者 | Thomas Anthony、Robert Nishihara、Philipp Moritz、Tim Salimans、John Schulman译者 | 李倩编辑 | Rachel、Jane出品 | AI科技大本营(ID:rgznai100)蒙特卡罗树搜索(MCTS)算法执行基于模拟的搜索以改进在线策…

【FFmpeg】解码时refcounted_frames标志的使用
1、refcounted_frames说明 在接口 avcodec_decode_video2 的注释中,有关于 refcounted_frames 的详细说明: (1)当 AVCodecContext.refcounted_frames 被设置为1,该 AVFrame 被引用计数,返回的引用属于调用者。当不再需要 AVFrame 时,调用者必须使用 av_frame_unref() 来…

python-selenum3 第五天定位——不常用定位与css定位详
使用tag来定位tag定位的是标签,不常用例如:百度的输入框标签是input最终会报错,因为百度首页input标签太多了 driver webdriver.Firefox(executable_path"d:\\geckodriver") driver.get("https://www.baidu.com")driver…

nagios监控三部曲之——为什么nagios不能发送报警邮件(2)
最近我写了关于naigos监控的安装与配置的技术文档,公司运维按照我的文档部署naigos,发现不能发送报警邮件,经过我的检查,发现问题如下: 1、hosts里的配置 [rootnagios ~]# cat /etc/hosts # Do not remove the follow…

小样,加张图你就不认识我了?“补丁”模型骗你没商量!| 技术头条
作者 | Simen Thys, Wiebe Van Ranst(共同一作)译者 | 刘畅编辑 | Rachel、Jane出品 | AI科技大本营(id:agznai100)【导语】本文介绍了一个可以生成欺骗性补丁的系统模型,通过将该补丁放置在固定位置,人们能够使自己在…

【经验】如何查看gcc、g++不加-std时的默认版本
一、测试gcc 1、测试代码:c.c #include <stdio.h>int main(void) { #ifdef __STDC_VERSION__printf("__STDC_VERSION__ %ld \n", __STDC_VERSION__); #endif #ifdef __STRICT_ANSI__printf("__STRICT_ANSI__ %d \n", __STRICT_ANSI__); #endifre…

发布开源框架到CocoaPods入坑指南
个人原文博客地址: 发布开源框架到CocoaPods入坑指南在开发过程中一定会用到一些第三方框架, 只要安装了CocoaPods, 然后通过pod install命令, 就可以集成框架到项目中了可是如果想要把自己的框架或者组件也开源出去, 让别人也可以使用, 那该如何入手 ?对于CocoaPods还不是很了…

linux下打印机共享及监控
操作系统:centos6.0 主要软件:cups,samba,ghostpostscript 打印机:richo 3025 主要功能:通过samba将打印机共享给局域网用户,并实现对打印内容的监控 主要有三大步:本机安装打印机,通…

【H.264】x264命令详解:x264 --fullhelp
1、简述 宏区块: macroblock:。是一种图像压缩的术语。 宏区块是运动预测的基本单位,一张完整的图像(frame)通常会被切割成几个宏区块。h.264 的宏区块大小是可变的,常用 16x16 pixels。 帧类型 “帧”基础知识: 影片可以看作是由一张张连续的图片组成的,每幅图片就…

东大漆桂林、清华李涓子、复旦肖仰华等大牛确认出席CTA峰会!5月一起打卡杭州...
5月26日-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心召开。首届CTA核心技术及应用峰会将聚焦人工智能,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。20…

【Oracle Database】数据库用户管理
创建用户 SQL> create user soe identified by soe default tablespace soe temporary tablespace temp; User created.查询用户的默认表空间 SQL> set line 200 SQL> col username for a30 SQL> col account_status for a20 SQL> select username,account_stat…

MySQL两主多从,且故障转移配置
一、角色划分1、MySQL数据库规划主机名 IP地址 角色 mysql_server_idweiliaodb1 192.168.1.233 master1 1weiliaodb2 192.168.1.234 master2 2weiliaodb3 192.168.1.235 slave1 3monitor 192.168.1.240 mmm_mon -2、虚拟IP规划IP地址 角色192.168.1.10 writer192.168.1.20 read…

Go开发者路线图2019,请收下这份指南
整理 | Rachel责编 | 阿司匹林出品 | AI科技大本营(ID: rgznai100)Go是Google开发的一种静态、强类型、编译型、并发型,并具有垃圾回收功能的类C编程语言。2009以开源项目的形式发布,2012年发布1.0稳定版本,距今已经十…