区块链模型训练方法、装置、存储介质及电子设备与流程

文档序号:30379344发布日期:2022-06-11 03:07阅读:220来源:国知局
区块链模型训练方法、装置、存储介质及电子设备与流程

1.本公开涉及信息技术领域,具体地,涉及一种区块链模型训练方法、装置、存储介质及电子设备。


背景技术:

2.联邦学习是一种旨在训练高质量的集成模型的机器学习框架,通过这种框架所取得的实验效果与整合多方数据并集中进行建模的效果相差无几。并且,与相关的同类技术相比,联邦学习架构具有不需要昂贵的加密硬件、平台开源等优点。
3.但是,在一些场景中,联邦学习还面临着信息安全方面的挑战。


技术实现要素:

4.本公开的目的是提供一种区块链模型训练方法、装置、存储介质及电子设备,以解决上述相关技术问题。
5.为了实现上述目的,根据本公开实施例的第一方面,提供一种区块链模型训练方法,应用于区块链网络中的目标节点,所述目标节点为区块链节点集合中的任一区块链节点,所述区块链节点集合中的各个区块链节点部署有模型训练智能合约,所述方法包括:
6.从所述区块链网络的区块链中获取当前的全局模型;
7.通过本地的训练样本训练所述全局模型,得到更新模型;
8.向所述区块链节点集合中的,所述模型训练智能合约的背书节点发送模型更新请求,所述模型更新请求包括所述更新模型的模型信息,所述模型更新请求用于请求所述背书节点根据自身的样本数据对所述更新模型进行测试;
9.接收所述背书节点的第一测试结果;
10.根据所述更新模型以及所述第一测试结果更新当前的全局模型。
11.可选地,所述区块链中保存有公开测试集,所述向所述区块链节点集合中的,所述模型训练智能合约的背书节点发送模型更新请求之前,包括:
12.获取所述公开测试集;
13.根据所述公开测试集对所述更新模型进行测试,得到第二测试结果;
14.确定所述第二测试结果满足所述模型训练智能合约中的预设条件。
15.可选地,各所述区块链节点具有预设的节点权重,所述根据所述更新模型以及所述第一测试结果更新当前的全局模型,包括:
16.根据所述第一测试结果,确定各背书节点根据自身的样本数据对所述更新模型测试得到的测试误差率;
17.通过各个背书节点的节点权重以及该背书节点的测试误差率,计算所述更新模型的模型误差率;
18.基于所述模型误差率计算所述更新模型的模型权重;
19.根据所述更新模型以及所述更新模型的模型权重,更新当前的全局模型。
20.可选地,包括:
21.获取所述目标节点的训练样本的数量以及所述区块链节点集合的训练样本总数量;
22.获取训练得到所述更新模型时的训练次数以及预设的总训练次数;
23.根据所述目标节点的训练样本的数量、所述训练样本总数量、训练得到所述更新模型时的训练次数以及总训练次数,计算所述更新模型的模型权重的调整系数;
24.所述根据所述更新模型以及所述更新模型的模型权重,更新当前的全局模型,包括:
25.根据所述更新模型、所述更新模型的模型权重以及所述更新模型的模型权重的调整系数,更新当前的全局模型。
26.可选地,所述通过本地的训练样本训练所述全局模型,得到更新模型,包括:
27.从区块链中获取当前的节点权重参数;
28.通过本地的训练样本以及所述节点权重参数训练所述全局模型,得到更新模型;
29.所述方法还包括:
30.根据所述模型误差率更新当前的节点权重参数;
31.将更新后的节点权重参数保存至所述区块链中。
32.可选地,所述根据所述更新模型以及所述第一测试结果更新当前的全局模型,包括:
33.根据所述第一测试结果,确定所述背书节点根据自身的样本数据对所述更新模型测试得到的测试误差率;
34.在所述测试误差率小于所述模型训练智能合约中的预设误差率的情况下,根据所述更新模型的神经元权重对所述全局模型的神经元权重进行更新。
35.可选地,包括:
36.获取所述目标节点的训练样本的数量以及所述区块链节点集合的训练样本总数量;
37.获取训练得到所述更新模型时的训练次数以及预设的总训练次数;
38.根据所述目标节点的训练样本的数量、所述训练样本总数量、训练得到所述更新模型时的训练次数以及总训练次数,计算所述更新模型的神经元权重的调整系数;
39.所述根据所述更新模型的神经元权重对所述全局模型的神经元权重进行更新,包括:
40.根据所述更新模型的神经元权重以及所述更新模型的神经元权重的调整系数,对所述全局模型的神经元权重进行更新。
41.根据本公开实施例的第二方面,提供一种区块链模型训练装置,应用于区块链网络中的目标节点,所述目标节点为区块链节点集合中的任一区块链节点,所述区块链节点集合中的各个区块链节点部署有模型训练智能合约,所述装置包括:
42.第一获取模块,用于从所述区块链网络的区块链中获取当前的全局模型;
43.第一训练模块,用于通过本地的训练样本训练所述全局模型,得到更新模型;
44.第一发送模块,用于向所述区块链节点集合中的,所述模型训练智能合约的背书节点发送模型更新请求,所述模型更新请求包括所述更新模型的模型信息,所述模型更新
请求用于请求所述背书节点根据自身的样本数据对所述更新模型进行测试;
45.第一接收模块,用于接收所述背书节点的第一测试结果;
46.模型更新模块,用于根据所述更新模型以及所述第一测试结果更新当前的全局模型。
47.可选地,所述区块链中保存有公开测试集,所述装置还包括:
48.第二获取模块,用于在所述第一发送模块向所述区块链节点集合中的,所述模型训练智能合约的背书节点发送模型更新请求之前,获取所述公开测试集;
49.第一测试模块,用于根据所述公开测试集对所述更新模型进行测试,得到第二测试结果;
50.第一确定模块,用于确定所述第二测试结果满足所述模型训练智能合约中的预设条件。
51.可选地,各所述区块链节点具有预设的节点权重,所述模型更新模块,包括:
52.第一确定子模块,用于根据所述第一测试结果,确定各背书节点根据自身的样本数据对所述更新模型测试得到的测试误差率;
53.第一计算子模块,用于通过各个背书节点的节点权重以及该背书节点的测试误差率,计算所述更新模型的模型误差率;
54.第二计算子模块,用于基于所述模型误差率计算所述更新模型的模型权重;
55.第一更新子模块,用于根据所述更新模型以及所述更新模型的模型权重,更新当前的全局模型。
56.可选地,所述装置包括:
57.第三获取模块,用于获取所述目标节点的训练样本的数量以及所述区块链节点集合的训练样本总数量;
58.第四获取模块,用于获取训练得到所述更新模型时的训练次数以及预设的总训练次数;
59.第一计算模块,用于根据所述目标节点的训练样本的数量、所述训练样本总数量、训练得到所述更新模型时的训练次数以及总训练次数,计算所述更新模型的模型权重的调整系数;
60.所述第一更新子模块,包括:
61.第一更新子单元,用于根据所述更新模型、所述更新模型的模型权重以及所述更新模型的模型权重的调整系数,更新当前的全局模型。
62.可选地,所述第一训练模块,包括:
63.第一获取子模块,用于从区块链中获取当前的节点权重参数;
64.第一训练子模块,用于通过本地的训练样本以及所述节点权重参数训练所述全局模型,得到更新模型;
65.所述装置还包括:
66.参数更新模块,用于根据所述模型误差率更新当前的节点权重参数;
67.数据保存模块,用于将更新后的节点权重参数保存至所述区块链中。
68.可选地,所述模型更新模块,包括:
69.第二确定子模块,用于根据所述第一测试结果,确定所述背书节点根据自身的样
本数据对所述更新模型测试得到的测试误差率;
70.第二更新子模块,用于在所述测试误差率小于所述模型训练智能合约中的预设误差率的情况下,根据所述更新模型的神经元权重对所述全局模型的神经元权重进行更新。
71.可选地,所述装置包括:
72.第五获取模块,用于获取所述目标节点的训练样本的数量以及所述区块链节点集合的训练样本总数量;
73.第六获取模块,用于获取训练得到所述更新模型时的训练次数以及预设的总训练次数;
74.第二计算模块,用于根据所述目标节点的训练样本的数量、所述训练样本总数量、训练得到所述更新模型时的训练次数以及总训练次数,计算所述更新模型的神经元权重的调整系数;
75.所述第二更新子模块,包括:
76.第二更新子单元,用于根据所述更新模型的神经元权重以及所述更新模型的神经元权重的调整系数,对所述全局模型的神经元权重进行更新。
77.根据本公开实施例的第三方面,提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一项所述方法的步骤。
78.根据本公开实施例的第四方面,提供一种电子设备,包括:
79.存储器,其上存储有计算机程序;
80.处理器,用于执行所述存储器中的所述计算机程序,以实现上述第一方面中任一项所述方法的步骤。
81.上述技术方案中,区块链节点集合中的各个区块链节点可以通过部署模型训练智能合约,将全局模型维护在区块链中。在模型训练过程中,所述区块链节点集合中的任一节点可以从区块链中获取当前的全局模型,并根据自身所拥有的训练样本进行训练,得到更新模型。此外,该区块链节点还可以向模型训练智能合约的背书节点发送模型更新请求,以开启模型更新流程。其中,是否更新全局模型由各个背书节点联合决定,从而实现了模型更新过程的去中心化。通过这样的方式,有助于避免模型训练过程中的单点故障问题,并保障训练过程中的信息安全性。
82.此外,各个背书节点可以根据自身的样本数据对更新模型进行测试,得到第一测试结果。这样,在更新全局模型时,还可以参照更新模型的第一测试结果来调整全局模型的更新方式。例如,当第一测试结果表征更新模型的准确率较低时,所述背书节点可以拒绝更新全局模型。通过这样的方式,能够避免参与节点使用假数据或假模型参与训练,从而误导全局模型、或是刺探到其他节点的训练数据。
83.本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
84.附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
85.图1是本公开一示例性实施例所示出的一种联邦学习框架的示意图。
86.图2是本公开一示例性实施例所示出的一种区块链模型训练方法的流程图。
87.图3是本公开一示例性实施例所示出的一种区块链模型训练方法的流程图。
88.图4是本公开一示例性实施例所示出的一种全局模型的更新流程图。
89.图5是本公开一示例性实施例所示出的一种全局模型的更新流程图。
90.图6是本公开一示例性实施例所示出的一种区块链模型训练装置的框图。
91.图7是本公开一示例性实施例所示出的一种电子设备的框图。
具体实施方式
92.以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
93.在介绍本公开的区块链模型训练方法、装置、存储介质及电子设备之前,首先对本公开的应用场景进行介绍。
94.图1是本公开所示出的一种联邦学习框架的示意图,其中,中央服务器负责维护全局模型和相关的参与训练的设备。多个参与训练的设备被称为客户端,各个客户端的地位平等且松散耦合。这里,各个客户端可以拥有自身的训练数据,在训练过程中,客户端可以根据自身的训练数据训练模型,而无需和中央服务器或其他客户端交换自身的训练数据。客户端训练完成之后,中央服务器可以根据各个客户端的训练结果(例如得到的模型梯度参数)来对全局模型进行训练。这种训练方式使得联邦学习框架具有安全合规、涉密数据无需迁移、不泄露隐私信息的优点。
95.值得注意的是,在上述的联邦学习框架中,中央服务器作为数据传输和处理的中枢,具有较高的性能压力,因而可能成为整个框架的性能瓶颈。同时,中央服务器也具备较高的单点故障风险。此外,中央服务器可以用于对客户端的身份进行识别,但无法保证客户端的数据是否可信。当客户端使用假数据参与训练时,就可能刺探其他客户端的隐私或误导整个训练模型。
96.为此,本公开提供一种区块链模型训练方法,应用于区块链网络中的目标节点。这里,目标节点可以为区块链节点集合中的任一区块链节点,所述区块链节点集合中的各个区块链节点部署有模型训练智能合约。在具体实施时,目标节点可以以任何静止或可移动的计算设备的方式呈现,这些计算设备可以是笔记本电脑、台式电脑等等。
97.图2是本公开所示出的一种区块链模型训练方法的流程图,参照图2,所述方法包括:
98.在步骤21中,从区块链网络的区块链中获取当前的全局模型。
99.在步骤22中,通过本地的训练样本训练全局模型,得到更新模型。
100.示例地,目标节点可以从区块链中下载当前的全局模型,并通过本地的训练样本对所述全局模型进行训练,得到更新模型。
101.在一种可能的实施方式中,还可以为所述区块链节点集合中的各个区块链节点设置节点权重。在这种情况下,步骤22可以包括:
102.从区块链中获取当前的节点权重参数;
103.通过本地的训练样本以及所述节点权重参数训练所述全局模型,得到更新模型。
104.作为一种示例,可以在初始化时,将区块链节点1至n的节点权重di初始化为di=ω1,ω2,

