联邦学习:密码学 + 机器学习 + 分布式 实现隐私计算,破解医学界数据孤岛的长期难题

news2024/9/24 9:20:44

联邦学习:密码学 + 机器学习 + 分布式

    • 提出背景:数据不出本地,又能合力干大事
      • 联邦学习的问题
      • 联邦学习架构
    • 分布式机器学习:解决大数据量处理的问题
    • 横向联邦学习:解决跨多个数据源学习的问题
    • 纵向联邦学习:解决数据分散在多个参与者但部分特征重叠的问题
    • 联邦 + 迁移学习:结合联邦学习和迁移学习,不同任务间共享知识,同时保持数据隐私
    • 医疗 + 联邦学习:跨多个医疗机构共享模型学习,同时保护患者隐私
    • 大模型 + 联邦学习

 


提出背景:数据不出本地,又能合力干大事

这联邦学习呢,就是让不同的地方一起弄一个学习的模型,但重要的是,大家的数据都是自己家的,不用给别人。

这样一来,人家的秘密就不会到处乱跑(数据不出本地),又能合力干大事。

 
<没有联邦学习的情况>

在没有联邦学习的情况下,医院面临的一个主要问题是数据隔离。

每个医院只能依赖自己收集的数据来训练疾病诊断(如糖尿病)模型。

这意味着模型的有效性和准确性受限于各自医院的数据量和多样性。

对于罕见病例或特殊种群,数据量可能不足以准确训练模型。

此外,由于患者隐私和数据保护的关切,医院之间共享详细的患者数据存在法律和道德障碍。

 

在这里插入图片描述

<引入联邦学习后的情况>

在这种模式下,不同医院可以合作训练一个共享的疾病诊断(如糖尿病)模型。

每个医院使用自己的患者数据本地训练模型,然后将模型的更新(而不是敏感的患者数据)分享给其他医院。

  1. 初始模型共享:首先,所有参与的医院都从一个初始模型开始。这个初始模型可以是一个基础的、未经过大量训练的模型。

  2. 本地训练:然后,每个医院使用自己的患者数据在本地独立训练这个模型。由于每个医院的患者构成可能不同,这意味着每个医院训练出的模型会稍有不同,反映了它们各自独特的患者数据特征。

  3. 模型更新共享:训练完成后,每个医院不是共享其患者数据,而是只共享其模型训练的更新。这些更新可以是模型权重的调整或其他形式的技术细节。

  4. 集成学习:最后,这些来自不同医院的模型更新被集成到初始模型中。这样,模型就能从每个医院的数据中学习,而不需要直接访问这些数据。

通过这种方式,联邦学习允许每个医院贡献它们的专业知识和数据见解,同时保护患者数据的隐私。

 
优势在于:

  1. 增强模型的准确性和泛化能力:由于模型是基于更广泛和多样化的数据集训练的,因此联邦学习模型性能比只使用本地数据训练的好,性能趋近于(低于)使用全部数据训练的模型
  2. 保护患者隐私:患者数据不离开原医院,降低了隐私泄露的风险。而且模型参数是加密的,无法反推其他参与方的原始数据
  3. 跨医院合作:即使面临法律和伦理限制,医院仍能通过共享模型更新而非数据本身来实现合作。

因此,联邦学习解决了数据孤岛问题,提高了诊断模型的准确性和可靠性,同时保障了患者数据的隐私安全。

当需要多个参与方共同完成一件事,每个参与方都有其他方不具备的数据,同时也不能共享,就能使用联邦学习。

 


联邦学习的问题

联邦学习的问题,源于数据的特性和分布。

一、非独立同分布(Non-IID)的数据

不同的机构或个人,持有的数据往往在统计特性上有所不同。

这意味着数据可能不是独立的(一个病人得了糖尿病,还有高血压)或者具有不同的分布(山区的医院多心脏病,而海边的医院多糖尿病)。

这种差异可能导致模型在某些数据属主上表现良好,而在其他数据属主上表现不佳。

例子

  • 假设一个联邦学习系统用于不同地区医院的病例数据分析。
  • 每个医院的病例分布可能因地理位置、患者人群和医院专长等因素而有所不同。
  • 某个地区可能有更高的糖尿病发病率,而另一个地区可能有更多心脏疾病案例。
  • 这些差异会影响学习模型的整体性能。

 
二、数据不平衡

一些机构可能拥有大量的数据,而其他机构只有少量数据。

在聚合模型参数时,数据量较大的属主可能对模型的训练结果有更大的影响,这可能会导致模型偏向于这些数据多机构的特点,忽视其他数据少机构。

 
三、通信、计算的效率

