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

一种基于区块链的联邦学习数据审计系统及方法

文献发布时间:2023-06-19 11:49:09


一种基于区块链的联邦学习数据审计系统及方法

技术领域

本发明涉及区块链技术领域,特别是涉及一种基于区块链的联邦学习数据审计系统及方法。

背景技术

深度学习如今已在计算机视觉、自然语言处理、语音处理等领域取得了巨大的成功,通常情况下,当拥有足够多的训练数据时,深度学习模型可以取得更好的效果。联邦学习中,模型训练方将深度学习任务的模型结构分配到多个终端,由各个终端根据其拥有的本地数据对给定的深度学习模型进行训练,产生梯度并将其上传至聚合节点,得出深度学习模型的聚合梯度以更新训练方的模型。通过这种方法,可以促使多个数据拥有方合作进行同一训练,来缓解深度学习中模型训练方数据不足的问题,但是这种多个数据拥有方合作进行同一训练的方法在梯度交换中可能会存在隐私泄露问题。

为了解决梯度交换中的隐私泄露问题,公开号为CN111552986B的中国专利申请中提出了一种基于区块链的联邦建模方法,其基于区块链的去中心化特点,使用同态加密解决了联邦学习中的梯度隐私泄露问题。然而,该方案中仅审计了训练数据的正确性,鉴于梯度密文数据的实际意义是未知的,联邦学习中应用的同态加密可能导致参与者的恶意行为,若参与方声称上传好梯度,实际却上传差梯度时,将会对梯度接收方造成欺骗,损害联邦学习模型。公开号为CN111797142A的中国专利申请中提供了一种基于区块链上智能合约的实时审计方案,该方案中,审计方可以通过对比数据以验证链上数据的真实可信,但需要一定的交互流程。

综上所述,现有技术联邦学习数据审计方法普遍存在的问题在于:1)密文数据的优劣性难以考察,参与方可能有恶意行为;2)审计过程多为交互过程,给审计带来了较大的工作量。

发明内容

为克服上述现有技术存在的不足,本发明之目的在于提供一种基于区块链的联邦学习数据审计系统及方法,可以非交互地进行数据审计过程,防止恶意行为,使得联邦学习中的任何参与方如果有恶意行为,上传不良的梯度密文,都会在审计过程中被发现,同时,本发明的审计过程无需额外的交互过程,节省了联邦学习的工作量。

为达上述目的,本发明提出一种基于区块链的联邦学习数据审计系统,包括:

模型买家,发布待训练模型参数和训练任务需求至其所拥有的数据交换节点,并在数据交换节点设置若干测试集;当模型买家从某聚合节点获取新的聚合梯度密文,向聚合节点购买联合私钥用于解密聚合梯度密文,得到新梯度用于更新模型;

数据交换节点,存储模型买家提供的待训练模型参数,并设置测试集;在收到计算节点的注册申请后,向计算节点发放多密钥同态加密的公钥和私钥,并在计算节点申请参与训练时发放待训练模型;

若干计算节点,各计算节点经过身份认证后,向数据交换节点注册,获得多密钥同态加密的公钥和私钥,并请求模型参数进行训练,根据获得的模型和自带的本地数据,对获得的模型进行训练,获得梯度,并对本地梯度进行测试,获取本地贡献度,并记录下测试集的标识符;与其他已完成训练且有相同测试集标识符的若干计算节点组成一个集合,并求出该集合的部分子集,根据每个节点的私钥分片计算出该集合及其部分子集对应的联合私钥并在本地保存;使用加密公钥对梯度消息进行同态加密后,将密文、本地贡献度、标识符和联合私钥传输至包含聚合节点的联盟链;

若干聚合节点,收集传输至联盟链的计算节点集合、梯度密文、本地贡献度、测试集标识符和联合私钥,对集合中的所有梯度密文进行同态聚合,使用集合所对应的联合私钥对聚合后的密文进行解密,获得聚合梯度结果;测试聚合梯度贡献度,若数值异常,则计算其若干子集的贡献度,通过多次对比不同子集间的节点差异和贡献度差异,定位异常节点,对异常节点反馈并作惩罚;尝试将获得的计算节点集合及其所有梯度密文、本地贡献度、测试集标识符写入聚合节点内的某一新区块中,当生成新区块后,聚合节点将当前聚合节点上的所有相关的聚合梯度密文发送至模型买家。

