【论文笔记05】在智能合约中执行联合学习过程

2023-11-05

原文作者:A. R. Short, H. C. Leligou and E. Theocharis*
原文标题:Execution of a Federated Learning process within a smart contract*
原文链接:https://ieeexplore.ieee.org/document/9427734*

原文来源:IEEE International Conference on Consumer Electronics (ICCE), 2021
笔记作者:quangaoyuan
笔记小编:quangaoyuan

A. R. Short, H. C. Leligou and E. Theocharis, "Execution of a Federated Learning process within a smart contract," 2021 IEEE International Conference on Consumer Electronics (ICCE), 2021, pp. 1-4, doi: 10.1109/ICCE50685.2021.9427734.

0x00 关键词

区块链、联合学习、智能合约、验证算法 

0x01 摘要

高质量的数据集对于创建机器学习(ML)模型一直很有价值。因此,向使用此类数据集参与联合学习(FL)过程的用户提供奖励是有意义的。在这一竞争场景中,我们设计了一个利用区块链网络、智能合约和模型验证算法的解决方案,以协调培训过程、记录用户表现并以透明的方式提供奖励。

0x02 INTRODUCTION 

联邦学习(FL)是一种很有前途的机器学习(ML)技术,允许以分散的方式对模型进行训练。由于参与用户只共享渐变(以模型更新的形式),而不是实际数据,因此该过程在隐私方面提供了改进。近年来,研究人员提出了将FL过程与区块链技术结合起来的方法,以便在不同方面提供改进。更具体地说,相关研究表明,此类解决方案可以提供改进的可审计性[1][2],可问责性[3],能够以分散的方式存储模型更新[4],提高安全性[5],并可用于促进激励机制[6]。 

本文提出并详细说明了这种解决方案的体系结构设计,其中FL流程由运行在私有区块链网络上的智能合约进行协调。智能合约负责验证贡献,计算全球模型,并记录用户的绩效,以支持激励计划。据我们所知,尚未提出或研究类似的方法(即在智能合约中运行验证算法,以验证模型更新,进而提供奖励/激励)。值得一提的是,本文中使用的一些术语是特定于HyperLedger Fabric(HLF)的;然而,类似的原则可能适用于其他私有区块链网络。本文描述的解决方案旨在在以下方面提供改进: 

A.安全 

在智能合约中运行模型更新验证算法可以防止模型中毒攻击[7]。在这种攻击场景中,对手可能会发送恶意模型更新,以影响全局模型的性能、改变其行为或阻止其他用户访问它[8]。在使用某种激励方案的解决方案中,需要这种验证过程。否则,恶意用户可能会通过发送空的或毫无价值的贡献而从这种方案中获益,同时降低全局模型的性能。 

B.激励计划

 为了实现信任,可以使用智能合约记录每个参与用户的表现。区块链网络的分布式账本是以透明方式存储奖励的完美媒介,因为它是分散的。例如,可以配置HLF,以便至少需要一定比例的节点才能达成共识。此外,通过在智能合约中执行验证算法,可以实现更高级别的透明度,这在我们的设置中尤为重要,因为该算法的输出用于计算激励。

我们设想,在需要更高级别信任的情况下,该解决方案将是有价值的,因为它可以使竞争实体协同改进和使用共享机器学习,同时突出活跃用户。区块链节点的位置取决于用例。例如,当少数竞争行业或协会在FL过程中进行合作时,他们可能会选择每个托管一个节点(即,该节点更接近最终用户)。另一种选择是,需要一个受信任的第三方来托管解决方案。 

以下各节描述了用于验证和奖励计算的算法(第二节)、由智能合同协调的培训流程(第三节)、激励方案示例(第四节)、智能合同需要支持的功能规范(第五节),分布式分类账数据结构规范(第六节),随后是结论和未来工作(第七节)。 

0x03 验证贡献

