联邦学习-让隐私和 AI 相伴前行

在开始正题之前呢,我先来蹭一下 AI 的热度。不知道大家有没有和我一样的感受,上周是非常疯狂的一周,许多AI大模型相继登场,让我们目不暇接。

北京时间3月15日凌晨,GPT-4的发布震撼了整个行业。

https://www.searchenginejournal.com/openai-releases-gpt-4-now-available-in-chatgpt/482199/

有意思的是,几个小时前,Google 也在 YouTube 发布了一支炫酷的预告片,想向众人展示他们的 AI Work Space,可万万没想到,被几个小时后的GPT-4的发布会抢走了风头。

图片为 YouTube 截屏

北京时间3月16日,百度作为第一个推出对标ChatGPT的企业,推出了他们的产品“文心一言”。

 https://www.searchenginejournal.com/openai-releases-gpt-4-now-available-in-chatgpt/482199/

北京时间3月17日,微软深夜扔出了一张【全家桶王炸】大招,成功地把GPT-4模型集成到Office套件中。它不仅会做PPT,写文案还会做分析,生成视频。

https://analyticsindiamag.com/microsoft-adds-gpt-4-to-office-365/

 北京时间3月18日,基于 Stability AI 创建的一种新算法的同时,用户可以生成单个图像的多个变体。简要概括,就是以图生图。

https://stability.ai/

 北京时间3月23日,codepilot X来了。这次 codepilot 的升级涵盖了代码、文档、git 操作、单元测试、PR等全部流程,降维打击上一代。

https://github.blog/2023-03-22-github-copilot-x-the-ai-powered-developer-experience/

对于过去的一周,有网友总结说“每一天都在各种申请Waitlist的路上”。这说的不就是我吗~ 我现在已经简要的讲完了过去一周 AI 领域发生的事情,你们也许会猜,刚刚我所讲的内容的稿子是使用AI工具给我润色的,甚至本次分享会的标题,都是AI工具给我生成的,可你们又怎么会发现呢?

这些令人惊叹的 AI ,都是大数据的产物。那么,数据从何而来呢?答案是,数据来自于我们每个人的贡献。来自于我们在网上留下的痕迹,来自于我们换取免费的音乐视频时给出的数据,来自于我们换取一些福利时给出的数据,等等等等。那难道我们在享受 AI 带来的便利时,就没人能保护我们的隐私了吗?

不至于,联邦学习就提供了一种隐私保护机制。

终于,我们真正的进入了我们今天的主题,联邦学习!我们先从联邦学习的来历开始讲起。

2016年,谷歌就在论文《Federated Learning:Strategies for Improving Communication Efficiency》中率先提出了联邦学习的概念,主要用来解决联合存在于多个终端(例如移动手机)中的数据进行中心化模型训练的问题,并应用在输入法改进等场景。在这个概念提出之前,人们一直在跨服务器拆分数据和计算负载,以加速人工智能训练。但是联邦学习这个词是无意中与《星际迷航》中的星际联邦联系在一起被保留了下来。

https://zhuanlan.zhihu.com/p/314947391

在AI领域,常用数据的处理方法为:集中采集、统一处理、清理和建模。在大多数情况下,数据会在收集和处理过程中泄漏。2016年很特别,在那一年,大数据的发展已经不再把数据量作为关注的焦点,更紧迫的问题是数据的安全性和准确性。2016年上半年全球发生的数据泄露事件高达974起,涉及美国国会,多国税务和社交平台等。数据泄露记录总数超过了5.54亿条之多,相比较于2015年,增长了15%[1]。这些丑闻让世人意识到在网络上分享信息的危险性。并引发了人们对于是否同意跟踪行为的辩论。而联邦学习的提出,解决了数据在被用于 AI 领域的收集和处理过程中的泄漏问题。用联邦学习首次被应用的场景展开说明,就是我们手机里的数据,不需要离开我们的手机被集中采集,我们手机的数据,比如我们每天都在用的键盘输入法数据,在手机中就进行了处理,清理和建模,最终被收集的只是模型。之后多个模型再在一个中央服务器中一起处理,返回最终模型来优化我们每天使用的手机键盘输入法字词联想推送。后来,在2019年,苹果公司画的一副巨大黑白壁画,我认为也传达了联邦学习的精髓[2]。

