掌桥专利:专业的专利平台
掌桥专利
首页

一种基于区块链的联邦学习方法、装置和系统

文献发布时间:2023-06-19 10:54:12


一种基于区块链的联邦学习方法、装置和系统

技术领域

本文件涉及区块链技术领域,尤其涉及一种基于区块链的联邦学习方法、装置和系统。

背景技术

区块链,是利用分布式账本技术解决多方信任问题的去中心化创新性的解决方案,是当前社会的前沿技术。

联邦学习是一种分布式的机器学习范式,可以有效解决数据孤岛问题,让参与方在不共享数据的基础上联合建模,能从技术上打破数据孤岛,实现在机器学习训练模型的协作。

目前在进行联邦学习模型训练时,由于有多方参与,并且提供的训练数据并不是数据明文,无法确保该参与方发布的模型可靠性,且无法避免参与方恶意提供错误数据的行为,导致联邦学习效率得不到保障。

发明内容

本说明书一个或多个实施例的目的是提供一种基于区块链的联邦学习方法、装置和系统,以引入区块链技术实现对联邦学习过程中的模型版本数据存证,来确保发布模型的安全可靠,避免作恶行为,提升联邦学习效率。

为解决上述技术问题,本说明书一个或多个实施例是这样实现的:

第一方面,提出了一种基于区块链的联邦学习方法,应用于参与联邦学习式模型训练的区块链节点,所述方法包括:

第一区块链节点访问区块链,查询是否存储有与本次联邦学习相关的至少一个模型版本数据,其中,每个模型版本数据中至少携带有模型摘要和发布该模型版本的第二区块链节点的第二标识;

如果查询结果为是,则所述第一区块链节点向所有第二标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型;

所述第一区块链节点在对获取到的模型校验成功后,使用本地确定的训练数据进行模型训练,并将训练得到的最新模型的模型版本数据上传至区块链存证,其中,所述训练得到的最新模型包括仅使用本地确定的训练数据训练得到的新模型以及使用本地确定的训练数据对获取到的模型进行训练得到的新模型;

如果查询结果为否,则所述第一区块链节点使用本地确定的训练数据进行模型训练,并将训练得到的模型的模型版本数据上传至区块链存证。

第二方面,提出了一种基于区块链的联邦学习装置,部署有参与联邦学习式模型训练的区块链模块,所述装置包括:

查询模块,访问区块链,查询是否存储有与本次联邦学习相关的至少一个模型版本数据,其中,每个模型版本数据中至少携带有模型摘要和发布该模型版本的第二区块链节点的第二标识;

获取模块,如果查询结果为是,则向所有第二标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型;

训练模块,在校验模块对获取到的模型校验成功后,使用本地确定的训练数据进行模型训练,并将训练得到的最新模型的模型版本数据上传至区块链存证,其中,所述训练得到的最新模型包括仅使用本地确定的训练数据训练得到的新模型以及使用本地确定的训练数据对获取到的模型进行训练得到的新模型;

所述训练模块,如果查询结果为否,则使用本地确定的训练数据进行模型训练,并将训练得到的模型的模型版本数据上传至区块链存证。

第三方面,提出了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行:

访问区块链,查询是否存储有与本次联邦学习相关的至少一个模型版本数据,其中,每个模型版本数据中至少携带有模型摘要和发布该模型版本的第二区块链节点的第二标识;

如果查询结果为是,则向所有第二标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型;

在对获取到的模型校验成功后,使用本地确定的训练数据进行模型训练,并将训练得到的最新模型的模型版本数据上传至区块链存证,其中,所述训练得到的最新模型包括仅使用本地确定的训练数据训练得到的新模型以及使用本地确定的训练数据对获取到的模型进行训练得到的新模型;

如果查询结果为否,则使用本地确定的训练数据进行模型训练,并将训练得到的模型的模型版本数据上传至区块链存证。

第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行:

访问区块链,查询是否存储有与本次联邦学习相关的至少一个模型版本数据,其中,每个模型版本数据中至少携带有模型摘要和发布该模型版本的第二区块链节点的第二标识;

