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

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成


(三)联邦学习的算子

------------------------ 算子是什么?---------------------------

​ 从广义上讲,对任何函数进行某一项操作都可以认为是一个算子。于我们而言,我们所开发的算子是网络模型中涉及到的计算函数。深度学习算法由一个个计算单元组成,我们称这些计算单元为算子(Operator,简称Op)。例如:卷积层(Convolution Layer)中的卷积算法,是一个算子;全连接层(Fully-connected Layer)中的权值求和过程,也是一个算子。
​ 在网络模型中被用作激活函数的算子:Tanh Relu Sigmoid等。

------------------------ 算子和算法的关系?---------------------------

算子(operator),简单说来就是进行某种操作或动作,与之对应的就是被操作的对象,称之为操作数。而算法(algorithm),是为了达到某个目标,实施的一系列指令的过程,而指令包含算子和操作数。

mov  ax, 0x1000
inc  ax

上面这段汇编代码中,“mov”就是算子,而 ax, 0x1000 是操作数,是 mov 这个算子操作的对象。第一条语句意思是把 ax 寄存器赋值为 0x1000。同样,“inc”是算子,“ax”是操作数,“inc ax”就是把 ax 寄存器的数加 1。其实它实现了一个简单算法:

a = 0x1000
a = a+1
  1. 数据预处理算子

    (1)样本对齐,样本对齐的方式有多种,例如基于映射的散列算法、比特承诺,基于 RSA 加密体系的茫然传输等。在对称的联邦学习中,隐私集合求交过程如下图所示。而在非对称的联邦学习中,参与训练的双方分强势方和弱势方,通过非对称 ID 对齐后,弱势方得到的是双方样本 ID 的交集,强势方得到的则是一个混淆集,真正的交集是这个混淆集的子集,且混淆集是强势方原有集合的子集。

    image-20230507144540096

    (2)特征相似度分析,在纵向联邦学习中,当用户数据对齐后,特征之间的相似度计算有利于参与方筛选出重复特征,降低模型训练过程中过拟合的可能性;在横向联邦学习中,需要参与方用相同的数据特征进行联合建模,不同数据拥有者在记录数据和处理数据时,取名和分箱的逻辑都不一样,因此需要通过相似度分析来确定特征与特征之间的对应关系。

    (3)特征对齐,可以对特征相似度设定阈值,将相似度超过阈值的特征视为同一特征。在模型训练中,需要对同一特征进行对齐处理,这里可以采用的对齐技术是对特征进行统一编码处理,将编码一致的特征视为同一特征。

    (4)特征分箱,联邦学习参与方拥有的数据中不可避免有一些连续数值,连续数值在大数据模型训练时处理起来非常困难,可能会影响到模型的效果,因此在特定情况下会将连续数值转换成离散数值。传统机器学习中,通常依据证据权重(Weight of Evidence)和信息量(Information Value)来确定分箱策略。在纵向联邦学习框架下,一个特征只归属于一方;而在横向联邦学习框架下,同一个特征的数据分散在所有数据参与者手中,此时需要借鉴一些安全的手段来完成分箱策略。

    (5)特征缺失值填充,需要依据特定的场景选择合理的缺失值填充方式,常见的填充方式有中位数填充、众数填充、平均数填充和 0 值填充等。在纵向联邦学习中,各方参与者所拥有的特征并不相同,因此其缺失值填充的方式与传统机器学习并无差异,在此不再赘述。在横向联邦学习中,两方拥有的特征相同,0 值填充比较简单,直接补 0 操作即可,而中位数、众数和平均数的计算均需结合所有参与方的数据一起计算,这时就需要引入加密算法。需要强调的是,我们应当明确缺失样本和缺失值为 0 的样本的区别,有时候通过独热编码来表明哪些是缺失样本,哪些是缺失值为 0 的样本是非常重要的。

    (6)数据指标分析,在联合建模开始前,对参与方的数据指标分析有助于联邦学习参与者对建模合作进行预判,常见的数据指标有样本数量、特征数量、特征分布情况(中位数、众数、平均值、最大值、最小值、离散程度等)、特征缺失情况等。

    以下补充一些常用的特征工程方法:

    • 独热编码:是一种对无序分类特征进行预处理的技巧,它将分类特征变成长度相同的向量。如果类别取值不多,那么通常就可以采用独热编码。
    • 特征哈希:又称哈希技巧,在分类特征取值很多的时候使用,流程很简单,将分类特征的取值使用哈希函数转换成指定范围内的哈希值,通过取余操作,可以将原类别数量减少到可用的数量,之后再使用独热编码即可。
    • 嵌入法:也就是 Embedding 算法,是使用神经网络将原始分裂数据转换成新特征的方法。其本质是为分类型变量的每一个类别取值生成一个高维向量,通过高维向量的距离来度量类别之间的距离。这个方法最经典的案例就是对文本中的单次进行编码,即 word embedding,就是将单个单词映射成维度是几百维甚至几千维的向量,再进行文档分类等应用。
    • 取对数法:就是指对数值特征做对数转换处理,这样的处理可以改善特征的取值分布,将极端值转换到较小范围内。具体来说,对数转换将减少右偏,使得最后的分布更加对称。但这一转换不适用于取值中有零值或负值的特征。
    • 特征标准化:是一种通过缩放来标准化特征的取值范围、取值波动性、取值均值等特征的特征工程方法。特征缩放可以将很大范围的数据限定在指定范围内。常见的标准化有最小最大缩放(Min-max Scaling)和标准化缩放(Standard Scaling)。具体来说,最小最大缩放使用特征取值减去特征的最小值,得到的差除以特征的最大值与最小值之差,标准化缩放则使用特征取值减去特征均值,得到的差除以特征的标准差。
    • 特征交互:这是特征增广的重要方法之一,我们有时会根据特征的含义,采用特征的加和/之差/乘积/除商来产生新特征。在回归模型中加入交互项通常是一种常见的处理方式,可以极大地拓展回归模型对变量之间的依赖的解释。
    • 特征降维:即同时减少特征数量及创造新的特征,最基本的手段是采用缺失值比率作为阈值,预先卡掉一部分有用信息较少的特征。完成缺失值比率筛选之后就可以对特征的内部特征进行观察,比较典型的两种手法就是低方差滤波处理和高相关滤波处理。前者指的是去除数据内部变化不大的数据,因为方差较小,我们可以认为它内部含有的信息较少。后者是针对数据中特征的两两关系进行分析处理,如果它们本身高度相关,就可以认为它们的信息是类似的,是重复的。完成缺失值比率筛选、低方差滤波处理和高相关滤波处理之后,就可以采用因子分析(FA)、PCA和独立成分分析(ICA)等方法进一步减少特征的维数。这三种方法的相同之处是利用某种理论提取已有特征中的线性相关的共性来达到减少总特征数、保留特征信息的效果。
  2. 模型训练算子

    (1)损失函数计算,损失函数的输出值越小,代表真实值和预测值的偏离程度越小,模型预测的效果也越好。损失函数主要包含 0-1 损失函数、绝对值损失函数、对数损失函数等。

    (2)梯度计算,梯度在数学意义上是损失函数对目标的导数。

    (3)正则化,正则化通常被用于处理过拟合的问题,以保留一些偏差值的代价来降低模型复杂度,但有时可能导致拟合度不够的问题。一般有 L1 正则化和 L2 正则化。

    (4)激活函数,在神经网络中,激活函数是将神经元中的输入进行非线性转化并传递给下一层的函数。由于线性函数进行叠加输出仍是线性函数,无法构成多层神经网络,因此激活函数必须为非线性函数。常见的激活函数有 Sigmoid、Tanh、ReLU 等。

    (5)优化器,又称为优化算法,其本质是一种数学方法,主要作用是优化模型的训练过程,以更少的迭代次数、更小的计算量、更快的速度得到最优解。常见的优化器有梯度下降法、动量优化法和自适应学习率三大类。

    (6)联邦影响因子,联邦学习中有两个及以上的数据拥有者参与建模,大家拥有的数据量和数据质量不同,因而每个参与者在建模中的影响也不同。通常引入影响因子(又称权重因子)来调整每个参与者训练数据在联合建模过程中的权重。确定影响因子的方式有很多种,比如数量、数据质量、模型指标等(准确率、精确度、F1值等)。

    (7)激励机制,激励机制是确保联邦学习生态正常运转的重要基石,需要通过经济激励的方式,吸引拥有高质量数据的公司和个体加入联邦学习生态中。

