【阅读笔记】联邦学习实战——构建公平的大数据交易市场

2023-10-27

前言

FATE是微众银行开发的联邦学习平台,是全球首个工业级的联邦学习开源框架,在github上拥有近4000stars,可谓是相当有名气的,该平台为联邦学习提供了完整的生态和社区支持,为联邦学习初学者提供了很好的环境,否则利用python从零开发,那将会是一件非常痛苦的事情。本篇博客内容涉及《联邦学习实战》第十四章内容,使用的fate版本为1.6.0,fate的安装已经在这篇博客中介绍,有需要的朋友可以点击查阅。本章内容为构建公平的大数据交易市场,随着人工智能的迅速发展,海量的数据已经成为了帮助训练更好模型的最重要的燃料,但是隐私泄露问题阻碍着大量的数据无法流通入市场中,如果采用联邦学习技术,让数据不出本地,就能够帮助模型进行训练,同时用户的隐私也不会泄露,这将会是两全其美的好事,所以,构建公平的大数据交易市场的意义极为重要。


1.1节中介绍了数据有资产属性,当数据具有此属性后,数据便能够直接或者间接为公司、社会创造价值和收益,并且可以作为特殊的商品在市场中交易。

世界各国和中国政府也意识到大数据对未来发展的意义,并且均已经在国家层面进行战略部署,纷纷发布各种与数据相关的战略计划。数据商品与传统商品相比,前景更为广阔,同时也面临许多挑战,主要包括:

  • 数据的质量、价格如何定义。
  • 如何在合法合规前提下,不泄露用户的隐私。
  • 如何构建合理的激励机制鼓励更多参与方加入到数据交易市场中。

1. 大数据交易

1.1 数据交易定义

指一种对数据进行买卖的行为,企业或政府可以通过交易平台,找到所需的数据资源。大数据交易由三方共同参与,分别为数据提供方,大数据交易平台和数据需求方。
在这里插入图片描述

交易平台主要分为三种模式:

  • 大数据分析结果交易:交易对象不是原始数据,而是对数据进行清洗、分析、建模、可视化等操作后得出结果再出售。
  • 数据产品交易:通过与其他数据拥有者合作,对数据整合、清洗、脱敏,形成数据产品后出售。
  • 交易中介:平台本身不存储和分析数据,而是作为交易渠道,通过API接口形式为各类用户提供出售、购买数据服务,实现交易流程管理。

1.2 数据确权

数据确权是指数据交易后,数据的所有权和控制权归属问题。数据确权也被普遍任务是数据交易中首要解决的问题,产权归属是交易的前提与基础。
但是由于数据在交易中具有流动性、实时性、复杂性和易复制性等特点,很难进行统一的界定。大数据交易面临的产权归属主要面临四大瓶颈:

  • 数据权利类型不明确,无法确定其适用所有权法、产权法还是知识产权法。
  • 数据权利主体究竟属于数据生产者还是数据持有者。
  • 数据的控制和使用权利界限不明。
  • 数据通过互联网容易复制,权属保护困难。

当前的数据所有权很多时候是由平台与用户单独签订的协议,比如使用微信时要遵循《腾讯微信软件许可服务协议》。

1.3 数据定价

根据贵阳大数据交易所在2016年推出的《数据定价办法》对数据的定价进行了量化,将数据的影响因素归结为数据品种、时间跨度、数据深度、数据的实用性、完整性以及数据样本的覆盖度等六个维度。
在这里插入图片描述

2. 基于联邦学习构建新一代大数据交易市场

在基于联邦学习构建的大数据交易市场中,卖家并不直接将数据放在交易平台上进行交易,而是组建一个联邦学习网络,通过这个网络,在各个参与方不出本地的前提下,联合各参与方构建更多的二次开发产品,包括联邦模型、联邦数据分析、联邦画像数据等。这些产品通过交易平台对用户进行销售。
相对于传统的大数据市场,这种新型交易平台的优势:

  • 数据不离开本地,更不直接与平台交互,很大程度减少了隐私泄露风险。
  • 提供更加丰富的数据交易商品。