在 FL 过程中计算下一个全局模型版本通常涉及对从所有贡献中收到的模型权重进行平均,同时还要考虑每个客户拥有的样本数量 [9]。然而,由于 FL 过程中的训练是在边缘执行的,因此数据不会传输,也不会在中心位置收集。因此,评估用户关于训练过程中使用的数据量的陈述的诚实度是一项挑战。攻击者可能会利用这种无能,虚假报告他使用大数据样本,以最大化他对全局模型的影响。已经证明,已知良好的验证数据集(对最终用户保密)以及验证算法可用于评估单个模型的贡献,而不依赖于数据样本大小数,从而提供一定程度的保护以免受上述攻击类型[7]。

我们提出的解决方案还在决策过程中使用验证算法,具体取决于所使用的激励方案。以最简单的形式,我们可以向贡献能够通过验证测试的用户提供奖励。

0x04 学习过程概述(工作流程)

每轮培训包括三个主要过程。在第一个过程中,参与用户请求并接收当前模型版本的权重。在此步骤中,将调用智能合约,进而查询分类帐以获取相关数据。应该注意的是,在这个阶段账本没有被改变。

下载最新的模型版本后,最终用户可以使用它,也可以进行本地培训。然后将生成的梯度(以模型权重的形式)发送回区块链网络。在此步骤中,调用智能合约的一个函数,该函数负责以下任务:a)从最终用户接收梯度作为输入,b)通过执行模型更新验证算法来验证更新的质量, c) 根据验证算法的结果,丢弃或保存账本上的用户贡献。

FL 工作流中的最后一个过程是执行联合聚合,例如通过平均存储在分类帐中的所有有意义的贡献,并使用结果来创建下一个模型版本。这个过程应该被触发以根据特定的用例以预定义的时间间隔执行,例如当达到某个贡献目标或经过某个时间时。如果训练轮次非常短,则可能没有足够的贡献来生成具有显着改进的模型。另一方面,如果训练轮次很长,用户将延迟下载性能更好的模型版本,从而导致学习性能下降。最后一个过程结束了训练轮。

0x05 奖励的可能性

在每一轮训练完成后,可以在账本中记录每个用户的表现(在有用的贡献方面)。在训练过程中,根据验证算法评估用户贡献。这个验证函数的输出可以作为衡量用户表现的指标。在最简单的形式中,分布式账本将存储增量,表示成功贡献的数量(即验证算法认为有用的模型更新)。这些分数可以被视为与加密货币令牌相同的方式,因为它们存储在安全介质上,并且可以交换奖励。在商业环境中,代币可以用金钱交换,以补偿用户在执行本地训练和为 FL 过程提供有用的模型更新方面所做的努力。在其他用例中,代币可以交换为其他服务,例如访问下载和使用补充机器学习 (ML) 模型。或者,令牌的缺乏可能被视为行为不端或效率低下的用户的指示,因此可能被用来禁止他们进一步参与联邦学习过程。

0x06 智能合约功能

本节讨论应在智能合约中至少实现的功能,以支持上一节中讨论的工作流。

第一个功能负责让参与用户在第一轮训练阶段获得最新的模型版本。该函数定义为 GetLatestModelParameters(),查询账本并返回与最新模型版本对应的多维权重表。该函数由每个参与用户调用一次。然而,由于只对分类帐执行简单的查询,我们预计计算要求会很低。

下面的图 1 显示了在训练轮的早期阶段(模型权重的下载)用户、智能合约和分布式账本之间的交互。

 图 1. 用户、智能合约和分布式账本之间的交互——当前模型版本的请求(模型权重)

