我的隐私计算学习——联邦学习(4)

news2024/11/24 5:00:22

本篇笔记部分内容来源于这位老师的知识分享【公众号:秃顶的码农】,我从他的资料里学到了很多,期间还私信询问了一些困惑,都得到了老师详细的答复,相当nice!


(六)横向联邦学习 — 梯度更新聚合

​ 云端数据中心的分布式机器学习可以有成百上千的节点,对比横向联邦学习有一定的借鉴意义,都存在着节点更新的同步与异步的问题,节点梯度更新之后的问题、节点掉线的问题、数据的 Non IID 问题,但是横向联邦学习的场景更加复杂,基础设施相对云端的统一高速基建存在非常大的差异,同时加上隐私保护机制,这就造成了横向联邦学习的系统设计会更加的复杂,以支撑各种异构的底层基建。

1. 模型更新方法

横向联邦学习的两种模型更新机制:

  • FedSGD

    ​ 类似于云端数据中心里面的分布式机器学习的同步模式,通过梯度的传输进行模型的全局更新。最近大量的深度学习的成功应用几乎完全依赖于随机梯度下降(SGD)的变体作为优化算法,因此,我们很自然地从 SGD 开始构建联邦优化的算法。我们可以通过使用所选设备上的所有数据来选择批处理,所以我们将这个简单的基线算法称为 FedSGD。

    image-20230421185514068

  • FedAvg

    ​ 上面描述算法可以理解为一个端点的简单的一次平均,其中每个客户求解最小化其局部数据损失的模型,并对这些模型进行聚合以产生最终的全局模型。这种方法在带有 IID 数据的凸情况下得到了广泛的研究,众所周知,在最坏情况下,产生的全局模型并不比在单个客户端上训练模型更好,所以我们需要针对联邦学习研究一种新的模型更新方法,也就是 FedAvg。

    笔记分享 | 联邦学习新手必看!手把手教你读懂FedAvg代码并实现运行

    image-20230421185539206

FedSGD 与 FedAvg 的不同点在于:

  1. 传递数据的不同:FedSGD 传递的是梯度 g,FedAvg 传递的是模型参数 w;
  2. 传输效率不同:FedAvg 会在本地经过多轮的训练,先对本地模型经过 Loss 的多轮优化,在同步最后的优化参数 w 到服务端。
  3. 模型聚合的方式不同:服务端针对客户端返回的参数 w 进行平均聚合,期望通过这种方式解决数据的 Non IID 问题。
  4. 安全性:FedAvg 在本地经过多轮训练,对于模型的保护性更好。
2. 梯度安全聚合

​ 顺着前文的思路,在 FedSGD 与 FedAvg 这两个算法中,所有的梯度、参数等都是通过明文的形式传递的,所以存在隐私泄露问题。早在2017年,谷歌的Bonawitz 等发表了《Practical Secure Aggregation for Privacy-Preserving Machine Learning》这篇文章,详细阐述了针对梯度泄露攻击设计的 Secure Aggregation 协议,我们简称为 SMPC。

— — 那么如何实现梯度的安全聚合?

— — 借助 “秘密分享” 和 “DH密钥交换”!

image-20230421185601435

以下是安全聚合协议的初步过程:

​ 首先,安全地聚合用户数据向量的第一次尝试涉及到每对用户 u, v,用户 u < v 同意一个秘密的总顺序,这个秘密被记为 su,v。每个用户用他们与所有其他用户构建的秘密蒙蔽了他们的输入值 xu。如果 u 将 su,v 加到 xu 上,v 从 xv 中减去它,那么当它们的向量相加时,掩码就会被取消,但它们的实际输入不会显示出来。形式上,每个用户的盲值是:

image-20230421185630872

image-20230505113446049

image-20230421185714596

​ 所以,在有用户掉线的时候,存在聚合时效的情况。所以考虑恢复方案,比如用户2掉线的时候,进行恢复阶段的处理,对于用户2的添加的扰动值 s1,2 ,s2,3 来说,用户1和用户3是知道的,所以服务器只要询问用户1和用户3,获取相应的扰动值,就可以剔除影响,完成聚合。

