【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值意味着这些客户端可能会误导模型训练。

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

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

相关文章

自定义类型:【结构体】

我们知道C语言中有许多的类型&#xff0c;比如char&#xff0c;short&#xff0c;int等等类型。像是这些C语言本身就支持的类型叫做内置类型&#xff0c;但是有一些复杂对象&#xff0c;只有这些类型是完全不够的。比如人&#xff0c;或者一本书。那么我们就可以自己定义一些类…

mysql--事务四大特性与隔离级别

事务四大特性与隔离级别 mysql事务的概念事务的属性事务控制语句转账示例 并发事务引发的问题脏读脏读场景 不可重复读幻读幻读场景 事务的隔离级别读未提交读已提交可重复读&#xff08;MySQL默认&#xff09; 总结 mysql事务的概念 事务就是一组操作的集合&#xff0c;他是一…

鸿蒙OS开发实例:【手撸服务卡片】

介绍 服务卡片指导文档位于“开发/应用模型/Stage模型开发指导/Stage模型应用组件”路径下&#xff0c;说明其极其重要。 本篇文章将分享实现服务卡片的过程和代码 准备 请参照[官方指导]&#xff0c;创建一个Demo工程&#xff0c;选择Stage模型 鸿蒙OS开发更多内容↓点击…

面试经典150题【111-120】

文章目录 面试经典150题【111-120】67.二进制求和190.颠倒二进制位191.位1的个数136.只出现一次的数字137.只出现一次的数字II201.数字范围按位与5.最长回文子串97.交错字符串72.编辑距离221.最大正方形 面试经典150题【111-120】 六道位运算&#xff0c;四道二维dp 67.二进制…

PCB损耗来源

信号经过PCB板会产生损耗&#xff0c;主要包括导体损耗&#xff0c;介电损耗和辐射损耗 导体损耗&#xff1a;导体损耗是由于电流流动过程中产生电阻损耗而发热。 介电损耗&#xff1a;介电损耗是由于电场通过介质时分子的交替极化和晶格碰撞造成的。 辐射损耗&#xff1a;辐…

YOLOv9 实战指南:打造个性化视觉识别利器,从零开始训练你的专属测试集

论文地址&#xff1a;YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information GitHub&#xff1a;WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (github.com)…

Linux---多线程(下)

前情提要&#xff1a;Linux---多线程(上) 七、互斥 临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区互斥&#xff1a;任何时刻&#xff0c;互斥保证有且只有一个执行流进入临…

PL/SQL的词法单元

目录 字符集 标识符 分隔符 注释 oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 PL/SQL块中的每一条语句都必须以分号结束。 一个SQL语句可以跨多行&#xff0c;但分号表示该语句的结束:一行中也可以有多条 SQL语句&…

3.28(迭代搜索算法 + java学习总结)

迭代加深搜索 迭代加深算法是一在DFS的基础上添加搜索深度限制的搜索方法&#xff1b; 其核心思想是从深度为0的地方开始搜索&#xff0c;然后逐步加深搜索深度&#xff0c;重新搜索一遍&#xff1b;这对于那些已知答案在浅层&#xff0c;但整个树或图存在极多分支的情况&#…

【前端Vue】HR-saas中台项目开发md文档第1篇:vuex基础-介绍,vuex基础-初始化功能【附代码文档】

HR-saas中台管理项目开发完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;vuex基础-介绍,vuex基础-初始化功能,vuex基础-state,vuex基础-mutations,vuex基础-actions,vuex基础-getters。项目课设计&#xff0c;人力资源的环境搭建vue-element-admin的了解和…

[flask]http请求//获取请求头信息+客户端信息

在网站中查询请求头信息&#xff0c;可以通过以下操作进行 右键然后选择检查 进入改页面后选择文档&#xff0c;刷新一下页面就好了 获取所有的请求头信息 print(request.headers, type(request.headers)) 在flask模块中&#xff0c;使用上面的输出函数就可以查看到有关于请求…

Qt 窗口MainWindow(上)

Qt 窗口是通过 QMainWindow 类来实现的。 QMainWindow 是一个为用户提供主窗口程序的类&#xff0c;继承自 QWidget 类&#xff0c;并且提供了⼀个预定义的布局。QMainWindow 包含一个菜单栏&#xff08;menubar&#xff09;、多个工具栏(toolbars)、多个浮动窗口&#xff08;…

第十四届蓝桥杯JavaA组省赛真题 - 特殊日期

解题思路&#xff1a; 暴力秒了 public class Main {public static void main(String[] args) {int cnt 0;for (int i 1900; i < 9999; i) {for (int j 1; j < 12; j) {for (int k 1; k < days(i, j); k) {if (sum(i) sum(j) sum(k)) cnt;}}}System.out.print…

安防监控视频汇聚平台EasyCVR启用图形验证码之后如何调用login接口?

视频综合管理平台EasyCVR视频监控系统支持多协议接入、兼容多类型设备&#xff0c;平台可以将区域内所有部署的监控设备进行统一接入与集中汇聚管理&#xff0c;实现对监控区域的实时高清视频监控、录像与存储、设备管理、云台控制、语音对讲、级联共享等&#xff0c;在监控中心…

【Vue】可拖拽侧边栏实现

在本篇博客中&#xff0c;我们将探讨如何在 Vue.js 项目中实现一个可拖拽的侧边栏。此功能可以通过修改 HTML 和 Vue 组件的脚本来实现。 首先&#xff0c;我们需要在 HTML 文件中定义侧边栏的容器和用于拖拽的元素。在 Vue 组件中&#xff0c;我们将使用 Vue 的响应式系统来追…

力扣73. 矩阵置零

Problem: 73. 矩阵置零 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1&#xff1a;利用一个等大的矩阵判定 复制一个与原始矩阵一样大的矩阵temp&#xff0c;遍历temp时若temp[i][j] 0&#xff0c;则将martix对应的行与列均设置为0 思路2&#xff1a;利用两个一维矩阵…

【Linux】UnixBench介绍、分数调优思路以及测试2D3D的方法

一.简介 unixbench是一个用于测试unix系统性能的工具&#xff0c;也是一个比较通用的benchmark&#xff0c; 此测试的目的是对类Unix 系统提供一个基本的性能指示&#xff0c;很多测试用于系统性能的不同方面&#xff0c;这些测试的结果是一个指数值&#xff08;index value&am…

幻兽帕鲁服务器价格表_阿里云/腾讯云/京东云/华为云报价大全

2024年全网最全的幻兽帕鲁服务器租用价格表&#xff0c;阿里云幻兽帕鲁游戏服务器26元1个月、腾讯云32元一个月、京东云26元一个月、华为云24元1个月&#xff0c;阿腾云atengyun.com整理最新幻兽帕鲁专用4核16G、8核16G、8核32G游戏服务器租用价格表大全&#xff1a; 阿里云幻…

C++类的六个默认成员函数(详细解析与总结)

目录 前言&#xff1a; 一、构造函数 a.特点 b.注意事项 1.首先明确什么是默认构造函数 2.默认构造函数对内置类型与自定义类型的处理 c.总结 二、析构函数 a.特点 b.注意事项 1.什么时候写析构函数&#xff1f; 2.析构函数对内置类型与自定义类型的处理 c.总结 …

pythonselenium自动化测试实战项目

说明&#xff1a;本项目采用流程控制思想&#xff0c;未引用unittest&pytest等单元测试框架 一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码&#xff0c;验证是否登录成功&#xff1b; 2.输入格式正确的用户名和不…