如果查询结果为是,则向所有第二标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型;

在对获取到的模型校验成功后,使用本地确定的训练数据进行模型训练,并将训练得到的最新模型的模型版本数据上传至区块链存证,其中,所述训练得到的最新模型包括仅使用本地确定的训练数据训练得到的新模型以及使用本地确定的训练数据对获取到的模型进行训练得到的新模型;

如果查询结果为否,则使用本地确定的训练数据进行模型训练,并将训练得到的模型的模型版本数据上传至区块链存证。

第五方面,提出了一种基于区块链的联邦学习的系统,包括多个所述的基于区块链的联邦学习装置,以及区块链;其中,所述区块链部署有维护模型版本数据的智能合约。

由以上本说明书一个或多个实施例提供的技术方案可见,在现有的联邦学习的基础上引入区块链技术,并将参与联邦学习的各个节点部署为区块链节点,从而基于区块链上的智能合约对联邦学习的一些重要数据进行链上维护管理,使得模型训练协作过程透明化、可靠化。具体将区块链节点根据本地训练数据训练更新的模型所对应的模型版本数据上链存证,而不需要上传模型本身,仅在需要时直接向发布方请求获取,减少对中心化服务的依赖,减少无效传输。同时,还可以对链上存证的模型评估结果进行核验,震慑并防止参与方的作恶行为。

附图说明

为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对一个或多个实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1a是现在技术中一种交叉验证方案的工作流程图。

图1b是本说明书实施例方案所适用场景架构图。

图2a是本说明书实施例提供的一种基于区块链的联邦学习方法的步骤示意图。

图2b是本说明书实施例提供的一种基于区块链的联邦学习的流程图。

图2c是本说明书实施例提供的机器学习本地模型训练流程图。

图2d是本说明书实施例提供的一种在联邦学习中使用区块链作为可信数据交换证明的流程图。

图3是本说明书的一个实施例提供的一种基于区块链的联邦学习装置的结构示意图。

图4是本说明书的一个实施例提供的电子设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的一个或多个实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。

在此之前,先介绍本说明书实施例可能会涉及的专业术语。

区块链技术:是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

联盟链:是多方维护的区块链,只有参与联盟内的运营者可以写入、读取存放在区块链中的数据。根据联盟共同协商制定的规则控制数据的可见性。

联邦学习:是一种分布式的机器学习范式,可以有效解决数据孤岛问题,让参与方在不共享数据的基础上联合建模,能从技术上打破数据孤岛,实现在机器学习训练模型的协作。

