联邦学习的概念

`简略来说,联邦学习是把 不同数据源 的数据 联结训练 ,失去更好的模型``在进行机器学习的过程中,各参与方能够借助其余方数据进行联结建模``各方无需共享数据资源,数据不出本地状况下,进行联结训练,建设共享的机器学习模型`

联邦学习的意义

`联邦学习是一种爱护数据解决数据孤岛的一种机器学习办法``除了数据孤岛,还有可能存在数据隐衷平安问题`

联邦学习的分类

  • 企业的数据孤岛

或者

联邦学习的利用场景


视觉横向联邦学习零碎

`同为指标检测工作``各个机构标注的数据集不同``各个机构在不替换数据的状况下进行合作`

自然语言解决横向联邦学习零碎-未登录词(OOV)生成问题

`每个用户设施只存储无限大小的词库表——数据孤岛``OOV单词生成蕴含用户敏感内容——用户数据保护``每台挪动设施在不替换数据的状况下进行合作`

联邦车险定价学习零碎

联邦学习产品业务实现流程


提前申明:该文章介绍的是目前联邦学习行业比拟通用的实现形式 不存在波及一家公司机密信息

备注:上面介绍的流程大部分都已实现 少部分还在技术调研阶段

联邦学习产品所具备的残缺流程

概念简略形容

  • 样本交融
`单方数据取交加``a、发起方样本a 比方该用户金融信息``b、合作方样本b 比方该用户物流信息``c、样本a和b都有独特的字段uid 即用户编号``即通过用户编号能够取样本a获取该用户的金融信息``去样本b能够获取该用户的物流信息``d、依据uid取交加``即获取所有既有金融信息又又物流信息的用户``但发起方和合作方的单方数据都是独立的 相互不晓得的``e、样本交融之后 发起方有了交融之后的金融数据``合作方也有了交融之后的物流信息``但合作方不会又金融信息``发起方也不会又物流信息`

  • 数据预处理/探索性剖析

进步数据的品质 异样值解决

  • 特色分箱

计算所有特色的IV指标 抉择IV指标高的退出模型 IV指标越高对模型越无效

  • PCA 主成分剖析

计算某个特色的剖析指标

  • 模型训练

依据单方的测试数据进行训练

样本集数据会被分成2份 训练集和验证集

  • 应用训练集进行训练
  • 应用验证结进行验证

    单方会依据各自模型的指标来彼此调整训练的参数以达到单方的评估模型的指标参数(ks、auc、loss最小)都很好

每个流程的具体实现过程

这里仅介绍前端局部(web、java),后端局部(python)前面再一一介绍

  • 数据筹备阶段

  • 录入节点信息
  • 录入合作方节点
  • 节点信息包含:
  • 留神

    a 以后节点只能有一个 合作方节点能够有多个

    b 通过节点名称md5加密失去节点编号 单方节点编号要保持一致

    c 公私钥是用于 java之间通信、python之间通信数据安全加解密

    d、java之间交互、python之间交互、java与python之间交互的申请url门路是从对应节点信息中获取的

  • 形式

    a 通过csv存储数据的形式上传(小数据量)

    有多种实现形式 这里简略介绍两种

    a-1 上传分布式磁盘存储系统fastdfs

    a-2 上传分布式内存文件系统alluxio

    b 已数据库脚本的形式上传(小数据量)

    c 通过Hive或Mysql导入ClickHouse的形式(大数据量)

    d 通过分库分表的形式(大数据量)

    大数据量如亿级别 例如单方均有10亿数据量

    c、d这两种形式前面的文章会介绍

  • 新增数据集分为训练和预测
  • 创立本人节点和多个合作方节点

    发起方节点名称、发起方java服务根门路、发起方python服务根门路、发起方加密公私钥

    合作方名称、合作方公钥、合作方java服务跟门路、合作方python服务跟门路

  • 新建我的项目信息

    蕴含:2个节点信息(一个以后节点另外一个是合作方节点)、多个训练样本数据、多个测试样本数据

  • 发起方新建工作信息

    一个我的项目能够有多个工作

    工作信息包含:工作名称和发起方节点训练样本数据

  • 合作方帮助工作
  • 数据交融

数据交融的产品原型图

  • 数据预处理

    探索性剖析与之前端操作流程相似

  • 用户触发第二次数据预处理

    探索性剖析与之前端操作流程相似

数据预处理-产品原型图

  • 特色工程

  • 特色分箱

特色分箱算法参数抉择和定义

特色分箱指标IV值

  • PCA主成分剖析

    和特色分箱前端操作流程相似

  • 模型训练

抉择模型训练算法

模型训练过程

模型评估指标

  • 模型预测

局部技术点原理介绍

数据对齐两种实现形式

密码学基础知识

不经意间传输加密OT

概念
`不经意传输(oblivious transfer)是一个密码学协定``在这个协定中,音讯发送者从一些待发送的音讯中发送一条给接收者``但预先对发送了哪一条音讯依然oblivious(不晓得)``这个协定也叫茫然传输协定`
举例说明
  • 2选1

  • n选1