image-20230421185745529
​ 然而,延迟的通信可能会导致服务器认为某个用户被删除了,从而可以从所有其他用户那里恢复他们的机密。但是如果是网络延迟,将导致服务器能够在收到用户的秘密后解密他们的个人信息。针对这个问题,可以再做改进,采用双掩码机制,即使用两个随机数,并且加入秘密分享的机制。

  • 为用户 u 引入另外一个随机数 bu。所有的 bu 和 sx,x 均使用秘密分享的方式分享给其他用户,在恢复阶段,至少 t 个用户才能恢复一个秘密。
  • 在聚合阶段
    • 如果用户 u 掉线,只聚合第一个分享的随机数 sx,x
    • 如果用户 u 不掉线,则聚合两个随机数 bu 和 sx,x

— — 更完整的安全聚合协议?

— — 除了 “秘密分享” 和 “DH密钥交换”,还需要借助 “认证加密” 、“伪随机数生成器” 和 “数字签名”!

image-20230421185809590

image-20230421185826648

image-20230421185849292

image-20230505113518757

image-20230408181804440

还有其他更多的安全聚合协议,详情可参考: 联邦学习安全聚合:基于安全多方计算的经典方案


2023年10月份新开了一个GitHub账号,里面已放了一些密码学,隐私计算电子书资料了,之后会整理一些我做过的、或是我觉得不错的论文复现、代码项目也放上去,欢迎一起交流!Ataraxia-github

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

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

相关文章

学习VUE-安装环境

下载安装Node.js 官网下载最新版本&#xff1a;https://nodejs.org/en/download/ 解压zip包 由于node.js默认安装了npm所以不用额外配置全局命令就可以使用npm命令 在cmd中输入node -v 和 npm -v就可以得到版本信息 配置一下目录&#xff1a; node.js环境配置 配置镜像 安装…

命令行参数环境变量和进程空间地址

文章目录 命令行参数环境变量进程地址空间 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 命令行参数 什么是命令行参数&#xff1f; 我…

✅稳定检索,高校嘉宾出席,2024年机械应用与机器视觉研究国际会议(ICMAMVR 2024)

2024年机械应用与机器视觉研究国际会议(ICMAMVR 2024) 数据库&#xff1a;EI,CPCI,CNKI,Google Scholar 等 2024 International Conference on Mechanical Applications and Machine Vision Research(ICMAMVR 2024) 一、【会议简介】 &#x1f389;&#x1f389; 2024年机械应用…

运维平台介绍:视频智能运维平台的视频质量诊断分析和监控中心

目 录 一、概述 二、框架图 1、图像过亮检测&#xff1a; 2、图像模糊检测&#xff1a; 3、画面冻结检测&#xff1a; 4、信号缺失检测&#xff1a; 5、图像偏色检测&#xff1a; 6、噪声干扰检测&#xff1a; 7、条纹干扰检测&#xff1a; 三、监控中心模…

electron+vite+vue3 快速入门教程

文章目录 前言一、electron是什么&#xff1f;二、electron 进程模型1.主进程2.渲染进程3.预加载脚本4.进程通信4.1 sendon&#xff08;单向&#xff09;4.2 invokehandle (双向)4.3 主进程向渲染进程发送事件 三、窗口创建与应用事件四、技术栈和构建工具五、electron-vite安装…

母线温度预测业务需求设计

1、需求背景 需求对象&#xff1a;设备使用方、设备维修人员 使用场景&#xff1a;使用方需要对母线温度进行实时监测和预警&#xff0c;及时排除安全隐患&#xff0c;保证长期正常运行。 使用目的&#xff1a;准确预测母线的未来温度&#xff0c;对于可能存在的隐患提前预警…

【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 )

文章目录 一、元素累加算法 - accumulate 函数1、函数原型分析2、代码示例 二、元素填充算法 - fill 函数1、函数原型分析2、代码示例 一、元素累加算法 - accumulate 函数 1、函数原型分析 在 C 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 accu…

josef约瑟 三相电压继电器 WY-35A4 100V DC220V 导轨安装

三相 WY-35A4电压继电器&#xff1b;WY-35B4电压继电器&#xff1b;WY-35C4电压继电器&#xff1b;WY-31A4电压继电器&#xff1b;WY-31B4电压继电器&#xff1b; WY-31C4电压继电器&#xff1b;JY-45A4电压继电器&#xff1b;JY-45B4电压继电器&#xff1b;JY-45C4电压继电器…

CentOS使用docker本地部署StackEdit Markdown编辑器并实现公网访问

文章目录 1. docker部署Stackedit2. 本地访问3. Linux 安装cpolar4. 配置Stackedit公网访问地址5. 公网远程访问Stackedit6. 固定Stackedit公网地址 StackEdit是一个受欢迎的Markdown编辑器&#xff0c;在GitHub上拥有20.7k Star&#xff01;&#xff0c;它支持将Markdown笔记保…