同态加密会导致高的计算量。

混淆电路会导致高的通信量。

 
四、信任问题

  1. 信任问题

    • 在联邦学习中,不同的数据属主(例如医院)和集中式服务器之间存在信任问题。因为参与者或服务器中的任何一方都有可能不完全可靠,甚至可能有攻击者。
  2. 潜在的攻击者

    • 参与者或服务器中的某些人可能是恶意攻击者,他们可能试图窃取私人信息或干扰训练算法。
  3. 交换模型参数而非原始数据

    • 联邦学习通过交换模型参数(如局部梯度),而不是原始数据,来保护每个数据属主的隐私。这意味着参与者不会共享他们的原始数据,只分享用于模型训练的信息(如权重更新、梯度等)。
  4. 梯度泄露风险

    • 即使是这些模型参数,如果被恶意分析,也可能泄露原始数据的敏感信息。例如,通过对交换的梯度进行分析,攻击者可能推断出一些原始数据特征。

假设有一个联邦学习项目涉及多家医院,旨在通过共享学习提高疾病诊断的准确性。

每家医院都有自己的患者数据,但由于隐私问题,这些数据不能直接共享。因此,医院们只分享用于模型训练的梯度信息。

现在,假设其中一个医院或服务器被一个攻击者控制了。

这个攻击者可能通过分析从其他医院来的梯度信息,推断出某些患者的敏感信息,比如他们可能患有某种特定的疾病。

即使梯度本身不包含直接的患者数据,但通过复杂的分析方法,攻击者仍然可能获得关于原始数据的有价值信息。

为了防止这种隐私泄露,可以采取一些措施:

  1. 差分隐私:通过在数据或梯度中添加随机噪声,使得从共享的梯度中推断出任何个人数据变得非常困难。

  2. 安全多方计算(SMC):这是一种加密技术,允许多个方协作计算一个函数,而无需暴露各自的输入数据。

  3. 鲁棒的聚合机制:设计鲁棒的聚合算法,可以减少恶意参与者对模型的影响。

这些方法可以提高联邦学习系统在医学等敏感领域的安全性和隐私保护。

 


联邦学习架构

 


分布式机器学习:解决大数据量处理的问题

 


横向联邦学习:解决跨多个数据源学习的问题

 


纵向联邦学习:解决数据分散在多个参与者但部分特征重叠的问题

 


联邦 + 迁移学习:结合联邦学习和迁移学习,不同任务间共享知识,同时保持数据隐私

 


医疗 + 联邦学习:跨多个医疗机构共享模型学习,同时保护患者隐私

 


大模型 + 联邦学习

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

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

相关文章

2023年12月青少年机器人技术等级考试(六级)理论综合试卷

2023年12月青少年机器人技术等级考试(六级)理论综合试卷 单选题 第 1 题 单选题 IPv6地址长度及其地址分隔符分别是?( ) A.32 . B.128 . C.32 : D.128 : 第 2 题 单选题 浏览网页时,使用应用层的…

verde生成网格坐标

文章目录 网格坐标区域调整 Verde是Python用于地理空间数据处理的一个库,由于采用了一些机器学习的方法,所以除了科学计算三件套之外,还需要基于sklearn模块。考虑到依赖关系,这里比较推荐用conda安装。 conda install verde --c…

第二节 K8S 的架构

第二节 K8S 的架构 K8S 架构图如下: 官方文档: https://kubernetes.io/docs/concepts/architecture/ kube-api-server 是集群的核心, 是k8s中最重要的组件, 因为它是实现声明式api的关键, 整个集群的入口,所有请求都要经过它, api接口服务. kubernetes…

Linux 快速构造大数据文件

文章目录如下 1. 如何生成数据文件 2. 使用 yes 命令构造数据 2.1. 基本用法 2.2. 构造数据文件 3. 使用 awk 命令构造数据 3.1. 基本用法 3.2. awk 循环输出 3.3. awk 指定分隔符 3.4. awk 随机数 3.5. awk 随机字符 3.6. awk 构造数据 4. 总结 1. 如何生成数据文…

【剑指offer】重建二叉树

👑专栏内容:力扣刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、题目描述1、题目2、示例 二、题目分析1、递归2、栈 一、题目描述 1、题目 剑指offer:重建二叉树 给定节…

opencv#27模板匹配

图像模板匹配原理 例如给定一张图片,如上图大矩阵所示,然后给定一张模板图像,如上图小矩阵。 我们在大图像中去搜索与小图像中相同的部分或者是最为相似的内容。比如我们在图像中以灰色区域给出一个与模板图像尺寸大小一致的区域,…