`1.发送者Alice生成两对rsa公私钥,并将两个公钥puk0、puk1发送给接受者Bob``2. Bob生成一个随机数,并用收到的两个公钥之一加密随机数(用哪个秘钥取决于想获取哪条数据,例如如果想要失去音讯M0 就用puk0加密随机数,如果想要失去M1就用puk1加密随机数),并将密文后果发送给Alice``3. Alice用本人的两个私钥别离解密收到随机数密文,并失去两个解密后果k0,k1,并将两个后果别离与要发送的两条信息进行异或(k0异或M0,k1异或M1),并将两个后果e0,e1发给Bob``4. Bob用本人的实在随机数与收到的e0、e1别离做异或操作,失去的两个后果中只有一条为实在数据,另外一条为随机数`

RSA算法和哈希机制配合

为了解决加密样本对齐

  • RSA算法和哈希机制配合

`首先,宏观上来说要想保障本人的数据不会被对方获取``A和B都须要针对数据采取只有本人理解的操作 以保障对方无奈反推出数据``对于A而言,窃密操作由哈希机制和随机产生的Ri来实现``对于B而言,窃密操作由哈希机制和本人产生的d来实现``第一步:B由RSA算法产生n、e、d,并发送蕴含n、e的公钥给A``第二部:A对本人领有的用户数据进行加密操作,哈希+Ri来实现,再将加密后的数据YA发送给B``第三步:B失去YA后,因为哈希机制的原理和Ri未知,很难反推出A的用户数据。B对YA取d次幂失去ZA,再对本人的用户数据进行加密操作,取哈希再d次幂再哈希,失去ZB,接着将ZA、ZB发送给A``第四步:A失去ZB后,同理也反推不出B的用户数据,再对本人的用户加密数据ZA除Ri再哈希,失去DA``第五步:DA和ZB实质上是对数据进行雷同操作后失去的数据,所以如果源数据雷同,操作后的数据也雷同,所以依据DA,ZB求交加的后果,A能够判断出A和B的独特数据有哪些,最初再将后果I发送给B,样本对齐完结`
  • 思考为什么这么做
`首先要明确求交加,必须将数据放到一起``放到一起的话那就必须要对本人的数据进行加密``咱们还要明确独特用户数据通过加密操作之后必须依然雷同,暂且称之为要求1``那咱们先假如对单方用户数据只进行一次哈希操作``这样尽管能够保障要求1,然而安全性不高,用户有可能反推用户数据``因而引入随机变量``咱们再思考是否只有一方发送数据另一方接收数据``假如B对本人的用户数据加密,用到了随机变量d和哈希,发送给A``接管方A接管后,A须要对本人的数据进行操作``使得本人的公共数据和B传来数据中的公共数据相等来满足要求1``然而因为A不晓得d,所以A做不到公共数据相等,也就做不到样本对齐``接下来思考单方相互发送数据``A先用随机变量Ri和哈希对本人的数据加密后发送给B``B在A发来的密文上操作,此时该密文就有了因素d``B再对本人的数据进行加密,接着将两局部数据发送给A``A接管到两份密文后,对本人的密文进行转换``此时本人的密文曾经蕴含了因素d``所以实践上A把本人加在本人数据上的“锁”解开后``可能转化为与B数据雷同的模式,此时就能够实现样本对齐了``在这过程中单方都不可能反推对方的数据`

模型训练加密过程

同态加密

纵向的模型训练有用到同态加密中的加法同态加密

`第一个式子示意损失函数loss``第二个等式示意梯度``上面两个式子示意加法同态加密的性质——和的密文等于密文的和``因为加法同态加密中只反对加减乘除,不反对指数运算,所以loss须要在零点处二次泰勒开展``右图示意理论工作过程,UA将加密后的ua和ua^2发送给UB,ua=wx,即己方数据的权重和特征值的乘积``UB计算己方数据的权重和特种值的乘积,再和ua相加,失去样本的所有特色的w*x``而后联合本人领有的样本标签y计算d``d就是梯度表达式中除去x的局部``UB将d加密后发送给UA,此时UA、UB都能够用己方的特征值x乘d来计算出本人的梯度``UA、UB计算出梯度后,加密上传给arbiter,arbiter接管后解码、更新梯度,再将更新后的梯度散发上来,UAUB接管后实现模型的一次更新``一直迭代上述过程,直到loss低于预期值才进行``当数据提供方host较多时,为缩小通信老本,不在计算loss,通过两次迭代之间梯度更新的幅度来判断是否完结,幅度很小时,训练完结`

结语

前面会陆续介绍

  • 几亿级别的数据量架构如何设计且如何实现
  • 数据处理过程用一些大数据处理框架来做比方spark、flink
  • python的劣势在于算法 如何反对几亿级别的数据进行模型训练
  • 外围:后端Python 每一个阶段的介绍
  • 其余联邦学习技术点介绍