专利名称:一种基于区块链开展可信联邦学习的方法
专利类型:发明专利
专利申请号:CN202210127941.6
专利申请(专利权)人:博雅正链(北京)科技有限公司,博雅正链(重庆)科技有限公司,南京博雅区块链研究院有限公司
权利人地址:北京市西城区阜成门外大街31号6层601A
专利发明(设计)人:陈钟,李青山,高健博,任立峰,吴振豪,兰云飞,郝嘉琨
专利摘要:本发明提供一种基于区块链开展可信联邦学习的方法,涉及区块链技术领域。该方法涉及任务发布者、数据拥有者和区块链共识节点;任务发布者通过联邦学习,在不收集隐私数据的前提下完成模型的训练,同时可以免除检验模型的工作量;数据拥有者只需按照普通的联邦学习进行训练即可;区块链共识节点负责对数据拥有者提交的训练好的模型进行验证,并聚合得到聚合模型;区块链共识节点相互之间对聚合模型进行共识验证;任务发布者检验聚合模型,如果聚合模型能够满足任务发布者的要求,任务结束。该方法可以有效地保护数据提供者的数据隐私,有效的避免了联邦学习参与节点作恶影响整个联邦学习过程正常进行的问题。
主权利要求:
1.一种基于区块链开展可信联邦学习的方法,涉及任务发布者、数据拥有者和区块链共识节点:任务发布者通过联邦学习,在不收集隐私数据的前提下完成模型的训练,同时可以免除检验模型的工作量;数据拥有者只需按照普通的联邦学习进行训练即可;区块链共识节点负责对数据拥有者提交的训练好的模型进行验证,并聚合得到聚合模型,其特征在于:具体包括以下步骤:步骤1、任务发布者通过区块链智能合约发布模型数据需求,并提供任务所需的检验数据和需要训练的模型;
步骤2、数据拥有者通过智能合约响应任务发布者的模型训练要求,确认参与联邦学习任务;智能合约将任务发布者提供的需要训练的模型分发给数据拥有者;
步骤3、数据拥有者利用所拥有的本地数据训练需要训练的模型,再将训练好的本地模型作为训练模型,进行多次重复训练,得到最终训练好的本地模型;
步骤4、数据拥有者在限定的时间内将最终训练好的本地模型通过智能合约上传到区块链,区块链会将最终训练好的本地模型存储到区块链存储区中;
步骤5、每个区块链共识节点访问区块链存储区,负责对数据拥有者提交的训练好的模型进行共识验证;对验证通过后的数据拥有者上传的训练好的模型进行聚合,得到聚合模型;聚合之后,区块链共识节点相互之间对聚合模型进行共识验证;
步骤6、任务发布者检验聚合模型,如果该聚合模型的效果还不能达到任务发布者的预期,那么将聚合模型分发给数据拥有者,并跳转至步骤3继续联邦学习任务;如果聚合模型能够满足任务发布者的要求,任务结束;
步骤5所述区块链共识节点进行共识验证由具备抗拜占庭攻击的bft类共识算法实现,共识节点包括负责执行模型聚合操作的主节点和负责模型验证操作的从节点;具体验证方法为:步骤S1、区块链共识节点接收到数据拥有者提交的训练好的模型后,首先验证交易的合法性,全部通过验证的交易被放到交易池中;对交易池中的交易中的模型进行模型评估,将模型的验证结果附加在此交易后,并用本共识节点的公钥对此交易进行签名;
步骤S2、当主节点的交易池中得到一定量的交易或者在规定时间窗口中不再接收到新的交易后,主节点将这部分交易进行排序后打包成一个区块,并将这部分交易从交易池中删除;然后主节点将一个区块编号并签名后放在预准备消息中,并广播给所有节点,然后所有共识的节点开启BFT共识的三阶段流程,此时主节点已经完成预准备阶段而其他从节点还处于等待状态;
步骤S3、当从节点接收到来自主节点的预准备消息后,该从节点会对区块中包含的模型进行检验,如果主节点发布的区块中对模型的验证结果和某从节点不同,该从节点将认为主节点为恶意节点,拒绝向此区块投票;如果验证结果与所有从节点全都相同,从节点也完成预准备阶段,并向所有节点广播准备消息,标识进入准备阶段;
步骤S4、当一个从节点收集齐不少于所有节点总数的2/3的节点的准备消息后,根据相应的预准备消息中的区块信息,从交易池中删除区块中包含的交易信息,该从节点完成准备阶段;然后该从节点向全网广播提交消息进入提交阶段;对于主节点,只要收集齐不少于所有节点总数的2/3的节点的准备消息即可完成准备阶段,并全网广播提交消息进入提交阶段;
步骤S5、当任意一个共识节点收集齐不少于所有节点总数的2/3的节点的提交消息时,即完成提交阶段,完成整个BFT共识流程,此时将共识确定的区块写入到区块链全局状态中,开始进行下一个区块的共识过程;
步骤S6、若主节点监测到模型训练任务中已达到预定义的模型数量,则开始模型聚合工作,并将最终聚合模型进行提交,聚合模型的提交和验证过程与训练好的模型相同,返回步骤1进行共识;
步骤S7、若一个主节点在一个时间窗口内始终未获得2/3的准备或提交消息,则触发视图切换流程,即进行视图切换、选举新主节点、新主节点应答三个阶段;当新的主节点被选举出之后,返回步骤S1进行共识。
2.根据权利要求1所述的一种基于区块链开展可信联邦学习的方法,其特征在于:所述步骤1的具体方法为:在联邦学习开始前,任务发布者在区块链上利用智能合约发布联邦学习模型训练任务,需要明示所需模型数据的特征;并上传验证该模型训练任务所需的数据到区块链存储区,区块链的共识节点能够访问区块链存储区中任务发布者的数据并用于对数据拥有者上传模型的共识验证。
3.根据权利要求2所述的一种基于区块链开展可信联邦学习的方法,其特征在于:步骤
1所述智能合约支持模型训练任务逻辑的实现以及任务信息发布、任务领取、训练好的模型存储、聚合模型存储、模型评估和奖励分配的实现;
所述模型数据以智能合约调用参数返回,存储在区块链存储区中,区块链存储模型数据使用默克尔树实现,支持为上链的模型数据生成默克尔证明;
模型数据能够放在区块链链上存储通过智能合约读取;还能够放在区块链下存储,使用分布式文件系统Ipfs进行存储,区块链上存储相应模型数据的哈希值,通过智能合约解析哈希值验证数据。
4.根据权利要求3所述的一种基于区块链开展可信联邦学习的方法,其特征在于:所述步骤2的具体方法为:数据拥有者通过阅读数据发布者对数据的要求,判定自己所拥有的数据与该任务的匹配程度,如果自认为匹配度高,则通过智能合约进行响应,确认参加该联邦学习任务;通过智能合约,数据拥有者调用智能合约中模型读取接口,获取需要训练的模型。
5.根据权利要求4所述的一种基于区块链开展可信联邦学习的方法,其特征在于:步骤
3所述数据拥有者利用所拥有的本地数据训练需要训练的模型的方式如下公式所示:
t
其中,是第i个数据拥有者训练好的本地模型, 是根据g和Di求取的模型梯度,γ则是学习率,控制梯度对模型的影响,Di为数据拥有者所拥有的本地数据,需要训练的模型tg,t为训练的轮次。
6.根据权利要求5所述的一种基于区块链开展可信联邦学习的方法,其特征在于:步骤
5所述对验证通过后的数据拥有者上传的训练好的本地模型进行聚合,是通过对各个数据拥有者训练好的本地模型的数据量加权平均实现,如下公式所示:t+1
其中,g 为聚合模型,ni为第i个数据拥有者的数据量,n为总数据量。 说明书 : 一种基于区块链开展可信联邦学习的方法技术领域[0001] 本发明涉及区块链技术领域,尤其涉及一种基于区块链开展可信联邦学习的方法。背景技术[0002] 随着互联网技术的爆炸发展,人们的生活工作已经发生了天翻地覆的变化,互联网极大地融入并重构了人们正常的生活,并推动着当下社会不断向前发展。特别地,随着当下人工智能的发展,世界变得越来越智能,人工智能已经逐渐可以当做决策依据,帮助人们处理越来越多的事情,例如各种智能机器人、温度监控、人脸识别等设备,这些设备随处可见,渐渐成为社会生活中的一部分。[0003] 而在当下人工智能应用中,最为关键的一环便是模型的训练,而一个良好的模型则需要大量的优质数据作为支撑。现实生活中,除了少数巨头公司能够满足,绝大多数企业都存在数据量少,数据质量差的问题,不足以支撑人工智能技术的实现。同时数据隐私问题也引起了国家的重视,国内外监管环境也在逐步加强数据保护,陆续出台相关政策,如欧盟最近引入的新法案《通用数据保护条例》(GDPR),我国国家互联网信息办公室起草的《数据安全管理办法(征求意见稿)》,更加制约了数据集的收集。[0004] 联邦学习是针对上述数据孤岛问题提出的一种分布式的机器学习技术。通过联邦学习技术,将多个数据拥有者组织起来形成一个联邦学习平台,参与者可以在不泄露明文数据的前提下,用多方的数据共同训练模型,实现数据可用不可见。参与个体可以不用将自己本身的数据共享出去,而是可以在本地进行训练出子模型,中心节点则负责汇总子模型,得到最终的模型结果。同时此平台还可以根据各方提供的数据量以及子模型的质量提供相应奖励,激励数据拥有者提供更多、更高质量的数据。但此平台需要一个中心节点负责子模型的聚合、子模型质量的评估、奖励的分配,但在现实场景里中心节点并不可信,如果中心节点作恶会导致训练出的模型不可用,损害数据提供者的利益等问题,导致整个联邦学习平台无法正常运转。[0005] 区块链是近年来逐渐兴起的一种新型技术,采用一种分布式计算模式,使用区块链来存储数据,使用密码原理确保传输和访问的安全性,数据存储由互联网用户共同维护和监督,拥有去中心化、透明公开、数据不可修改等显著特点,其使用分布式储存与算力使整个网络节点的权利与义务相同,系统中数据本质为全网节点共同维护,从而区块链不再依靠于中央处理节点,实现数据的分布式存储、记录与更新。到目前为止,区块链技术在电子政务、医疗健康等众多领域有了越来越大的作用。发明内容[0006] 本发明要解决的技术问题是针对上述现有技术的不足,提供一种基于区块链开展可信联邦学习的方法。[0007] 为解决上述技术问题,本发明所采取的技术方案是:一种基于区块链开展可信联邦学习的方法,涉及任务发布者、数据拥有者和区块链共识节点:任务发布者通过联邦学习,在不收集隐私数据的前提下完成模型的训练,同时可以免除检验模型的工作量;数据拥有者只需按照普通的联邦学习进行训练即可;区块链共识节点负责对数据拥有者提交的训练好的模型进行验证,并聚合得到聚合模型;具体包括以下步骤:[0008] 步骤1、任务发布者通过区块链智能合约发布模型数据需求,并提供任务所需的检t验数据和需要训练的模型g,t为训练的轮次;[0009] 在联邦学习开始前,任务发布者在区块链上利用智能合约发布联邦学习模型训练任务,需要明示所需模型数据的特征;并上传验证该模型训练任务所需的数据到区块链存储区,区块链的共识节点能够访问区块链存储区中任务发布者的数据并用于对数据拥有者上传模型的共识验证;[0010] 智能合约支持模型训练任务逻辑的实现以及任务信息发布、任务领取、训练好的模型存储、聚合模型存储、模型评估和奖励分配的实现;[0011] 模型数据以智能合约调用参数返回,存储在区块链存储区中,区块链存储模型数据使用默克尔树实现,支持为上链的模型数据生成默克尔证明;[0012] 模型数据能够放在区块链链上存储通过智能合约读取;模型数据还能够放在区块链下存储,使用分布式文件系统Ipfs进行存储,区块链上存储相应模型数据的哈希值,通过智能合约解析哈希值验证数据;[0013] 步骤2、数据拥有者通过智能合约响应任务发布者的模型训练要求,确认参与联邦t学习任务;智能合约将任务发布者提供的需要训练的模型g分发给数据拥有者;[0014] 数据拥有者通过阅读数据发布者对数据的要求,判定自己所拥有的数据与该任务的匹配程度,如果自认为匹配度高,则通过智能合约进行响应,确认参加该联邦学习任务;t通过智能合约,数据拥有者调用智能合约中模型读取接口,获取需要训练的模型g;[0015] 步骤3、数据拥有者利用所拥有的本地数据Di训练模型gt,再将训练好的本地模型作为训练模型,进行多次重复训练,得到最终训练好的本地模型;[0016] 数据拥有者利用所拥有的本地数据Di训练模型gt的训练方式如下公式所示:[0017]t[0018] 其中,是第i个数据拥有者训练好的本地模型, 是根据g 和Di求取的模型梯度,γ则是学习率,控制梯度对模型的影响;[0019] 步骤4、数据拥有者在限定的时间内将最终训练好的本地模型通过智能合约上传到区块链,区块链会将最终训练好的本地模型存储到区块链存储区中;[0020] 步骤5、每个区块链共识节点访问区块链存储区,负责对数据拥有者提交的训练好的模型进行共识验证;对验证通过后的数据拥有者上传的训练好的模型进行聚合,得到聚合模型;聚合之后,区块链共识节点相互之间对聚合模型进行共识验证;[0021] 所述对验证通过后的数据拥有者上传的训练好的本地模型进行聚合,是通过对各个数据拥有者训练好的本地模型的数据量加权平均实现,如下公式所示:[0022][0023] 其中,gt+1为聚合模型,ni为第i个数据拥有者的数据量,n为总数据量;[0024] 步骤6、任务发布者检验聚合模型gt+1,如果该聚合模型的效果还不能达到任务发t+1布者的预期,那么将聚合模型g 分发给数据拥有者,并跳转至步骤3继续联邦学习任务;如t+1果聚合模型g 能够满足任务发布者的要求,任务结束。[0025] 步骤5所述区块链共识节点进行共识验证由具备抗拜占庭攻击的bft类共识算法实现,共识节点包括负责执行模型聚合操作的主节点和负责模型验证操作的从节点;具体验证方法为:[0026] 步骤S1、区块链共识节点接收到数据拥有者提交的训练好的模型后,首先验证交易的合法性,全部通过验证的交易被放到交易池中;对交易池中的交易中的模型进行模型评估,将模型的验证结果附加在此交易后,并用本共识节点的公钥对此交易进行签名;[0027] 步骤S2、当主节点的交易池中得到一定量的交易或者在规定时间窗口中不再接收到新的交易后,主节点将这部分交易进行排序后打包成一个区块,并将这部分交易从交易池中删除;然后主节点将一个区块编号并签名后放在预准备消息中,并广播给所有节点,然后所有共识的节点开启BFT共识的三阶段流程,此时主节点已经完成预准备阶段而其他从节点还处于等待状态;[0028] 步骤S3、当从节点接收到来自主节点的预准备消息后,该从节点会对区块中包含的模型进行检验,如果主节点发布的区块中对模型的验证结果和某从节点不同,该从节点将认为主节点为恶意节点,拒绝向此区块投票;如果验证结果与所有从节点全都相同,从节点也完成预准备阶段,并向所有节点广播准备消息,标识进入准备阶段;[0029] 步骤S4、当一个从节点收集齐不少于所有节点总数的2/3的节点的准备消息后,根据相应的预准备消息中的区块信息,从交易池中删除区块中包含的交易信息,该从节点完成准备阶段;然后该从节点向全网广播提交消息进入提交阶段;对于主节点,只要收集齐不少于所有节点总数的2/3的节点的准备消息即可完成准备阶段,并全网广播提交消息进入提交阶段;[0030] 步骤S5、当任意一个共识节点收集齐不少于所有节点总数的2/3的节点的提交消息时,即完成提交阶段,完成整个BFT共识流程,此时将该轮共识确定的区块写入到区块链全局状态中,开始进行下一个区块的共识过程;[0031] 步骤S6、若主节点监测到模型训练任务中已达到预定义的模型数量,则开始模型聚合工作,并将最终聚合模型进行提交,聚合模型的提交和验证过程与训练好的模型相同,返回步骤1进行共识;[0032] 步骤S7、若一个主节点在一个时间窗口内始终未获得2/3的准备或提交消息,则触发视图切换流程,即进行视图切换、选举新主节点、新主节点应答三个阶段;当新的主节点被选举出之后,返回步骤S1进行共识。[0033] 采用上述技术方案所产生的有益效果在于:本发明提供的一种基于区块链的联邦学习平台,可以有效地保护数据提供者的数据隐私,有效的避免了联邦学习参与节点作恶影响整个联邦学习过程正常进行的问题。附图说明[0034] 图1为本发明实施例提供的一种基于区块链开展可信联邦学习的方法的架构图;[0035] 图2本发明实施例提供的一种基于区块链开展可信联邦学习的方法的流程;[0036] 图3为本发明实施例提供的共识算法运行流程图;[0037] 图4为本发明实施例提供的共识算法视图切换流程图。具体实施方式[0038] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。[0039] 本实施例中,一种基于区块链开展可信联邦学习的方法,如图1所示,涉及任务发布者、数据拥有者(也即参与者)和区块链共识节点:任务发布者通过联邦学习,在不收集隐私数据的前提下完成模型的训练,同时可以免除检验模型的工作量;数据拥有者只需按照普通的联邦学习进行训练即可;区块链共识节点负责对数据拥有者提交的模型进行共识验证,并聚合得到聚合模型,如图2所示,具体包括以下步骤:[0040] 步骤1、任务发布者通过区块链智能合约发布模型数据需求,并提供任务所需的检t验数据和需要训练的模型g,t为训练的轮次;[0041] 在联邦学习开始前,任务发布者在区块链上利用智能合约发布联邦学习模型训练任务,需要明示所需模型数据的特征,包括但不限于数据形式、数据大小、数据包含内容等;并上传验证该模型训练任务所需的数据到区块链存储区,区块链的共识节点能够访问区块链存储区中任务发布者的数据并用于对数据拥有者上传模型的共识验证过程;[0042] 智能合约支持模型训练任务逻辑的实现以及任务信息发布、任务领取、训练好的模型存储、聚合模型存储、模型评估和奖励分配的实现;[0043] 模型数据以智能合约调用参数返回,存储在区块链存储区中,区块链存储模型数据使用默克尔树实现,支持为上链的模型数据生成默克尔证明,以保证模型数据可追溯且不可篡改;[0044] 模型数据能够放在区块链链上存储通过智能合约读取;模型数据还能够放在区块链下存储,使用分布式文件系统Ipfs进行存储,区块链上存储相应模型数据的哈希值,通过智能合约解析哈希值验证数据,在保证模型数据安全的前提下,减轻链上的存储压力;[0045] 步骤2、数据拥有者通过智能合约响应任务发布者的模型训练要求,确认参与联邦t学习任务;智能合约将任务发布者提供的需要训练的模型g分发给数据拥有者;[0046] 数据拥有者通过阅读数据发布者对数据的要求,判定自己所拥有的数据与该任务的匹配程度,如果自认为匹配度较高,则通过智能合约进行响应,确认参加该联邦学习任t务;通过智能合约,数据拥有者调用智能合约中模型读取接口,获取需要训练的模型g;[0047] 步骤3、数据拥有者利用所拥有的本地数据Di训练模型gt,再将训练好的本地模型作为训练模型,进行多次重复训练,得到最终训练好的本地模型;[0048] 数据拥有者利用所拥有的本地数据Di训练模型gt的训练方式如下公式所示:[0049]t[0050] 其中,是第i个数据拥有者训练好的本地模型, 是根据g 和Di求取的模型梯度,γ则是学习率,控制梯度对模型的影响;[0051] 该训练过程可以在数据拥有者一端进行多次重复以获取更好的效果。与首次进行t唯一的不同只有将g替换成 即:[0052][0053] 步骤4、数据拥有者在限定的时间内将最终训练好的本地模型通过智能合约上传到区块链,区块链会将最终训练好的本地模型存储到区块链存储区中;[0054] 步骤5、每个区块链共识节点访问区块链存储区,负责对数据拥有者提交的训练好的模型进行共识验证;对验证通过后的数据拥有者上传的训练好的模型进行聚合,得到聚合模型;聚合之后,区块链共识节点相互之间对聚合模型进行共识验证;[0055] 所述对验证通过后的数据拥有者上传的训练好的本地模型进行聚合,是通过对各个数据拥有者训练好的本地模型的数据量加权平均实现,如下公式所示:[0056][0057] 其中,gt+1为聚合模型,ni为第i个数据拥有者的数据量,n为总数据量;[0058] 模型的聚合方式是确定的,各个区块链共识节点可以访问的内容也是一致的,因此区块链共识节点可以完成共识过程。通过共识,可以排除任务发布者因为私心而引起的不公正问题,避免了数据拥有者的权益受到侵犯。[0059] 区块链共识节点进行共识验证由具备抗拜占庭攻击的bft类共识算法实现,共识节点包括负责执行模型聚合操作的主节点和负责模型验证操作的从节点;当有拜占庭错误的恶意节点数不超过总节点数三分之一时,共识算法正常运行;具体验证方法为:[0060] 步骤S1、区块链共识节点接收到数据拥有者提交的训练好的模型后,首先验证交易的合法性,全部通过验证的交易被放到交易池中;对交易池中的交易中的模型进行模型评估,将模型的验证结果附加在此交易后,并用本共识节点的公钥对此交易进行签名;[0061] 步骤S2、当主节点的交易池中得到一定量的交易或者在规定时间窗口中不再接收到新的交易后,主节点将这部分交易进行排序后打包成一个区块,并将这部分交易从交易池中删除;然后主节点将一个区块编号并签名后放在预准备消息中,并广播给所有节点,然后所有共识的节点开启BFT共识的三阶段流程,即预准备、准备、提交三阶段如图3所示,此时主节点已经完成预准备阶段而其他从节点还处于等待状态;[0062] 步骤S3、当从节点接收到来自主节点的预准备消息后,该从节点会对区块中包含的模型进行检验,如果主节点发布的区块中对模型的验证结果和某从节点不同,该从节点将认为主节点为恶意节点,拒绝向此区块投票;如果验证结果与所有从节点全都相同,从节点也完成预准备阶段,并向所有节点广播准备消息,标识进入准备阶段;[0063] 步骤S4、当一个从节点收集齐不少于所有节点总数的2/3的节点的准备消息后,根据相应的预准备消息中的区块信息,从交易池中删除区块中包含的交易信息,该从节点完成准备阶段;然后该从节点向全网广播提交消息进入提交阶段;对于主节点,只要收集齐不少于所有节点总数的2/3的节点的准备消息即可完成准备阶段,并全网广播提交消息进入提交阶段;[0064] 步骤S5、当任意一个共识节点收集齐不少于所有节点总数的2/3的节点的提交消息时,即完成提交阶段,完成整个BFT共识流程,此时将该轮共识确定的区块写入到区块链全局状态中,开始进行下一个区块的共识过程;[0065] 步骤S6、若主节点监测到模型训练任务中已达到预定义的模型数量,则开始模型聚合工作,并将最终聚合模型进行提交,聚合模型的提交和验证过程与训练好的模型相同,返回步骤1进行共识;[0066] 步骤S7、若一个主节点在一个时间窗口内始终未获得2/3的准备或提交消息,则触发视图切换流程,即进行视图切换、选举新主节点、新主节点应答三个阶段,如图4所示。当新的主节点被选举出之后,返回步骤S1进行共识。[0067] 步骤6、任务发布者检验聚合模型gt+1,如果该聚合模型的效果还不能达到任务发t+1布者的预期,那么将聚合模型g 分发给数据拥有者,并跳转至步骤3继续联邦学习任务;如t+1果聚合模型g 能够满足任务发布者的要求,任务结束。[0068] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
专利地区:北京
专利申请日期:2022-02-11
专利公开日期:2024-07-26
专利公告号:CN114462624B