「隐语小课」拆分学习之“水平拆分学习”

news2024/11/24 7:01:19

图片

一、引言

拆分学习是 2018 年由 MIT 最先提出的分布式算法。本文结合该领域的相关英文文献,介绍水平拆分学习的基本方法,同时还将对比拆分模型与中心化模型、联邦模型在不同条件下模型效率和准确性。拆分学习作为主流的隐私计算学习范式之一,也被普遍应用于构建隐私保护机器学习算法。

二、基本方法

1.1 核心思想

拆分学习将 NN 模型拆分成两部分,client 利用本地数据计算底层模型,得到隐层并传输给 server,server 继续计算上层模型,如图 1 所示【1】。

图片

图1 拆分学习示意图

针对 client 数据水平切分场景下的拆分学习方法,主要分为三种:Centralized 拆分学习、P2P 拆分学习和 U-shape 拆分学习。

1.2 Centralized 拆分学习

图片

图2 Centralized 拆分学习模型

(1)算法

如图 2 所示【2】,Alice 为 client, Bob 为 server。client 和 server 模型首先进行初始化。

  • client i 从 server 获取 client 端的密态模型参数,解密,更新 client 模型。

  • client i 进行前向传播,计算得到隐层,并将隐层 h 和真实标签 y 传给 server

  • server 得到 client i 的隐层 h 和 y,继续前向传播,得到 label 预测值 y_pred,进而得到 Loss(y, y_pred)。

  • server 进行模型的后向传播,更新 server 端的模型,进而得到 Loss 关于隐层的梯度 G,并将 G 传给 client。

  • client 利用梯度 G 继续后向传播,更新 client 端本地模型,client 将本地模型加密传给 server。

  • 剩余参与训练的 client 依次进行步上述步骤。

(2)特点

  • client 异步更新,无法同步更新;

  • client 每次训练前需要从 server 获取密态的 client 模型;

  • server 得到样本的 label 和密态 client 模型(有隐私泄漏的风险)。

1.3 P2P 拆分学习

  • 图片

图3 Peer to peer 拆分学习

(1)算法

如图3所示【2】,client i 进行前向传播,计算得到隐层,并将隐层 h 和真实标签 y 传给server。

  • server 得到 client i的隐层 h 和 y,继续前向传播,得到 label 预测值 y_pred,进而得到 Loss(y, y_pred);

  • server 进行模型的后向传播,更新 server 端的模型,进而得到 Loss 关于隐层的梯度G,并将 G 传给 client;

  • client 利用梯度 G 继续后向传播,更新 client 端本地模型,client 将本地模型传给下一个 client;

  • 下一个 client 依次进行上述步骤。

(2)特点

  • client 依次进行训练更新。

  • server 得到样本的 label。

  • lient 每次训练前需要从上一个 client 获取最新的 client 模型(client 掉线问题)。

1.4 U-shape 拆分学习

图片

图4 U-shape 拆分学习

(1)算法

如图 4 所示【1】,模型依次拆成三部分:submodel-1,submodel-2(大部分计算),submodel-3(loss computing),其中 submodel-1 和 submodel-3 在 client 端进行,submodel-2 在 server 端进行。以 U-shape centralized 拆分学习为例:

  • client i 从 server 获取 client 端的密态 submodel-1 和 submodel-3 的模型参数,解密,更新 client 本地模型。

  • client i 进行前向传播,计算得到隐层,并将隐层 h1 传给 server。

  • server 得到 client i 的隐层 h,继续 submodel-2 前向传播,得到隐层 h2,传给 client。

  • client 得到 h1,继续 submodel-3 的前向传播,得到 y_pred,结合 client 的真实 label y 计算得到 loss。

  • client 和 server 进行模型的后向传播,更新模型。

  • client 将本地模型 submodel-1 和 submodel-3 加密传给 server。

  • 剩余参与训练的 client 依次进行上述步骤。

(2)特点

  • 相比于前两个模型,server 无法得到样本的 label。

三、实验结果

3.1 拆分学习 VS 单机模型

论文【2】中对比了拆分学习和单机模型的 Accuracy,其中在拆分学习中共有 10 个 clients,得到如下表所示的实验结果。

图片

实验结论:拆分学习可以对齐单机模型的 Accuracy【2】。

3.2 拆分学习VS联邦学习

论文【2】中对比了相同 client-side flops 和 communication cost 下拆分学习和联邦学习的 performance。

论文【3】中对比了多 clients 条件和 Non-IID 数据分布下的拆分学习和联邦学习的 performance。