优选地,当模型买家获取新的聚合梯度密文,查询密文所对应的参与该密文聚合的计算节点集合,向聚合节点购买对应的联合私钥用于解密聚合梯度密文。

优选地,各计算节点向所述数据交换节点申请参与训练,使用数字签名算法中的私钥对申请报文进行签名以用于身份认证;在获得所述数据交换节点的许可后,从数据交换节点下载待训练的模型,由数据交换节点对计算节点分发多密钥同态加密的加密公钥和解密私钥。

优选地,当计算节点训练完成后,使用本地梯度对当前模型进行更新,从数据交换节点下载某个测试集,测试新模型得到精度结果,将精度作为该梯度的本地贡献度,并记录下测试集的标识符。

优选地,在聚合节点检查某集合相关的聚合梯度贡献度时,如果模型精度出现异常,对该集合不同子集中的若干参与方的梯度密文分别进行聚合并使用标识符对应的测试集进行测试,获得若干子集的贡献度,对比子集间节点差异和贡献度差异,定位异常节点,对异常节点反馈并作惩罚。

优选地,当聚合节点审计每个集合时,对比聚合梯度密文的贡献度与参与聚合的梯度密文的本地贡献度,若聚合梯度贡献度相比于所有梯度本地贡献度下降超过确定阈值,则说明模型精度出现异常。

优选地,如果模型精度出现异常,聚合节点对比不同子集间的节点差异和贡献度差异,若某节点所在的多个子集贡献度都小于某一阈值,则定位该节点为异常节点。

优选地,当定位某异常节点后,若该节点的本地贡献度较高,则对其进行惩罚。

优选地,若聚合节点当前尝试生成新区块不成功,所述聚合节点多次收集梯度密文,尝试生成新区块直至新区块生成成功。

为达到上述目的,本发明还提供一种基于区块链的联邦学习数据审计方法,包括如下步骤:

步骤S1,模型买家发布待训练模型参数和训练任务需求,发布至买家所拥有的数据交换节点,并在数据交换节点设置若干测试集;

步骤S2,若干计算节点经过身份认证后,向数据交换节点注册,获得多密钥同态加密的加密公钥和解密私钥,并请求模型参数进行训练;

步骤S3,当某计算节点训练完成后,指定一个数据交换节点上的测试集,对本地梯度进行测试,获取本地贡献度,并记录下测试集的标识符;

步骤S4,各计算节点找到其他已完成训练且有相同测试集标识符的若干计算节点组成一个集合,并求出该集合的部分子集,根据每个节点的私钥分片计算出该集合及其部分子集对应的联合私钥并在本地保存;

步骤S5,计算节点使用加密公钥对梯度消息进行同态加密后,将密文、本地贡献度和联合私钥传输至包含聚合节点的联盟链;

步骤S6,各聚合节点收集传输至联盟链的计算节点集合、梯度密文、本地贡献度、测试集标识符和联合私钥,对集合中的所有梯度密文进行同态聚合,使用集合所对应的联合私钥对聚合后的密文进行解密,获得聚合梯度结果;

步骤S7,各聚合节点测试某集合相关的聚合梯度贡献度,对比聚合梯度贡献度和集合中的所有梯度本地贡献度,若出现模型精度异常则对该集合部分子集相关的梯度进行聚合并使用标识符对应的测试集进行测试,获得子集的贡献度,对比子集间节点差异和贡献度差异,定位异常节点,对异常节点反馈并作惩罚;

步骤S8,聚合节点尝试将计算节点集合及其所有梯度密文、本地贡献度、测试集标识符写入聚合节点内的某一新区块中,当生成新区块后,聚合节点将当前聚合节点上的所有相关的聚合梯度密文发送至模型买家;

步骤S9,当模型买家从某聚合节点获取新的聚合梯度密文,根据聚合梯度密文对应的参与方集合,向聚合节点购买联合私钥用于解密聚合梯度密文,得到新梯度用于更新模型;将当前模型再一次传至数据交换节点,以进行下一轮训练。

与现有技术相比,本发明一种基于区块链的联邦学习数据审计系统及方法通过以区块链作为中介,使用多密钥同态加密技术,在聚合节点执行了一次梯度同态聚合,保护了计算方的梯度隐私信息,本发明为了避免计算节点上传不良梯度,使用了联合审计的方案,可以对上传的信息进行审计和检查,保证了分布式学习的良好运作,本发明中每个计算参与方都能在该框架下与模型买家进行训练交互,且其提交的梯度的正确性都能够通过审计得到验证。