再获权威认证!紫光展锐5G芯片T820荣获国密二级安全认证

近日&#xff0c;紫光展锐系统级安全的高性能 5G SoC T820荣获国密二级认证&#xff0c;这是T820获得金融科技产品认证证书后&#xff0c;再次荣获的行业权威认证&#xff0c;标志着T820在金融安全能力和应用水准位居行业前沿水平。 荣获国密二级安全认证意味着紫光展锐T820满…

力扣1929.数组串联

前言 虽然力扣对我来说很难&#xff0c;但只要每天刷一点&#xff0c;就会慢慢增强能力&#xff0c;总有一天刷动力扣的难题&#xff0c;所以说&#xff0c;今天也是刷力扣的一天。 &#x1f606;&#x1f606; /** * Note: The returned array must be malloced, assume call…

VSCode使用Makefile Tools插件开发C/C++程序

提起Makefile&#xff0c;可能有人会觉得它已经过时了&#xff0c;毕竟现在有比它更好的工具&#xff0c;比如CMake&#xff0c;XMake&#xff0c;Meson等等&#xff0c;但是在Linux下很多C/C源码都是直接或者间接使用Makefile文件来编译项目的&#xff0c;可以说Makefile是基石…

vue实现导出+ 样式修改

1.安装插件 npm install xlsx-style ^0.18.5 npm install xlsx -S ^0.8.13 2. 修改代码 node_modules里面找到 以下位置xlsx.js 搜索 write_ws_xml_data 替换成以下代码 function write_ws_xml_data(ws, opts, idx, wb) {var o [], r [], range safe_decode_range(…

Kubernetes增加master节点

一. 新增节点 无论是node节点还是master节点&#xff0c;kubelet、kubeadm、kubectl、CRI需要部署好&#xff0c; ### 新增node, 重新生成token, 复制加入即可, 前提是需要装上面的 kubectl kubeadm kubelet containerd 等 kubeadm token create --print-join-command### 新增 …

K8S对外服务ingress

Sevice作用体现在两个方面 集群内部 不断跟踪pod的变化&#xff0c;更新endpoint中的pod对象&#xff0c;基于pod的ip地址不断发现的一种服务发现机制 集群外部 类似负载均衡器&#xff0c;把流量&#xff08;ip端口&#xff09;&#xff0c;不涉及转发url&#xff08;http ht…

【Git相关问题】修改代码提交push时的用户名字

最简方法如下&#xff1a; 直接修改Git的用户配置文件 .gitconfig&#xff0c;这个配置文件的路径一般是 C:\Users\本机用户名\.gitconfig 用记事本或编辑器打开&#xff0c;在[user]下即可修改用户名name或邮箱email 参考&#xff1a; 使用Git进行版本控制&#xff0c;不同…

动态住宅代理IP是什么?如何配置使用?

动态住宅代理IP&#xff0c;作为一种高效的网络工具&#xff0c;不仅能够为您的在线活动提供额外的保护层&#xff0c;还能增强匿名性和数据安全。接下来将深入探讨动态住宅代理IP的定义、设置步骤、以及它如何有效保护您的网络隐私和安全。 一、动态住宅代理是什么&#xff1f…

YOLOv8在NX上的tensorrt的加速部署(60帧率)

所需环境 所有过程均可以参考本人所写的文章 (1)虚拟环境工具 MInforge3-Linux-aarch64 Jetson 平台都是RAM架构,平常的conda都是基于X86架构平台的。环境搭建参考文章 (2)YOLOv8_ros代码,采用自己创建的yolov_ros代码。yolov8_ros参考文章 (3)jetpack 环境(本篇文章…

openssl3.2 - 官方demo学习 - test - certs

文章目录 openssl3.2 - 官方demo学习 - test - certs概述笔记.sh的执行语句打印的方法要修改的实际函数END openssl3.2 - 官方demo学习 - test - certs 概述 官方demos目录有证书操作的例子 已经做了笔记 openssl3.2 - 官方demo学习 - certs 但是这个demos/certs目录的脚本,…

el-date-picker默认结束为当前时分秒

在element ui中的日期时间选择组件中默认是00:00,现在需求是点击默认结束时间为当前时分秒&#xff0c;查了很多资料写的都不准确 需求&#xff1a;实现日期时间组件可选择当前日期&#xff0c;比如当前是2024年01月17号下午17&#xff1a;21 那选中时必须结束时间为17&#x…