(1)Performance with the same client-side flops

图片

结论:相同计算量的情况下,拆分学习的收敛速度及 Accuracy 优于联邦学习和 Large scale SGD。

(2)Performance with the same communication cost

图片

结论:相同通信量的情况下,拆分学习收敛速度及 Accuracy 优于联邦学习和 Large scale SGD。

(3)Performance with the different clients’ number

图片

结论:当 clients 数量变多时,模型性能有明显的震荡。

(4)Performance in the Non-IID setting

图片

结论:拆分学习在 Non-IID 下性能比联邦学习差,甚至不收敛。

四、Reference

【1】Thapa C, Chamikara M A P, Camtepe S A. Advancements of federated learning towards privacy preservation: from federated learning to split learning[M]//Federated Learning Systems. Springer, Cham, 2021: 79-109.

【2】Gupta O, Raskar R. Distributed learning of deep neural network over multiple agents[J]. Journal of Network and Computer Applications, 2018, 116: 1-8.

【3】Gao Y, Kim M, Abuadbba S, et al. End-to-end evaluation of federated learning and split learning for Internet of Things[J]. arXiv preprint arXiv:2003.13376, 2020.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/893231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv 矩阵运算

1.矩阵乘&#xff08;*&#xff09; Mat mat1 Mat::ones(2,3,CV_32FC1);Mat mat2 Mat::ones(3,2,CV_32FC1);Mat mat3 mat1 * mat2; //矩阵乘 结果 2.元素乘法或者除法&#xff08;mul&#xff09; Mat m Mat::ones(2, 3, CV_32FC1);m.at<float>(0, 1) 3;m.at…

c语言——判断,判断是否是字母

//判断&#xff0c;判断是否是字母 #include<stdio.h> #include<stdlib.h> int main() {char c;printf("输入字符&#xff1a;");scanf("%c",&c);if((c>a&&c<z)||(c>A&&c<Z)) //a~z的ASCLL区间是97-122&…

【广州虚拟现实开发】VR智能中控系统进一步提高VR教学管理水平

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐走进了人们的生活。在教育领域&#xff0c;VR技术也得到了广泛的应用&#xff0c;尤其是在教学终端中控系统方面。那么&#xff0c;广州华锐互动开发的VR智能中控系统对学校有何益处呢&#xff1f; 首先&#xff0c;VR智…

【Nginx18】Nginx学习:WebDav文件存储与图片媒体处理模块

Nginx学习&#xff1a;WebDav文件存储与图片媒体处理模块 今天的内容怎么说呢&#xff1f;有两个感觉非常有意思&#xff0c;另外一些就差点意思。有意思的是&#xff0c;咱们可以直接用 Nginx 的 Webdav 功能搭建一个网盘&#xff0c;另外也可以实现动态的图片处理。这两个功能…

1AE4 的魔改混合放大电路

先上电路图&#xff1a; 最新的1AE4的电路&#xff0c;目标依旧是极致的音效。 因此&#xff0c;为了将1AE4的潜力榨干&#xff0c;采用了一些完全不同的思路&#xff1a; 1&#xff09;原有的屏极接地&#xff0c;因为是一个壳子&#xff0c;所以能起到很好的屏蔽作用&#…

图解算法--排序算法

目录 1.冒泡排序算法 2.选择排序算法 3.插入排序算法 4.希尔排序算法 5.归并排序算法 6.快速排序算法 1.冒泡排序算法 原理讲解&#xff1a; 从待排序的数组中的第一个元素开始&#xff0c;依次比较当前元素和它相邻的下一个元素的大小。如果当前元素大于相邻元素&#x…

7. 实现 API 自动生成

目录 1. pom.xml中引用依赖 2. 引入相关的依赖 3. 编写配置类 4. application.yml 中添加配置 5. API 常用注解 6. 访问 API 列表 7. API 导入 Postman 使用 Springfox Swagger生成 API&#xff0c;并导入 Postman&#xff0c;完成API单元测试。 Swagger 简介&#xff1a;Swag…

记录一个编译TubeTK时的报错:at_check问题

在使用如下命令安装TubeTK的cuda_nms时&#xff0c;报了一个错误&#xff0c;记录一下这个错误和解决办法 (base) redmeryredmery:~/Desktop/MOT/TubeTK/post_processing/nms$ python setup.py build_ext --inplace因为这个命令是在/home/redmery/Desktop/MOT/TubeTK/install/…

途乐证券-炒股开户流程是怎样的?

