深入理解联邦学习——纵向联邦学习

分类目录:《深入理解联邦学习》总目录


假设进行联邦学习的数据提供方为 A A A B B B,第三方为 C C C,则纵向联邦学习步骤如下:

  1. 在系统级做加密样本对齐,在企业感知层面不会暴露非交叉用户
  2. 对齐样本进行模型加密训练:
    • 由第三方 C C C A A A B B B发送公钥,用来加密需要传输的数据;
    • A A A B B B分别计算和自己相关的特征中间结果,并加密交互
    • A A A B B B分别计算各自加密后的梯度并添加掩码发送给 C C C,同时拥有类标侧计算加密后的损失发送给 C C C
    • C C C解密梯度和损失后回传给 A A A B B B
    • A A A B B B去除掩码并更新模型

纵向联邦学习

我们以岭回归为例说明纵向联邦学习的训练过程。假设存在数据集 { x i A } ( i ∈ D A ) \{x_i^A\}(i\in D_A) {xiA}(iDA) 和数据集 { x i B , y i B } ( i ∈ D B ) \{x_i^B, y_i^B\}(i\in D_B) {xiB,yiB}(iDB) ,其中 B B B为拥有类标的数据拥有方,我们以线性回归为例说明纵向联邦学习的训练过程:

  1. A A A B B B分别初始化模型参数 Θ A \Theta_A ΘA Θ B \Theta_B ΘB,则目标函数为: min ⁡ Θ A , Θ B ∑ i ( Θ A x i A + Θ B x i B − y i ) 2 + λ 2 ( ∣ ∣ Θ A ∣ ∣ 2 + ∣ ∣ Θ B ∣ ∣ 2 ) \min_{\Theta_A, \Theta_B}\sum_i(\Theta_Ax_i^A+\Theta_Bx_i^B-y_i)^2+\frac{\lambda}{2}(||\Theta_A||^2+||\Theta_B||^2) ΘA,ΘBmini(ΘAxiA+ΘBxiByi)2+2λ(∣∣ΘA2+∣∣ΘB2)
  2. u i A = Θ A x i A u_i^A=\Theta_Ax_i^A uiA=ΘAxiA u i B = Θ B x i B u_i^B=\Theta_Bx_i^B uiB=ΘBxiB,则对原目标函数同态加密后( [ [ ⋅ ] ] [[\cdot]] [[]]表示同态加密)可表示为: [ [ L ] ] = [ [ ∑ i ( u i A + u i B − y i ) 2 + λ 2 ( ∣ ∣ Θ A ∣ ∣ 2 + ∣ ∣ Θ B ∣ ∣ 2 ) ] ] = [ [ ∑ i ( u i A ) 2 + λ 2 ∣ ∣ Θ A ∣ ∣ 2 ] ] + [ [ ∑ i ( ( u i B − y i ) 2 ) + λ 2 ∣ ∣ Θ B ∣ ∣ 2 ] ] + 2 ∑ i ( [ [ u i A ] ] ( u i B − y i ) ) \begin{aligned}[[L]] &= [[\sum_i(u_i^A+u_i^B-y_i)^2+\frac{\lambda}{2}(||\Theta_A||^2+||\Theta_B||^2)]]\\&=[[\sum_i(u_i^A)^2+\frac{\lambda}{2}||\Theta_A||^2]]+[[\sum_i((u_i^B-y_i)^2)+\frac{\lambda}{2}||\Theta_B||^2]]+2\sum_i([[u_i^A]](u_i^B-y_i))\end{aligned} [[L]]=[[i(uiA+uiByi)2+2λ(∣∣ΘA2+∣∣ΘB2)]]=[[i(uiA)2+2λ∣∣ΘA2]]+[[i((uiByi)2)+2λ∣∣ΘB2]]+2i([[uiA]](uiByi))
  3. 我们令: [ [ L A ] ] = [ [ ∑ i ( u i A ) 2 + λ 2 ∣ ∣ Θ A ∣ ∣ 2 ] ] [ [ L B ] ] = [ [ ∑ i ( ( u i B − y i ) 2 ) + λ 2 ∣ ∣ Θ B ∣ ∣ 2 ] ] [ [ L A B = 2 ∑ i ( [ [ u i A ] ] ( u i B − y i ) ) ] ] [ [ d i ] ] = [ [ u i A ] ] + [ [ u i B − y i ] ] \begin{aligned}[[L_A]]&=[[\sum_i(u_i^A)^2+\frac{\lambda}{2}||\Theta_A||^2]] \\ [[L_B]]&=[[\sum_i((u_i^B-y_i)^2)+\frac{\lambda}{2}||\Theta_B||^2]] \\ [[L_{AB}&=2\sum_i([[u_i^A]](u_i^B-y_i))]] \\ [[d_i]]&=[[u_i^A]]+[[u_i^B-y_i]]\end{aligned} [[LA]][[LB]][[LAB[[di]]=[[i(uiA)2+2λ∣∣ΘA2]]=[[i((uiByi)2)+2λ∣∣ΘB2]]=2i([[uiA]](uiByi))]]=[[uiA]]+[[uiByi]] [ [ L ] ] = [ [ L A ] ] + [ [ L B ] ] + [ [ L A B ] ] [[L]]=[[L_A]]+[[L_B]]+[[L_{AB}]] [[L]]=[[LA]]+[[LB]]+[[LAB]]
  4. 计算梯度: [ [ ∂ L ∂ Θ A ] ] = ∑ i [ [ d i ] ] x i A + [ [ λ Θ A ] ] [ [ ∂ L ∂ Θ B ] ] = ∑ i [ [ d i ] ] x i B + [ [ λ Θ B ] ] \begin{aligned}[[\frac{\partial L}{\partial\Theta_A}]]&=\sum_i[[d_i]]x_i^A+[[\lambda\Theta_A]]\\ [[\frac{\partial L}{\partial\Theta_B}]]&=\sum_i[[d_i]]x_i^B+[[\lambda\Theta_B]]\end{aligned} [[ΘAL]][[ΘBL]]=i[[di]]xiA+[[λΘA]]=i[[di]]xiB+[[λΘB]]