3. 联邦学习激励机制助力数据交易

要想数据交易市场在一个良性环境下持续并长久的运行,需要一种激励机制,通过激励数据所有者贡献有价值的数据,可以更好地调动各参与方的积极性。此外,数据交易市场的数据提供方和数据交易平台在数据存储和训练上都需要一定的资源成本开销,公平的激励策略能够帮助各参与方从联邦学习生态中受益。
SHapley(SV)是公平定量评估用户边际贡献度的常用指标。SV起源于合作博弈,并被广泛应用于很多领域,从经济学、信息论到机器学习。SV之所以火热,是因为它具有公平性、个体理性化和可加性等优越性质。在联邦学习中,一个参与节点的SV能够评估该节点对聚合最终模型的边际贡献量。然而SV开销大,计算复杂的为O(n!),n为节点数量。
上一章引入了联邦激励机制的概念,本章详细介绍一种基于区块链的联邦学习P2P支付系统,简称为联邦币,以实现基于SV值的公平激励分配。
在FedCoin中,区块链共识节点计算Shapley值,并基于Shapley工作量证明共识协议创建新的区块。在PoSap机制中,出块奖励是联邦学习任务奖励的一部分,通过共识节点对联邦学习节点的Shapley值计算来决定写块权,从而引导区块链共识算力服务于联邦学习激励分配。
与流行的比特币相比,FedCoin采用的PoSap共识机制改进了BitCoin中PoW工作量证明中无意义的散列运算。通过基于真实数据的仿真实验,FedCoin能够公平地评估各参与方对全局模型基于SV的贡献度,并保证达到共识所需的计算资源有限(即在有限的资源内一定能共识)。

4. FedCoin支付系统设计

这里我简要介绍下联邦学习激励机制的问题描述,这部分首先介绍了FL任务的优化问题,通过SGD求解,计算每个节点的梯度,并将梯度上传到中心节点进行聚合,在这个过程中,计算每个节点的SV,可由下式计算得到:

ϕ i = ∑ S ( K − S − 1 ) ! − S ! K ! ( F S ( w ) − F S ∪ i ( w ) ) \phi _{i}=\sum_{S}\frac{(K-S-1)!-S!}{K!}(F_S(w)-F_{S\cup i}(w)) ϕi=SK!(KS1)!S!(FS(w)FSi(w))

S是不包含节点i的任意子集,K是总节点个数, F S ( w ) F_S(w) FS(w)是模型参数w在节点集合S上的损失函数。
可以观察到 ϕ i \phi _{i} ϕi是一个随着参与节点数量增长的NP难问题,我们可以把这个过程看成是K!次全排列中计算节点的边际贡献的平均值。
回到系统的设计,FedCoin系统包括两个参与者网络:联邦学习网络和P2P区块链网络。参与网络的节点用户可以分为四类:联邦学习模型需求方(任务方),联邦学习客户端,联邦学习服务器和区块链共识节点。

在这里插入图片描述

  • 联邦学习模型需求方:需要训练一个联邦学习网络的用户节点,设其任务预算为V。
  • 联邦学习客户端:分布式数据持有者,通过完成协同训练任务获得报酬支付。每个联邦学习客户端基于本地数据训练本地模型,并将模型参数更新提交给联邦学习服务器。
  • 联邦学习服务器:联邦学习网络中的一个中心化服务器,用于协调模型训练过程,并接收来自联邦学习模型需求方的任务支付V。联邦学习服务器扮演三个角色,第一,他将一个学习任务分发给客户端节点,并标价TrainPrice。第二,通过安全聚合协议聚合模型更新,获得计算费(ComPrice)。第三,向区块链网络分配SV激励分配处置费SapPrice,用以支付共识节点的出块奖励。 T r a i n P r i c e + C o m P r i c e + S a p P r i c e ⩽ V TrainPrice+ComPrice+SapPrice\leqslant V TrainPrice+ComPrice+SapPriceV,以便维持支付系统的自平衡,从而不依赖于外部系统供本系统的有价激励。
  • 区块链共识节点:通过共识协议维护一个分布式公共账本状态的一致性。