LeetCode 48 旋转图像

题目描述 旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4…

Java-泛型与通配符

泛型基础 泛型示例 泛型的作用 泛型的语法 注意事项 1.泛型只能用引用类型实例化而非基本类型 自定义泛型 自定义泛型类 2中数组不能初始化是因为不知道要开辟多大的空间 3 类加载是会加载静态方法 此时泛型的具体类型并没有被确定 因为对象没有被 声明或实例化 自定义泛…

linux的安装配置

文章目录 1.centos7安装2.如何进行一个网络的开启3.客户端Xshell和Xftp的一个使用4.换源 1.centos7安装 1.我是在虚拟机里面重装了一个liunx系统,首先我们新建一个虚拟机 2.前面东西都不需要我们进行一个选择,到图中的这一步我们选择一个liunx,版本的话我们选择一个…

读AI3.0笔记04_视觉识别

1. 两次飞跃 1.1. ConvNets是当今计算机视觉领域深度学习革命的驱动力 1.1.1. 20世纪80年代便由法国计算机科学家杨立昆提出,而他则是受到了福岛邦彦提出的神经认知机(Neocognitron)的启发 1.2. ImageNet竞赛被看作计算机视觉和人工智能进…

zero w配置C++ opencv csi 摄像头

经过一天半的摸索,踩过了很多坑,这里记录一下 1、系统网站:https://www.raspberrypi.org/downloads/raspberry-pi-os/ 由于zero w 性能不太行,我下载的是: 2、系统烧录: 这里的坑有两个,一个…

【深度学习】BasicSR训练过程记录,如何使用BasicSR训练GAN

文章目录 两种灵活的使用场景项目结构概览简化的使用方式 项目结构解读1. 代码的入口和训练的准备工作2. data和model的创建2.1 dataloader创建2.2 model的创建 3. 训练过程 动态实例化的历史演进1. If-else判断2. 动态实例化3. REGISTER注册机制 REGISTER注册机制的实现1. DAT…

React Router v6 改变页面Title

先说正事再闲聊 1、在路由表加个title字段 2、在index包裹路由 3、在App设置title 闲聊: 看到小黄波浪线了没 就是说默认不支持title字段了 出来的提示, 所以我本来是像下面这样搞的,就是感觉有点难维护,就还是用上面的方法了 …

Labview for循环精讲

本文详细介绍Labview中For循环的使用方法,从所有细节让你透彻的看明白For循环是如何使用的,如果有帮助的话记得点赞加关注~ 1. For循环结构 从最简单的地方讲起,一个常用的for循环结构是由for循环结构框图、循环次数、循环计数(i)三部分组成…

人大金仓数据库授权文件过期解决

一台用于测试的人大金仓数据库访问失败。 登录后发现服务停了。 使用命令行启动,提示服务过期。 查网上资料,说替换原有文件可以解决。 于是去官网下载一个新的,替换掉原来的授权文件。 再次启动数据库,还是提示授权文件过期。…

代码中遇到的问题

编译器错误消息: CS1061: default_aspx 不包含 GridView1_SelectedIndexChanged 的定义,并且找不到接受类型为default_aspx的第一个参数的可访问扩展方法GridView1_SelectedIndexChanged(是否缺少 using 指令或程序集引用&#xf…

设计模式—行为型模式之备忘录模式

设计模式—行为型模式之备忘录模式 备忘录(Memento)模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模…

C++ //练习 2.35 判断下列定义推断出的类型是什么,然后编写程序进行验证。

C Primer(第5版) 练习 2.35 练习 2.35 判断下列定义推断出的类型是什么,然后编写程序进行验证。 const int i 42; auto j i; const auto &k i; auto *p &i; const auto j2 i, &k2 i;环境:Linux Ubuntu&#x…

ThreeJS快速入门指南

Three.js 介绍 Three.js 是一个开源的应用级 3D JavaScript 库,可以让开发者在网页上创建 3D 体验。Three.js 屏蔽了 WebGL的底层调用细节,让开发者能更快速的进行3D场景效果的开发。 Three.js的开发环境搭建 创建目录并使用 npm init -y 初始化 pack…

Laravel 10.x 里如何使用ffmpeg

原理上很简单,就是使用命令行去调用ffmpeg,然后分析一下输出是不是有错误。 安装 首先安装 symfony/process,主要用于包装一下,用来代替 exec, passthru, shell_exec and system 。 composer require symfony/process composer…