链接:IEEE Xplore Full-Text PDF:
作者:Ismael Martinez(蒙特利尔大学团队)
前言:这篇文章虽然是投在国内举办的会议上面(没有丝毫瞧不起CyberC会议的想法哈),但是其想法我觉得还是很新颖的。该方案主体是采用了EOS区块链结构,使用off-chain来直接存储本地模型训练的梯度值,使用on-chain来存储本地模型训练得到梯度值的hash值,防止数据被篡改。激励机制是采用了token,文中没有提及太多,就是简单的根据数据消耗量来奖励。同时,off-chain是结合IPFS星际文件系统来存储梯度值,这能极大地提高查询效率。另外,这里用到了大量的智能合约操作,主要是限制模型拥有者与本地节点功能的重合,也就是希望他么各司其职互不打扰。
Motivation:以往方案的缺陷不足
- BlockFL链:仅根据训练数据量来奖励,评价标准就是一个训练时间指标,恶意不诚实节点很容易造假骗取奖励;
- DeepChain链:该方案严重依赖诚实的委员节点,通过随机法选择委员节点,这在实际情况下可能不太现实;
- 以太坊区块链(kurtulmusv and Daniel):该方案基于以太坊结构来实现,面临的问题是gas的费用一直在上涨,普通用户可能难以支付;
简而言之,相关工作的局限性可归纳为奖励用户贡献的不准确或效率低下,以及区块链上数据缺乏可扩展性。
Idea:
1)模型拥有者O将当前轮次的模型参数以及其他相关信息发送给本地设备D;
2)本地设备D使用本地数据在off-chain训练模型,并计算最终的梯度值;
3)本地训练完成后,梯度值、数据集大小、设备地址以及版本号作为参数被送至智能合约FederatedLearning函数;
4)设备D将步骤3内包括所用参数的transaction法中至on-chain的生产者P;
5)每一个生产者将接收到的transaction添加至自己对应的transaction队列后面,等待验证;
6)每一个生产者会依次执行两个智能合约操作。首先使用FederatedLearning函数来验证用户身份角色,然后使用UploadGradient函数验证每个transaction内参数的正确性;
7a)一旦验证通过,该transaction会被立即添加至下一个block;
7b)提交了相应transaction的设备D会受到奖励,通过之前上传的设备地址发放,奖励数额则是和训练数据消耗量成正比;
Thoughts:
- 亮点一:使用off-chain来直接存储本地模型训练的梯度值,使用on-chain来存储本地模型训练得到梯度值的hash值,防止数据被篡改
off-chain和on-chain
- 生产者确保本地节点训练的模型参数真实性(未被恶意篡改)是通过比较on-chain和off-chain上面保存的梯度hash值,而确保模型参数准确性是通过比较本地节点训练产生的验证损失的趋势来判断,如果一直在减少,那说明这个模型是训练成功的;
- 上述检验模型参数准确性的方法是CSVES方法,该方法的缺陷在于一些有效的模型参数可能在验证时得到的损失值依旧会增加;
- 仅仅根据数据消耗量作为标准来奖励,未得到证实;
- 存储在off-chain的模型参数信息只有模型拥有者有权限可以访问,另外训练模型参数也会采取Paillier同态加密算法加密,进一步确保数据隐私性。
|