,ωn,并保存至区块链中。其中,ωi=1/n,i为区块链节点序号。也就是说,在初
始化时,各个区块链节点的节点权重可以相等。当然,在一些实施场景中,各个区块链节点的节点权重也可以不同,本公开对此不做限制。
105.这样,在步骤22中,目标节点可以获取保存在区块链中的节点权重参数,并根据自身的节点序号确定自身的节点权重,得到目标节点权重。所述目标节点还可以根据所述目标节点权重和本地的训练样本训练所述全局模型。例如,目标节点可以将所述目标节点权重作为本地训练样本(训练集)的权重,从而训练全局模型,得到更新模型。
106.在一种可能的实施方式中,所述区块链中保存有公开测试集。在这种情况下,参照图3所示出的一种区块链模型训练方法的流程图,目标节点在训练得到更新模型之后,还可以:
107.在步骤3中,获取公开测试集。例如,目标节点可以通过模型训练智能合约获取公开测试集的保存地址,从而从区块链中获取到所述公开测试集。
108.获取到公开测试集之后,在步骤4中,根据公开测试集对更新模型进行测试,得到第二测试结果。
109.例如,目标节点可以将所述公开测试集中的测试数据输入至所述更新模型,得到所述更新模型的输出结果。这样,可以根据所述输出结果计算得到第二测试结果,第二测试结果可以包括更新模型的相关指标,如更新模型的准确度、处理速度等。
110.在步骤5中,确定第二测试结果满足模型训练智能合约中的预设条件。
111.这里,预设条件例如可以包括模型准确度阈值、模型处理速度阈值等等。示例地,在预设条件包括模型准确度阈值的情况下,若计算得到的更新模型的准确度大于模型准确度阈值,则可以确定第二测试结果满足模型训练智能合约中的预设条件。
112.也就是说,目标节点在训练得到更新模型之后,可以通过公开测试集对更新模型进行测试。在测试结果表征更新模型满足模型训练智能合约中的预设条件的情况下,目标节点可以开启模型更新流程。通过这样的方式,能够避免不合规的模型进入模型更新流程,有助于减少系统资源开销。
113.值得注意的是,在更新模型通过公开测试集的测试的情况下,所述更新模型仍可能是不合格的,比如,更新模型可能存在过拟合风险。
114.因此,目标节点可以在步骤23中,向区块链节点集合中的,模型训练智能合约的背书节点发送模型更新请求。
115.这里,背书节点可以基于应用需求进行设置。背书节点可以包括所述区块链节点集合中的全部区块链节点,也可以包括所述区块链节点集合中的部分区块链节点。
116.所述模型更新请求包括所述更新模型的模型信息,如更新模型本身或是更新模型的参数等等。所述模型更新请求用于请求所述背书节点根据自身的样本数据对所述更新模型进行测试。
117.示例地,背书节点在接收到所述模型更新请求之后,可以根据所述模型信息确定更新模型。这样,背书节点可以通过自身拥有的样本数据对所述更新模型进行测试。例如,当全局模型为分类模型时,背书节点可以根据自身的样本数据对所述更新模型的分类误差率、分类速度等指标进行测试,从而得到第一测试结果。
118.在步骤24中,接收背书节点的第一测试结果。
119.在步骤25中,根据更新模型以及第一测试结果更新当前的全局模型。
120.上述技术方案中,区块链节点集合中的各个区块链节点可以通过部署模型训练智能合约,将全局模型维护在区块链中。在模型训练过程中,所述区块链节点集合中的任一节点可以从区块链中获取当前的全局模型,并根据自身所拥有的训练样本进行训练,得到更新模型。此外,该区块链节点还可以向模型训练智能合约的背书节点发送模型更新请求,以开启模型更新流程。其中,是否更新全局模型由各个背书节点联合决定,从而实现了模型更新过程的去中心化。通过这样的方式,有助于避免模型训练过程中的单点故障问题,并保障训练过程中的信息安全性。
121.此外,各个背书节点可以根据自身的样本数据对更新模型进行测试,得到第一测试结果。这样,在更新全局模型时,还可以参照更新模型的第一测试结果来调整全局模型的更新方式。例如,当第一测试结果表征更新模型的准确率较低时,所述背书节点可以拒绝更新全局模型。通过这样的方式,能够避免参与节点使用假数据或假模型参与训练,从而误导全局模型、或是刺探到其他节点的训练数据。此外,本方案通过模型训练智能合约进行模型更新的方式,也使得全局模型的更新条件、更新过程公开透明,便于监管。
122.以下对全局模型的更新方式进行说明。在一种可能的实施方式中,全局模型可以通过横向联邦学习的方式构建得到,其中各所述区块链节点具有预设的节点权重,在这种情况下,参照图4所示出的一种全局模型的更新流程图,步骤25包括:
123.在步骤251中,根据第一测试结果,确定各背书节点根据自身的样本数据对更新模型测试得到的测试误差率。
124.作为一种示例,目标节点可以在训练轮次k通过自身的训练样本(xi,yi)训练得到弱分类器gk(xi),其中k=1,2,3