因此,联邦学习通过联邦学习服务器将联邦学习网络和区块链网络连接在一起。需要注意的是,SapPrice和TrainPrice随着训练轮次的增加而减少,而训练的总支付可以在轮次之间按照场景定制化分配。

4.1 PoSap共识算法

区块链网络中共识节点也称为“矿工”。当矿工从联邦学习网络中接收到SV的计算任务后,矿工为每一个联邦学习客户端节点计算SV,并构建向量 S = [ s k ] k ∈ [ 1 , K ] S=[s_k]_{k\in[1,K]} S=[sk]k[1,K],其中 s k s_k sk提供模型参数 w k ∈ W w_k\in W wkW的客户端的SV。每个矿工按照算法1独立计算SV向量。由于挖矿的目标是竞争计算SV向量,从而证明矿工的计算能力,将该算法命名为PoSap。
算法1的输入来自联邦学习网络的任务规范,输出是一个写入激励分配支付的新区块。

在这里插入图片描述
下面对算法分步进行讲解。

  • 在算法1中,一个矿工先将SV向量初始化为全零向量,并将计算迭代数设置为0(time=0)。只要满足没有接收到新块或者收到的区块未能通过算法2的验证就继续进行。
  • SV计算过程在第3行——第11行,矿工初始化一个临时的SV向量 S t S_t St,以记录当前迭代轮次中的计算值,然后矿工生成K个联邦学习客户端的随机序列。根据该排列计算第一个客户端的SV,这是该客户端节点对损失函数降低的贡献。对于下一个节点i,SV被计算为其边际贡献。通过对所有先前迭代和当前 S t S_t St求平均值来更新S,迭代时间随后递增1,并广播S和时间(第十行)。
  • 每当矿工接收到新的S和time时,矿工计算所有接收到的S的平均值 S ‾ \overline{S} S。然后矿工计算自己的S与 S ‾ \overline{S} S之间的P阶距离,当距离不大于采矿难度D时,矿工成为胜利者,获得出块权,将新区块追加到当前最长链(第15行)。难度D是动态调整的。

算法2是验证区块算法,即算法1中VerifyBlock函数。
在这里插入图片描述

每当一个矿工接收到一个新的区块Blk时,矿工根据算法2验证这个区块,一旦验证通过,该新区块被更新到本地区块链,挖矿终止。一个新区块需要满足三个条件才能通过验证。

  • ∣ ∣ S t − S ‾ t ∣ ∣ p ⩽ D ||S_t-\overline{S}_t||_p \leqslant D StStpD,目的是验证该区块获胜者是否生成了包含有效Shapley值的区块。
  • ∣ ∣ S ‾ − S ‾ t ∣ ∣ p ⩽ D ||\overline{S}- \overline{S}_t ||_p \leqslant D SStpD,要求 S ‾ \overline{S} S足够接近本地的S向量,区块链网络同步的理想情况下二者应该相等。
  • 当前ID是最大的,以确保在最长链上。

一个区块包括区块头和区块体。
在这里插入图片描述

字段名称 解释
区块ID 区块高度
获胜者ID 区块生成者标志
平均S 算法13行计算出的SV
前一个区块散列 前一个区块的散列值
获胜者S 获胜者计算出的SV
难度 所需难度D
Merkle树根 区块体中交易组织成的Merkle树根

区块体中记录两类数据:任务规范(包括算法1的所有输入),区块链网络中的交易。
新区块的挖掘速度是动态调整的。影响因素有两个:矿工的总挖矿能力和生成区块的速度。在相同的挖矿能力下, 随着生成区块速度的提高,挖矿难度会相应降低。在相同区块生成速度的情况下,挖矿难度会随着挖矿能力的提高而提高。难度更新可以通过部署智能合约来实现。

4.2 支付方案