附图说明

图1为本发明一种基于区块链的联邦学习数据审计系统的系统架构图;

图2为本发明一种基于区块链的联邦学习数据审计方法的步骤流程图。

具体实施方式

以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。

图1为本发明一种基于区块链的联邦学习数据审计系统的系统架构图。如图1所示,本发明一种基于区块链的联邦学习数据审计系统,包括:

模型买家10,发布待训练模型参数和训练任务需求至其所拥有的数据交换节点,并在数据交换节点设置若干测试集;当模型买家从某聚合节点获取新的聚合梯度密文,向聚合节点购买联合私钥用于解密聚合梯度密文,得到新梯度用于更新模型。

数据交换节点11,由模型买家10持有,存储模型买家提供的待训练模型参数,并设置测试集,当收到计算节点的注册申请后,向计算节点发放多密钥同态加密的公钥和私钥,并在计算节点申请参与训练时发放待训练模型。

若干计算节点12,各计算节点经过身份认证后,向数据交换节点注册,获得多密钥同态加密的公钥和私钥,并请求模型参数进行训练,根据获得的模型和自带的本地数据,对获得的模型进行训练,获得梯度,并当计算节点训练完成后,指定一个数据交换节点上的测试集,对本地梯度进行测试,获取本地贡献度,并记录下测试集的标识符;与其他已完成训练且有相同测试集标识符的若干计算节点组成一个集合,并求出该集合的部分子集(例如根据已完成训练且有相同测试集标识符的若干计算节点得到ABCD这个集合,则该集合的部分子集可以为ABC,ABD,ACD,BCD或者AB,BC,CD,AC,AD,CD,注意每个子集的大小都是确定且唯一的),根据每个节点的私钥分片计算出该集合及其部分子集对应的联合私钥并在本地保存(该联合私钥由所有计算节点的私钥以特定的形式组合/计算而成);使用加密公钥对梯度消息进行同态加密后,将密文、本地贡献度、标识符和联合私钥传输至包含聚合节点的联盟链。

具体地,各计算节点向数据交换节点申请参与训练,使用基于RSA的数字签名算法中的私钥对申请报文进行签名以用于身份认证;在获得所述数据交换节点的许可后,从数据交换节点下载待训练的模型,由数据交换节点对计算节点分发基于NTRU的多密钥同态加密的加密公钥和解密私钥。

当获得待训练的模型后,各计算节点12根据获得的模型和自带的本地数据,对获得的模型进行训练,获得梯度,同时,各计算节点12使用加密公钥对梯度消息进行同态加密后,将密文、本地贡献度、标识符和联合私钥传输至包含聚合节点的联盟链。

若干聚合节点13,形成联盟链,每个聚合节点均由计算节点方提供,可创建若干个区块,各聚合节点收集传输至联盟链的计算节点集合、梯度密文、本地贡献度、测试集标识符和联合私钥,对集合中的所有梯度密文进行同态聚合,并根据从计算节点获得的集合所对应的联合私钥对聚合后的密文进行解密后,获得聚合梯度结果;测试聚合梯度结果的贡献度,若数值异常,则计算若干子集的贡献度,并通过多次对比不同子集间的节点差异和贡献度差异,定位异常节点,对异常节点反馈并作惩罚;尝试将计算节点集合及其所有梯度密文、本地贡献度、测试集标识符写入聚合节点内的某一新区块中;若聚合节点当前尝试生成新区块不成功,即将计算节点集合及其所有梯度密文、本地贡献度、测试集标识符写入区块不成功,该聚合节点重新收集梯度明文,尝试生成新区块直至新区块生成成功,当生成新区块后,将当前节点上的所有相关的聚合梯度密文发送至模型买家10,由模型买家10收到聚合梯度密文后,购买每个聚合梯度密文对应的联合私钥,进行解密。

具体地说,当某集合中的计算节点将密文、本地贡献度、标识符和联合私钥传输至包含聚合节点的联盟链后,联盟链中的各聚合节点13收集该集合中计算节点上传的若干梯度密文并对梯度密文进行同态聚合,查询集合对应的联合私钥对聚合后的密文进行解密,获得聚合梯度结果,以用于测试聚合梯度的贡献度(精度),用作审计需要。

