【阅读笔记】联邦学习实战——构建公平的大数据交易市场
联邦学习实战——构建公平的大数据交易市场
前言
FATE是微众银行开发的联邦学习平台,是全球首个工业级的联邦学习开源框架,在github上拥有近4000stars,可谓是相当有名气的,该平台为联邦学习提供了完整的生态和社区支持,为联邦学习初学者提供了很好的环境,否则利用python从零开发,那将会是一件非常痛苦的事情。本篇博客内容涉及《联邦学习实战》第十四章内容,使用的fate版本为1.6.0,fate的安装已经在这篇博客中介绍,有需要的朋友可以点击查阅。本章内容为构建公平的大数据交易市场,随着人工智能的迅速发展,海量的数据已经成为了帮助训练更好模型的最重要的燃料,但是隐私泄露问题阻碍着大量的数据无法流通入市场中,如果采用联邦学习技术,让数据不出本地,就能够帮助模型进行训练,同时用户的隐私也不会泄露,这将会是两全其美的好事,所以,构建公平的大数据交易市场的意义极为重要。
1.1节中介绍了数据有资产属性,当数据具有此属性后,数据便能够直接或者间接为公司、社会创造价值和收益,并且可以作为特殊的商品在市场中交易。
世界各国和中国政府也意识到大数据对未来发展的意义,并且均已经在国家层面进行战略部署,纷纷发布各种与数据相关的战略计划。数据商品与传统商品相比,前景更为广阔,同时也面临许多挑战,主要包括:
- 数据的质量、价格如何定义。
- 如何在合法合规前提下,不泄露用户的隐私。
- 如何构建合理的激励机制鼓励更多参与方加入到数据交易市场中。
1. 大数据交易
1.1 数据交易定义
指一种对数据进行买卖的行为,企业或政府可以通过交易平台,找到所需的数据资源。大数据交易由三方共同参与,分别为数据提供方,大数据交易平台和数据需求方。
交易平台主要分为三种模式:
- 大数据分析结果交易:交易对象不是原始数据,而是对数据进行清洗、分析、建模、可视化等操作后得出结果再出售。
- 数据产品交易:通过与其他数据拥有者合作,对数据整合、清洗、脱敏,形成数据产品后出售。
- 交易中介:平台本身不存储和分析数据,而是作为交易渠道,通过API接口形式为各类用户提供出售、购买数据服务,实现交易流程管理。
1.2 数据确权
数据确权是指数据交易后,数据的所有权和控制权归属问题。数据确权也被普遍任务是数据交易中首要解决的问题,产权归属是交易的前提与基础。
但是由于数据在交易中具有流动性、实时性、复杂性和易复制性等特点,很难进行统一的界定。大数据交易面临的产权归属主要面临四大瓶颈:
- 数据权利类型不明确,无法确定其适用所有权法、产权法还是知识产权法。
- 数据权利主体究竟属于数据生产者还是数据持有者。
- 数据的控制和使用权利界限不明。
- 数据通过互联网容易复制,权属保护困难。
当前的数据所有权很多时候是由平台与用户单独签订的协议,比如使用微信时要遵循《腾讯微信软件许可服务协议》。
1.3 数据定价
根据贵阳大数据交易所在2016年推出的《数据定价办法》对数据的定价进行了量化,将数据的影响因素归结为数据品种、时间跨度、数据深度、数据的实用性、完整性以及数据样本的覆盖度等六个维度。
2. 基于联邦学习构建新一代大数据交易市场
在基于联邦学习构建的大数据交易市场中,卖家并不直接将数据放在交易平台上进行交易,而是组建一个联邦学习网络,通过这个网络,在各个参与方不出本地的前提下,联合各参与方构建更多的二次开发产品,包括联邦模型、联邦数据分析、联邦画像数据等。这些产品通过交易平台对用户进行销售。
相对于传统的大数据市场,这种新型交易平台的优势:
- 数据不离开本地,更不直接与平台交互,很大程度减少了隐私泄露风险。
- 提供更加丰富的数据交易商品。
3. 联邦学习激励机制助力数据交易
要想数据交易市场在一个良性环境下持续并长久的运行,需要一种激励机制,通过激励数据所有者贡献有价值的数据,可以更好地调动各参与方的积极性。此外,数据交易市场的数据提供方和数据交易平台在数据存储和训练上都需要一定的资源成本开销,公平的激励策略能够帮助各参与方从联邦学习生态中受益。
SHapley(SV)是公平定量评估用户边际贡献度的常用指标。SV起源于合作博弈,并被广泛应用于很多领域,从经济学、信息论到机器学习。SV之所以火热,是因为它具有公平性、个体理性化和可加性等优越性质。在联邦学习中,一个参与节点的SV能够评估该节点对聚合最终模型的边际贡献量。然而SV开销大,计算复杂的为O(n!),n为节点数量。
上一章引入了联邦激励机制的概念,本章详细介绍一种基于区块链的联邦学习P2P支付系统,简称为联邦币,以实现基于SV值的公平激励分配。
在FedCoin中,区块链共识节点计算Shapley值,并基于Shapley工作量证明共识协议创建新的区块。在PoSap机制中,出块奖励是联邦学习任务奖励的一部分,通过共识节点对联邦学习节点的Shapley值计算来决定写块权,从而引导区块链共识算力服务于联邦学习激励分配。
与流行的比特币相比,FedCoin采用的PoSap共识机制改进了BitCoin中PoW工作量证明中无意义的散列运算。通过基于真实数据的仿真实验,FedCoin能够公平地评估各参与方对全局模型基于SV的贡献度,并保证达到共识所需的计算资源有限(即在有限的资源内一定能共识)。
4. FedCoin支付系统设计
这里我简要介绍下联邦学习激励机制的问题描述,这部分首先介绍了FL任务的优化问题,通过SGD求解,计算每个节点的梯度,并将梯度上传到中心节点进行聚合,在这个过程中,计算每个节点的SV,可由下式计算得到:
ϕ i = ∑ S ( K − S − 1 ) ! − S ! K ! ( F S ( w ) − F S ∪ i ( w ) ) \phi _{i}=\sum_{S}\frac{(K-S-1)!-S!}{K!}(F_S(w)-F_{S\cup i}(w)) ϕi=S∑K!(K−S−1)!−S!(FS(w)−FS∪i(w))
S是不包含节点i的任意子集,K是总节点个数,
F
S
(
w
)
F_S(w)
FS(w)是模型参数w在节点集合S上的损失函数。
可以观察到
ϕ
i
\phi _{i}
ϕi是一个随着参与节点数量增长的NP难问题,我们可以把这个过程看成是K!次全排列中计算节点的边际贡献的平均值。
回到系统的设计,FedCoin系统包括两个参与者网络:联邦学习网络和P2P区块链网络。参与网络的节点用户可以分为四类:联邦学习模型需求方(任务方),联邦学习客户端,联邦学习服务器和区块链共识节点。
- 联邦学习模型需求方:需要训练一个联邦学习网络的用户节点,设其任务预算为V。
- 联邦学习客户端:分布式数据持有者,通过完成协同训练任务获得报酬支付。每个联邦学习客户端基于本地数据训练本地模型,并将模型参数更新提交给联邦学习服务器。
- 联邦学习服务器:联邦学习网络中的一个中心化服务器,用于协调模型训练过程,并接收来自联邦学习模型需求方的任务支付V。联邦学习服务器扮演三个角色,第一,他将一个学习任务分发给客户端节点,并标价TrainPrice。第二,通过安全聚合协议聚合模型更新,获得计算费(ComPrice)。第三,向区块链网络分配SV激励分配处置费SapPrice,用以支付共识节点的出块奖励。 T r a i n P r i c e + C o m P r i c e + S a p P r i c e ⩽ V TrainPrice+ComPrice+SapPrice\leqslant V TrainPrice+ComPrice+SapPrice⩽V,以便维持支付系统的自平衡,从而不依赖于外部系统供本系统的有价激励。
- 区块链共识节点:通过共识协议维护一个分布式公共账本状态的一致性。
因此,联邦学习通过联邦学习服务器将联邦学习网络和区块链网络连接在一起。需要注意的是,SapPrice和TrainPrice随着训练轮次的增加而减少,而训练的总支付可以在轮次之间按照场景定制化分配。
4.1 PoSap共识算法
区块链网络中共识节点也称为“矿工”。当矿工从联邦学习网络中接收到SV的计算任务后,矿工为每一个联邦学习客户端节点计算SV,并构建向量
S
=
[
s
k
]
k
∈
[
1
,
K
]
S=[s_k]_{k\in[1,K]}
S=[sk]k∈[1,K],其中
s
k
s_k
sk提供模型参数
w
k
∈
W
w_k\in W
wk∈W的客户端的SV。每个矿工按照算法1独立计算SV向量。由于挖矿的目标是竞争计算SV向量,从而证明矿工的计算能力,将该算法命名为PoSap。
算法1的输入来自联邦学习网络的任务规范,输出是一个写入激励分配支付的新区块。
下面对算法分步进行讲解。
- 在算法1中,一个矿工先将SV向量初始化为全零向量,并将计算迭代数设置为0(time=0)。只要满足没有接收到新块或者收到的区块未能通过算法2的验证就继续进行。
- SV计算过程在第3行——第11行,矿工初始化一个临时的SV向量 S t S_t St,以记录当前迭代轮次中的计算值,然后矿工生成K个联邦学习客户端的随机序列。根据该排列计算第一个客户端的SV,这是该客户端节点对损失函数降低的贡献。对于下一个节点i,SV被计算为其边际贡献。通过对所有先前迭代和当前 S t S_t St求平均值来更新S,迭代时间随后递增1,并广播S和时间(第十行)。
- 每当矿工接收到新的S和time时,矿工计算所有接收到的S的平均值 S ‾ \overline{S} S。然后矿工计算自己的S与 S ‾ \overline{S} S之间的P阶距离,当距离不大于采矿难度D时,矿工成为胜利者,获得出块权,将新区块追加到当前最长链(第15行)。难度D是动态调整的。
算法2是验证区块算法,即算法1中VerifyBlock函数。
每当一个矿工接收到一个新的区块Blk时,矿工根据算法2验证这个区块,一旦验证通过,该新区块被更新到本地区块链,挖矿终止。一个新区块需要满足三个条件才能通过验证。
- ∣ ∣ S t − S ‾ t ∣ ∣ p ⩽ D ||S_t-\overline{S}_t||_p \leqslant D ∣∣St−St∣∣p⩽D,目的是验证该区块获胜者是否生成了包含有效Shapley值的区块。
- ∣ ∣ S ‾ − S ‾ t ∣ ∣ p ⩽ D ||\overline{S}- \overline{S}_t ||_p \leqslant D ∣∣S−St∣∣p⩽D,要求 S ‾ \overline{S} S足够接近本地的S向量,区块链网络同步的理想情况下二者应该相等。
- 当前ID是最大的,以确保在最长链上。
一个区块包括区块头和区块体。
字段名称 | 解释 |
---|---|
区块ID | 区块高度 |
获胜者ID | 区块生成者标志 |
平均S | 算法13行计算出的SV |
前一个区块散列 | 前一个区块的散列值 |
获胜者S | 获胜者计算出的SV |
难度 | 所需难度D |
Merkle树根 | 区块体中交易组织成的Merkle树根 |
区块体中记录两类数据:任务规范(包括算法1的所有输入),区块链网络中的交易。
新区块的挖掘速度是动态调整的。影响因素有两个:矿工的总挖矿能力和生成区块的速度。在相同的挖矿能力下, 随着生成区块速度的提高,挖矿难度会相应降低。在相同区块生成速度的情况下,挖矿难度会随着挖矿能力的提高而提高。难度更新可以通过部署智能合约来实现。
4.2 支付方案
联邦学习模型需求方通过转账V个FedCoin给联邦学习服务器来实现联邦任务的发布,当该笔交易记录到区块上后,联邦学习服务器在客户端发布学习任务规范。V的值应该不大于请求者的联邦学习模型的价值。为了合理分配V,所有节点都应该注册一个交易账户。然后将V的值分成以下三部分。
- TrainPrice:给联邦学习客户端的支付费用。
- ComPrice:向联邦学习服务器支付的处理模型聚合的计算费用。
- SapPrice:支付给区块链网络矿工计算SV的出块奖励。
具体支付方案如算法3所示。
算法3的步骤分析如下:
- 在算法3中,当联邦学习服务器接收到来自需求方的支付V时,表明该服务器成功接收一个模型训练任务。然后服务器计算TrainPrice和SapPrice,并留下ComPrice=V-TrainPrice-SapPrice作为自己处理任务的报酬支付。
- 将训练任务发布给客户端,并附加训练标价。
- 训练完成后,服务器向区块链网络发布Shapley值计算任务,价格为SapPrice。
- 区块链网络通过成功挖掘一个新区块完成任务,继而联邦学习服务器创建一个交易将TrainPrice+SapPri传递给获胜者。
- 区块获胜者将TrainPrice按照Shapley的比例分配给客户端并创建相应转账交易,所有交易及在系统中未提交交易都将存储在该新区块中。
5. FedCoin的安全分析
PoSap的安全性与比特币类似,鼓励矿工向系统贡献其计算资源,当系统中矿工的数量和算力足够多时,该系统的安全性随之提升。此外,还要设计一个抵御大型矿池的形成的支付方案,FeCoin不能抵御超过50%的矿工共谋攻击。
对于自私挖矿策略的安全性讨论,即讨论区块胜利者不发布有效区块而继续挖掘下一个区块,从而获得挖掘上的时间优势问题。
- 不仅无法领取区块奖励SapPrice,同时,不能在不发布私有区块情况下挖掘下一个区块。
- 如果学习任务并行,一个自私矿工可以保留一个区块,继续挖掘下一个区块。这里的解决方案是不建议处理并行联邦学习任务。
6. 实例演示
FedCoin的演示Demo和展示视频的链接附上,请各位尝试和观看。
阅读总结
虽然是一篇介绍联邦学习与区块链相结合的应用内容,没有实操部分,全是文字的内容也十分乏味,但是通过这一章内容的学习,又一次拓宽了我的思维,对于联邦学习中的激励问题,可以通过区块链的可信计算来解决奖励分配,这让大数据交易更为安全和直观,从某种意义上来说还很好的衡量了大数据的价值。希望在日后遇到相同情景的需求下,我也能够合理利用联邦学习的激励机制,来解决奖励分配问题。
更多推荐
所有评论(0)