炒股是一种危险较大但收益也相对较高的出资方法&#xff0c;而开户则是出资炒股的前提。跟着科技的开展&#xff0c;炒股开户已经能够在线完结&#xff0c;但流程相对来说仍是比较繁琐的。那么&#xff0c;炒股开户流程是怎样的呢&#xff1f;下面从多个视点剖析。 一、炒股开户…

基于Servlet实现的管理系统(包含服务器源码+数据库)

资料下载链接 介绍 基于Servlet框架的管理系统 简洁版 &#xff1b; 实现 登录 、 注册 、 增 、 删 、 改 、 查 &#xff1b; 可继续完善增加前端、校验、其他功能等&#xff1b; 可作为 Servlet项目 开发练习基础模型&#xff1b; 课程设计 、 毕业设计 开发基础&…

PublicDNS服务提供商增加字节,将支持 DoH/DoT/DoQ 等协议

随着互联网的发展&#xff0c;网页的复杂程度也在增加。客户端在访问一个网页时&#xff0c;通常需要发送数十个 DNS 查询请求才能完整加载一个网页的全部资源。在这种情况下&#xff0c;DNS 解析的速度和准确率会影响网页的加载速度。 公共解析 PublicDNS 向用户提供 DNS 服务…

Android Studio导入项目需要做的一些配置

点击项目结构 选择本地安装的SDK、NDK目录 选择java版本 重新加载项目 Clean Project Rebuild Project 选择要构建的版本 可选debug和release 打包apk安装包 打包完成&#xff0c;就可以安装到安卓手机了

c语言——连接字符串

//连接字符串 #include<stdio.h> #include<stdlib.h> int main() {char s1[100],s2[100],i,j;printf("第一个字符串&#xff1a;");scanf("%s",s1);printf("第二个字符串&#xff1a;");scanf("%s",s2);for(i0;s1[i]!\0;i…

Android开发之性能优化:过渡绘制解决方案

1. 过渡绘制 屏幕上某一像素点在一帧中被重复绘制多次&#xff0c;就是过渡绘制。 下图中多个卡片跌在一起&#xff0c;但是只有第一个卡片是完全可见的。背后的卡片只有部分可见。但是Android系统在绘制时会将下层的卡片进行绘制&#xff0c;接着再将上层的卡片进行绘制。但其…

AgentBench:再谈何谓AI智能体?

除了具有完成特殊任务所需要的技能之外,AI智能体还可以根据人们的需要,训练出特别的个性。用过ChatGPT的读者应该都知道,虽然ChatGPT可以和我们流畅地进行交流,并且随着交流的深入,它可以根据用户的特点,在表述风格和习惯上作出一定的调整,但是从总体上看,它依然是沉闷…

vue 使用indexDB 简单完整逻辑

1 npm npm install idb 2 代码 <template><div><p>Data: {{ data }}</p><button click"fetchData">Fetch Data</button></div> </template><script> import { openDB } from idb;export default {data() {…

sid=‘*‘和sid=‘orcl1‘的区别--实战问题

客户有个11g rac环境&#xff0c;前一段时间db1内存故障了&#xff0c;更换后需要调整db1的sga和pga&#xff0c;操作如下 SQL> alter system set sga_target25G scopespfile sid*; System altered. SQL> alter system set sga_max_size25G scopespfile sid*; Syste…

flowable流程部署只生成了act_re_deployment,未生成act_re_procdef

绘制的流程图 使用错误检测功能 没有检测到错误 下载后重名vacation.bpmn201.xml部署。 /*** 流程部署*/Testpublic void testDeploy() {//1.获取ProcessEngine对象ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();//2、获取RepositoryServiceReposi…

【面试高频题】难度 3/5,字典树热门运用题

题目描述 这是 LeetCode 上的 「745. 前缀和后缀搜索」 &#xff0c;难度为 「困难」。 Tag : 「字典树」 设计一个包含一些单词的特殊词典&#xff0c;并能够通过前缀和后缀来检索单词。 实现 WordFilter 类&#xff1a; WordFilter(string[] words) 使用词典中的单词 words 初…

PyTorch学习笔记(十三)——现有网络模型的使用及修改

以分类模型的VGG为例 vgg16_false torchvision.models.vgg16(weightsFalse) vgg16_true torchvision.models.vgg16(weightsTrue) print(vgg16_true) vgg16_true.classifier.add_module("add_linear",nn.Linear(1000,10)) print(vgg16_true) vgg16_false.classifie…