联邦学习可以分为三类:横向联邦学习(Horizontal Federated Learning),纵向联邦学习(Vertical Federated Learning),联邦迁移学习(Federated TransferLearning。

简单来说几种模型的主要区别是:横向联邦模型:用户特征一致,用户不一致;纵向联邦模型:用户一致,用户特征不一致;联邦迁移学习:用户、用户特征均不一致。

横向联邦学习:横向联邦学习也称为特征对齐的联邦学习(Feature-AlignedFederated Learning),即横向联邦学习的参与者的数据特征是对齐的。横向联邦学习适用于有相同特征空间,不同样本空间的数据集场景。例如两个区域银行的用户样本可能差别很大,但是这两家银行的业务是相近的,所以用户样本的特征空间是相同的。横向联邦好处是可联合多个数据提供方,使训练样本量增大,可解决训练数据不平衡问题。

纵向联邦学习:适用于参与者训练样本ID重叠较多,而数据特征重叠较少的情况,例如,同一地区的银行和电商的共同的客户数据,各自的客户数据特征并不相同。联合多个模型训练参与者的共同样本的不同数据特征进行联邦学习,即各个参与者的训练数据是纵向划分的,称为纵向联邦学习。纵向联邦的好处是联合多个数据提供方使训练样本的特征维度增多。

联邦迁移学习:如果两个数据集既不重叠用户特征,又不重叠用户,那么在这个场景下,提出一个新的算法,叫做联邦迁移学习。它可以利用迁移学习的算法,把这两方数据模型的本质挖掘出来,把抽象的模型加以聚合,在聚合的过程中保护用户隐私,也取得了非常大的成功。

交叉验证:在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集。测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。在训练过程中,经常会出现过拟合的问题,就是模型可以很好的匹配训练数据,却不能很好在预测训练集外的数据。如果此时就使用测试数据来调整模型参数,就相当于在训练时已知部分测试数据的信息,会影响最终评估结果的准确性。通常的做法是在训练数据再中分出一部分做为验证数据,用来评估模型的训练效果。

验证数据取自训练数据,但不参与训练,这样可以相对客观的评估模型对于训练集之外数据的匹配程度。模型在验证数据中的评估常用的是交叉验证,又称循环验证,以下简称交叉验证(Cross Validation)为CV。CV的基本思想是把原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。进行交叉验证常用的一种形式是k折交叉验证(k-fold validation),它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(MeanSquared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。图1a展示了k=5时的k-fold方法的工作流程。

这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,防止在训练过程中,出现过拟合的问题,我们可以通过K-Fold训练的训练记录下来较为优异的超参数,然后再以最优模型最优参数进行重新训练,将会取得更优结果。

F1分数:统计学中用来衡量二分类(或多任务二分类)模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率。F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0,值越大意味着模型越好。假如有100个样本,其中1个正样本,99个负样本,如果模型的预测只输出0,那么正确率是99%,这时候用正确率来衡量模型的好坏显然是不对的。

需要说明的是,开始联邦学习的契机是欧盟通过了「数据隐私保护条例」(GeneralData Protection Regulation,简称GDPR)。GDPR认定「个人数据神圣不可侵犯」,要求公司在使用数据前要先向用户声明模型的作用。这份条例的实行让许多大数据公司噤若寒蝉,不敢再互相交流数据,这对于极度依赖数据的机器学习是一个巨大的挑战。

传统机器学习方法最典型的是通过网络去共享具体的样本数据;还有一种是通过加密的移动硬盘去拷贝,相关人员在一个布满摄像头的操作室,也叫安全沙箱里进行建模。但是数据同样会离开本地,还是有一定的安全风险,最重要的是把一个数据拷进去之后,还是要把它解密出来进行建模,相关人员还会知道里面的数据。最后一种是完全服务公开数据,就是人工地分享建模的经验,这对专业人员是可以的,比如医生去分享医疗影像的经验,确实可以从里面去学习。但是对于机器来说,还很难达到一个提升模型效果的能力。

而联邦学习存在几个优势,第一,数据是隔离的,原始的样本数据不会泄露在外部;第二,效果是无损的,也就是说联邦学习跟你把所有的数据明文堆在一起,进行机器学习的效果几乎是一样的;第三,它是对等的,即各个参与方都是对等的;第四,参与方均可以最终获益,就是说你参与联邦学习,双方都可以通过这个模型受益。

本说明书实施例可以借助区块链技术,使得参与训练的各方可组成联盟链,将进行模型训练协作时的数据和参数生成数据数字摘要,并将模型数字摘要存储于区块链上,各方完成对模型数字摘要的共识确认。从而实现各参与方在本地模型创建,以及各参与方通过区块链协同更新模型,保证与模型相关数据安全和数据质量,避免由于作恶导致的各种负面问题。特别注意的是,本实施例中所训练得到的模型不需要放在链上,而是存储在建模本地。模型获取是通过参与方的模型管理服务来获取,当有某个参与节点有需要时,才去找发布模型的节点索要自己需要的模型,这样可以减少无效传输,提升联邦学习的效率。

首先,参照图1b介绍本说明书实施例方案所适用场景架构。应理解,本说明书实施例所涉及的参与节点个数并不做限制,图1b以4个参与节点为例,具体包含节点A、节点B、节点C和节点D。每个节点部署有区块链节点模块(即区块链节点程序),同时,每个节点还配置有模型管理服务,用以将训练得到的模型的相关数字摘要上传区块链,或者,在参与节点之间根据需求传递模型等。各个节点之间还可以通过点对点通讯,同步区块链数据。

下面结合实施例详述说明该联邦学习的过程。

实施例一

参照图2a所示,为本说明书实施例提供的一种基于区块链的联邦学习方法的步骤示意图,该方法主要应用于参与联邦学习式模型训练的区块链节点,所述方法包括:

步骤202:第一区块链节点访问区块链,查询是否存储有与本次联邦学习相关的至少一个模型版本数据,其中,每个模型版本数据中至少携带有模型摘要和发布该模型版本的第二区块链节点的第二标识。

其实,在联邦学习开始之前,参与联邦学习的各个参与方已经通过各自的区块链节点形成联盟链,并且在联盟区块链上约定并部署了与联邦学习相关的一个或多个智能合约。同时,这一个或多个智能合约可以分别对某个联邦学习任务进行维护管理,也可以仅由一个智能合约同时对多个联邦学习任务进行管理。

考虑到模型传输存在不安全以及耗费过多流量资源等问题,本说明书所涉方案中,区块链上不需要存储模型本身,仅存储模型版本数据,而该模型版本数据可简化为模型摘要和标识信息(第二标识)。从而,不需要传输模型,保证模型安全;且仅上传摘要数据和标识信息,简化信息传输体量,提升联邦学习效率。

需要说明的是,为了方便表述各参与节点,本说明书实施例中定义的第一区块链节点,表示当前需要或者正在执行模型训练任务的区块链节点;第二区块链节点,表示当前已完成模型训练任务且上传模型相关数据信息至区块链的区块链节点。因此,当第一区块链节点首次参与本次联邦学习任务时,第一区块链节点和第二区块链节点分别为不同的区块链节点,即如果第一区块链节点为A,那么,第二区块链节点必定为除A以为的B、C等节点个体;当第一区块链节点并非首次参与本次联邦学习任务时(更新训练数据后再次参与模型训练任务),第一区块链节点和第二区块链节点有重合,即如果第一区块链节点为A,那么,第二区块链节点必定包含A以及其它B、C等节点个体。

应理解,一次联邦学习任务可以理解为约定参与本次联邦学习的各个区块链节点依次完成模型训练更新的操作。在步骤202中,在第一区块链节点访问区块链之前,区块链上可能已经存储有多个与联邦学习任务相关的模型版本数据,但是,有可能已存的模型版本数据与本次联邦学习任务并不相关,即有可能是其它联邦学习任务相关的模型版本数据。因此,需要查询确认一下链上是否存证有与本次联邦任务相关的模型版本数据。具体查询确认方式可以基于智能合约实现,例如,根据约定任务标识,或在添加联邦学习任务时在链上建立用于存储模型版本数据的任务数据库。本说明书实施例并不对查询确认方式进行限定。

如果查询结果为是,则执行步骤204,如果查询结果为否,则执行步骤208。

步骤204:所述第一区块链节点向所有第二标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型。

在查询结果为是的情况下,确定在此之前已经有区块链节点参与本次联邦学习的模型训练操作,并训练存证有在先模型。此时,第一区块链节点希望更新在先模型,通过区块链上存证的模型版本数据,获得第二区块链节点已发布的模型。

可选地,在本说明书实施例中,步骤204可具体包括:

所述第一区块链节点向至少一个第二区块链节点发送模型获取请求,所述模型获取请求携带有所述第一区块链节点的第一标识;

在所述至少一个第二区块链节点基于所述第一标识对所述第一区块链节点的身份验证通过后,获取所述至少一个第二区块链节点在本地训练得到的模型。

其中,第二区块链节点对第一区块链节点进行身份验证时,可以基于接收到的第一标识,从链上查询该第一标识对应的第一区块链节点是否为本次联邦学习的参与方(链上可预存有参与方标识集合),如果有,则确定身份验证通过,否则,身份验证不通过。

需要说明的是,在本说明书实施例中,第一区块链节点在基于从链上获取的模型版本数据等信息,从相应第二区块链节点获取模型时,可以根据自身需求,选择性的从相应第二区块链节点获取模型。例如,选择其中任意一个或N个,N是节点自定义取值范围的正整数,再如,选择评估分值最高的模型。

进一步,所述模型版本数据中还携带有参与该模型训练的训练数据摘要,其中,所述参与该模型训练的训练数据摘要包括:参与本次模型训练的本地训练数据的数字摘要,以及本次模型训练所使用的在先训练得到的模型在训练过程中所使用过的其它区块链节点的训练数据的数字摘要;那么,

如果查询结果为是,则所述第一区块链节点向所有第二标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型,具体包括:所述第一区块链节点基于查询到的模型版本数据中训练数据摘要,选择自身未参与训练的模型版本数据;所述第一区块链节点向选择的模型版本数据中第二标识对应的第二区块链节点获取其在本地训练得到的模型。从而,可以避免由于训练数据重复对模型训练效果的影响。

步骤206:所述第一区块链节点在对获取到的模型校验成功后,使用本地确定的训练数据进行模型训练,并将训练得到的最新模型的模型版本数据上传至区块链存证,其中,所述训练得到的最新模型包括仅使用本地确定的训练数据训练得到的新模型以及使用本地确定的训练数据对获取到的模型进行训练得到的新模型。

在本说明书实施例中,所述第一区块链节点对获取到的模型进行校验时,具体包括:

所述第一区块链节点基于获取到的模型提取模型摘要;

所述第一区块链节点将提取的模型摘要与区块链上存证的同一模型版本的模型摘要进行比对;

如果比对一致,则确定校验成功,否则,校验失败。

在校验成功之后,第一区块链节点可以根据需求,使用本地确定的训练数据基于初始模型(选择的机器学习模型架构)进行模型训练,以及使用本地确定的训练数据对获取到的在先模型进行模型训练,进而将训练得到的最新模型的模型版本数据上链处理。

步骤208:所述第一区块链节点使用本地确定的训练数据进行模型训练,并将训练得到的模型的模型版本数据上传至区块链存证。

在查询结果为否的情况下,第一区块链节点在本地且使用本地确定的训练数据基于初始模型进行模型训练,进而将训练得到的最新模型的模型版本数据上链处理。

其实,无论针对步骤206还是步骤208的情况,在模型训练结束之后,所述方法还包括:所述第一区块链节点使用交叉验证算法对训练得到的模型或最新模型进行模型评估;所述第一区块链节点将评估结果添加到模型版本数据中上链存证。对于模型评估所使用的方法并不限于交叉验证算法,还可以采用其它有效可靠的评估方法。

在本说明书实施例中,对模型进行评估并将评估结果上链存证,主要是为了避免参与方作恶导致后期不利影响。通过模型评估并上链存证,可以在模型评估结束后,对评估结果进行验证:所述第一区块链节点将本次训练得到的最新模型的评估结果与在先模型的评估结果进行比较;如果在先模型的评估结果优于本次训练得到的最新模型的评估结果,则确定本次训练得到的最新模型以及在先模型不可用。

可选地,上述方案中,所述第一区块链节点使用本地确定的训练数据进行模型训练时,可具体包括:

所述第一区块链节点基于联邦迁移学习算法,使用本地确定的训练数据进行模型训练;或者,

所述第一区块链节点基于横向联邦学习算法,使用新增样本的训练数据进行模型训练;或者,

所述第一区块链节点基于纵向联邦学习算法,使用新增特征的训练数据进行模型训练。

接下来,通过具体的实例对本说明书方案进行详述。

参照图2b所示,本次联邦学习的参与方包括:节点A、节点B和节点C。应理解,当有更多参与方加入时,方案实现的原理与之类似。每个节点都部署有区块链节点模块,以及用于提供模型管理服务的模块。事先约定,在节点A、节点B以及节点C的本地样本数据中,都划分好训练数据和测试数据。训练数据用于进行模型训练;测试数据用于对训练得到的模型进行质量评估。

该联邦学习流程包括:

1、节点A使用本地训练数据,训练得到模型(A),并将模型版本数据(a)上链。

节点A使用本地训练数据,在本地进行机器学习训练模型,并使用测试数据对训练得到的模型进行评估,之后,把训练数据的数字摘要,新模型的数字摘要,评估分数(例如把评估结果的F1分数)上链存证;

具体的机器学习本地模型训练流程图参照图2c所示,从数据库中选择样本数据集,将样本数据集划分为训练数据和测试数据,基于训练数据和参数集对使用交叉验证算法对分类器进行训练,找到最佳参数进而训练得到模型,之后,再对训练好的模型进行评估。

2、节点B参与,使用本地训练数据和在先模型(A),训练得到模型(B)和模型(A+B),并将模型版本数据(b)和(a+b)上链。

节点B需要更新模型时,参照图2d所示,通过区块链上的记录,获得A提交最新的版本(由A之前提交的版本)。

(1)向节点A提出模型获取请求,节点A校验身份通过后向节点B返回模型(A);

(2)节点B校验模型(A)的数字摘要是否与区块链上声明的一致;

(3)节点B使用自己本地训练数据或增加样本或增加特征,进行训练;

(4)将训练得到新模型的模型版本数据上链:上传仅使用本地数据训练的模型(B)的模型版本数据(b);上传基于模型(A)训练的新模型(A+B)的模型版本数据(a+b)。从而,可以使用新增的训练数据(即节点B的本地训练数据)基于在先模型进一步优化训练模型。

3、节点C参与,使用本地训练数据和在先模型(A)、在先模型(B)和在先模型(A+B),训练得到模型(C)、模型(A+C)、模型(B+C)、模型(A+B+C)并将模型版本数据(c)、(a+c)、(b+c)、(a+b+c)上链。

节点C需要更新模型时,通过区块链上的记录,可选择用A发布的模型版本(A),或者由B发布的模型版本(B或A+B);重复第2步节点B的过程,获得新模型后,使用自己本地的数据、通过增加样本或增加特征,进行训练。根据测试,将最优的(F1分数最高的),或者将多个(如A+C、B+C、A+B+C)的新模型的模型版本数据上链。

4、节点A再次参与,通过区块链上的记录,发现在链上存在模型(A)、(B)、(C)、(A+B)、(A+C)、(A+B+C)6个模型数字摘要,排查掉自己参与训练过的(A)、(A+B)、(A+C)、(A+B+C),获取(B)、(C)两个模型,使用新的数据集在本地进行训练,分别得到模型(A’)、(B+A’)、(C+A’)3个新模型;提交新模型的模型版本数据(a’)、(b+a’)、(c+a’)。应理解,参与节点训练结束后,可以选择将哪些模型的模型版本数据上链。

至此本次联邦学习结束,当有更多节点参与时,其它节点的处理与上述节点类似,选择除自己发布或参与过的模型以外的模型,优化本地模型。

如此这样,整个联盟网络中不断有多种组合的模型版本数据持续更新和发布到链上,但每一参与方都不知道这个模型具体是使用了哪些样本、哪些特征进行的训练,但可知道模型的组合方式、测试结果,在使用模型时,各参与方可根据自身业务的实际情况,按需选择(例如银行的A可以选择也是通用做银行的B的模型),或者使用自动化的策略,通过程序自动使用最优(F1分数最高的)的模型,来提高系统效率。

通过上述技术方案,在现有的联邦学习的基础上引入区块链技术,并将参与联邦学习的各个节点部署为区块链节点,从而基于区块链上的智能合约对联邦学习的一些重要数据进行链上维护管理,使得模型训练协作过程透明化、可靠化。具体将区块链节点根据本地训练数据训练更新的模型所对应的模型版本数据上链存证,而不需要上传模型本身,仅在需要时直接向发布方请求获取,减少对中心化服务的依赖,减少无效传输。同时,还可以对链上存证的模型评估结果进行核验,震慑或防止参与方的作恶行为。

实施例二

参照图3所示,为本说明书实施例提供的基于区块链的联邦学习装置300,部署有参与联邦学习式模型训练的区块链模块,该装置300可以包括:

查询模块302,访问区块链,查询是否存储有与本次联邦学习相关的至少一个模型版本数据,其中,每个模型版本数据中至少携带有模型摘要和发布该模型版本的第二区块链节点的第二标识;

获取模块304,如果查询结果为是,则向所有第二标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型;

训练模块306,在校验模块308对获取到的模型校验成功后,使用本地确定的训练数据进行模型训练,并将训练得到的最新模型的模型版本数据上传至区块链存证,其中,所述训练得到的最新模型包括仅使用本地确定的训练数据训练得到的新模型以及使用本地确定的训练数据对获取到的模型进行训练得到的新模型;

所述训练模块306,如果查询结果为否,则使用本地确定的训练数据进行模型训练,并将训练得到的模型的模型版本数据上传至区块链存证。

可选地,作为一个实施例,所述获取模块304向所有节点标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型,具体用于:

向至少一个第二区块链节点发送模型获取请求,所述模型获取请求携带有所述第一区块链节点的第一标识;

在所述至少一个第二区块链节点基于所述第一标识对所述第一区块链节点的身份验证通过后,获取所述至少一个第二区块链节点在本地训练得到的模型。

在本说明书实施例的一种具体实现方式中,所述校验模块308对获取到的模型进行校验时,具体用于:

基于获取到的模型提取模型摘要;

将提取的模型摘要与区块链上存证的同一模型版本的模型摘要进行比对;

如果比对一致,则确定校验成功,否则,校验失败。

在本说明书实施例的再一种具体实现方式中,所述装置还包括:

评估模块,用于在模型训练结束之后,使用交叉验证算法对训练得到的模型或最新模型进行模型评估;以及,用于

将评估结果添加到模型版本数据中上链存证。

在本说明书实施例的再一种具体实现方式中,在模型评估结束后,所述评估模块,还用于将本次训练得到的最新模型的评估结果与在先模型的评估结果进行比较;以及,

如果在先模型的评估结果优于本次训练得到的最新模型的评估结果,则确定本次训练得到的最新模型以及在先模型不可用。

在本说明书实施例的再一种具体实现方式中,所述模型版本数据中还携带有参与该模型训练的训练数据摘要,其中,所述参与该模型训练的训练数据摘要包括:参与本次模型训练的本地训练数据的数字摘要,以及本次模型训练所使用的在先训练得到的模型在训练过程中所使用过的其它区块链节点的训练数据的数字摘要;

如果查询结果为是,则所述获取模块304,具体用于:

基于查询到的模型版本数据中训练数据摘要,选择自身未参与训练的模型版本数据;

向选择的模型版本数据中第二标识对应的第二区块链节点获取其在本地训练得到的模型。

在本说明书实施例的再一种具体实现方式中,所述训练模块306在使用本地确定的训练数据进行模型训练时,具体用于:

基于联邦迁移学习算法,使用本地确定的训练数据进行模型训练;或者,

基于横向联邦学习算法,使用新增样本的训练数据进行模型训练;或者,

基于纵向联邦学习算法,使用新增特征的训练数据进行模型训练。

通过上述技术方案,在现有的联邦学习的基础上引入区块链技术,并将参与联邦学习的各个节点部署为区块链节点,从而基于区块链上的智能合约对联邦学习的一些重要数据进行链上维护管理,使得模型训练协作过程透明化、可靠化。具体将区块链节点根据本地训练数据训练更新的模型所对应的模型版本数据上链存证,而不需要上传模型本身,仅在需要时直接向发布方请求获取,减少对中心化服务的依赖,减少无效传输。同时,还可以对链上存证的模型评估结果进行核验,震慑或防止参与方的作恶行为。

实施例三

本说明书还提供了一种基于区块链的联邦学习系统,包括实施例二所述的多个基于区块链的联邦学习装置,以及区块链,所述区块链部署有维护模型版本数据的特定智能合约。这些参与联邦学习的各方可组成联盟链,将进行模型训练协作时的数据和参数生成数据数字摘要,并将模型数字摘要存储于区块链上,各方完成对模型数字摘要的共识确认。从而,通过所述特定智能合约来维护联邦学习过程中的相关模型数据。

通过上述技术方案,在现有的联邦学习的基础上引入区块链技术,并将参与联邦学习的各个节点部署为区块链节点,从而基于区块链上的智能合约对联邦学习的一些重要数据进行链上维护管理,使得模型训练协作过程透明化、可靠化。具体将区块链节点根据本地训练数据训练更新的模型所对应的模型版本数据上链存证,而不需要上传模型本身,仅在需要时直接向发布方请求获取,减少对中心化服务的依赖,减少无效传输。同时,还可以对链上存证的模型评估结果进行核验,震慑或防止参与方的作恶行为。

实施例四

图4是本说明书的一个实施例电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成基于区块链的联邦学习装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

访问区块链,查询是否存储有与本次联邦学习相关的至少一个模型版本数据,其中,每个模型版本数据中至少携带有模型摘要和发布该模型版本的第二区块链节点的第二标识;

如果查询结果为是,则向所有第二标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型;

在对获取到的模型校验成功后,使用本地确定的训练数据进行模型训练,并将训练得到的最新模型的模型版本数据上传至区块链存证,其中,所述训练得到的最新模型包括仅使用本地确定的训练数据训练得到的新模型以及使用本地确定的训练数据对获取到的模型进行训练得到的新模型;

如果查询结果为否,则使用本地确定的训练数据进行模型训练,并将训练得到的模型的模型版本数据上传至区块链存证。

上述如本说明书图2a所示实施例揭示的装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图2a的方法,并实现相应装置在图2a所示实施例的功能,本说明书实施例在此不再赘述。

当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

通过上述技术方案,在现有的联邦学习的基础上引入区块链技术,并将参与联邦学习的各个节点部署为区块链节点,从而基于区块链上的智能合约对联邦学习的一些重要数据进行链上维护管理,使得模型训练协作过程透明化、可靠化。具体将区块链节点根据本地训练数据训练更新的模型所对应的模型版本数据上链存证,而不需要上传模型本身,仅在需要时直接向发布方请求获取,减少对中心化服务的依赖,减少无效传输。同时,还可以对链上存证的模型评估结果进行核验,震慑或防止参与方的作恶行为。

实施例五

本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图2a所示实施例的方法,并具体用于执行以下方法:

访问区块链,查询是否存储有与本次联邦学习相关的至少一个模型版本数据,其中,每个模型版本数据中至少携带有模型摘要和发布该模型版本的第二区块链节点的第二标识;

如果查询结果为是,则向所有第二标识对应的第二区块链节点中至少一个第二区块链节点获取其在本地训练得到的模型;

在对获取到的模型校验成功后,使用本地确定的训练数据进行模型训练,并将训练得到的最新模型的模型版本数据上传至区块链存证,其中,所述训练得到的最新模型包括仅使用本地确定的训练数据训练得到的新模型以及使用本地确定的训练数据对获取到的模型进行训练得到的新模型;

如果查询结果为否,则使用本地确定的训练数据进行模型训练,并将训练得到的模型的模型版本数据上传至区块链存证。

通过上述技术方案,在现有的联邦学习的基础上引入区块链技术,并将参与联邦学习的各个节点部署为区块链节点,从而基于区块链上的智能合约对联邦学习的一些重要数据进行链上维护管理,使得模型训练协作过程透明化、可靠化。具体将区块链节点根据本地训练数据训练更新的模型所对应的模型版本数据上链存证,而不需要上传模型本身,仅在需要时直接向发布方请求获取,减少对中心化服务的依赖,减少无效传输。同时,还可以对链上存证的模型评估结果进行核验,震慑或防止参与方的作恶行为。

总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。

上述一个或多个实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

相关技术
  • 一种基于分层分片区块链的联邦学习方法、系统及装置
  • 一种基于区块链的可信联邦学习方法、系统、装置及介质
技术分类

06120112722234