https://9to5mac.com/2019/01/05/apple-privacy-billboard-vegas-ces/

那既然我们知道了联邦学习诞生的时间,环境和首次被应用的场景。我们一起来看一些定义层面的东西,才能让我们有一个基础而准确的了解。假设 N 个使用者 {U1,…….,Un} 拥有各自的数据集 {D1,…….,Dn},每个人都不能通过直接访问其他人的数据来扩展自己的数据。在这个场景中,联邦学习的目的是:从分布式设备收集训练信息来学习一个模型[3]。 

http://Zhang, C., et al. (2021). "A survey on federated learning." Knowledge-Based Systems 216.

如上图所示需要执行的步骤:

○ 服务器发送初始模型到各个客户端设备

○ 设备 Ui 不需要共享自己的数据,直接在本地利用 Di 训练出 Wi

○ 服务器聚合本地模型{W1, W2, ……, Wn}形成W’,然后用其替代每个客户端的本地模型

联邦学习中还有不少的分类,不同的人会分成5个、6个甚至7个的都有,但其实包含的内容都大同小异。我这里给出的分类是我看的一篇综述的分类。作者分了五个,分别是:数据分区、隐私机制、使用的机器学习模型、通信体系结构和解决异质问题的方法。这里包含的信息量还是挺大的,就不在这种入门的文章中展开讲了。但是我想展开讲一下三种数据划分[3]。

http://Zhang, C., et al. (2021). "A survey on federated learning." Knowledge-Based Systems 216.

联邦学习中的三种数据划分是根据样本空间和特征空间的不同分布模式划分的:

● 横向联邦学习适用于两个数据集的用户特征重叠较多而用户重叠较少的情况。比如在两个不同地区,两个当地自来水集团提供的服务类似,因此对用户产生了类似的数据,比如月用水量,因此两个自来水集团的数据集特征重叠较多。但是这两个地区的用户分别受各自自来水集团的管辖,两个自来水集团的数据集用户重叠较少。如图a所示,方框的x坐标是特征,y坐标是样本,绿色格子是A的数据,黄色格子是B的数据,两个数据重合的部分在特征坐标上看占了比较大的比重,在样本坐标上看所占比重相对小很多。虚线框框的部分即位两个数据集中的特征一致部分。横向联邦学习是将数据集水平分割(按用户维度),然后取出用户特征相同但用户不完全相同的部分进行训练,也就是虚线框框起来的部分。因此,横向联邦学习可以增加样本数量。简而言之,横向联邦学习中,每个用户都选取具有相同特征的多行数据来进行训练,即用户1选取具有特征1到n的样本进行训练,用户2同样如此[3]。

● 图b展示的是纵向联邦学习。纵向联邦学习适用于两个数据集用户特征重叠较少,但用户重叠较多的情况。例如同一个地区有两个机构,银行和自来水集团。银行产生用户的收入和支出行为等数据,自来水集团产生用户用水数据,两个数据集的特征几乎没有重叠,但两个数据集中的用户却几乎是用一批用户。如图b所示。中间部分即为两个数据集中用户一致的部分。纵向联邦学习是将数据垂直划分(按用户特征维度),然后取出用户相同但用户特征不完全相同的部分数据进行训练。换句话说,不同列中的数据具有相同的用户。因此,纵向联邦学习可以增加训练数据的特征维数。简而言之,数据集1中选取用户1到n的特征1到n进行训练,数据集2中选取用户1到n的特征n到2n进行训练[3]。

