工作流程:
1.初始化(Initialization):从预定义好的目标函数和全局梯度中随机选择参数。
2.本地模型更新(Local model update):终端设备根据所需的迭代次数来训练本地模型。
3.本地模型上传(Local model upload):矿工与终端设备进行绑定。终端设备上传本地模型参数给矿工,同时上传相应的本地计算时间进行验证。
4.交叉验证(Cross Verification):矿工依次验证终端设备的模型参数和计算时间。计算时间是否与数据的大小成正比决定了模型参数的可靠性。验证后的数据存储在矿工的potential块中,直到所有模型参数验证并存储在一个块中。
5.区块生成(Block generation):每一轮都会运行共识算法。当有获胜的矿工获得区块生成机会并生成候选块(candidate block)时便会停止共识算法,同时强迫其他矿工停止竞争区块生成的机会。
6.区块传播(Block propagation):获胜的矿工将候选块作为新区块广播给所有参与方。如果验证无误,系统中的所有矿工将新区块追加到本地的账本中。
7.全局模型更新(Global model update):被选择的矿工聚合所有本地模型参数,然后将新的全区参数写入块中。
8.全局模型下载(Global model download):所有的终端设备从新区块中下载全局参数,并决定是否进行下一轮。
分类:
完全去中心化(Fully decentralized):每个终端设备都有可能领导特定的一轮训练,并发挥聚合器(中心服务器)的作用。可能性与所处理的资源成正比,包括:计算和存储性能、本地数据质量、网络稳定性等因素。
部分去中心化(Partially decentralized):部分去中心化的FL允许一个选定的矿工或委员会达成共识,并决定候选区块。
混合型(Hybrid):一些支持区块链的FL系统选择了灵活的共识算法(例如基于委员会的算法),这样既可以完全去中心化又可以部分去中心化,这种情况下称为Hybrid。
参考文献:https://www.researchgate.net/profile/Youyang-Qu/publication/359493327_Blockchain-Enabled_Federated_Learning_A_Survey/links/6242659957084c718b72b113/Blockchain-Enabled-Federated-Learning-A-Survey.pdf