这样,在步骤251中,目标节点可以根据第一测试结果,确定背书节点j根据自身的样本数据(xj,yj)对弱分类器gk(xi)测试得到的测试误差率pj(gk(xj)≠yj)。这里,j为背书节点序号,j=1,2,3

所述测试误差率可以用于描述所述弱分类器gk(xi)对所述背书节点j的训练样本的分类误差率。
125.在步骤252中,通过各个背书节点的节点权重以及该背书节点的测试误差率,计算更新模型的模型误差率。
126.沿用上述示例,弱分类器gk(xi)的模型误差率ek可以为:
[0127][0128]
其中,n为背书节点的数量,ωj为第j个背书节点的节点权重。
[0129]
在步骤253中,基于模型误差率计算更新模型的模型权重。
[0130]
示例地,弱分类器gk(xi)的模型权重αk可以为:
[0131][0132]
也就是说,可以将模型误差率较小的弱分类器的模型权重系数设置的较大,从而提升全局模型的准确度。
[0133]
在步骤254中,根据更新模型以及更新模型的模型权重,更新当前的全局模型。
[0134]
沿用上述例子,可以根据弱分类器gk(xi)构建得到全局模型,在这里的示例中即为强分类器f(x):
[0135][0136]
其中,sign()为符号函数,n为区块链节点的数量,k为训练轮次,gkxi为第k轮训练得到的弱分类器。
[0137]
采用上述技术方案,能够兼容横向联邦学习的需求,从而解决样本数量较少的问题。
[0138]
需要注意的是,在横向联邦学习场景中,训练数据质量可以取决于训练样本数量。而上述全局模型中,模型学习率为线性变化,因此可能出现训练样本数量较多的区块链节点主导全局模型的现象,即训练样本数量越多的区块链节点对全局模型的影响力越大。在这种情况下,联邦学习过程中可能无法关注到训练样本数量相对较少的区块链节点的训练结果,从而丢失了联邦学习能够结合各个客户端的数据进行训练的优势。
[0139]
为此,在一种可能的实施方式中,本公开的区块链模型训练方法还包括:
[0140]
获取所述目标节点的训练样本的数量以及所述区块链节点集合的训练样本总数量;
[0141]
获取训练得到所述更新模型时的训练次数以及预设的总训练次数;
[0142]
根据所述目标节点的训练样本的数量、所述训练样本总数量、训练得到所述更新模型时的训练次数以及总训练次数,计算所述更新模型的模型权重的调整系数。
[0143]
沿用图4的例子,可以通过如下计算式计算所述更新模型的模型权重的调整系数βi:
[0144]
βi=(目标节点的训练样本的数量/样本总数量)*e^(-2*训练得到所述更新模型时的训练次数k/预设的总训练次数k
max
)。
[0145]
在这种情况下,根据更新模型以及更新模型的模型权重,更新当前的全局模型(步骤254),包括:
[0146]
根据所述更新模型、所述更新模型的模型权重以及所述更新模型的模型权重的调整系数,更新当前的全局模型。
[0147]
作为一种示例,更新得到的全局模型f(x)可以为:
[0148][0149]
上述技术方案通过引入更新模型的模型权重的调整系数,从而实现了模型更新权重随训练次数和训练样本数量动态变化的效果。这样,在更新全局模型时,样本数量较多的区块链节点能够对全局模型有较高的影响力。同时,这样的方式也避免了样本数量较多的区块链节点主导全局模型的现象,有助于提升全局模型的准确度。
[0150]
此外,在计算得到模型误差率ek之后,还可以对各个节点的权重分布进行更新。在这种情况下,所述方法还可以包括:
[0151]
根据所述模型误差率更新当前的节点权重参数;
[0152]
将更新后的节点权重参数保存至所述区块链中。
[0153]
示例地,可以通过如下计算更新节点权重参数:
[0154]
[0155]
即,根据当前节点的节点权重ωk对下一节点的权重ω
k+1
进行更新。在更新之后,还可以将更新的节点权重参数保存至区块链中。
[0156]
在一种可能的实施方式中,全局模型可以通过纵向联邦学习的方式构建得到,在这种情况下,参照图5所示出的一种全局模型的更新流程图,步骤25包括:
[0157]
在步骤255中,根据第一测试结果,确定背书节点根据自身的样本数据对更新模型测试得到的测试误差率;
[0158]
在步骤256中,在测试误差率小于模型训练智能合约中的预设误差率的情况下,根据更新模型的神经元权重对全局模型的神经元权重进行更新。
[0159]
例如在一些实施场景中,第一测试结果可以包括各个背书节点根据自身的样本数据对更新模型测试得到的测试误差率。在这种情况下,目标节点可以对各个背书节点测试得到的测试误差率进行统计,并确定测试误差率小于预设阈值的背书节点占所有背书节点的比例a。当比例a大于模型训练智能合约中的预设误差率的情况下,则可以根据所述更新模型的神经元权重对全局模型的神经元权重进行更新。
[0160]
采用上述技术方案,能够兼容纵向联邦学习的需求,从而解决样本特征维度较少的问题。
[0161]
需要注意的是,在纵向联邦学习场景中,训练数据质量可以取决于训练样本的特征维度。而上述当模型学习率为线性变化时,上述技术方案可能出现训练样本特征维度较多的区块链节点主导全局模型的现象,即训练样本特征维度越多的区块链节点对全局模型的影响力越大。在这种情况下,联邦学习过程中可能无法关注到训练样本特征维度相对较少的区块链节点的训练结果。
[0162]
为此,在一种可能的实施方式中,本公开的区块链模型训练方法还包括:
[0163]
获取所述目标节点的训练样本的数量以及所述区块链节点集合的训练样本总数量;
[0164]
获取训练得到所述更新模型时的训练次数以及预设的总训练次数;
[0165]
根据所述目标节点的训练样本的数量、所述训练样本总数量、训练得到所述更新模型时的训练次数以及总训练次数,计算所述更新模型的神经元权重的调整系数。
[0166]
示例地,可以通过如下计算式计算更新模型的神经元权重的调整系数γ:
[0167]
γ=(目标节点的训练样本的数量/样本总数量)*e^(-2*训练得到所述更新模型时的训练次数k/预设的总训练次数k
max
)。
[0168]
在这种情况下,根据更新模型的神经元权重对全局模型的神经元权重进行更新(步骤256),包括:
[0169]
根据所述更新模型的神经元权重以及所述更新模型的神经元权重的调整系数,对所述全局模型的神经元权重进行更新。
[0170]
作为一种示例,可以更新神经元权重为:
[0171]dnew
=γ(d(i)-d
old
)+d
old
[0172]
其中,d
new
为更新后的全局模型的神经元权重,d(i)是第i个区块链节点训练得到的本地神经网络的神经元权重(在上述示例中为目标节点训练得到的更新模型的神经元权重参数),d
old
为更新前的全局模型的神经元权重。
[0173]
上述技术方案通过引入更新模型的神经元权重的调整系数,从而实现了神经元权
重随训练次数和训练样本数量动态变化的效果。这样,在更新全局模型时,样本特征维度较多的区块链节点能够对全局模型有较高的影响力。同时,这样的方式也避免了样本特征维度较多的区块链节点主导全局模型的现象,有助于提升全局模型的准确度。
[0174]
此外值得注意的是,本公开的上述实施例从目标节点的角度对所述区块链模型训练方法进行了示例性说明。但本领域技术人员知晓,目标节点也可以作为模型训练智能合约的背书节点。因此,本公开所涉及的背书节点的步骤也可以执行在所述目标节点中,为了说明书的简洁,本公开对此不再赘述。
[0175]
基于同一发明构思,本公开还提供一种区块链模型训练装置,应用于区块链网络中的目标节点,所述目标节点为区块链节点集合中的任一区块链节点,所述区块链节点集合中的各个区块链节点部署有模型训练智能合约。图6是本公开所示出的一种区块链模型训练装置的框图,参照图6,装置600包括:
[0176]
第一获取模块601,用于从所述区块链网络的区块链中获取当前的全局模型;
[0177]
第一训练模块602,用于通过本地的训练样本训练所述全局模型,得到更新模型;
[0178]
第一发送模块603,用于向所述区块链节点集合中的,所述模型训练智能合约的背书节点发送模型更新请求,所述模型更新请求包括所述更新模型的模型信息,所述模型更新请求用于请求所述背书节点根据自身的样本数据对所述更新模型进行测试;
[0179]
第一接收模块604,用于接收所述背书节点的第一测试结果;
[0180]
模型更新模块605,用于根据所述更新模型以及所述第一测试结果更新当前的全局模型。
[0181]
上述技术方案中,区块链节点集合中的各个区块链节点可以通过部署模型训练智能合约,将全局模型维护在区块链中。在模型训练过程中,所述区块链节点集合中的任一节点可以从区块链中获取当前的全局模型,并根据自身所拥有的训练样本进行训练,得到更新模型。此外,该区块链节点还可以向模型训练智能合约的背书节点发送模型更新请求,以开启模型更新流程。其中,是否更新全局模型由各个背书节点联合决定,从而实现了模型更新过程的去中心化。通过这样的方式,有助于避免模型训练过程中的单点故障问题,并保障训练过程中的信息安全性。
[0182]
此外,各个背书节点可以根据自身的样本数据对更新模型进行测试,得到第一测试结果。这样,在更新全局模型时,还可以参照更新模型的第一测试结果来调整全局模型的更新方式。例如,当第一测试结果表征更新模型的准确率较低时,所述背书节点可以拒绝更新全局模型。通过这样的方式,能够避免参与节点使用假数据或假模型参与训练,从而误导全局模型、或是刺探到其他节点的训练数据。
[0183]
可选地,所述区块链中保存有公开测试集,所述装置还包括:
[0184]
第二获取模块,用于在所述第一发送模块向所述区块链节点集合中的,所述模型训练智能合约的背书节点发送模型更新请求之前,获取所述公开测试集;
[0185]
第一测试模块,用于根据所述公开测试集对所述更新模型进行测试,得到第二测试结果;
[0186]
第一确定模块,用于确定所述第二测试结果满足所述模型训练智能合约中的预设条件。
[0187]
可选地,各所述区块链节点具有预设的节点权重,所述模型更新模块,包括:
[0188]
第一确定子模块,用于根据所述第一测试结果,确定各背书节点根据自身的样本数据对所述更新模型测试得到的测试误差率;
[0189]
第一计算子模块,用于通过各个背书节点的节点权重以及该背书节点的测试误差率,计算所述更新模型的模型误差率;
[0190]
第二计算子模块,用于基于所述模型误差率计算所述更新模型的模型权重;
[0191]
第一更新子模块,用于根据所述更新模型以及所述更新模型的模型权重,更新当前的全局模型。
[0192]
可选地,所述装置包括:
[0193]
第三获取模块,用于获取所述目标节点的训练样本的数量以及所述区块链节点集合的训练样本总数量;
[0194]
第四获取模块,用于获取训练得到所述更新模型时的训练次数以及预设的总训练次数;
[0195]
第一计算模块,用于根据所述目标节点的训练样本的数量、所述训练样本总数量、训练得到所述更新模型时的训练次数以及总训练次数,计算所述更新模型的模型权重的调整系数;
[0196]
所述第一更新子模块,包括:
[0197]
第一更新子单元,用于根据所述更新模型、所述更新模型的模型权重以及所述更新模型的模型权重的调整系数,更新当前的全局模型。
[0198]
可选地,所述第一训练模块,包括:
[0199]
第一获取子模块,用于从区块链中获取当前的节点权重参数;
[0200]
第一训练子模块,用于通过本地的训练样本以及所述节点权重参数训练所述全局模型,得到更新模型;
[0201]
所述装置还包括:
[0202]
参数更新模块,用于根据所述模型误差率更新当前的节点权重参数;
[0203]
数据保存模块,用于将更新后的节点权重参数保存至所述区块链中。
[0204]
可选地,所述模型更新模块,包括:
[0205]
第二确定子模块,用于根据所述第一测试结果,确定所述背书节点根据自身的样本数据对所述更新模型测试得到的测试误差率;
[0206]
第二更新子模块,用于在所述测试误差率小于所述模型训练智能合约中的预设误差率的情况下,根据所述更新模型的神经元权重对所述全局模型的神经元权重进行更新。
[0207]
可选地,所述装置包括:
[0208]
第五获取模块,用于获取所述目标节点的训练样本的数量以及所述区块链节点集合的训练样本总数量;
[0209]
第六获取模块,用于获取训练得到所述更新模型时的训练次数以及预设的总训练次数;
[0210]
第二计算模块,用于根据所述目标节点的训练样本的数量、所述训练样本总数量、训练得到所述更新模型时的训练次数以及总训练次数,计算所述更新模型的神经元权重的调整系数;
[0211]
所述第二更新子模块,包括:
[0212]
第二更新子单元,用于根据所述更新模型的神经元权重以及所述更新模型的神经元权重的调整系数,对所述全局模型的神经元权重进行更新。
[0213]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0214]
本公开还提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开所提供的区块链模型训练方法的步骤。
[0215]
本公开还提供一种电子设备,包括:
[0216]
存储器,其上存储有计算机程序;
[0217]
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开所提供的区块链模型训练方法的步骤。
[0218]
图7是根据一示例性实施例示出的一种电子设备700的框图。如图7所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(i/o)接口704,以及通信组件705中的一者或多者。
[0219]
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的区块链模型训练方法中的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,简称sram),电可擦除可编程只读存储器(electrically erasable programmable read-only memory,简称eeprom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),可编程只读存储器(programmable read-only memory,简称prom),只读存储器(read-only memory,简称rom),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(near field communication,简称nfc),2g、3g、4g、nb-iot、emtc、或其他5g等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件705可以包括:wi-fi模块,蓝牙模块,nfc模块等等。
[0220]
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(application specific integrated circuit,简称asic)、数字信号处理器(digital signal processor,简称dsp)、数字信号处理设备(digital signal processing device,简称dspd)、可编程逻辑器件(programmable logic device,简称pld)、现场可编程门阵列(field programmable gate array,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的区块链模型训练方法。
[0221]
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该
程序指令被处理器执行时实现上述的区块链模型训练方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的区块链模型训练方法。
[0222]
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的区块链模型训练方法的代码部分。
[0223]
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
[0224]
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
[0225]
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1