1.一种基于区块链与联邦学习的双重防御方法,在物联网的场景下进行联邦学习并搭建模型框架,模型框架中的角色主要有任务发布者、验证者和训练者:任务发布者为联邦学习任务的发起节点;训练者为联邦学习任务的训练节点;验证者为验证其他训练者发送的本地模型参数的验证节点;其特征在于,包括步骤如下:S1,判断联邦学习过程是否达到了迭代次数Γ或模型精确度达到阈值ε,如果是,则退出该学习过程;否则,任务发布者上传任务区块,将任务的信息存储在该任务区块中;
S2,训练者接收任务区块,该任务区块为当前最新的任务区块;
S3,训练者根据任务区块上的信息,使用本地数据训练本地模型;
S4,训练者完成训练后将本地模型参数发送给验证者;
S5,验证者接收到训练者的本地模型参数,并通过共识委员会机制验证这些参数;
S6,验证者将通过验证的本地模型参数打包上链;
S7,任务发布者从区块链上下载其他验证者提交的本地模型参数,采用HBlend聚合方法形成全局模型参数,该全局模型参数为任务发布者发布新任务的数据;
所述HBlend聚合方法中,在每轮聚合时需要生成一个随机数r∈{0,1,2},第i轮采用的处理方法根据r进行选择,聚合得到全局模型参数ω,表达式如下:其中,xnd表示xn上第d个张量元素,令Xd={x1d,x2d,…,xnd},xn为训练者n的参数张量;在聚合方法执行之前,对Xd进行排序,得到Gd=[g1d,g2d,…,gnd],gnd为经过排序后的本地模型参数,gnd∈Gd;G表示经过排序的本地模型参数集合,G={Gd|d=1,2,…,R};
其中,IMedian()表示产生一组本地模型参数的中位数,取Gd中的中位数作为聚合全局模型参数的结果其中,ITrimmedMean()表示从Gd中删除首尾各f个参数,得到聚合全局模型参数的结果其中,IFaba()表示动态地去除恶意本地模型参数,详细步骤如下:SC1,设置f初始值为0;
SC2,计算本地模型参数列表Gd中的平均值,记作
SC3,从Gd中去除与 相差最大的本地模型参数,将此本地模型参数去除,并且将提交该本地模型参数的训练者视作一个恶意节点,将该训练者从集合P中去除,f=f+1;
SC4,如果f≥Z/3,转到步骤SC2;否则,转到步骤SC4,表示已经达到了拜占庭容忍的恶意节点数阈值;
SC5,选取 作为聚合全局模型参数;
S8,根据验证者的本地模型精确度,更新共识委员会供下一轮的本地模型验证使用,随后回到步骤S1。
2.根据权利要求1所述基于区块链与联邦学习的双重防御方法,其特征在于,所述模型框架中的区块链能存储多种信息,所述区块链包括:任务区块和本地模型区块;
所述任务区块和本地模型区块分别由Header和Body组成,Header包括四个字段:index、hash、previous_hash、timestamp;当一个新区块加入时,区块链将验证新区块与之前包含区块的合法性;
任务区块的Body包含模型参数,每完成一轮的模型聚合后都会生成一个新任务区块,为下一轮迭代提供全局模型参数;
本地模型区块的Body包含验证者、模型精确度和本地模型参数。
3.根据权利要求2所述基于区块链与联邦学习的双重防御方法,其特征在于,区块链验证新区块与之前包含区块的合法性时,新的区块必须满足以下约束:indexc=indexp+1
previous_hashc=hashp
timestampc>timestampp
其中,indexp、hashp和timestampp为前一个区块的字段,indexc、previous_hashc和timestampc为新来的区块中的字段。
4.根据权利要求1所述基于区块链与联邦学习的双重防御方法,其特征在于,步骤S5中,采用共识委员会机制选择验证者,验证本地模型参数的步骤如下:SB1,在联邦学习任务发布后,IOT设备参与训练任务,作为训练者,设训练者集合为M,训练者m∈M;
SB2,初始阶段,所有训练者m都有资格成为验证者,验证者组成共识委员会;设Vi表示第i轮共识委员会集合,Ki=|Vi|,i≥0; 共识委员会中的验证者参与本地模型的训练和验证其他训练者发送的本地模型参数,验证者记为vij∈Vi,j=1,2,…,Ki;
SB3,将第i轮验证者根据其本地模型精确度由小到大排序,得到{vi1,vi2,…,viKi};从每轮的共识委员会中选择本地模型验证后,在本地模型精确度低于Δ的验证者中选择精确度最低的a个验证者放到集合Fi中,Fi表示第i轮恶意节点集,其中Fi={vi1,vi2,…,via},via表示第i轮第a个恶意节点; Δ为验证者的本地模型精确度阈值;
SB4,从Vi中去掉集合Fi中的恶意节点,得到优化后的共识委员会Vi+1:Vi+1=Vi‑Fi;
SB5,当i<Γ时或模型精确度达到阈值ε,i++,转到步骤SB3,Γ为迭代次数的阈值;否则,结束共识委员会选举。
5.根据权利要求4所述基于区块链与联邦学习的双重防御方法,其特征在于,步骤S6中,设通过共识委员会验证的本地模型参数集合X={x1,x2,…,xn},xn为训练者n的参数张量;设上传这些参数的训练者集合为P={p1,p2,…,pn},pn表示P中的第n个训练者,训练者总数为Z=|P|,其中恶意节点数为f,需要满足f≤Z/3。