当聚合节点审计每个集合时,对比聚合梯度密文的贡献度(使用解密后的聚合梯度结果对待训练模型进行更新,并使用测试集进行模型精度测试,得到精度,作为聚合梯度密文的贡献度)与参与聚合的每个本地梯度密文的贡献度(即计算节点传送来的),若聚合梯度密文的贡献度相比于所有参与方的本地梯度密文的贡献度下降超过确定阈值(预设),则说明模型精度出现异常,如果模型精度出现异常,对该集合不同子集中的若干参与方的梯度密文分别进行聚合并使用标识符对应的测试集进行测试,获得若干子集的贡献度,聚合节点对比不同子集间的节点差异和贡献度差异,若某节点所在的多个子集的贡献度都小于某一阈值,则定位该节点为异常节点。

举例来说,假设有ABC三个参与方,其中A所发送的贡献度表明其梯度使得模型准确率可以达到0.8,类似的,B有0.9,C有0.85,则聚合节点将ABC的梯度进行聚合(最简单的方法之一是求平均值),再使用聚合后的梯度对待训练模型进行更新,得到一个新的精度(例如0.7,即聚合梯度密文的贡献度),由于0.7比ABC三者发送来的值(0.8,0.9,0.85)都要低,因此则认为可能ABC之中有某人的精度并没有那么高。比如A的精度只有0.6,却发送一个0.8的结果,这显然是A的一种欺骗行为,本发明的审计目标则就是找出这种欺骗行为。

各聚合节点尝试将计算节点集合及其所有梯度密文、本地贡献度、测试集标识符写入聚合节点内的某一新区块中,当生成新区块后,聚合节点则将当前聚合节点上的所有聚合梯度密文发送至模型买家。

图2为本发明一种基于区块链的联邦学习数据审计方法的步骤流程图。如图2所示,本发明一种基于区块链的联邦学习数据审计方法,包括如下步骤:

步骤S1,模型买家发布待训练模型参数和训练任务需求,发布至买家所拥有的数据交换节点,并在数据交换节点设置若干测试集。

在本发明具体实施例中,以语音识别模型训练需求为例,模型买家发布语音识别模型训练需求,将训练需求和待训练的初始模型上传至数据交换节点。

步骤S2,若干计算节点经过身份认证后,向数据交换节点注册,获得多密钥同态加密的加密公钥和解密私钥,并请求模型参数进行训练。

具体地说,若干个计算节点向数据交换节点申请参与训练,使用数字签名算法中的私钥对申请报文进行签名以用于身份认证;在获得所述数据交换节点的许可后,从数据交换节点下载待训练的模型,由数据交换节点对计算节点分发多密钥同态加密的加密公钥和解密私钥。

步骤S3,当某计算节点训练完成后,指定一个数据交换节点上的测试集,对本地梯度进行测试,获取本地贡献度,并记录下测试集的标识符。

具体地说,使用本地梯度对当前模型进行更新,从数据交换节点下载某个测试集,测试新模型得到精度结果,将精度作为该梯度的本地贡献度,并记录下测试集的标识符。

步骤S4,各计算节点找到其他已完成训练且有相同测试集标识符的若干计算节点组成一个集合,并求出该集合的部分子集,根据每个节点的私钥分片计算出该集合及其部分子集对应的联合私钥并在本地保存。

具体地说,对集合求若干子集,其子集大小是确定且唯一的,使用每个节点的私钥分片进行组合或计算,得出集合及其子集所对应的联合私钥。

步骤S5,计算节点使用加密公钥对梯度消息进行同态加密后,将密文、本地贡献度、标识符和联合私钥传输至包含聚合节点的联盟链。

步骤S6,各聚合节点收集传输至联盟链的计算节点集合、梯度密文、本地贡献度、测试集标识符和联合私钥,对集合中的计算节点上传的若干梯度密文并对密文进行同态聚合,使用集合所对应的联合私钥对聚合后的密文进行解密,获得聚合梯度结果。

具体地说,当聚合节点收集完某集合内的梯度密文后,对所有密文执行同态聚合,并查询集合对应的联合私钥对聚合后的密文进行解密,获得聚合梯度结果。

步骤S7,各聚合节点测试某集合相关的聚合梯度贡献度,对比聚合梯度贡献度和所有参与聚合的梯度密文的本地贡献度,若出现模型精度异常,则对该集合部分子集相关的梯度进行聚合并使用标识符对应的测试集进行测试,获得各子集的贡献度,对比子集间节点差异和贡献度差异,定位异常节点,对异常节点反馈并作惩罚。

