【FedCoin: A Peer-to-Peer Payment System for Federated Learning】

在这篇论文中,我们提出了FedCoin,一个基于区块链的点对点支付系统,专为联邦学习设计,以实现基于Shapley值的实际利润分配。在FedCoin系统中,区块链共识实体负责计算SV,并且新的区块是基于“Shapley证明”(PoSap)协议创建的。这与流行的比特币网络不同,在比特币网络中,共识实体通过解决无意义的难题来“挖矿”生成新区块。

FedCoin是首次尝试将区块链技术应用于联邦学习激励机制研究中的创新实践。这一举措为那些拥有计算资源但缺乏本地数据的实体提供了参与联邦学习的新机遇,使它们能够通过贡献计算资源获得相应的激励回报,进而推动整个联邦学习生态系统的健康发展。

在本工作中,我们的目标并非减少计算复杂度,而是建立一种机制,使得原本可能被浪费的分布式计算资源得以利用,协助联邦学习系统计算SV。

1.初步说明

每个样本 ( x i , y i ) (x_i,y_i) (xi,yi)
第i轮的模型参数记为: w i w_i wi
第t轮下的损失函数 F i ( w ) = ℓ ( x i , y i ; w t ) F_i(w)=\ell(x_i,y_i;w_t) Fi(w)=(xi,yi;wt)
第k个客户端有一个本地数据集 D k D_k Dk, n k = ∣ D k ∣ n_k=|D_k| nk=Dk表示第k个客户端拥有的数据量。
全局的数据集记为 D = { D 1 , . . . , D k } D=\{D_1,...,D_k\} D={D1,...,Dk} n = ∣ D ∣ = ∑ k = 1 K n k n=|D|=\sum^K_{k=1}n_k n=D=k=1Knk
目标的优化函数为 min ⁡ w ∈ R d F ( w ) = 1 n ∑ k = 1 K ∑ i ∈ D k F i ( w )   ( 1 ) \min_{w\in R^d}F(w)=\frac{1}{n}\sum^K_{k=1}\sum_{i\in D_k}F_i(w)\space(1) minwRdF(w)=n1k=1KiDkFi(w) (1)
这个优化问题通常通过基于随机梯度下降(SGD)的方法来解决。举例来说,基于当前模型wt,联邦平均算法计算客户端k上的平均梯度gt,
公式如下: g t k = 1 n k ∑ i ∈ D k ∇ F i ( w t ) g_t^k = \frac{1}{n_k} \sum_{i \in D_k} \nabla F_i(w_t) gtk=nk1iDkFi(wt)
然后,每个客户端使用该梯度来更新其本地模型,更新规则为:
w t + 1 k = w t − η g t k w_{t+1}^k = w_t - \eta g_t^k wt+1k=wtηgtk
最后,FL服务器将所有客户端的本地模型聚合成全局FL模型。聚合过程由聚合函数A完成,其形式如下:
w t + 1 = A ( { w t + 1 k ∣ k = 1 , … , K } ) w_{t+1} = A(\{ w_{t+1}^k | k = 1, \ldots, K \}) wt+1=A({wt+1kk=1,,K})

2.FedCoin

2.1 网络概述

在这里插入图片描述
在作者的系统中存在两个参与者网络:
1)联邦学习网络
2)点对点区块链网络
联邦学习模型请求者或联邦学习训练任务请求者指的是需要训练联邦学习网络并拥有预算V的实体。
客户端可以通过训练获得报酬和激励(TrainPrice)
聚合会产生一个聚合激励(ComPrice)
向区块链网络转移会产生一笔处理费(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 \leq V TrainPrice+ComPrice+SapPriceV以维持支付平衡,而无需依赖将价值从外部转移至此系统。

服务器在每次全局更新之后,会向区块链发送一个任务,计算每个FL客户端的贡献。然后,区块链网络中的共识节点共同计算SV。获胜者获得奖励:TrainPrice+SapPrice。获胜者根据各自的SVs按比例将ComPrice分配给FL客户端,通过在区块链中创建交易来实现。

联邦学习网络和区块链网络之间靠一种特殊类型的任务产生联系,

一个特殊任务包括接收到的本地更新集合 W = { w k ∣ k = 1 , . . . , K } W = \{w_k|k = 1, . . . , K\} W={wkk=1,...,K},聚合函数 A A A,损失函数 F ( w ) F(w) F(w),以及每个更新轮次的SapPrice和TrainPrice的值。随着训练轮次的增加,SapPrice和TrainPrice会减少,并且用于训练的总付款可以平均分配或不平均分配给每一轮。

2.2 挖矿算法

挖矿算法如下
在这里插入图片描述
如何创建一个区块:
每当矿工接收到S和时间时,矿工计算所有收到的S的平均结果S(第16行)。然后,矿工计算自己的S与S之间的距离P。当距离不大于挖矿难度D时,矿工成为赢家并生成新的区块Blk(第18行)。
存在一些改进的空间,我觉得可以维持一个队列,只保存一段时间的产生的区块,因为刚开始计算出的S的稳定性不高,之后计算的结果会越来越接近于真实值

2.3 区块验证的算法

  1. 获胜者的 S t S_t St减去获胜者的 S t ‾ \overline {S_t} St平均的需要满足 ∣ ∣ S t − S t ‾ ∣ ∣ p < = D ||S_t-\overline{S_t}||_p <=D ∣∣StStp<=D
  2. 本机计算出的 S ‾ \overline S S需要满足 ∣ ∣ S ‾ − S t ‾ ∣ ∣ p < = D ||\overline S-\overline{S_t}||_p <=D ∣∣SStp<=D(我认为是防止winner机器作弊,同时防止本地机器偷懒)要求区块的S值应足够接近本地聚合S
  3. 当前区块ID应最大,以确保只有最长的链可接受。
    在这里插入图片描述

2.4 挖矿难度

挖掘新区块的难度水平可以动态调整:
影响难度更新的两个主要因素是:
1)矿工的总挖矿能力
2)生成区块的速度。在相同的挖矿能力下,随着区块生成速度的增加,难度级别应该降低。在相同的区块生成速度下,随着挖矿能力的增加,难度级别应该增加
3)(我编的:)是否应该考虑一下任务的总量