(四)联邦学习的算法

联邦学习的算法主要可分为三个部分:中心联邦优化算法、联邦机器学习算法和联邦深度学习算法。

  1. 中心联邦优化算法

    ​ 中心联邦优化算法作用于服务器,可以在服务器进行聚合计算时提升模型指标、收敛速度或达到其他特定目的。FedAvg(Federated Averaging)是目前最常用的联邦学习优化算法。与常规的优化算法不同,其本质思想是对数据持有方的局部随机梯度下降进行单机优化,并在中央服务器方进行聚合操作。FedAvg 的目标函数定义如下:

    image-20230325114530966

    ​ 其中,M 表示参与联合建模的数据持有方数量,ω 表示模型当前的参数。FedAvg 是一种比较基础的联邦优化算法,部署相对简单,应用领域很广泛。FedAvg 的算法流程如下:

    image-20230325114703082

    大部分联邦优化算法是在 FedAvg 的基础上发展而来的,例如 FedProx、FedPer 等。

  2. 联邦机器学习算法

    ​ 联邦机器学习算法指在联邦学习框架下的经典机器学习算法。联邦机器学习,尤其是横向联邦学习,在整体模式上与分布式机器学习类似。但是由于联邦学习特有的迭代模式和特点,相较于传统的机器学习算法,联邦机器学习算法的实现显得更加复杂。下面介绍 3 种目前常见的联邦机器学习算法:

    (1)联邦线性算法

    ​ 联邦线性算法的种类很多,包括线性回归、逻辑回归、非广义线性回归等。以纵向逻辑回归为例,它是联邦学习框架下的一种非常典型的线性算法,其目标函数如下:

    image-20230325115257460

    (2)联邦树

    ​ 树模型是机器学习的重要分支,包括决策树、随机森林等。其中,联邦森林是一种基于中心纵向联邦学习框架的随机森林实现方法。在建模过程中,每棵树都实行联合建模,其结构被存储在中央服务器及各个数据持有方,但是每个数据持有方仅持有与己方特征匹配的分散节点信息,无法获得来自其他数据持有方的有效信息,这保障了数据的隐私性。最终整个随机森林模型的结构被打散存储,中央服务器中保留完整结构信息,节点信息被分散在各数据持有方。使用模型时,可以通过中央服务器对每个本地存储节点进行联调,这种方法降低了预测时每棵树的通信频率,对通信效率有一定的提升。

    ​ SecureBoost 是一种基于梯度提升树(GBDT)的去中心化纵向联邦学习框架。它同样包含有标签数据持有方和无标签数据持有方。梯度提升树算法交互的参数与线性算法有很大区别,涉及二阶导数项。根据一般的梯度提升树算法,我们的目标函数如下:

    image-20230325115802140

    ​ SecureBoost 采用一种既能保护数据隐私又能保证训练性能的联合建模方法。有标签数据持有方 α 首先计算 F(x) 并将结果加密后发送给无标签数据持有方 ββ 根据同态加密求和方法进行局部求和并将结果回传。收到计算结果后,α 将数据按照特征分桶并进行聚合操作,将加密结果发送给 β。最终由 α 将从 β 中收集的局部最优解聚合产生最优解,并下发回 β,完成联合建模。需要说明的是,SecureBoost 支持多方合作,即无标签数据持有方 β 表示所有无标签数据持有方的集合,但是有标签数据持有方仅为一方。SecureBoost 在保障了模型准确率的情况下,保护了数据隐私,成功将纵向 GBDT 应用在联邦学习的框架中。

    (3)联邦支持向量机

    ​ 联邦支持向量机主要通过特征散列、更新分块等方式来保障数据的隐私性。其目标函数如下:

    image-20230325120202786

    ​ 在支持向量机中,其损失函数 L(ωxiyi) = max{ 0,1-ωTxiyi }。类似于 SimFL,这里也对特征值进行降维散列处理,隐藏实际的特征值。除此之外,由于在线性支持向量机中,中央服务器有一定概率根据更新梯度反推出数据标签,为了保护数据的隐私性,这里采用了次梯度法的更新方式。在实际表现中,这种支持向量机在联邦框架下的应用具有不亚于单机支持向量机的性能。

  3. 联邦深度学习算法

    ​ 在联邦学习系统中,为了保障数据隐私安全,客户端在进行数据通信时,往往会对传输的信息进行编码和加密,同时由于原始用户数据对中央服务器不可见,所以训练样本在模型搭建时对中央服务器及模型设计人员不可观测。之前用于经典深度学习的相关模型在联邦学习系统中不一定是最优设计。为了避免网络模型的冗余,需要对经典深度学习模型 NN、CNN、LSTM 等进行相应的修改。

    (1)神经网络

    ​ H. Brendan 等人曾用联邦学习框架下的 NN 和 CNN 分别在 MNIST 数据集上进行测试。对于 NN,模型的具体结构为含有两个隐藏层的神经网络,每个隐藏层包含200个神经元,且隐藏层用 ReLU 激活函数进行激活。他们将 MNIST 数据集分配到两个计算节点,每个计算节点含有样本量大小为 600 且无交集的子数据集。在进行联邦训练时,为了验证模型参数初始化和聚合比例带来的影响,将实验分为具有不同初始化方式的两组:一组使用相同的随机种子初始化分配在两个计算节点的模型参数,另一组则使用不同的随机种子初始化模型参数。然后每组实验用不同的比例整合来自不同节点的模型参数,以获取最终的联邦共享模型,即:

    image-20230325171403365
    (2)联邦 LSTM

    ​ LSTM(Long Short-Term Memory,长短期记忆网络)主要运用在联邦模型中,它可用于预测字符、情感分析等场景。在合适的超参数设置下,LSTM 模型在非独立同步分布(non-IID)数据集下可达到常规情况下的模型精度。由于 LSTM 在模型训练过程中产生的参数量较大,容易造成通信堵塞,有研究者在卷积网络的基础上研究优化模型参数压缩在 non-IID 数据集下的应用。在客户端与中央服务器通信时,相较于无压缩 Baseline 的 2422 MB网络参数量,使用基于 STC 编码的通信协议的联邦学习系统可以在保证模型收敛效果的同时,将上行通信参数量压缩至 10 MB左右,将下行通信参数量压缩至100 MB左右。


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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式学习2

