具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
为了解决在联邦学习中,边缘设备的带宽资源不能有效支持执行高频次交互的计算任务的技术问题,本申请提供了一种基于区块链和联邦学习的模型共建方法,如图1所示,该方法包括:
101、基于可验证随机函数在区块链中随机筛选一个边缘服务器节点作为聚合节点,并利用聚合节点在其下属的边缘设备节点中筛选预设数量个作为训练节点。
其中,可验证随机函数(Verifiable Random Function,VRF)的原理实际上是零知识证明(zero knowledge prove)的一种,本质上是单向函数的应用。在本实施例中,可应用VRF在区块链中随机筛选一个边缘服务器节点作为聚合节点。区块链中,大部分的共识算法,无论是POW、POS,或是由他们衍生出来的DPOS,都需要选出一堆或者一个节点来参与共识或者打包区块,这个过程虽然会有持币情况、设备配置、信誉等各种因素影响,但必须是随机的、无法被预测的,这时候就可能会用到随机算法。使用VRF,达到的目的跟POW的过程有些类似,就是为了随机而又安全地抽取出块节点。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
对于本实施例,在随机筛选得到一个边缘服务器节点后,并利用边缘服务器节点在其下属边缘设备节点中,随机筛选预设数量个边缘设备节点,作为训练节点。进一步可依据联邦学习技术,控制在预设数量个训练节点中实现模型的共建。联邦学习(FederatedLearning)是一种机器学习框架,其设计目标是在保障大数据交换时的信息安全、保护终端数据和个人数据隐私、保证合法合规的前提下,在多参与方或多计算结点之间开展高效率的机器学习。其中,联邦学习可使用的机器学习算法不局限于神经网络,还包括随机森林等重要算法。其中,所筛选出的边缘设备的节点数量可根据实际应用场景进行设定,鉴于是实现在不同边缘设备节点中对应相同模型的共建,故预设数量的取值应为大于或等于2。
对于本实施例的执行主体可为用户控制模型共建的装置或设备,可用于基于可验证随机函数在区块链中随机筛选一个边缘服务器节点作为聚合节点,并利用聚合节点在其下属的边缘设备节点中筛选预设数量个作为训练节点;进一步利用联邦学习技术在训练节点上分别基于预设机器学习算法控制训练本地模型,并在本地模型训练完成后提取第一模型参数;进一步按照预设数据量化压缩规则对第一模型参数进行压缩处理,并将压缩处理后的第一模型参数上传至聚合节点,以便利用聚合节点对压缩处理后的第一模型参数进行解码以及聚合处理,得到第二模型参数;最后可将第二模型参数发送至训练节点,以利用第二模型参数继续训练本地模型,实现各个训练节点间的模型共建。
102、在训练节点上分别基于预设机器学习算法训练本地模型,并在本地模型训练完成后提取第一模型参数。
其中,预设机器学习算法可对应为现有神经网络或随机森林算法,具体可根据预设机器学习算法创建与边缘设备本地任务相关的本地模型,本地模型具体可为线性回归模型、决策树模型、神经网络模型、支持向量机模型、隐马尔可夫模型等机器学习模型中的任意一种,可根据实际应用需求进行适应性选取,在本申请中不进行具体的限定。
在具体的应用场景中,在各个训练节点上可分别配置有对应的数据集,在训练本地模型时,可预先对该数据集按照模型应用场景配置对应的标签,进可利用配置标签后的数据集作为本地模型的训练集,进一步利用训练集对基于预设机器学习算法创建的本地模型进行有监督训练,直至判定本地模型训练完成,提取训练完成的本地模型所配置的第一模型参数。
103、按照预设数据量化压缩规则对第一模型参数进行压缩处理,并将压缩处理后的第一模型参数上传至聚合节点。
在具体的应用场景中,模型内部的计算往往都采用了浮点数计算,浮点数的计算会消耗比较大的计算资源(空间和cpu/gpu时间),如果在不影响模型准确率的情况下,模型内部可以采用其他简单数值类型进行计算的话,计算速度会提高很多,消耗的计算资源会大大减小,尤其是对于移动设备来说,这点尤其重要。然而普通的压缩算法很难压缩浮点数类型的空间。有鉴于此,本申请可引入量化技术,创建预设数量化压缩规则,并基于预设数量化压缩规则对模型参数进行压缩处理,将浮点数值向量转化为整数向量来减少传输位数,进一步提高计算速度,较少计算资源的消耗。
其中,预设数量化压缩规则具体可为:将训练获得的第一模型参数对应的参数向量,取绝对值后各维度按照从小到大的顺序排列,并且分成三段。维度数值为0~0.1的是第一段,维度数值为0.1~1的是第二段,维度数值为1~+∞的是第三段。进一步对三段进行多层量化处理,具体的,针对第一段的多层量化:训练节点将第一段内的数值全部映射为0;针对第二段的多层量化:训练节点将第二段内的数值映射为一个均值矩阵中的行列位置,为了保障顺利解码,需要额外传输一个解码矩阵。进一步将第二段数据从小到大再次分成四段,节点中构建一个2*2的均值矩阵,填入四段中每一段的均值,以其行列位置代表浮点型参数值;针对第三段的多层量化:训练节点将第三段内的浮点数值截断小数位,保留整数。
104、利用聚合节点对压缩处理后的第一模型参数进行解码以及聚合处理,得到第二模型参数。
对于本实施例,聚合节点在对压缩处理后的第一模型参数进行解码时,可仅针对第二段内的多层量化进行解码,具体可利用解码矩阵将均值矩阵中的行列位置转化为对应行列位置处的均值。进一步的,可根据第一段中映射得到的0值、第二段中解码得到的均值,以及第三段中截断小数位,保留的整数位得到压缩处理后的第一模型参数。在对压缩处理后的第一模型参数进行聚合处理时,具体可计算所有压缩处理后的第一模型参数的参数平均值,将参数平均值确定为统一的第二模型参数。
105、将第二模型参数发送至训练节点,以利用第二模型参数继续迭代训练本地模型,直至实现各个训练节点间的模型共建。
对于本实施例,在计算得到第二模型参数后,可进一步将第二模型参数发送至各个训练节点,以便利用第二模型参数继续训练本地模型。通过重复执行上述迭代训练过程,使各个边缘设备均配置有相同的训练完成的机器学习模型,并配置有相同的模型参数,进一步实现各个训练节点间的模型共建。
本实施例提供的一种基于区块链和联邦学习的模型共建方法,可首先基于可验证随机函数在区块链中随机筛选一个边缘服务器节点作为聚合节点,并利用聚合节点在其下属的边缘设备节点中筛选预设数量个作为训练节点;之后可在训练节点上分别基于预设机器学习算法训练本地模型,并在本地模型训练完成后提取第一模型参数;进一步按照预设数据量化压缩规则对第一模型参数进行压缩处理,并将压缩处理后的第一模型参数上传至聚合节点;从而利用聚合节点对压缩处理后的第一模型参数进行解码以及聚合处理,得到第二模型参数;最后可通过将第二模型参数发送至训练节点,以利用第二模型参数继续训练本地模型,实现各个训练节点间的模型共建。通过本申请中的技术方案,可引入量化技术,基于数据量化压缩规则对生成参数进行参数压缩处理,以减少传输位数,进一步减少传输参数对边缘设备带宽资源的消耗,从而提高计算速度,在保证计算任务安全可信的前提下,能够有效支持执行高频次交互的计算任务。
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的实施方式,本实施例还提供了另一种基于区块链和联邦学习的模型共建方法,如图2所示,该方法包括:
201、基于可验证随机函数在区块链中随机筛选一个边缘服务器节点作为聚合节点,并利用聚合节点在其下属的边缘设备节点中筛选预设数量个作为训练节点。
202、在训练节点上分别基于预设机器学习算法训练本地模型,并在本地模型训练完成后提取第一模型参数。
对于本实施例,作为一种优选方式,实施例步骤202具体可以包括:在训练节点上分别基于预设机器学习算法以及本地数据集训练本地模型,获取训练结果;依据训练结果与本地数据集的标注结果计算损失函数;若判定损失函数小于预设阈值,则判定本地模型训练完成,提取本地模型训练完成的第一模型参数。其中,在进行训练时,具体可基于梯度下降算法SGD算法的本地训练,以判断本地模型是否通过训练。其中,预设阈值取值在0到1之间,具体可根据实际用用场景进行数值的设定,需要说明的是,预设阈值的取值越接近于1,则反映该本地模型的训练精度越高,反之则越低。
203、将第一模型参数转化为参数特征向量,并提取参数特征向量各个特征维度下的参数子特征向量。
在具体的应用场景中,鉴于提取出的模型参数往往为字符形式,故在本实施例中,在提取出第一模型参数后,可进一步将第一模型参数转化为参数特征向量,具体可转化为一个d维的参数特征向量ω=[ω1,…ωi…,ωd],并在参数特征向量分别提取出d维中各个维度下的参数子特征向量,即ω1,…ωi…,ωd。
204、确定参数子特征向量所属的预设向量区间,并依据预设向量区间对应的向量转化规则对参数子特征向量进行向量转化处理。
其中,预设向量区间至少包括第一预设向量区间、第二预设向量区间以及第三预设向量区间;基于此,实施例步骤204具体可以包括:若确定参数子特征向量所属于第一预设向量区间,则按照第一向量转化规则将参数子特征向量内的数值映射为0;若确定参数子特征向量所属于第二预设向量区间,则按照第二向量转化规则将参数子特征向量内的数值映射为均值矩阵的行列位置,并配置解码矩阵;若确定参数子特征向量所属于第三预设向量区间,则按照第三向量转化规则将参数子特征向量内的数值映射为截断小数位的整数值。
在具体的应用场景中,在确定参数子特征向量所属于第二预设向量区间,进一步按照第二向量转化规则将参数子特征向量内的数值映射为均值矩阵的行列位置,并配置解码矩阵时,实施例步骤具体可以包括:若确定参数子特征向量所属于第二预设向量区间,则提取参数子特征向量在第二预设向量区间中所属的子向量区间;按照参数子特征向量所属的子向量区间,将参数子特征向量内的数值映射为子向量区间对应的行列位置,并配置解码矩阵。
其中,子向量区间至少包括第一子向量区间、第二子向量区间、第三子向量区间、第四子向量区间;若参数子特征向量所属于第一子向量区间,则将参数子特征向量内的数值映射为均值矩阵的第一行列位置,并配置第一解码矩阵;若参数子特征向量所属于第二子向量区间,则将参数子特征向量内的数值映射为均值矩阵的第二行列位置,并配置第二解码矩阵;若参数子特征向量所属于第三子向量区间,则将参数子特征向量内的数值映射为均值矩阵的第三行列位置,并配置第三解码矩阵;若参数子特征向量所属于第四子向量区间,则将参数子特征向量内的数值映射为均值矩阵的第四行列位置,并配置第四解码矩阵。
在具体的应用场景中,预设向量区间的区间端点可根据实际应用场景进行设定。作为一种可选方式,例如可根据经验系数将第一预设向量区间设定为[0,0.1),将第二预设向量区间设定为[0.1,1),将第三预设向量区间设定为[1,+∞);第一子向量区间设定为[0.1,0.325),第二子向量区间设定为[0.325,0.55),第三子向量区间设定为[0.55,0.775)、第四子向量区间设定为[0.775,1)。
相应的,依据预设向量区间对应的向量转化规则对参数子特征向量进行向量转化处理的公式特征描述可为:
即:
(1)对于绝对值大小处于[0,0.1)的向量维度执行Q1(ωi):
Q1(ωi)=0
(2)对于绝对值大小处于[0.1,1)的向量维度执行Q2(ωi):
为了保障顺利解码,需要额外传输一个解码矩阵:
(3)对于绝对值大小处于[1,+∞)的向量维度执行:
Q1(ωi)=(int)ωi
205、若判定各个参数子特征向量均完成向量转化处理,则判定第一模型参数压缩处理完成,将压缩处理完成的第一模型参数上传至聚合节点。
例如,将第一模型参数转化为4维的参数特征向量ω=[ω1,ω2,ω3,ω4],并在参数特征向量分别提取出4维中各个维度下的参数子特征向量,即ω1,ω2,ω3,ω4。进一步的,针对ω1,ω2,ω3,ω4可分别执行实施例步骤204,即确定每个参数子特征向量所属的预设向量区间,并依据预设向量区间对应的向量转化规则对参数子特征向量进行向量转化处理。在判定各个参数子特征向量均完成向量转化处理,即将浮点数值向量全部转化为整数向量后,可进一步判定第一模型参数压缩处理完成,此时可将压缩处理完成的第一模型参数上传至聚合节点。
206、利用聚合节点对压缩处理后的第一模型参数进行解码以及聚合处理,得到第二模型参数。
在具体的应用场景,在执行本实施例步骤之前,还可以包括实施例步骤:根据参数子特征向量所属的预设向量区间,生成量化层数标识。例如,对于第一预设向量区间可生成量化层数标识001,对于第二预设向量区间可生成量化层数标识002,以及对于第三预设向量区间可生成量化层数标识003。相应的,在将压缩处理后的第一模型参数上传至聚合节点时,具体可以包括:将压缩处理完成的第一模型参数和量化层数标识上传至聚合节点。
相应的,对于本实施例,在利用聚合节点对压缩处理后的第一模型参数进行解码以及聚合处理,得到第二模型参数时,实施例步骤206具体可以包括:利用聚合节点并依据量化层数标识,在第一模型参数中提取被映射为均值矩阵行列位置的参数子特征向量以及对应的解码矩阵,依据解码矩阵进行解码处理,得到解码处理后的第一模型参数;计算经过解码处理后的各个第一模型参数的参数平均值,并将参数平均值确定为第二模型参数。承接上面的实例,具体可在第一模型参数中提取对应量化层数标识为002的参数子特征向量以及对应的解码矩阵,进而利用依据解码矩阵第二段内的多层量化进行解码处理,得到将均值矩阵行列位置转化为该位置对应子向量区间的均值。进一步的,可根据第一段中映射得到的0值、第二段中解码得到的均值,以及第三段中截断小数位,保留的整数位得到压缩处理后的第一模型参数。在对压缩处理后的第一模型参数进行聚合处理时,具体可计算所有压缩处理后的第一模型参数的参数平均值,将参数平均值确定为统一的第二模型参数。
207、将第二模型参数发送至训练节点,以利用第二模型参数继续迭代训练本地模型,直至实现各个训练节点间的模型共建。
在具体的应用场景中,在联邦学习过程中,针对训练节点内本地模型的共建过程是动态的,在将第二模型参数发送至训练节点后,各个训练节点的本地模型会依据第二模型参数继续训练,在训练完成后,会重新分别得到一个第一模型参数,进而可重复执行实施例步骤202至207,直至各个训练节点对应的第一模型参数相同或较为接近(如相似度小于预设相似度阈值),判定模型共建完成。相应的,对于本实施例,作为一种可选方式,实施例步骤207具体可以包括:将第二模型参数发送至训练节点,利用第二模型参数替换本地模型的第一模型参数,并重复执行上述训练本地模型,以及利用聚合节点对模型参数聚合处理的过程,直至判定完成训练节点间的模型共建。
借由上述基于区块链和联邦学习的模型共建方法,可首先基于可验证随机函数在区块链中随机筛选一个边缘服务器节点作为聚合节点,并利用聚合节点在其下属的边缘设备节点中筛选预设数量个作为训练节点;之后可在训练节点上分别基于预设机器学习算法训练本地模型,并在本地模型训练完成后提取第一模型参数;进一步按照预设数据量化压缩规则对第一模型参数进行压缩处理,并将压缩处理后的第一模型参数上传至聚合节点;从而利用聚合节点对压缩处理后的第一模型参数进行解码以及聚合处理,得到第二模型参数;最后可通过将第二模型参数发送至训练节点,以利用第二模型参数继续迭代训练本地模型,直至实现各个训练节点间的模型共建。通过本申请中的技术方案,可引入量化技术,基于数据量化压缩规则对生成参数进行参数压缩处理,以减少传输位数,进一步减少传输参数对边缘设备带宽资源的消耗,从而提高计算速度,在保证计算任务安全可信的前提下,能够有效支持执行高频次交互的计算任务。
进一步的,作为图1和图2所示方法的具体实现,本申请实施例提供了一种基于区块链和联邦学习的模型共建装置,如图3所示,该装置包括:筛选模块31、训练提取模块32、处理上传模块33、解码聚合模块34、发送模块35;
筛选模块31,可用于基于可验证随机函数在区块链中随机筛选一个边缘服务器节点作为聚合节点,并利用聚合节点在其下属的边缘设备节点中筛选预设数量个作为训练节点;
训练提取模块32,可用于在训练节点上分别基于预设机器学习算法训练本地模型,并在本地模型训练完成后提取第一模型参数;
处理上传模块33,可用于按照预设数据量化压缩规则对第一模型参数进行压缩处理,并将压缩处理后的第一模型参数上传至聚合节点;
解码聚合模块34,可用于利用聚合节点对压缩处理后的第一模型参数进行解码以及聚合处理,得到第二模型参数;
发送模块35,可用于将第二模型参数发送至训练节点,以利用第二模型参数继续迭代训练本地模型,直至实现各个训练节点间的模型共建。
在具体的应用场景中,在按照预设数据量化压缩规则对第一模型参数进行压缩处理时,处理上传模块33,具体可用于将第一模型参数转化为参数特征向量,并提取参数特征向量各个特征维度下的参数子特征向量;确定参数子特征向量所属的预设向量区间,并依据预设向量区间对应的向量转化规则对参数子特征向量进行向量转化处理;相应的,为了将压缩处理后的第一模型参数上传至聚合节点,处理上传模块33,具体可用于若判定各个参数子特征向量均完成向量转化处理,则判定第一模型参数压缩处理完成,将压缩处理完成的第一模型参数上传至聚合节点。
相应的,预设向量区间至少包括第一预设向量区间、第二预设向量区间以及第三预设向量区间,在确定参数子特征向量所属的预设向量区间,并依据预设向量区间对应的向量转化规则对参数子特征向量进行向量转化处理时,处理上传模块33,具体可用于若确定参数子特征向量所属于第一预设向量区间,则按照第一向量转化规则将参数子特征向量内的数值映射为0;若确定参数子特征向量所属于第二预设向量区间,则按照第二向量转化规则将参数子特征向量内的数值映射为均值矩阵的行列位置,并配置解码矩阵;若确定参数子特征向量所属于第三预设向量区间,则按照第三向量转化规则将参数子特征向量内的数值映射为截断小数位的整数值。
在具体的应用场景中,在按照第二向量转化规则将参数子特征向量内的数值映射为均值矩阵的行列位置,并配置解码矩阵时,处理上传模块33,具体可用于若确定参数子特征向量所属于第二预设向量区间,则提取参数子特征向量在第二预设向量区间中所属的子向量区间;按照参数子特征向量所属的子向量区间,将参数子特征向量内的数值映射为子向量区间对应的行列位置,并配置解码矩阵。
在具体的应用场景中,如图4所示,该装置还包括:生成模块36;
生成模块36,可用于根据参数子特征向量所属的预设向量区间,生成量化层数标识;
相应的,在将压缩处理后的第一模型参数上传至聚合节点时,处理上传模块33,具体可用于将压缩处理完成的第一模型参数和量化层数标识上传至聚合节点。
在具体的应用场景中,在利用聚合节点对压缩处理后的第一模型参数进行解码以及聚合处理,以得到第二模型参数时,解码聚合模块34,具体可用于利用聚合节点并依据量化层数标识,在第一模型参数中提取被映射为均值矩阵行列位置的参数子特征向量以及对应的解码矩阵,依据解码矩阵进行解码处理,得到解码处理后的第一模型参数;计算经过解码处理后的各个第一模型参数的参数平均值,并将参数平均值确定为第二模型参数。
在具体的应用场景中,在将第二模型参数发送至训练节点,以利用第二模型参数继续迭代训练本地模型,直至实现各个训练节点间的模型共建时,发送模块35,具体可用于将第二模型参数发送至训练节点,利用第二模型参数替换本地模型的第一模型参数,并重复执行上述训练本地模型,以及利用聚合节点对模型参数聚合处理的过程,直至判定完成训练节点间的模型共建。
需要说明的是,本实施例提供的一种基于区块链和联邦学习的模型共建装置所涉及各功能单元的其他相应描述,可以参考图1至图2的对应描述,在此不再赘述。
基于上述如图1至图2所示方法,相应的,本实施例还提供了一种存储介质,存储介质具体可为易失性或非易失性,其上存储有计算机可读指令,该可读指令被处理器执行时实现上述如图1至图2所示的基于区块链和联邦学习的模型共建方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景的方法。
基于上述如图1至图2所示的方法和图3、图4所示的虚拟装置实施例,为了实现上述目的,本实施例还提供了一种计算机设备,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1至图2所示的基于区块链和联邦学习的模型共建方法。
可选的,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该实体设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理上述计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与信息处理实体设备中其它硬件和软件之间通信。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现。
通过应用本申请的技术方案,与目前现有技术相比,本申请可首先基于可验证随机函数在区块链中随机筛选一个边缘服务器节点作为聚合节点,并利用聚合节点在其下属的边缘设备节点中筛选预设数量个作为训练节点;之后可在训练节点上分别基于预设机器学习算法训练本地模型,并在本地模型训练完成后提取第一模型参数;进一步按照预设数据量化压缩规则对第一模型参数进行压缩处理,并将压缩处理后的第一模型参数上传至聚合节点;从而利用聚合节点对压缩处理后的第一模型参数进行解码以及聚合处理,得到第二模型参数;最后可通过将第二模型参数发送至训练节点,以利用第二模型参数继续迭代训练本地模型,直至实现各个训练节点间的模型共建。通过本申请中的技术方案,可引入量化技术,基于数据量化压缩规则对生成参数进行参数压缩处理,以减少传输位数,进一步减少传输参数对边缘设备带宽资源的消耗,从而提高计算速度,在保证计算任务安全可信的前提下,能够有效支持执行高频次交互的计算任务。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。