2.5 支付算法

在FedCoin系统中,一个FL模型请求者首先通过向FL服务器存入V个FedCoins来启动。V的价值不应大于请求者的FL模型的价值。为了在FL客户端、区块链矿工和FL服务器之间分配V,所有实体都应注册一个交易账户。

TrainPrice:支付给FL客户端;
ComPrice:支付给FL服务器用于处理模型聚合;
SapPrice:支付给区块链网络矿工用于计算每个客户端的Shapley值。

这种分配可以由预先约定的智能合约确定。例如,分配合约可以指定TrainPrice:ComPrice:SapPrice=7:1:2。那么,TrainPrice=0.7V,ComPrice=0.1V,而SapPrice=0.2V。
在这里插入图片描述

3. 实验结果

在这里插入图片描述
对于给定的数据集,高EMD值表示数据质量低。每个客户端类型的数据质量通过EMD来衡量,如表2所示。我们可以观察到,从T0到T9,数据质量呈线性递减。
在这里插入图片描述
随着质量等级从T1降至T9,Shapley值减小。此外,只有T0到T4类型的值为正,表明只有一半的客户端可以积极贡献于模型准确度的提升。这也表明我们的PoSap可以有效促进高质量数据在协作FL应用场景中的推广。对于T5到T9类型的负Shapley值意味着这些客户端可能会误导模型训练。

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

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

相关文章

Linux 入门及其基本指令(上)

目录 0 .引言 1. XShell 远程登录 Linux 1.1 云服务器 1.2. XShell 远程登陆 Linux 2. 详解 Linux 基本指令 2.1 ls 指令 2.2 pwd 指令 2.3 cd 指令 2.4 touch 指令 2.5 mkdir指令 2.6 rmdir指令 && rm 指令 0 .引言 如今&#xff0c;Linux 在服务器…

公众号的AI聊天机器人已修复!谷歌Gemini Pro 10大使用场景解析

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

Kafka重要配置参数全面解读(重要)

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Kafka重要配置参数全面解读(重要 前言auto.create.topics.enableauto.leader.rebalance.enablelog.retention.{hour|minutes|ms}offsets.topic.num.partitions 和 offsets.topic.replication.factorlo…

Long long类型比较大小

long 与 Long long类型和Long类型是不一样&#xff0c;long类型属于基本的数据类型&#xff0c;而Long是long类型的包装类。 结论 long是基本数据类型&#xff0c;判断是否相等时使用 &#xff0c;即可判断值是否相等。&#xff08;基本数据类型没有equals()方法&#xff0…

JVM之EhCache缓存

EhCache缓存 一、EhCache介绍 在查询数据的时候&#xff0c;数据大多来自数据库&#xff0c;咱们会基于SQL语句的方式与数据库交互&#xff0c;数据库一般会基于本地磁盘IO的形式将数据读取到内存&#xff0c;返回给Java服务端&#xff0c;Java服务端再将数据响应给客户端&am…

Ubuntu下使用vscode进行C/C++开发:进阶篇

在vscode上进行C/C++开发的进阶需求: 1) 编写及调试源码时,可进行断点调试、可跨文件及文件夹进行函数调用。 2) 可生成库及自动提取对应的头文件和库文件。 3) 可基于当前工程资源一键点击验证所提取的库文件的正确性。 4) 可结合find_package实现方便的调用。 对于第一…