代理模式:Proxy 动机 “增加一层间接层”是软件系统中对许多复杂问题的一种常见解决方案。在面向对象系统中,直接食用某些对象会带来很多问题,作为间接层的proxy对象便是解决这一问题的常见手段。 2.伪代码: class ISubject{ pu…

SPI知识大全

目录 SPI介绍SPI分为硬件SPI与软件SPISPI工作模式和时序图硬件SPI编写软件SPI编写拓展: SPI介绍 SPI(Serial Peripheral Interface)是一种常用的通信接口,用于在两个设备之间进行数据传输。它通常用于板级通信,具有高…

SolidUI Gitee GVP

感谢Gitee,我是一个典型“吃软不吃硬”的人。奖励可以促使我进步,而批评往往不会得到我的重视。 我对开源有自己独特的视角,我只参与那些在我看来高于自身认知水平的项目。 这么多年来,我就像走台阶一样,一步一步参与…

Redis——centos7环境安装Redis6.2.14版本,make命令编译时报错:jemalloc/jemalloc.h:没有那个文件或目录

一、报错原因 在redis-6.2.14文件夹下有一个README.md文件,有如下一段话: 在构建 Redis 时,通过设置 MALLOC 环境变量来选择非默认的内存分配器。Redis 默认编译并链接到 libc malloc,但在 Linux 系统上,jemalloc 是…

AntV-G6 -- 将G6图表应用到项目中

1. 效果图 2. 安装依赖 npm install --save antv/g6 3. 代码 import { useEffect } from alipay/bigfish/react; import G6 from antv/g6;const data {id: root,label: 利息收入,subLabel: 3,283.456,ratio: 3,children: [{id: child-a,label: 平均利息,subLabel: 9%,ratio:…

【airsim】python控制airsim

使用airsim 1.8.1编译完成,进过block项目在cpp测试后,开始踩坑使用python。 使用AirSim\PythonClient\setup.py或者pip安装airsim。 python setup.py install或者 pip install airsim此时,windows电脑的环境信息 (air_py38) D:\code\Gith…

JDBC数据库访问——数据库操作

与指定的数据库建立连接后,就可以使用JDBC提供的API对数据库进行操作,包括查询、新增、更新、删除等。 1.查询操作 和数据库建立连接后,对数据库表进行查询操作的步骤如下: ①创建statement对象 由已创建的Connection对象con调…

PID各种算法的基本优缺点

PID时间系数对PID本身的影响 积分时间过小积分作用增强。 微分时间过大,微分控制作用过强,容易产生振荡。 在这里的时间系统,一般指的是采样的时间,也就是PID控制的周期。在无人机当中一般采用10ms控制一次。 一般来说采样周期越小…

【Docker】容器的相关命令

上一篇:创建,查看,进入容器 https://blog.csdn.net/m0_67930426/article/details/135430093?spm1001.2014.3001.5502 目录 1. 关闭容器 2.启动容器 3.删除容器 4.查看容器的信息 查看容器 1. 关闭容器 从图上来看,容器 aa…

如何在 Xftp 中使用自定义编辑器编辑远程服务器文件

1、简介 很多时候我们使用 Xshell 远程登录linux服务器进行文本编辑,通过命令行窗口难以进行快速编辑,因此,借助 Xftp 工具,指定文本编辑器,能够快速帮助我们实现文本编辑。 2、Xftp 使用 在上文中(https:…

软件工程概论------文件管理

目录 1.文件的相关概念 2.文件目录 3.位示图 4.索引文件 5.例题 1.文件的相关概念 文件:具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。 逻辑结构:有结构的记录式文件、无结构的流式文件。 物理结构: 连续结构、链接结构、索引结构、多个物理块的索引表。 …

乔布斯在斯坦福大学经典演讲

今天,很荣幸来到各位从世界上最好的学校之一毕业的毕业典礼上。我从来没从大学毕业过,说实话,这是我离大学毕业最近的一刻。 今天,我只说三个故事,不谈大道理,三个故事就好。 第一个故事,是关于…

【ChatGPT】提示设计的艺术:使用清晰的语法

探索清晰的语法如何使您能够将意图传达给语言模型,并帮助确保输出易于解析 All images were generated by Scott and Marco. 这是与Marco Tulio Ribeiro共同撰写的关于如何使用指导来控制大型语言模型(LLM)的系列文章的第一部分。我们将从基…

Spring中的工厂类ApplicationContext和BeanFactory

1.ApplicationContext ApplicationContext的实现类,如下图 ClassPathXmlApplicationContext:加载类路径下 Spring 的配置文件 FileSystemXmlApplicationContext:加载本地磁盘下 Spring 的配置文件 ApplicationContext由BeanFactory派生而…

标签函数 - 打造JavaScript组件

📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 CSS专栏:想学CSS的,冲这里 &#x1f4…

计算机基础知识——校验码概述

目录 1 码距 2 奇偶校验 3 CRC循环冗余校验码 3.1 多项式 3.2 编码的组成 3.3 生成多项式 3.4 校验码的生成 4 海明校验码和恒比码 4.1 校验方程 4.2 恒比码 1 码距 码距是恒量一种编码方式的抗错误能力的一个指标。数字信息在传输和存取的过程中,由于…

权威认可!甄知科技猪齿鱼产品荣获信创产品评估证书

近日,依据《信息技术应用创新产品评估规范 第1部分:应用软件》(T/SSIA 2001-2022),经过严格评估,甄知科技旗下自主研发的猪齿鱼数智化开发管理平台 V2.0.0,通过信创测试认证,获得上海…

Jmeter相关知识介绍

Jmeter 是Apache 组织开发的基于JAVA 的压力测试工具,用于对软件做压力测试,特别适合于WEB 应用测试(包括压力,接口测试) 今天简单介绍Jemeter的入门相关概念的理解 一、在安装目录下有一个Bin\Jmeter.bat 双击打开 打开之后是一个这样的界面 二、测试计划 1、添加和删…

基础语法(一)(1)

常量和表达式 在这里,我们可以把Python当成一个计算器,来进行一些算术运算 例如: print(1 2 - 3) print(1 2 * 3) print(1 2 / 3)注意: print是一个python内置的函数,这个稍后我们会进行介绍 可以使用-*/&…

java 音乐会售票平台系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java 音乐会售票平台系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助struts2框架开发mvc模式,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发 环境为TOCAT7.0,Myeclipse8.5开发,数据…
最新文章