针对数据提供方为 A A A B B B以及第三方为 C C C,纵向联邦学习的训练步骤如下:

\qquad\quad 数据提供方为 A A A数据提供方为 B B B第三方为 C C C
步骤 1 1 1初始化参数 Θ A \Theta_A ΘA初始化参数 Θ B \Theta_B ΘB创建加密秘钥对,并将公钥发送给数据提供方为 A A A B B B
步骤 2 2 2计算 [ [ u I A ] ] [[u_I^A]] [[uIA]] [ [ L A ] ] [[L_A]] [[LA]]并发送给数据提供方 B B B计算 [ [ u I B ] ] [[u_I^B]] [[uIB]] [ [ d i ] ] [[d_i]] [[di]] [ [ L ] ] [[L]] [[L]],并将 [ [ d i ] ] [[d_i]] [[di]]发送给数据提供方 A A A,将 [ [ L ] ] [[L]] [[L]]发送给第三方 C C C
步骤 3 3 3初始化掩码 R A R_A RA,计算 [ [ ∂ L ∂ Θ A ] ] + [ [ R A ] ] [[\frac{\partial L}{\partial\Theta_A}]]+[[R_A]] [[ΘAL]]+[[RA]] 并发送给第三方 C C C初始化掩码 R B R_B RB,计算 [ [ ∂ L ∂ Θ B ] ] + [ [ R B ] ] [[\frac{\partial L}{\partial\Theta_B}]]+[[R_B]] [[ΘBL]]+[[RB]] 并发送给第三方 C C C解密 L L L并发送 ∂ L ∂ Θ A + R A \frac{\partial L}{\partial\Theta_A} + R_A ΘAL+RA给数据提供方 A A A,发送 ∂ L ∂ Θ B + R A \frac{\partial L}{\partial\Theta_B} + R_A ΘBL+RA给数据提供方 B B B
步骤 4 4 4更新参数 Θ A \Theta_A ΘA更新参数 Θ B \Theta_B ΘB