LLM之RAG实战(三十五)| 使用LangChain的3种query扩展来优化RAG

RAG有时无法从矢量数据库中检索到正确的文档。比如我们问如下问题&#xff1a; 从1980年到1990年&#xff0c;国际象棋的规则是什么&#xff1f; RAG在矢量数据库中进行相似性搜索&#xff0c;来查询与国际象棋规则问题相关的相关文档。然而&#xff0c;在某些情况下&#xff0…

mysql修改用户权限

https://blog.csdn.net/anzhen0429/article/details/78296814

Elasticsearch 和 Kibana 8.13:简化 kNN 和改进查询并行化

作者&#xff1a;Gilad Gal, Tyler Perkins, Srikanth Manvi, Aris Papadopoulos, Trevor Blackford 在 8.13 版本中&#xff0c;Elastic 引入了向量搜索的重大增强&#xff0c;并将 Cohere 嵌入集成到其统一 inference API 中。这些更新简化了将大型语言模型&#xff08;LLM&a…

java数据结构与算法刷题-----LeetCode278. 第一个错误的版本

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 二分查找 二分查找 解题思路&#xff1a;时间复杂度O( l o g 2 …

Unity照片墙简易圆形交互效果总结

还要很多可以优化的点地方&#xff0c;有兴趣的可以做 比如对象的销毁和生成可以做成对象池&#xff0c;走到最左边后再移动到最右边循环利用 分析过程文件&#xff0c;采用Blender&#xff0c;资源已上传&#xff0c;可以播放动画看效果&#xff0c;下面截个图&#xff1a; …

将MATLAB的图无失真复制到illustrator

选择复制选项 设置图元文件 复制到illustrator&#xff0c;可以看到每个图片部件都可以操作并且放大无失真

芒果YOLOv8改进145:全新风格原创YOLOv8网络结构解析图

&#x1f4a1;本篇分享一下个人绘制的原创全新风格 YOLOv8网络结构图 感觉搭配还行&#xff0c;看着比较直观。 该专栏完整目录链接&#xff1a; 芒果YOLOv8深度改进教程 订阅了专栏的读者 可以获取一份 <可以自行修改 / 编辑> 的 YOLOv8结构图修改源文件 YOLOv8结构图…

康耐视visionpro-CogBlobTool工具详细说明

CogBlobTool功能说明: 通过设置灰度值提取感兴趣区域,并分析所提取区域的面积、长宽等参数。 CogBlobTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogBlobTool工具 ②.添加输入图像:单击鼠标右键“链接到”或以连线拖拽的方式选择相应输入源 ③.极性:“白底黑点…

康耐视visionpro-CogFindCircleTool工具详细说明

CogFindCircleTool功能说明: 通过用多个卡尺找到多个点来拟合所要找的圆 CogFindCircleTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogFindCircleTool工具 ②.添加输入图像,右键“链接到”或以连线拖拽的方式选择相应输入源 ③.预期的圆弧:设置预期圆弧的中心点…

基于ssm的bbs论坛系统

开发环境&#xff1a;idea 前端&#xff1a;JQueryBootstraplayui后端&#xff1a;SpringSpringMVCMybatis数据库&#xff1a;mysqlredis 基于ssm的bbs论坛系统&#xff0c;功能有论坛、导读、动态、排行榜以及后台管理系统等等 话不多说&#xff0c;看图&#xff01;&#x…

VTK 9.2.6 加 QT6 编译

上一篇的example编译VTK 9.2.6 源码和VTK Examples 编译 Visual Studio 2022 增加 VTK_GROUP_ENABLE_Qt 为yes 指定QT6-DIR的路径为 C:\Qt\6.6.3\mingw_64\lib\cmake\Qt6

Android room 在dao中不能使用挂起suspend 否则会报错

错误&#xff1a; Type of the parameter must be a class annotated with Entity or a collection/array of it. kotlin.coroutines.Continuation<? super kotlin.Unit> $completion); 首先大家检查一下几个点 一、kotlin-kapt 二、 是否引入了 room-ktx 我是2024年…

康耐视visionpro-CogCaliperTool工具详细说明

CogCaliperTool功能说明: 卡尺工具,用于测量距离 CogCaliperTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogCaliperTool ②.添加输入图像,右键“链接到”或以连线拖拽的方式选择相应输入源 ③.拖动屏幕上的矩形框到需要测量的位置。卡尺的搜索框角度与边缘不平…

C/C++ ③ —— C++11新特性

1. 类型推导 1.1 auto auto可以让编译器在编译期就推导出变量的类型 auto的使⽤必须⻢上初始化&#xff0c;否则⽆法推导出类型auto在⼀⾏定义多个变量时&#xff0c;各个变量的推导不能产⽣⼆义性&#xff0c;否则编译失败auto不能⽤作函数参数在类中auto不能⽤作⾮静态成员…