联邦学习模型需求方通过转账V个FedCoin给联邦学习服务器来实现联邦任务的发布,当该笔交易记录到区块上后,联邦学习服务器在客户端发布学习任务规范。V的值应该不大于请求者的联邦学习模型的价值。为了合理分配V,所有节点都应该注册一个交易账户。然后将V的值分成以下三部分。

  • TrainPrice:给联邦学习客户端的支付费用。
  • ComPrice:向联邦学习服务器支付的处理模型聚合的计算费用。
  • SapPrice:支付给区块链网络矿工计算SV的出块奖励。

具体支付方案如算法3所示。
在这里插入图片描述
算法3的步骤分析如下:

  • 在算法3中,当联邦学习服务器接收到来自需求方的支付V时,表明该服务器成功接收一个模型训练任务。然后服务器计算TrainPrice和SapPrice,并留下ComPrice=V-TrainPrice-SapPrice作为自己处理任务的报酬支付。
  • 将训练任务发布给客户端,并附加训练标价。
  • 训练完成后,服务器向区块链网络发布Shapley值计算任务,价格为SapPrice。
  • 区块链网络通过成功挖掘一个新区块完成任务,继而联邦学习服务器创建一个交易将TrainPrice+SapPri传递给获胜者。
  • 区块获胜者将TrainPrice按照Shapley的比例分配给客户端并创建相应转账交易,所有交易及在系统中未提交交易都将存储在该新区块中。

5. FedCoin的安全分析

PoSap的安全性与比特币类似,鼓励矿工向系统贡献其计算资源,当系统中矿工的数量和算力足够多时,该系统的安全性随之提升。此外,还要设计一个抵御大型矿池的形成的支付方案,FeCoin不能抵御超过50%的矿工共谋攻击。
对于自私挖矿策略的安全性讨论,即讨论区块胜利者不发布有效区块而继续挖掘下一个区块,从而获得挖掘上的时间优势问题。

  • 不仅无法领取区块奖励SapPrice,同时,不能在不发布私有区块情况下挖掘下一个区块。
  • 如果学习任务并行,一个自私矿工可以保留一个区块,继续挖掘下一个区块。这里的解决方案是不建议处理并行联邦学习任务。

6. 实例演示

FedCoin的演示Demo展示视频的链接附上,请各位尝试和观看。

阅读总结