在整个过程中参与方都不知道另一方的数据和特征,且训练结束后参与方只得到自己侧的模型参数,即半模型。由于各参与方只能得到与自己相关的模型参数,预测时需要双方协作完成:

  1. 第三方 C C C将待预测用户ID分别发送给数据提供方 A A A B B B
  2. 数据提供方 A A A B B B分别计算 u A u^A uA u B u^B uB并进行同态加密得到 [ [ u A ] ] [[u^A]] [[uA]] [ [ u B ] ] [[u^B]] [[uB]]
  3. 数据提供方 A A A B B B将同态加密后的 [ [ u A ] ] [[u^A]] [[uA]] [ [ u B ] ] [[u^B]] [[uB]]发送给 第三方 C C C
  4. 第三方 C C C计算同态加密后的预测值 [ [ y ] ] = [ [ u A ] ] + [ [ u B ] ] [[y]]=[[u^A]]+[[u^B]] [[y]]=[[uA]]+[[uB]]再解密得到预测值 y y y

参考文献:
[1] 杨强, 刘洋, 程勇, 康焱, 陈天健, 于涵. 联邦学习[M]. 电子工业出版社, 2020
[2] 微众银行, FedAI. 联邦学习白皮书V2.0. 腾讯研究院等, 2021

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

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

相关文章

Hadoop:HDFS--分布式文件存储系统

目录 HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系: 创建文件夹 -mkdir 查看目录内容 -ls 上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendTo…

【FusionInsight 迁移】HBase从C50迁移到6.5.1(01)迁移概述

【FusionInsight 迁移】HBase从C50迁移到6.5.1(01)迁移概述 HBase从C50迁移到6.5.1(01)迁移概述迁移范围迁移前的准备HDFS文件检查确认HBase迁移目录确保数据落盘停止老集群HBase服务停止新集群HBase服务 HBase从C50迁移到6.5.1&a…

设计模式之观察者模式、访问者模式与模板方法模式

目录 观察者模式 简介 优缺点 结构 实现 运用场景 访问者模式 简介 优缺点 结构 实现 运用场景 模板方法模式 简介 优缺点 结构 实现 运用场景 观察者模式 简介 又叫发布-订阅模式,定义对象间一种一对多的依赖关系,使得每当一个对象改…

vue3自定义指令

自定义指令是用来增强与扩展元素功能的 在vue官方文当中写的很明白,这里我就不在赘述官方文档.只记录在项目中的实际应用. 局部定义 <template><h4>指令</h4><p v-color-red>字体固定颜色的指令</p><p v-color-value"blue">可…

【List篇】ArrayList 详解(含图示说明)

Java中的ArrayList是一个动态数组&#xff0c;可以自动扩展容量以适应数据的添加和删除。它可以用来存储各种类型的数据&#xff0c;例如String&#xff0c;Integer&#xff0c;Boolean等。ArrayList实现了List接口&#xff0c;可以进行常见的List操作&#xff0c;例如添加、插…

Gridea+GitPage+Gittalk 搭建个人博客

&#x1f44b;通过GrideaGitPage 搭建属于自己的博客&#xff01; &#x1f47b;GitPage 负责提供 Web 功能&#xff01; &#x1f63d;Gridea 作为本地编辑器&#xff0c;方便 push 文章&#xff01; &#x1f3f7;本文讲解如何使用 GrideaGitPage 服务域名&#xff08;可选&a…

原生Js Canvas去除视频绿幕背景

Js去除视频背景 注&#xff1a; 这里的去除视频背景并不是对视频文件进行操作去除背景 如果需要对视频扣除背景并导出可以使用ffmpeg等库&#xff0c;这里仅作播放用所以采用这种方法 由于uniapp中的canvas经过封装&#xff0c;且 uniapp 的 drawImage 无法绘制视频帧画面&…

TOWE雷达光敏感应开关,让生活更智能、更安全

现代生活中&#xff0c;智能家居成为人们追求品质生活的必备之选。其中&#xff0c;照明控制的智能化已然成为一种趋势&#xff0c;传统的灯光开关需要人们手动操作&#xff0c;既不方便&#xff0c;有时候也会造成资源的过度浪费&#xff0c;而雷达光敏感应开关的出现&#xf…

QT之形态学操作