具体地说,当聚合节点审计每个集合时,对比聚合梯度密文的贡献度与参与聚合的梯度密文的本地贡献度,若聚合梯度贡献度相比于所有参与聚合的梯度密文的本地贡献度下降超过确定阈值,则说明模型精度出现异常,如果模型精度出现异常,对该集合不同子集中的若干参与方的梯度密文分别进行聚合并使用标识符对应的测试集进行测试,获得若干子集的贡献度,聚合节点对比不同子集间的节点差异和贡献度差异,若某节点所在的多个子集都贡献度较低,则定位该节点为异常节点。

步骤S8,聚合节点尝试将计算节点集合及其所有梯度密文、本地贡献度、测试集标识符写入聚合节点内的某一新区块中,当生成新区块后,聚合节点将当前聚合节点上的所有相关的聚合梯度密文发送至模型买家。

步骤S9,当模型买家从某聚合节点获取新的聚合梯度密文,根据聚合梯度密文对应的参与方集合,向聚合节点购买联合私钥用于解密聚合梯度密文,得到新梯度用于更新模型;将当前模型再一次传至数据交换节点,以进行下一轮训练。

具体地说,当模型买家获得新聚合梯度密文时,在区块中查询密文所对应的参与方集合,向聚合节点购买参与方集合所对应的联合私钥用于解密聚合梯度密文。

在深度学习中的语音识别场景下,若有大量的语音样本参与模型训练,在一定程度上可以使得语音识别的模型更加准确。当某一方需要特定的模型却又缺少训练数据时,可以将模型初始参数和训练需求对外发布,请求多方使用其本地数据参与合作训练,以获得最终模型,以语音识别模型训练需求为例,本发明实现过程如下。

步骤一,模型买家发布语音识别模型训练需求,将训练需求和待训练的初始模型上传至数据交换节点。

步骤二,若干个计算节点向数据交换节点申请参与训练,使用基于RSA的数字签名算法中的私钥对申请报文进行数字签名以用于身份认证,在获得数据交换节点的许可后,从数据交换节点下载初始待训练模型。由数据交换节点对计算节点分发多密钥同态加密的加密公钥和解密私钥。

步骤三,当某计算节点训练完成后,与指定一个数据交换节点上的测试集,对本地梯度进行测试,获取本地贡献度,并记录下测试集的标识符;

步骤四,各计算节点找到其他已完成训练且有相同测试集标识符的若干计算节点组成一个集合,并求出该集合的部分子集,根据每个节点的私钥分片计算出该集合及其部分子集对应的联合私钥并在本地保存;

步骤五,计算节点使用加密公钥对梯度消息进行同态加密后,将密文、本地贡献度、标识符和联合私钥传输至包含聚合节点的联盟链;

步骤六,各聚合节点收集某集合中的计算节点上传的若干梯度密文并对密文进行同态聚合,使用集合所对应的联合私钥对聚合后的密文进行解密,获得聚合梯度结果;

步骤七,各聚合节点测试某集合相关的聚合梯度贡献度,对比聚合梯度贡献度和所有参与方的梯度密文的本地贡献度,若出现模型精度异常,则对该集合部分子集相关的梯度进行聚合并使用标识符对应的测试集进行测试,获得各子集的贡献度,对比子集间节点差异和贡献度差异,定位异常节点,对异常节点反馈并作惩罚;

步骤八,聚合节点尝试将计算节点集合及其所有梯度密文、本地贡献度、测试集标识符写入聚合节点内的某一新区块中,当生成新区块后,聚合节点将当前节点上的所有相关的聚合梯度密文发送至模型买家;

步骤九,当模型买家从某聚合节点获取新的聚合梯度密文,根据聚合梯度密文对应的参与方集合,向聚合节点购买联合私钥用于解密聚合梯度密文,得到新梯度用于更新模型。将当前模型再一次传至数据交换节点,以进行下一轮训练。

综上所述,本发明一种基于区块链的联邦学习数据审计系统及方法通过以区块链作为中介,使用多密钥同态加密技术,在聚合节点执行了一次梯度聚合,充分保护了计算方的梯度隐私信息,本发明为了避免计算节点上传不良梯度,使用了联合审计,可以对上传的信息进行审计和检查,保证了分布式学习的良好运作,本发明中每个计算参与方都能在该框架下与模型买家进行训练交互,且其提交的梯度的正确性都能够通过审计得到验证。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

相关技术
  • 一种基于区块链的联邦学习数据审计系统及方法
  • 基于区块链的联邦学习数据保护方法及系统
技术分类

06120113066781