需要第二个智能合约函数 SubmitModelWeights(weights) 来促进训练轮第二步的功能(即当训练轮处于活动状态时)。执行时,它将接收来自用户的模型更新作为输入(以权重的形式),然后运行验证算法,最后将贡献存储到分类帐中。我们将上述函数中的“权重”定义为模型权重的多维表,对应于个人贡献。该函数也由用户调用,可选择返回验证算法得出的贡献评估结果。考虑了两种将贡献存储到分类帐的方法。第一种方法只涉及存储成功的贡献,即那些提高模型准确性的贡献。另一种选择是将所有贡献与度量(由验证算法导出)一起存储。根据具体的用例,我们可以选择第一种方法,因为它提供性能优势(因为分类账的编写频率较低),或者第二种方法提供更高的可审计性。在这两种情况下,预计将需要适量的计算资源,因为该函数由每个参与用户调用,调用外部 CPU 密集型 ML 验证库,并且预计会影响分类帐的状态。

下面的图 2 显示了在用户提交模型更新期间用户、智能合约和分布式账本之间的交互。

 图 2. 用户、智能合约和分布式账本之间的交互——模型权重的提交(用户贡献)

需要最后一个函数 CalculateNextModelVersion() 才能创建下一个模型版本,并通过这样做结束当前的训练轮次。与前两个函数不同,它不是由最终用户调用的。出于这个原因,应该创建一个外部触发器,如上一节所述。下一个模型版本是通过对账本中保存的贡献执行联合平均来创建的。生成的多维矩阵存储在分类帐中,以便在下一轮训练中使用。尽管此函数写入账本,但每轮训练只调用一次。除了它使用简单的数学矩阵计算这一事实外,预计不需要很多计算资源。

下面的图 3 说明了在创建下一个模型版本期间智能合约和分布式账本之间的交互。

 图 3. 智能合约和分布式账本之间的交互以创建下一个模型版本(训练轮结束)

下表总结了用于预测资源需求的智能合约功能的特征。 TR 表示训练回合。

 

表 I. 功能的资源需求

函数 属性

执行频率

是否更改帐本

预计所需资源

GetLatestModelParam
eters
once per user 
per
SubmitModelWeights  once per user 
per
CalculateNextModelV
ersion
once per

0x07 分布式账本操作和数据结构

所提出的架构图基于键值对数据库的概念。这种类型被 HyperLedger Fabric (HLF) 用作状态数据库。智能合约操作用于读取或写入数据库的当前状态。每个账本交易将在账本中创建、更新或删除(并因此修改)键值对。然而,由于 HLF 属于区块链家族,一个不可变的区块序列包含所有影响数据库当前状态的交易。账本的副本会传播给所有网络成员。

 

 下表总结了联邦学习过程的操作以及记录奖励所需的最低限度的键值对。下面的键“身份”是指数组值。例如,我们将为每个参与用户提供一个 ModelUpdate 和 Reward 变量的键值对。

Key Value
ModelWeights 

包含当前模型版本权重的多维矩阵

ModelUpdate(identity)

包含权重的多维矩阵(每个 [identity] 一个)

Reward(identity)

价值与用户贡献的数量/质量成正比(每个[identity]一个)

 

0x08 结论和未来工作

本文提出的解决方案描述了如何以独特的方式使用私有区块链网络来支持 FL 流程。它通过在多个节点之间执行的智能合约中运行验证算法来提高信任和安全性。网络可以配置为要求一定比例的节点之间达成共识。

 在未来,我们打算使用以下工具和技术来实施该解决方案:a)HyperLedger Fabric,b)验证更新和提供奖励的算法 [7] 和 c)Tensorflow(开源机器学习工具)。感兴趣的领域包括 i) 在智能合约中运行机器学习库的可行性,ii) 当验证算法的结果在节点之间不完全相同时(例如舍入误差)对共识的影响,iii) 施加的性能开销通过区块链网络,iv) 不同设计选择对性能的影响(例如,记录对分类帐的所有贡献与仅记录有用的贡献,v) 解决方案的硬件(计算、内存)要求规范。

 

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