● 联邦迁移学习适用于两个数据集的用户特征和用户都重叠较少的情况。在这种情况下,我们不分割数据,但可以使用迁移学习克服数据或标签的缺失。比如地区1的银行和地区2的自来水集团,两个地区用户重叠少,银行数据和自来水数据用户特征重叠也少,如图c所示。迁移学习最适合的情况是当你试图优化任务的性能,但没有足够的相关数据用于训练。例如,医院放射科很难收集大量的X线扫描片来建立良好的放射诊断系统。此时,迁移学习将帮助我们学习其他相关的不同任务,如图像识别任务,学习一个放射诊断系统。通过联邦迁移学习,既可以保证数据的私密性,又可以辅助任务的模型迁移,解决了数据量小的问题[3]。

通过刚刚对联邦学习的简要讲解,我们也能总结出联邦学习最重要的特点是各个客户端可以将自己的数据保存在本地,只是需要共享模型信息来训练目标模型。但是,模型信息也会泄露私有信息的。就像我们Fidelius如果把用算法处理过原数据得到的结果直接明文给数据使用方一样,各个客户端用自己的数据训练的结果如果直接给中央服务器也一样会造成信息泄漏。所以即使有了联邦学习,用户的隐私仍然面临其他的挑战。联邦学习中,最薄弱的环节发生在数据主机与中央服务器交换其工作模型时。

目前常用的隐私保护机制有模型聚合,同态加密和差分隐私[3]。应用到这些机制的可信联邦学习开源项目有许多:微众银行的 FATE、熠智科技的Fidelius、谷歌的TF-Federated、百度的Paddle FL、字节的Fedlearner以及阿里的FederatedScope等。

接下来,我们一起看看fidelius的联邦学习系统概述。Fidelius 是基于 Fedlab 的联邦学习框架实现可信联邦学习的[5]。

http://来自 Fidelius 内部文档和 Fedlab 的结合

该联邦学习框架主要包含 Network Manager 和 Model Maintainer。

● Network Manager 是 torch.multiprocessing.process 的子类,封装 torch. Distributed 底层并定义了指定用于网络通信的接口,设备节点和聚合服务器各自对 Network Manager 类进行实现。通信传 输的内容(加密后的tensor,bytes类型)打包在Package中,交由PackageProcessor处理,用户直接调用 send 和 recv 实现装包、拆包。聚合服务器实现 ServerManager 类,并根据同步、异步两种通信模式提供对应的子类。服务器激活参与当前轮的Client,定义总的Loop逻辑、收到Client Package后的行为。 设备节点实现 ClientManager 类,根据服务器的同异步通信模式分为Passive、Active两种,主要实现收到服务器发送来的模型信息后的行为逻辑[6]。

● ModelMaintainer 类用于维持 Pytorch 模型,提供了必要的属性和方法供实现。聚合服务器实现 ServerHandler 类,定义了下放参数、更新模型、评估模型、停止处理等方法,在 load 接口中进行参数处理,并调用 global_update ,再调用 utils/aggregator 提前定义好的各种聚合方法。 设备节点实现 ClientTrainer 类,定义了数据集准备、本地参数优化、训练、验证、包上传等方法,用户可重写 local_process 来定义本地训练流程[6]。

此外大家应该能注意到我们的图中,不管是 server 还是 client 都使用了 Fidelius 隐私计算中间件来保证我们的用户隐私的绝对安全。下图[6]是在模型训练与聚合时的步骤:

https://github.com/YeeZTech/YeeZ-Privacy-Computing 

https://github.com/YeeZTech/YeeZ-Privacy-Computing

通过可信执行环境与密码学技术确保了服务器 在进行聚合工作中的安全和聚合结果的可信,同时相较于传统的联邦学习通信方式中进行梯度信息的传输,该框架对参数信息加密后发送,只对可信执行环境和目标节点可见,避免了其他训练节点或学习方以外第三方通过抓包等方式获取原始梯度信息从而逆向窃取节点的数据信息。相比传统联邦学习,在客户端侧和服务器侧同时使用TEE,可以防止作恶节点的推理攻击(Property Inference Attack (PIA)和Membership Inference Attack (MIA),即从梯度中构造分类器推测特性或样本是否在训练集中)和数据重构攻击(Data Reconstruction Attack (DRA)从梯度重构原始数据),我们的方法可以避免在client和服务器侧的攻击行为。

