一种基于区块链的分布式联邦学习方法、装置及终端设备

文档序号:26678167发布日期:2021-09-18 00:26阅读:119来源:国知局
一种基于区块链的分布式联邦学习方法、装置及终端设备

1.本技术涉及区块链技术领域,特别涉及一种基于区块链的分布式联邦学习方法、装置及终端设备。


背景技术:

2.在工业4.0的进程中,数据信息的充分利用已经成为了企业推动产业变革的重要力量。但出于隐私保护的考虑以及企业之间的竞争,小公司能够掌握的数据量相对较少,这不利于这些公司在工业4.0进程中的发展。而联邦学习这一技术的出现则一定程度上解决了小公司掌握的数据量较少的问题。即这些公司可以先在本地利用自己的数据进行模型训练,之后将训练后的本地模型上传到中央服务器进行聚合。接着各个公司再从服务器下载聚合后的全局模型并以此为基础继续利用自己的数据进行本地训练,以得到性能更好的全局模型。
3.目标普遍使用的联邦学习框架需要借助一个可信任的中央服务器来协调整个联邦学习过程,也就是说,在传统的联邦学习过程中,参与者会预先选择一个第三方作为中央服务器以协助其完成模型训练过程。但是,中央服务器无法保证完全诚实的,从而使得联邦学习过程存在安全性问题。
4.因而现有技术还有待改进和提高。


技术实现要素:

5.本技术要解决的技术问题在于,针对现有技术的不足,提供一种基于区块链的分布式联邦学习方法、装置及终端设备。
6.为了解决上述技术问题,本技术实施例第一方面提供了一种基于区块链的分布式联邦学习方法,所述的方法包括:
7.确定预先创建的区块链,其中,所述区块链至少包括参考联邦学习的参与者节点以及用于执行联邦学习任务的智能合约;
8.参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数;
9.参与者节点基于所述全局模型参数更新其自身存储的本地网络模型的模型参数,并基于本地训练数据对更新后的本地网络模型进行训练以得到本地模型参数;
10.参与者节点将所述本地模型参数发送至所述智能合约,并通过所述智能合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数;
11.通过智能合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中。
12.所述基于区块链的分布式联邦学习方法,其中,所述区块链还包括联邦学习的请求者节点;所述参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数之前,所述方法还包括:
13.所述请求者节点将全局网络模型存储于预设存储空间,并且在所述智能合约中写入全局网络模型对应的训练参数。
14.所述基于区块链的分布式联邦学习方法,其中,所述参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数具体包括:
15.参与者节点向联邦学习对应的智能合约发送调用交易,通过所述调用交易获取所述智能合约携带的全局网络模型的哈希值;
16.参考者节点根据所述哈希值获取预设存储空间中的全局模型参数。
17.所述基于区块链的分布式联邦学习方法,其中,所述参与者节点将所述本地模型参数发送至所述智能合约,并通过所述智能合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数具体包括:
18.参与这节点将所述本地模型参数发送至所述智能合约;
19.当所述智能合约接收到本地模型参数达到预设阈值时,通过智能合约调用所述区块链中的预编译合约,通过所述编译合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数。
20.所述基于区块链的分布式联邦学习方法,其中,所述智能合约接收到的所有本地模型参数对应的聚合公式为:
[0021][0022]
其中,|d|表示所有参与者节点的所有本地训练数据的数据总量,n表示参与者节点的数量,i表示第i个参与者节点,表示第t轮训练第i个参与者节点的本地模型参数,w
t+1
表示第t轮训练聚合得到的用于作为第t+1轮训练的全局模型参数。
[0023]
所述基于区块链的分布式联邦学习方法,其中,所述通过智能合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中具体包括:
[0024]
通过智能合约调用区块链中的预编译合约,通过所述预编译合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中。
[0025]
所述基于区块链的分布式联邦学习方法,其中,各参与者节点中的本地网络模型的模型结构均与全局网络模型的模型结构相同。
[0026]
本技术实施例第二方面提供了一种基于区块链的分布式联邦学习系统,所述系统包括:
[0027]
确定模块,用于确定预先创建的区块链,其中,所述区块链至少包括参考联邦学习的参与者节点以及用于执行联邦学习任务的智能合约;
[0028]
调用模块,用于控制参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数;
[0029]
训练模块,用于控制参与者节点基于所述全局模型参数更新其自身存储的本地网络模型的模型参数,并基于本地训练数据对更新后的本地网络模型进行训练以得到本地模型参数;
[0030]
聚合模块,用于控制参与者节点将所述本地模型参数发送至所述智能合约,并通
过所述智能合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数;
[0031]
奖励模块,用于通过智能合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中。
[0032]
本技术实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的基于区块链的分布式联邦学习方法中的步骤。
[0033]
本技术实施例第四方面提供了一种终端设备,其包括:处理器、存储器及通信总线;所述存储器上存储有可被所述处理器执行的计算机可读程序;
[0034]
所述通信总线实现处理器和存储器之间的连接通信;
[0035]
所述处理器执行所述计算机可读程序时实现如上任一所述的基于区块链的分布式联邦学习方法中的步骤。
[0036]
有益效果:与现有技术相比,本技术提供了一种基于区块链的分布式联邦学习方法、装置及终端设备,所述的方法包括:确定预先创建的区块链;参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数;参与者节点基于所述全局模型参数更新其自身存储的本地网络模型的模型参数,并基于本地训练数据对更新后的本地网络模型进行训练以得到本地模型参数;参与者节点将所述本地模型参数发送至所述智能合约,并通过所述智能合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数;通过智能合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中。本技术通过使用区块链上的智能合约来实现传统联邦学习中的中央服务器的功能,从而使用能够进行可信计算的智能合约来代替联邦学习中的中央服务器,可以解决联邦学习中的中央服务器不可信的问题。
附图说明
[0037]
为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员而言,在不符创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0038]
图1为本技术提供的基于区块链的分布式联邦学习方法的流程图。
[0039]
图2为本技术提供的基于区块链的分布式联邦学习方法的原理流程图。
[0040]
图3为本技术提供的基于区块链的分布式联邦学习方法的时序流程图。
[0041]
图4为本技术提供的基于区块链的分布式联邦学习装置的结构原理图。
[0042]
图5为本技术提供的终端设备的结构原理图。
具体实施方式
[0043]
本技术提供一种基于区块链的分布式联邦学习方法、装置及终端设备,为使本技术的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本技术进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
[0044]
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
[0045]
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本技术所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
[0046]
具体实现中,本技术实施例中描述的终端设备包括但不限于诸如具有触摸敏感表面(例如,触摸显示屏和/或触摸板)的移动电话,膝上形计算机或平板计算机之类的其他便携式设备。还应该理解的是,在某些实施例中,所述设备并非便携式通讯设备,而是具有触摸敏感表面(例如,触摸显示屏和/或触摸板)的台式计算机。
[0047]
在接下来的讨论中,描述了包括显示器和触摸敏感表面的终端设备。然而,应当理解的是,终端设备还可以包括诸如物理键盘、鼠标和/或控制杆的一个或多个其他物理用户接口设备。
[0048]
终端设备支持各种应用程序,例如以下中的一个或多个:绘图应用程序、演示应用程序、文字处理应用程序、视频会议应用程序、盘刻录应用程序、电子表格应用程序、游戏应用程序、电话应用程序、视频会议应用程序、电子邮件由于程序、即时消息收发应用程序、锻炼支持应用程序、照片管理应用程序、数据相机应用程序、数字摄像机应用程序、web浏览应用程序、数字音乐播放器应用程序和/或数字视频播放应用程序等。
[0049]
可以在终端设备上执行的各种应用程序可以使用诸如触摸敏感表面的至少一个公共物理用户接口设备。可以在应用程序之间和/或相应应用程序内调整和/或改变触摸敏感表面的第一或多个功能以及终端上显示的相应信息。这样,终端的公共物理框架(例如,触摸敏感表面)可以支持具有对用户而言直观且透明的用户界面的各种应用程序。
[0050]
应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0051]
发明人经过研究发现,在工业4.0的进程中,数据信息的充分利用已经成为了企业推动产业变革的重要力量。但出于隐私保护的考虑以及企业之间的竞争,小公司能够掌握的数据量相对较少,这不利于这些公司在工业4.0进程中的发展。而联邦学习这一技术的出现则一定程度上解决了小公司掌握的数据量较少的问题。即这些公司可以先在本地利用自己的数据进行模型训练,之后将训练后的本地模型上传到中央服务器进行聚合。接着各个公司再从服务器下载聚合后的全局模型并以此为基础继续利用自己的数据进行本地训练,以得到性能更好的全局模型。
[0052]
目标普遍使用的联邦学习框架需要借助一个可信任的中央服务器来协调整个联邦学习过程,也就是说,在传统的联邦学习过程中,参与者会预先选择一个第三方作为中央
服务器以协助其完成模型训练过程。但是,中央服务器无法保证完全诚实的,从而使得联邦学习过程存在安全性问题。
[0053]
而区块链作为一种分布式账本数据库,其数据存储在区块中,由区块链节点基于共识机制来共同维护,而不需要中心化的设备和管理机构,节点间也不存在信任问题。每个区块前后相连形成链状结构,通过区块的链状结构与密码学方法,区块链的链上数据具有防篡改,可追溯等特性。然而,目前用于联邦学习的区块链技术主要包括两类,一类是利用区块链技术来实现模型训练报酬的分配;这种方式通过声誉机制或者博弈论等理论来分析各个参与者的所得收益,并将各方的报酬等信息存储到区块链中,通过区块链保证了报酬的透明分配,但这对于联邦学习的中央服务器(即传统联邦学习中的第三方)是否作恶的情况无能为力;另一类是利用区块链来存储分发密钥、哈希等辅助数据,通过密码学和区块链等技术设计一种去掉中央服务器,让参与者来进行模型聚合的机制,但该方法流程过于繁琐且无法保证每个参与者都能够合作地进行模型聚合。
[0054]
基于此,本技术实施例中,确定预先创建的区块链;参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数;参与者节点基于所述全局模型参数更新其自身存储的本地网络模型的模型参数,并基于本地训练数据对更新后的本地网络模型进行训练以得到本地模型参数;参与者节点将所述本地模型参数发送至所述智能合约,并通过所述智能合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数;通过智能合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中。本技术通过使用区块链上的智能合约来实现传统联邦学习中的中央服务器的功能,从而使用能够进行可信计算的智能合约来代替联邦学习中的中央服务器,可以解决联邦学习中的中央服务器不可信的问题。
[0055]
下面结合附图,通过对实施例的描述,对申请内容作进一步说明。
[0056]
本实施例提供了一种基于区块链的分布式联邦学习方法,如图1、图2以及图3所示,所述方法包括:
[0057]
s10、确定预先创建的区块链。
[0058]
具体地,所述区块链为预先建立的,区块链包括用于执行联邦学习任务的智能合约。智能合约作为联邦学习的中心服务器,通过智能合约协调联邦学习过程,智能合约可以进行可信度计算,从而可以采用智能合约作为中心服务器,可以解决中央服务器不可信的问题。在本实施例的一个实现方式中,区块链可以为联盟链,联盟链作为区块链中的一种,其仅允许授权节点加入网络,并且每个区块的生成由所有的预选节点共同决定,这样可以进一步提高联邦学习过程的可靠性。
[0059]
区块链中包括若干参与者节点,若干参与者节点中的各个参与者节点均在各自本地可信执行环境中运行训练过程,基于各自本地存储的本地训练数据通过联邦学习共同训练模型,以完成联邦学习任务。此外,区块链中还可以包括一请求者节点,该请求者节点可以为若干参与者节点中的一节点,也可以是独立于若干参考者节点外的节点,请求者节点用于发起联邦学习任务,并联邦学习对应的智能合约中写入训练参数,并将写入训练参数的智能合约部署到预先建立的区块链以开始联邦学习。
[0060]
基于此,所述参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数之前,所述方法还包括:
[0061]
所述请求者节点将全局网络模型存储于预设存储空间,并且在所述智能合约中写入全局网络模型对应的训练参数。
[0062]
具体地,所述训练参数至少包括全局网络模型的全局模型参数的哈希值,并且在每轮训练完成后,智能合约中的全局模型参数的哈希值会替换为本轮训练得到的全局模型参数的哈希值。可以理解的是,在联邦学习开始之前,请求者节点会确定需要训练的全局网络模型,该全局网络模型作为全局网络模型存储于预设存储空间,将初始网络模型的初始模型参数作为全局模型参数,并将该全局模型参数的哈希值存储于智能合约内,以使得各参与者节点可以通过智能合约获取到全局模型参数的哈希值,并通过该全局模型参数的哈希值在预设存储空间获取到全局模型参数。
[0063]
由此可知,在联邦学习的第一轮训练过程中,全局网络模型的全局模型参数为全局网络模型的初始网络参数,智能合约中存储的哈希值为初始模型参数的哈希值,在非第一轮训练过程中,全局网络模型的全局模型参数为前一轮训练得到的全局模型参数,智能合约中存储的哈希值为前一轮训练得到的全局模型参数的哈希值。这样通过将全局模型参数的哈希值存储于智能合约中,智能合约向所有参与者节点公开,从而所有参与者节点均可以通过智能合约中的哈希值,在预设存储空间获取到全局网络参数。
[0064]
在本实施例的一个实现方式中,训练参数还可以包括待通过联邦学习训练的网络模型的训练条件参数以及参与联邦学习的参与者节点的预设阈值等,其中,训练条件参数可以包括模型学习率、损失函数、训练总轮数以及总奖励等。在第一轮训练过程中,各参与者节点会通过智能合约获取到训练条件参数以及参与联邦学习的参与者节点的预设阈值,以便于训练本地网络模型的训练条件参数,其中,本地网络模型与全局网络模型的模型结构相同,两者不同之处在于本地网络模型的模型参数和全局网络模型的模型参数不同,并且本地网络模型在开始训练之前,会采用通过智能合约获取到全局网络模型更新其自身携带的网络模型。当然,在第一轮训练过程中,或者是在第一轮训练之前,各参与者节点可以通过智能合约在预设存储空间获取到其存储的全局网络模型,并将获取到全局网络模型存储于各参与者节点的本地,以得到各参与者节点各自对应的本地网络模型。
[0065]
s20、参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数。
[0066]
具体地,所述调用交易用于调用智能合约中的训练参数,以获取训练参数中的全局模型参数的哈希值。这样通过参与者与智能合约的交易形式来获取全局模型参数,可以使得全局模型参数获取过程的公开化,同时可以基于该交易计算智能合约的可信程度。
[0067]
在本实施例的一个实现方式中,所述参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数具体包括:
[0068]
参与者节点向联邦学习对应的智能合约发送调用交易,通过所述调用交易获取所述智能合约携带的全局网络模型的哈希值;
[0069]
参考者节点根据所述哈希值获取预设存储空间中的全局模型参数。
[0070]
具体地,预设存储空间可以为ipfs节点,全局网络模型以及全局网络模型对应的全局模型参数可以均存储于ipfs接的你,在参与者节点获取到哈希值后,可以通过哈希值自行从预设存储空间中获取到全局模型参数,这样通过哈希值在预设存储空间获取全局模型参数的方式,可以让参与者节点自己选择更新本地网络模型的模型参数的方式,无需中
心服务器来分发全局模型参数,从而可以通过无中心服务器的方式来实现联邦学习。
[0071]
s30、参与者节点基于所述全局模型参数更新其自身存储的本地网络模型的模型参数,并基于本地训练数据对更新后的本地网络模型进行训练以得到本地模型参数。
[0072]
具体地,所述本地网络模型的模型结构与全局网络模型的模型结构相同,两者的区别之处在于,本地网络模型的模型参数为基于本地训练数据训练得到的本地模型参数,全局网络模型的模型参数为基于前一轮训练中的所有参与者节点训练得到的本地模型参数聚合得到的全局模型参数。当然,在第一轮训练过程中,本地网络模型的模型参数和全局网络模型的模型参数可以均为初始模型参数。
[0073]
本地训练数据为参与者节点所提供的训练数据,参与者节点仅基于其自身存储的本地训练数据对本地网络模型进行训练,其中,本地网络模型配置的模型参数为参与者节点通过智能合约获取到的全局模型参数。此外,联邦学习中的各参与者节点进行知道其自身存储的本地训练数据,并知道不知道除其外的各参与者节点各自存储的本地训练数据,这可以保证各参与者节点各自存储的本地训练数据的保密性。
[0074]
在本实施例的一个实现方式中,参与者节点在获取到全局模型参数,并采用全局模型参数更新其自身存储的本地网络模型的模型参数后,使用其自身存储的本地训练数据来训练更新后的本地网络模型。当经过多次迭代的本地网络模型训练完成后,将训练得到的本地模型参数以交易的形式发送给对应的智能合约。这样参与者节点的个人数据即使保留在本地,也可以进行联邦机器学习训练。在一个具体实现方式中,参与者节点的本地网络模型的模型参数的更新公式以及损失函数可以分别为:
[0075]
参与者节点i的损失函数可以:
[0076]
参与者节点i的本地模型参数的更新公式可以:
[0077]
其中,|d
i
|代表数据集d
i
的数据量大小,f
k
(w)表示某一个数据样本k在全局模型w下的损失函数,w
(t)
表示第t轮次的全局模型参数,表示参与者i在第t+1轮次的本地模型参数,η表示学习率。
[0078]
s40、参与者节点将所述本地模型参数发送至所述智能合约,并通过所述智能合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数。
[0079]
具体地,参与者节点将本地模型参数以交易形成发送给智能合约,以使得智能合约获取到参与者节点训练得到的本地模型参数。智能合约在获取到各参与者节点各自发送的本地模型参数后,可以将接收到所有本地模型参数进行聚合以得到全局模型参数。此外,在获取全局模型参数后,将该全局模型参数存储于预设存储空间,并将智能合约中的全局模型参数的哈希值修改为本轮聚合得到的全局模型参数的哈希值,以使得各参与者节点可以获取到本轮聚合得到的全局模型参数。
[0080]
在本实施例的一个实现方式中,所述参与者节点将所述本地模型参数发送至所述智能合约,并通过所述智能合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数具体包括:
[0081]
参与这节点将所述本地模型参数发送至所述智能合约;
[0082]
当所述智能合约接收到本地模型参数达到预设阈值时,通过智能合约调用所述区
块链中的预编译合约,通过所述编译合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数。
[0083]
具体地,所述预设阈值为预先设置的,为智能合约进行聚合操作的约束条件,其中,当所述智能合约接收到本地模型参数达到预设阈值时,智能合约将接收到所有本地模型参数进行聚合,反之,当所述智能合约接收到本地模型参数未达到预设阈值时,智能合约继续接收参与者节点发送的本地模型参数,直至智能合约接收到本地模型参数达到预设阈值,才会将接收到所有本地模型参数进行聚合。
[0084]
预编译合约为预先存储于区块链中的,用于执行聚合智能合约接收到的所有本地模型参数的操作。预编译合约为一种在客户端用客户端代码实现的函数,执行预编译合约所耗费的gas可以自己按需定义,从而减少通过聚合操作的所需要的gas。采用预编译合约进行聚合操作相对于直接采用智能合约进行聚合操作而言,可以减少聚合操作所耗费的gas,这样由于本地模型参数的聚合操作需要涉及到大量的数据计算以及复杂逻辑运算,而智能合约是根据合约代码的内容来计算gas,在执行涉及到大量的数据计算以及复杂逻辑运算的操作时,会出现效率低以及耗费大量的gas的现象,而预编译合约为在客户端用客户端代码实现的函数,在执行预编译合约时可以按需定义所需gas,从而可以聚合操作所耗费的gas。
[0085]
在本实施例的一个实现方式中,所述智能合约接收到的所有本地模型参数对应的聚合公式为:
[0086][0087]
其中,|d|表示所有参与者节点的所有本地训练数据的数据总量,n表示参与者节点的数量,i表示第i个参与者节点,表示第t轮训练第i个参与者节点的本地模型参数,w
t+1
表示第t轮训练聚合得到的用于作为第t+1轮训练的全局模型参数。
[0088]
s50、通过智能合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中。
[0089]
具体地,在聚合操作结束以及将聚合操作所生成的全局模型参数存储到ipfs之后,该轮次的模型训练结束。此时,智能合约会通过调用预先编写进区块链底层的预编译合约进行各个参与者节点的报酬计算和分配。其中,报酬分配方案可以根据实际所需来确定,例如,根据参与者节点的本地训练数据的数据量大小进行分配,或者是,根据参与者节点的信誉值进行分配,或者是,根据shapley值对参与者节点的贡献进行计算以进行分配等。此外,在完成报酬分配之后,可以进行新一轮次的模型训练过程。
[0090]
基于此,在本实施例的一个实现方式中,所述通过智能合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中具体包括:
[0091]
通过智能合约调用区块链中的预编译合约,通过所述预编译合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中。
[0092]
具体地,所述预编译合约为预先编写进区块链底层的,用于执行各参与者节点的报酬计算以及分配。预编译合约为一种在客户端用客户端代码实现的函数,执行预编译合约所耗费的gas可以自己按需定义,从而减少通过报酬计算的所需要的gas。采用预编译合
约进行报酬计算操作相对于直接采用智能合约进行报酬计算操作而言,可以减少报酬计算操作所耗费的gas,这样由于报酬计算需要涉及到大量的数据计算以及复杂逻辑运算,而智能合约是根据合约代码的内容来计算gas,在执行涉及到大量的数据计算以及复杂逻辑运算的操作时,会出现效率低以及耗费大量的gas的现象,而预编译合约为在客户端用客户端代码实现的函数,在执行预编译合约时可以按需定义所需gas,从而可以计算报酬操作所耗费的gas。此外,值得说明的,用于执行聚合操作的预编译合约和用于执行报酬计算的预编译合约可以相同,也就是说,预编译合约具有聚合操作和报酬计算的功能;或者是,聚合操作和报酬计算操作可以分别对应不用的预编译合约,并且各自对应的预编译合约与各操作相关联,当需要执行聚合操作时,可以选取聚合操作对应的预编译合约;当执行报酬计算操作时,可以选取报酬计算操作对应的预编译合约。
[0093]
综上所述,本实施例提供了一种基于区块链的分布式联邦学习方法,方法包括:确定预先创建的区块链;参与者节点通过智能合约确定全局模型参数,基于全局模型参数更新本地网络模型的模型参数,基于本地训练数据对更新后的本地网络模型进行训练以得到本地模型参数;参与者节点将本地模型参数发送至智能合约,并通过智能合约聚合接收到的所有本地模型参数以更新全局模型参数;通过智能合约确定本轮训练过程中各参与者节点各自对应的奖励资源。本技术通过使用区块链上的智能合约来实现传统联邦学习中的中央服务器的功能,从而使用能够进行可信计算的智能合约来代替联邦学习中的中央服务器,可以解决联邦学习中的中央服务器不可信的问题。
[0094]
基于上述基于区块链的分布式联邦学习方法,本实施例提供了一种基于区块链的分布式联邦学习系统,如图4所示,所述系统包括:
[0095]
确定模块100,用于确定预先创建的区块链,其中,所述区块链至少包括参考联邦学习的参与者节点以及用于执行联邦学习任务的智能合约;
[0096]
调用模块200,用于控制参与者节点向联邦学习对应的智能合约发送调用交易,并通过所述智能合约确定全局网络模型的全局模型参数;
[0097]
训练模块300,用于控制参与者节点基于所述全局模型参数更新其自身存储的本地网络模型的模型参数,并基于本地训练数据对更新后的本地网络模型进行训练以得到本地模型参数;
[0098]
聚合模块400,用于控制参与者节点将所述本地模型参数发送至所述智能合约,并通过所述智能合约聚合所述智能合约接收到的所有本地模型参数,以更新全局网络模型的全局模型参数;
[0099]
奖励模块500,用于通过智能合约确定本轮训练过程中各参与者节点各自对应的奖励资源,并将所述奖励资源写入区块链中。
[0100]
基于上述基于区块链的分布式联邦学习方法,本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的基于区块链的分布式联邦学习方法中的步骤。
[0101]
基于上述基于区块链的分布式联邦学习方法,本技术还提供了一种终端设备,如图5所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(communications interface)23和总线24。其中,处理器20、显示屏21、存
储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的方法。
[0102]
此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
[0103]
存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器20通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。
[0104]
存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,u盘、移动硬盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
[0105]
此外,上述存储介质以及移动终端中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。
[0106]
最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1