【论文笔记05】在智能合约中执行联合学习过程 的相关文章

  • Javaweb

    一 创建包和类来编译servlet程序 二 编译和运行
  • 如何在老版本浏览器中丝滑地使用JS新特性(ES6)

    如何在老版本浏览器中丝滑地使用JS新特性呢 如何在老版本浏览器中丝滑地使用JS新特性呢 有两种方法可以帮助我们实现 第一种方法就是我们用JS原有的方法 自己去实现JS的新特性 不是说好的丝滑使用新特性吗 就这 哈哈哈 别急 客官留步 我还有
  • spring boot 数据库层

    项目开启 首先设计数据库以及存储表 表的联系 需要存贮的信息 基本表的性质 基本表与中间表 临时表不同 因为它具有如下四个特性 1 原子性 基本表中的字段是不可再分解的 2 原始性 基本表中的记录是原始数据 基础数据 的记录 3 演绎性 由
  • openid和unionid的区别

    openid和unionid的区别 1 微信openid和unionid长度是不一样的 openid 28 unionid 29 2 openid同一用户同一应用唯一 unionid同一用户不同应用唯一 这里的不同应用是指在同一微信开发平台
  • C++学习6

    堆 是存在于某个作用域的一个内存空间 例如 当你调用函数 函数本身会形成一个栈用来放置它所接收的参数 以及返回地址 栈 由操作系统提供的一个全局的内存空间 程序可动态分配 内存管理 生命周期 栈对象 离开堆的作用域 会调用对象的析构函数 内