接下来,我需要介绍一下 FATE 这个联邦学习的样板项目。FATE (Federated AI Technology Enabler) 是全球首个联邦学习工业级开源框架,可以让企业和机构在保护数据安全和数据隐私的前提下进行数据协作。 FATE项目使用多方安全计算 (MPC) 以及同态加密 (HE) 技术构建底层安全计算协议,以此支持不同种类的机器学习的安全计算,包括逻辑回归、基于树的算法、深度学习和迁移学习等。 FATE于2019年2月首次对外开源,并成立 https://github.com/YeeZTech/YeeZ-Privacy-Computing 对FATE社区进行开源治理,成员包含国内主要云计算和金融服务企业[4]。

https://github.com/FederatedAI/FATE

 最后,我把集成了 Fidelius 的联邦学习框架和 FATE 放在一起比较一下:

l 首先在热度上呢,Fate是GitHub热度最高的,社区活跃,应用较为普遍,行业接受度高;

l 在功能上, Fate,一个词概括,就是全面!同时覆盖横向、纵向、迁移联邦学习,包含联邦学习的整体流程;实现了样本安全匹配,样本切分(1.5版本),特征处理和筛选、支持38种算法,模型评估与评分卡,模型预测(serving),联邦推荐等。而在功能方面,Fidelius目前来说对联邦学习的支持还不够全面,但她是一个非常灵活的联邦学习框架。为联邦学习的模拟实验提供了必要的模块,包括通信、压缩、模型优化、数据切分,及其他功能性模块。用户们可以像使用乐高积木一样,根据需求构建他们的联邦模拟环境。我们还提供了一些联邦学习的基准算法的实现,方便用户能更好的理解并使用FedLab。[5]

l 在易用性上 :FATE一般;虽然文档很丰富,但是难抵配置多;cluster模式下配置很多,各种端口,egg/roll一般人分不清两者区别是啥;又因为期望兼容多种后端存储和计算,导致依赖较多,系统整体比较重,前期部署较困难;而且python、java、scala等多种语言混合在同一项目,上手相对不容易,排查问题更是头疼。不过,使用docker化部署会比本地化部署会更容易些。 FedLab的通信和计算框架仅基于PyTorch,对使用PyTorch的研究者友好,不用配置复杂的环境;功能组件解耦合,通信、压缩和模型优化的研究可以互不打扰。 比如做联邦优化的研究就不用关心通信方面的细节,只需要重写或提供有关本地模型训练和全局模型策略的实现;[7]

l 动态添加节点:Fidelius 可以做到动态添加节点,但是FATE采用的多方安全计算,没办法做到动态的添加节点。

l 推理阶段的隐私保护:FATE 的隐私保护是在模型训练阶段,如果在线推理的话,是做不到具有隐私保护功能的。但是 Fidelius 是做到了全流程的隐私保护,包括训练阶段和推理阶段。

l 区块链技术:Fidelius融合了区块链技术(可选),无需可信第三方,减小服务器和客户端建立信任的成本。

总之两者之间肯定的好处和权衡,都要根据实际应用场景而定。

参考文献:

[1]https://zhuanlan.zhihu.com/p/24269148

[2]https://9to5mac.com/2019/01/05/apple-privacy-billboard-vegas-ces/

[3]Zhang, C., et al. (2021). "A survey on federated learning." Knowledge-Based Systems 216.

[4]https://github.com/FederatedAI/FATE

[5]https://github.com/SMILELab-FL/FedLab

[6]https://github.com/YeeZTech/YeeZ-Privacy-Computing

[7]https://github.com/FederatedAI/FATE

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熠智科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值