一种基于区块链和可信执行环境的联邦学习方法及系统转让专利
申请号 : CN202111416453.9
文献号 : CN113837761B
文献日 : 2022-03-18
发明人 : 徐蕾 , 陆鑫 , 肖尧 , 张子剑 , 祝烈煌
申请人 : 北京理工大学
摘要 :
权利要求 :
1.一种基于区块链和可信执行环境的联邦学习方法,其特征在于,包括以下步骤:步骤1:征集任务;
在任务开始前,任务发布节点首先拟定任务征集合约,并设置对合格参与者的具体要求;之后,任务发布节点发布合约征集参与者;
步骤2:参与节点申请加入;
步骤3:任务发布节点选择参与者;
步骤4:训练本地模型,生成模型更新,方法如下;
参与节点 下载获取最新的全局模型 ,在当前模型上采用深度神经网络模型和训练数据data,在本地执行局部训练;通过迭代运算和模型更新,最终完成模型训练,生成模型更新 ,t表示学习的轮数;
步骤5:参与节点调用可信执行环境TEE内的程序,生成证明,方法如下:参与节点 在本地TEE环境中运行算法 ,为参与节点完成模型更新后通过调用TEE生成的证明;算法随机选择训练轮次,验证这些轮次的模型更新训练执行正确性;其中, 表示 TEE的私钥;
参与者在每轮训练结束时,对所有模型参数 进行哈希运算得到消息 ,并在所有训练轮结束时向TEE提交消息 ;
当TEE随机请求检查一轮训练结果时,首先输入模型参数、哈希值和训练数据;然后TEE检查这些参数是否与承诺一致,并使用相应数据和输入参数执行训练,将其输出模型参数的哈希值与传入的哈希值 进行比较;
如果 ,则验证通过,TEE给出正确性证明;如果所有随机选择的训练轮次均验证成功,则认为参与者诚实地执行了所有训练轮次,否则判定训练参与者未诚实进行训练,生成模型不可信,不能用于模型聚合;
最后,参与节点进行最后一轮模型参数验证,检查承诺消息,计算模型更新,即,最后一个输出模型和全局模型之间所有参数变化的向量;
在生成证明过程中,TEE生成随机函数集 以生成检查点,以 代表要检查的训练轮次, 为本地训练数据, 为训练模型, ,表示模型训练输入函数, 表示前一轮训练的结果,哈希函数 ;
当获得 轮次的 、 和 后,TEE环境用训练数据 对模型进行训练,得到模型更新 ;
之后,判断 是否成立, 表示在TEE中进行学习时的模型输入;若成立,则验证成功,否则验证失败;
最后,TEE验证最后的模型更新 ,其中 表示最后一轮的模型更新、 表示开始学习时的输入模型,并对验证信息进行签名步骤6:提交训练结果;
任务发布节点通过部署模型聚合合约,收集参与者在本地训练完成更新的模型参数;
参与者将训练得到的模型和TEE环境给出的证明一起发送至合约,执行合约内容将模型和正确性证明σ存储在合约中;
步骤7:聚合模型验证;
当聚合合 约完成模型 参数和可 信证明模型 更新时 ,合 约执行函 数,其中, 表示TEE对承诺进行的签名,以确认参与者是否诚实地进行了预期的训练;如果函数 返回1,则聚合合约将汇总这些更新聚合成为新的全局模型,否则表示TEE验证承诺和参与者发送的聚合模型不符,验证失败,认为参与者存在不诚实行为,模型更新将不再作为正确结果被聚合;
若验证通过,则认为所有参与节点都诚实地进行了模型训练并得到了正确的模型参数;之后,聚合合约对所有参与者提交的局部模型进行聚合,收敛生成最终的训练模型;为获得收敛的全局模型,要进行反复迭代训练,最终的全局模型 表示为 ,其中, 表示参与人 第t+1轮模型更新, 表示参与人 第t+1轮模型更新;
对于所有收到的更新,合约通过执行加权平均,得到新的全局模型 :其中, 是全局学习率,表示模型的更新轮数;n是训练总数据的大小,用表示, 表示参与人集合; 表示参与者 进行训练的数据大小;训练的轮数,由模型收敛的时间决定;
步骤8:当完成所有的模型聚合后,合约执行最后一步,按照约定给众包训练的所有节点发放奖励。
2.如权利要求1所述的一种基于区块链和可信执行环境的联邦学习方法,其特征在于,步骤2中,首先,参与节点 启动本地可信执行环境并生成证明报告,以证明正确的执行环境设置;之后,参与节点 将验证信息提交至合约触发合约执行,通过合约执行来验证提交信息的正确性;在合规定执行时间内,设列表中参与节点数量为m,满足条件的参与者节点将通过验证加入列表。
3.如权利要求1所述的一种基于区块链和可信执行环境的联邦学习方法,其特征在于,步骤3中,当有训练任务产生,首先确定联邦学习任务需要众包学习的参与节点数目n;之后,任务发布节点调用任务征集合约,采用随机算法从参与节点列表的m个节点中随机选择能够参加学习的n个节点, ;当参与节点确定后,参与者将接受训练任务,使用持有的相关数据集开始在本地进行训练与更新。
4.如权利要求1所述的一种基于区块链和可信执行环境的联邦学习方法,其特征在于,步骤6中,设合约设置阈值为N,从N=1开始一直循环收取参数模型,直到收到第N=n个参与者后合约执行完毕,收到所有n个参与众包学习的结果。
5.一种实现权利要求1所述方法的基于区块链和可信执行环境的联邦学习系统,其特征在于,包括用户层、合约层、激励层和区块链网络层;
其中,系统的客户层包含数据消费者和数据拥有者;数据消费者通过系统征集数据拥有者,利用其数据完成所需模型的训练更新;数据拥有者使用自己的数据进行隐私计算,训练模型,并获得相应的报酬;
合约层包括任务发布合约和模型聚合合约;合约通过自执行的方式,实现分布式节点间的众包模型训练计算任务发布、计算结果的可信承诺验证与聚合;合约层完成数据消费者和数据拥有者的交互;
激励层包括聚合合约;聚合合约在完成相应的模型聚合任务后,根据约定将相应的报酬通过区块链网络转入所有参与该轮模型训练的数据拥有者的地址;数据拥有者在确定收到激励报酬后,完成激励分配;
区块链网络层作为基础网络架构,用于建立分布式用户节点间的可信计算环境,并采用共识算法对外提供一致的读写服务;
系统工作过程如下:
步骤1:初始化系统
首先,系统初始化区块链网络,构建一个p2p分布式网络;整个众包计算的联邦学习任务的发布、提交、聚合、激励过程,均依靠区块链网络完成;
步骤2:加入网络
任务发布者和参与众包学习的数据拥有者加入到区块链网络;首先,任务发布者和数据拥有者在本地生成自己的公私钥对,然后保存自己的私钥,以公钥来作为自己作为区块链中节点的唯一标识符加入网络;
步骤3:任务合约发布
任务发布节点制定关于训练任务的基本信息,并将信息以脚本代码的形式形成合约内容,部署在区块链网络中;
步骤4:训练任务执行
符合合约内容的参与者节点接受任务,然后在本地进行模型更新;在本地数据模型训练时,系统通过随机数发生器生成随机轮次的检查点,并将这些轮次的检查点更新的模型进行哈希运算产生摘要;同时,本地可信执行环境TEE从外部接收相同的训练数据和模型,在内部进行相同计算后对内部计算结果进行相同的哈希值运算;比对两个哈希摘要之后,TEE以签名的方式给出可信承诺证明;
步骤5:模型聚合
每一个参与节点在完成各自的子任务后,将最终更新模型和每一轮训练结果的超参数,连同可信证明一起发送给聚合合约;聚合合约首先对承诺证明进行验证,验证通过后,向相应的参与者发放奖励;最后,合约将对所有子模型进行聚合,直到最终模型收敛。
6.一种实现权利要求1所述方法的医疗辅助诊断系统,其特征在于,包括医疗用户注册模块、承诺生成模块、承诺验证模块、诊断模型聚合模块、激励支付模块;
其中,医疗用户注册模块、承诺生成模块构成系统用户层,承诺验证模块、诊断模型聚合模块构成合约层,激励支付模块构成激励层;
医疗用户注册模块:拥有医疗相关特征数据的用户实体,通过注册成为联邦学习中的候选参与方;需要进行医疗诊断模型更新的数据消费者,能够从相关注册用户中进行选择;
承诺生成模块:医疗数据拥有者使用自己的数据和算法进行模型训练,完成后在本地可信执行环境中进行可信验证,并生成一个承诺方案,以证明训练参与者诚实参与模型更新;
承诺验证模块:利用智能合约自执行的特性,收到训练参与方发送的模型更新数据和正确性承诺后,合约将对承诺签名进行验证;如果返回值为1,则验证通过,否则判定为不可信模型,不进行激励支付;
诊断模型聚合模块:通过承诺验证,合约将合法的模型更新参数进行聚合以得到最终的医疗病症诊断模型;
激励支付模块:在模型验证通过后,合约将根据规则向提供正确数据并提供模型更新服务的参与节点支付相应的激励;
上述模块之间的关系为:
医疗用户注册模块和承诺生成模块构成用户层,由系统中用户参与节点作为实体在本地执行的操作;这两个模块之间存在先后顺序,参与者节点首先必须执行医疗用户注册模块,经过身份验证、环境检查后,才能进行承诺生成模块的操作;在承诺生成模块完成计算并给出可信证明,作为输出供合约层调用;
承诺验证模块和诊断模型聚合模块构成合约层;在合约层内,首先执行承诺验证模块,验证通过后才能进行诊断模型的聚合;在合约层外部,承诺验证模块的输入是用户层承诺生成模块中输出的证明;诊断模型聚合模块的输入是承诺生成模块中输出的证明的每一轮训练产生的超参数和最终的模型更新;最后,承诺证明的结果输出是激励支付模块是否可以触发的条件;
激励支付模块作为激励层;该模块调用承诺证明模块输出的结果,作为验证条件,如果输出为1,则进行激励支付,否则不执行激励支付。
说明书 :
一种基于区块链和可信执行环境的联邦学习方法及系统
技术领域
背景技术
护终端数据和个人数据隐私、保证合法合规的前提下,在多参与方或多计算结点之间开展
高效率的机器学习。联邦学习能够有效帮助多个机构在满足用户隐私保护、数据安全和政
府法规的要求下进行数据使用和机器学习建模,可以避免非授权的数据扩散和解决数据孤
岛问题,被广泛应用在金融、物流、供应链等领域。
后聚合所有的模型更新来完成训练任务并获得准确的联合模型。联邦学习的优势在于:
将会导致最终聚合模型的准确率降低。
发明内容
系统。
求说明。当训练完成后,节点通过聚合合约收集模型更新并验证训练模型的正确性。
需要,参与者节点本地要具有TEE(Trusted Execution Environment,可信执行环境,常用
于数字版权管理、移动支付、敏感数据保护等)的硬件可信环境(例如SGX)来生成验证消息。
注册,从而获得资格。
合负责对各节点提交的正确性证明进行验证。验证通过后,对更新模型进行聚合,从而完成
模型训练任务。
摘要而非直接保存原始的模型训练参数,是因为训练参数数据量过大会占用很大的存储空
间。
附图说明
具体实施方式
信息的正确性。
表示平台公钥公开。设 是不可伪造的签名方案,SGX平台通过计算数字签名
生成证明,其中, 表示签名, 为运行的程序,out表示输出。输出
out是在SGX中运行程序 产生的证明。合约通过验证 输出是否为1来
验证用户的可信硬件执行环境SGX平台是否符合要求。
量参与节点反复参与训练来赚取奖励。
训练,生成模型更新 。其中,t表示学习的轮数。
出模型参数的哈希值与传入的哈希值 进行比较。
训练,生成模型不可信,不能用于模型聚合。
, 表示模型训练输入函数, 表示前一轮训练的结果,哈希函
数 。当获得 轮次的 、 和 后,TEE环境用训练数据 对模型
进行训练,得到模型更新 。之后,判断 是否成立, 表示在TEE
中进行学习时的模型输入,也就是需要进行更新的前一轮模型。若成立,则验证成功,否则
验证失败。最后,TEE验证最后的模型更新 ,其中 表示最后一轮的模型更新、
表示开始学习时的输入模型,并对验证信息进行签名
和正确性证明σ存储在合约中。
是否诚实地进行了预期的训练。如果函数 返回1,则聚合合约将汇
总这些更新聚合成为新的全局模型,否则表示TEE验证承诺和参与者发送的聚合模型不符,
验证失败,认为参与者存在不诚实行为,模型更新将不再作为正确结果被聚合。
新。
数,由模型收敛的时间决定。
算,训练模型,并获得相应的报酬。
消费者和数据拥有者的交互。
定收到激励报酬后,完成激励分配。
公钥来作为自己作为区块链中节点的唯一标识符加入网络。
模型进行哈希运算产生摘要。同时,本地可信执行环境TEE从外部接收相同的训练数据和模
型,在内部进行相同计算后对内部计算结果进行相同的哈希值运算。比对两个哈希摘要之
后TEE以签名的方式给出可信承诺证明。
后,向相应的参与者发放奖励。最后,合约将对所有子模型进行聚合,直到最终模型收敛。
自动化辅助诊断。由于医疗数据作为病人的隐私数据,其难以在没有隐私保护的情况下通
过中心化的方式进行大规模数据学习。应用联邦学习技术,能够解决因无法共享数据所带
来的医疗数据孤岛问题。同时,数据的可信度对于医疗模型训练的准确性也同样至关重要。
因此,本实施例依靠可信执行环境TEE采用“承诺‑验证”方式,保证医疗模型更新的正确性。
块、激励支付模块,其中,医疗用户注册模块、承诺生成模块构成系统用户层,承诺验证模
块、诊断模型聚合模块构成合约层,激励支付模块构成激励层。
能够从相关注册用户中进行选择。
练参与者诚实参与模型更新。
不可信模型,不进行激励支付。
册模块,经过身份验证、环境检查后,才能进行承诺生成模块的操作。在承诺生成模块完成
计算并给出可信证明,作为输出供合约层调用。
承诺生成模块中输出的证明。诊断模型聚合模块的输入是承诺生成模块中输出的证明的每
一轮训练产生的超参数和最终的模型更新。最后,承诺证明的结果输出是激励支付模块是
否可以触发的条件。