随机推荐

  • rabbitmq分布式事务解决方案

    发送消息到mq 流程 用户下订单创建订单信息 且创建一条订单冗余信息 status 为 0 发送订单信息到mq 使用ack 消息确认机制 确认消息发送成功修改订单状态为 1 表示消息已发送 启动一个定时任务 排查 订单状态为 0 的订单 发
  • Win2003搭建网站教程

    1 搭建Win2003虚拟机 此过程略 2 开始 管理您的服务器 添加或删除角色 3 下一步 配置您的服务器向导 选择应用程序服务器 IIS asp NET 下一步 完成安装 4 打开 开始 管理工具 Internet信息服务器 IIS 管
  • 使用certbot 生成 Let‘s Encrypt 泛域名ssl证书

    文章目录 一 更新证书报错 二 Let s Encrypt 泛域名ssl证书申请 一 更新证书报错 问题描述 更新SSL证书时报 too many failed authorizations 错误 原因分析 当前要更新的域名一个小时触发失败
  • 扫码支付终结刷脸支付强势掘起

    手机支付将会終结 新的支付方式掘起 新的支付方式对很多人还是很陌生的 这就要很好的推广和布置 现在推出了二代的蜻蜓刷脸设备 向商户销售出了舒缓的二代蜻蜓刷脸支付设备 超市 快餐厅 自动贩卖机都已经实现商业直播 相信很快在每个城市 都会发现这
  • 快速排序详解

    近些天来 由于需要找工作 特将数据机构与算法中的快速排序温习总结了一下 希望对于大家学习有所帮助 首先 快速排序的基本思想是基于分治的思想 是冒泡排序的改进型 首先在数组中选择一个基准点 该基准点的选取可能影响快速排序的效率 后面讲解选取的
  • Git提交代码的两种方式

    一 Git Bash提交方式 在电脑桌面鼠标右键点击一下 然后点击Git Bash Here 开始输入命令 1 首次提交 先输入github gitlab等的用户名和邮箱 git命令 git config global user name
  • 【Altium Designer21】使用小技巧

    1 如何取消原理图的网格以及表头如下图 在Properties Visible Grid可以显示 隐藏网格 Title Block勾选上即显示表头 取消勾选即隐藏表头 图1 图2 图3 2 翻转的快捷键 空格 为90翻转 X 为水平翻转 Y
  • Eclipse 启动异常 找不到Java环境(A Java Runtime Environment....)

    点击启动Eclipse弹出异常消息 解决步骤 1 打开eclipse所在文件夹 2 用记事本打开配置文件 即下图的文件 3 找到java所在文件夹 4 复制路径并粘贴到记事本文件中 5 保存并重启Eclipse 大功告成
  • [算法]力扣刷题-动态规划 - 不同路径

    目录 题目 思路 编码 分析 修改 优化 题目 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 问总共有多少条不同
  • Junit的基本使用(详解)

    什么是Junit Junit是xUnit的一个子集 在c paython java语言中测试框架的名字都不相同 xUnit是一套基于测试驱动开发的测试框架 其中的断言机制 将程序预期的结果与程序运行的最终结果进行比对 确保对结果的可预知性
  • Java代码质量检查工具及使用案例

    前言 在现在的软件开发中 由于软件的复杂度越来越高 业务也覆盖很广 各个业务模块业务错综复杂 这样就需要我们需要团队开发 在我们团队中开发人员的经验 代码风格样式都不一致 以及缺乏统一的标准 从而导致我们的整个项目的的代码难以阅读 不便于后
  • 顺序表实现图书管理系统增删改查

    顺序表学习 这个程序是用于学习数据结构而参考数据结构C语言第二版的教材实现的一个简易的图书管理系统 逻辑结构 顺序表 线性表的顺序存储又称作顺序表 由一组地址连续的存储单元依次存储线性表的数据元素 从而使得逻辑上相邻的两个元素在物理位置上也
  • 浅谈中断挂起与中断标志的区别

    中断挂起 如果中断发生时 正在处理同级或高优先级异常 或者被掩蔽 则中断不能立即得到响应 此时中断被悬起 悬挂意味着等待而不是舍去 当优先级高的或者同等级先发生的中断完成后 被挂起的中断才会执行 中断的悬起状态可以通过 中断设置悬起寄存器
  • STM32学习之ADC(模拟数字转换器)

    目录 ADC的定义及其类型 ADC 单通道独立规则模式 对于该模式的理解 通道及ADC分配 时钟配置 GPIO配置 ADC模式配置 校准 读取ADC 代码 野火的开源代码 由于大二学生一枚 水平有限 文中自己的理解难免出错 恳请道友发现后能
  • 【面试题】封装/继承/多态

    面向对象 C语言是面向过程的 关注的是过程 分析出求解问题的步骤 通过函数调用逐步解决问题 C 是基于面向对象的 关注的是对象 将一件事情拆分成不同对象 靠对象之间的交互完成 面向对象程序设计 Object oriented program
  • 算法帝国:华尔街交易怪兽的核武器缔造史

    这是一段通俗的读物 更是一段算法交易的历史钩沉 华尔街的每个角落逐渐被算法所侵蚀 思考者 依然还是拖着额头 但却不得不接受未来的现实 1980年华尔街的黑客生涯 天时地利 20世纪70年代末期 算法开始进入人们的工作 这一趋势席卷了世界各地
  • 小程序WXML,WXSS与原生HTML,CSS,JS之间的区别

    一 WXML 的概念以及和 HTML 之间的区别 1 什么是 WXML WXML WeiXin Markup Language 是框架设计的一套标签语言 组件 用来构建小程序页面的结构 其作用类似于网页开发中的 HTML 2 WXML 和
  • 项目上线后首次加载慢的解决方案

    1 使用路由懒加载 开发时尽量使用路由懒加载 component resolve gt require 放入需要加载的路由地址 resolve 2 使用gzip压缩 最高效 至少压缩一倍 npm install save dev compr
  • Open3D 点云快速欧式聚类(python详细过程版)

    目录 一 算法原理 1 论文概述 2 实现流程 3 参考文献 二 代码实现 三 结果展示 四 实验数据 一 算法原理 1 论文概述 从点云数据进行分割在许多应用中都是必不可少的 例如遥感 移动机器人或自动驾驶汽车 然而 三维距离传感器捕获的
  • 【论文笔记05】在智能合约中执行联合学习过程

    原文作者 A R Short H C Leligou and E Theocharis 原文标题 Execution of a Federated Learning process within a smart contract 原文链接