形态学操作包含以下操作&#xff1a; 腐蚀 (Erosion)膨胀 (Dilation)开运算 (Opening)闭运算 (Closing)形态梯度 (Morphological Gradient)顶帽 (Top Hat)黑帽(Black Hat) 其中腐蚀和膨胀操作是最基本的操作&#xff0c;其他操作由这两个操作变换而来。 腐蚀 用一个结构元素…

【MySQL】MySQL的安装,登录,配置和相关命令

文章目录 前言一. 卸载不需要的环境二. 获取MySQL的yum源三. 安装MySQL和启动四. 尝试登录MySQL方法1&#xff1a;获取临时root密码方法2&#xff1a;没有密码方法3&#xff1a;配置文件 五. 简单配置结束语 前言 本篇文章是基于云服务器&#xff1b;Linux&#xff1a;Centos7…

Leetcode.174 地下城游戏

题目链接 Leetcode.174 地下城游戏 hard 题目描述 恶魔们抓住了公主并将她关在了地下城 d u n g e o n dungeon dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公…

Vuepress样式修改内容宽度

1、相关文件 一般所在目录node_modules\vuepress\theme-default\styles\wrapper.styl 2、调整宽度&#xff0c;截图中是已经调整好的&#xff0c;在我电脑上显示刚刚好。

【Maven教程】(五)仓库:解析Maven仓库—布局、分类和配置,远程仓库的认证与部署,快照版本,依赖解析机制,镜像和搜索服务 ~

Maven 仓库 1️⃣ 什么是Maven仓库2️⃣ 仓库的布局3️⃣ 仓库的分类3.1 本地仓库3.2 远程仓库3.3 中央仓库3.4 私服 4️⃣ 远程仓库的配置4.1 远程仓库的认证4.2 部署至远程仓库 5️⃣ 快照版本6️⃣ 从仓库解析依赖的机制7️⃣ 镜像8️⃣ 仓库搜索服务8.1 Sonatype Nexus8.2…

微信小程序开发---事件的绑定

目录 一、事件的概念 二、小程序中常用的事件 三、事件对象的属性列表 四、bindtap的语法格式 &#xff08;1&#xff09;绑定tap触摸事件 &#xff08;2&#xff09;编写处理函数 五、在事件处理函数中为data中的数据赋值 六、事件传参 七、bindinput的语法格式 八、…

⛳ MVCC 原理详解

&#x1f38d;目录 ⛳ MVCC 原理详解&#x1f43e; 一、事务回顾&#x1f4d0; 1.1、什么是数据库事务&#xff0c;为什么要有事务&#x1f389; 1.2、事务包括哪几个特性&#xff1f;&#x1f38d; 1.3、事务并发存在的问题1.3.1、脏读1.3.2、不可重复读1.3.3、幻读 &#x1f…

Linux命令200例:Yum强大的包管理工具使用(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

LeetCode 1123. Lowest Common Ancestor of Deepest Leaves【树,DFS,BFS,哈希表】1607

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

09-JVM垃圾收集底层算法实现

上一篇&#xff1a;08-JVM垃圾收集器详解 1.三色标记 在并发标记的过程中&#xff0c;因为标记期间应用线程还在继续跑&#xff0c;对象间的引用可能发生变化&#xff0c;多标和漏标的情况就有可能发生。 这里我们引入“三色标记”来给大家解释下&#xff0c;把Gcroots可达性…

Java 内部类

目录 一、什么是内部类及为何要有内部类 二、四种内部类 1.成员内部类 成员内部类定义&#xff1a; 获取成员内部类对象的方法&#xff1a; 成员内部类获取外部类变量: 额外&#xff1a; 2.局部内部类 局部内部类定义: 如何实现内部类当中的方法&#xff1a; 3.静态内…

【opencv】多版本安装

安装opencv3.2.0以及对应的付费模块 一、安装多版本OpenCV如何切换 按照如下步骤安装的OpenCV&#xff0c;在CMakeLists.txt文件中&#xff0c;直接指定opencv的版本就可以找到相应版本的OpenCV&#xff0c;为了验证可以在CMakeLists.txt文件中使用如下指令输出版本验证&…