虽然是一篇介绍联邦学习与区块链相结合的应用内容,没有实操部分,全是文字的内容也十分乏味,但是通过这一章内容的学习,又一次拓宽了我的思维,对于联邦学习中的激励问题,可以通过区块链的可信计算来解决奖励分配,这让大数据交易更为安全和直观,从某种意义上来说还很好的衡量了大数据的价值。希望在日后遇到相同情景的需求下,我也能够合理利用联邦学习的激励机制,来解决奖励分配问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【阅读笔记】联邦学习实战——构建公平的大数据交易市场 的相关文章

  • Bad file descriptor (C:\ci\zeromq_1616055400030\work\src\epoll.cpp:100)

    问题描述 这个报错总是出现在使用conda 环境安装一些新包后 再登录jupyter notebook就报此错误 导致jupyter notebook 无法使用 解决 1 pip uninstall pyzmq 2 pip install
  • TP5整合的阿里云短信接口

    现阶段 短信的应用主要就是用来验证下手机号是不是正常的手机号 只要涉及到用户手机号的问题的时候 都会做短信验证码来验证下改手机号是否是正常手机号 接下来就是操作步骤 首先要在阿里云账号上开通短信功能 然后再设置自己的签名 和短信模板 先导入
  • ElementUi Upload上传组件调接口时踩坑(FormData传参)

    使用自定义Upload上传实现 参数 http request 意为 覆盖默认的上传行为 可以自定义上传的实现 是个function 使用Upload组件 因为饿了么提供的几种上传交互都不满足我们的业务 所以我需要自定义交互 先看一下代码里
  • Spring利用propertyConfigurer类 读取.property数据库配置文件

    1 Spring的框架中 org springframework beans factory config PropertyPlaceholderConfigurer类可以将 properties key value形式 文件中 一些动态设
  • 2023蓝桥杯Java研究生组赛题

    蓝桥杯Java研究生组 JavaA组看过来 这两个组别题目基本一样 第一次参加了Java研究生组 Java组应该没有C C 那么卷吧 前面几题感觉难度还行没有特别难 后面几个大题依旧是没法做 不知道多少分能拿省一 有参加过的大佬可以说一说吗
  • 手撕LeetCode困难题-------正则表达式匹配 Python实现

    昨天刚刚把Python正则表达式学完 今天必须立刻手撕一道相关LeetCode 这不 题目马上来了 题面 正则表达式匹配 给你一个字符串 s 和一个字符规律 p 请你来实现一个支持 和 的正则表达式匹配 匹配任意单个字符 匹配零个或多个前面
  • python爬虫之js逆向(一)

    python爬虫之js逆向 一 写在前面 现在各种反爬手段很多 虽然我在工作的时候并没有遇到过 我的工作就是爬虫 但是基本上都是爬外网 google 都是企业级爬虫 很少像这样写垂直爬虫 在平时的技术交流群中经常看到大神们说一些我没遇到过的
  • 使用git_blame定位修改代码历史

    使用git blame定位修改代码历史 git blame定义 git blame Show what revision and author last modified each line of a file 文档地址 https git
  • 网络安全工程师自学教程2023年最新版

    什么是黑客 你以为的黑客是这样的 黑客帝国 实际上 黑客可能是街边炒粉的大叔 穿着格子衫的路人甲 一位体重再增加就得买3人座的 小胖 著名黑客Richard Stallman 黑客是一类掌握超高计算机技术的人群 凭着掌握的知识 他们既可以从
  • UDP消息发送

    发送端 package com kuang lesson03 import java net DatagramPacket import java net DatagramSocket import java net InetAddress

随机推荐

  • CAS(compare and swa)中的ABA问题及解决

    CAS compare and swap CAS是 compare and swap 的缩写 字面意思是比较交换 CAS锁通常也是实现乐观锁的一种机制 首先会给它一个期望值 用期望值与老值做比较 如果相等就用新传入的值进行修改 但是CAS通
  • GF_CLR初始用 - 正式版

    参照 DeerGF Wolong框架使用教程 与tackor老哥的踩坑日记所编写 第二次尝试 总结第一次经验重新来 点击链接加入群聊 Gf Wolong热更集合 一 部署 HybridCLR Wolong 环境 首先安装Windows Bu
  • IDEA安装Vue插件后为什么创建.vue文件不显示vue图标

    我的IDEA安装Vue插件后 按道理来说 新建一个 vue文件 文件前面应该会有一个 V 一样的图标 然而事实并不是 百度了一圈 大部分人都是说这样的 试了一下 并没用 于是乎 我找到了正确答案来帮刚入门Vue的小白填坑 打开 File g
  • MySQL分区(Partition)功能试验

    目录 概述 分区表和未分区表试验过程 分区命令详解 概述 自5 1开始对分区 Partition 有支持 6 0应比较稳定 水平分区 根据列属性按行分 举个简单例子 一个包含十年发票记录的表可以被分区为十个不同的分区 每个分区包含的是其中一
  • 【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 LSTM神经网络算法 1 2 PSO算法 1 3 PSO LSTM负荷预测模型 2 运行结果 2
  • excel 中如何使用python操作

    在Excel中使用Python可以通过两种方式实现 使用Python插件 您可以使用一些Excel插件 如PyXLL xlwings等 这些插件可以将Python代码嵌入到Excel工作簿中 以便在Excel中运行Python代码 使用Py
  • 服务器带宽测试

    服务器带宽 简单地说 就是同一时间段能传输的数据总量 服务器带宽越小那么可容纳数据吞吐量越小 同一时间段可容纳的用户访问量也越少 单位时间内从服务器拉取的数据量就越小 服务器带宽越大 可容纳同一时间访问数据越大 单位时间内从服务器拉取的数据
  • 1.8 C++ string

    string基本概念 本质 string是C 风格的字符串 而string本质上是一个类 string和char 区别 char 是一个指针string是一个类 类内部封装了char 管理这个字符串 是一个char 型的容器 特点 stri
  • MATLAB人工神经网络ANN代码

    本文介绍基于MATLAB实现人工神经网络 ANN 回归的详细代码与操作 目录 1 分解代码 1 1 循环准备 1 2 神经网络构建 1 3 数据处理 1 4 模型训练参数配置 1 5 神经网络实现 1 6 精度衡量 1 7 保存模型 2 完
  • android_使用ViewPager和Fragment实现滑动导航

    ViewPage是android support v4 jar包提供的用于页面滑动的库 这里没有将整个实现过程记录 只是把知识点摘出来单独解释 可参照代码自己实现 1 在xml布局文件中添加android support v4 view V
  • Keil 5使用JLink直接调试正在运行的CPU

    原文链接 环境 目标CPU STM32F429 连接工具 JLink V9 连接方式 SWD 调试工具 Keil MDK 5 20 使用场景 目标板正在运行 但是出BUG了 需要调试 而当前又没有在线debug 于是就需要用调试器在不复位C
  • C++ Streams

    1 fstream File table data txt 的内容为 137 2 71828 42 3 14159 7897987 1 608 1337 01101010001 从上述文件中读取第一个整数和第二个小数 ifstream in
  • 一篇文章学懂ADB命令和Monkey命令

    一篇文章学懂ADB命令和Monkey命令 1 adb命令 1 1 查看连接设备 1 2 查看adb版本 1 3 查看手机当前启动App的应用名和包名 1 4 使用aapt使用aapt 查看app的包名和启动名 查看app的包名和启动名 1
  • Element框架更换主题色

    Element 默认的主题色是鲜艳 友好的蓝色 但是UI小姐姐在设计的时候会为了更贴合项目主旨设计出其他颜色的主题色 比如新能源项目一般选用绿色做为主题色 此时我们就需要更改Element框架的主题色 一开始博主的想法是全局修改框架默认样式
  • JDBC连接各种数据库

    ConnectHSQLDB java Java代码 ConnectHSQLDB java package com javaworkspace connecthsqldb import java sql Connection import j
  • /usr/lib64/sa/sa2脚本解释

    文章目录 前言 脚本原文 脚本解释 前言 usr lib64 sa sa1脚本和 usr lib64 sa sa2脚本都是Linux 系统上的 sysstat 工具的一部分 在 etc cron d sysstat这个定时任务下执行 用来收
  • arm+linux swap出错问题

    今天 程序跑了两个小时 忽然出现如下信息 swap dup Bad swap file entry 002fdf80 VM killing process intrusion test swap free Bad swap file ent
  • Android-S模拟器

    0 前言 参考资料 1 基于Android P对Emulator的使用进行了说明 Android S情况有变 因此撰写本文进行记录 1 编译 根据参考资料 1 的方法编译 aosp x86 64 eng 完成后执行emulator无法正常进
  • 南京美食,为吃遍天下做准备~~

    标点美食地址 1 羊肉泡馍 长白街348号有家 老陕家 面馆 郑和公园北面 肉加馍 2 蓝空饭店 三条巷那边 稻香鸭 红烧老鹅 韭香脆皮鸡 是很好的还有一个叫什么牛肉粒的也好吃昏的了 3 山西炸酱面馆 顺着流行青年广场旁的天桥走到马路对面
  • 【阅读笔记】联邦学习实战——构建公平的大数据交易市场

    联邦学习实战 构建公平的大数据交易市场 前言 1 大数据交易 1 1 数据交易定义 1 2 数据确权 1 3 数据定价 2 基于联邦学习构建新一代大数据交易市场 3 联邦学习激励机制助力数据交易 4 FedCoin支付系统设计 4 1 Po