基于生成式对抗网络的联邦学习贡献度评估算法

基于生成式对抗网络的联邦学习贡献度评估算法

基本信息

标题Incentive mechanism for federated learning based on generative adversarial network
作者YU Sunjie,ZENG Hui,XIONG Shiyu,SHI Hongzhou
期刊Journal of Computer Applications
发表日期2024年
关键词联邦学习;生成式对抗网络;激励机制;数据共享

背景

​ 针对当前难以衡量不同数据量、不同数据质量、不同数据分布的参与节点的联邦学习贡献度等问题,提出一种基于生成式对抗网(GAN)的联邦学习贡献度评估算法,该算法通过联合模型筛选样本并生成数据标签,引入参与节点的本地数据标签分布平衡非独立同分布数据标签对贡献度评估的影响。

方案设计

​ 出于联邦学习对数据隐私的保护,中心节点难以大量采样来自各参与节点的数据,该文章采用 GAN在保证数据隐私安全的同时生成大量高质量测试数据,该过程透明、可审计,为参与联邦学习任务的节点提供公平的贡献度评估方法。实现步骤如下:

  • 中央节点训练GANT(生成器G和判别器D)模型,得到训练好的生成器G。

  • 生成器G接受随机噪声z作为输入,生成仿真特征样本g(z)。

  • 使用联合模型M对生成的样本g(z)进行筛选。

  • 对于满足筛选条件的样本g(z),取argminc∈Ce{‖M(g(z)) - c‖}作为该样本的标签,形成测试数据集 D ‾ \overline{D} DCe 为数据标签的独热编码集合,c 为数据标签的独热编码

  • D ‾ i \overline{D}_i Di表示数据标签为第 i 类数据标签的数据。参与节点 k 的贡献度计算如下:
    C o n t k = n ⋅ ∑ i F k , i ⋅ a c c ( M k , D ‾ i ) Cont_k = \sqrt{n} ⋅\sum_iF_{k,i} ⋅ acc(M_k,\overline{D}_i ) Contk=n iFk,iacc(MkDi)
    其中, M k M_k Mk 表示参与节点 k 的本地模型,acc( M k M_k Mk D ‾ i \overline{D}_i Di) 表示 M k M_k Mk 使用数据集 D ‾ i \overline{D}_i Di的精度, F k , i F_{k,i} Fki 表示参与节点 k 本地数据集中数据标签为第 i 类数据标签的数据所占百分比,n 表示参与节点 k本地数据集中所拥有的数据标签关于总标签的百分比。

那么,中央节点是如何训练GANT模型的呢?大概的流程如下:

1.固定生成器G,优化判别器D:

  • 对于任意输入x,使用联合模型M计算其为伪造样本的评估值Y(x) = min{‖M(x) - c‖}, c∈Ce
  • 采样自真实数据分布 p d a t a p_{data} pdata(x)的数据x,标注为1-αY(x),其中α∈[0,1]为联合模型对真实样本的影响因子
  • 采样自生成器数据分布 p g ( x ) p_{g(x)} pg(x)的数据g(z),标注为μ-βY(g(z)),其中β∈[0,1]为联合模型对伪造样本的影响因子,μ∈[0,1]为伪造样本的上界
  • 采用均方误差作为判别器D的损失函数,优化D

2.固定判别器D,优化生成器G:

  • 生成器G的目标是最大化判别器D的损失函数,即 L G ( D , G ) = m a x { L D ( D , G ) } L_G(D,G) = max\{{L_D(D,G)}\} LG(DG)=max{LD(DG)}

知道了大概的方案,下面,我们将具体介绍一下GAN以及本文提出的融合训练模型的生成式对抗网络GANT是如何实现的。

生成式对抗网络(GAN)

​ GAN 由 1 个 生 成 器(Generator, G)和 1 个 判 别 器(Discriminator, D)构成:生成器以学习真实数据分布为目标,输入随机噪声 z,输出生成图片 g (z);判别器以正确识别是否真实数据为目标,输入服从真实数据分布的采样数据x,输出是真实数据的概率 D( x)。生成器 G 和判别器 D 共同训练达到纳什均衡。GAN目标函数为:

img

GAN结构图如下:
在这里插入图片描述

​ 以生成图片作为例子具体说明,我们有两个网络,G(Generator)和D(Discriminator)。Generator是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。Discriminator是一个判别网络,判别一张图片是不是“真实的”。它的输入是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。在训练过程中,生成网络的目标就是尽量生成真实的图片去欺骗判别网络D,而网络D的目标就是尽量把网络G生成的图片和真实的图片分别开来,即D使得最大概率地分对训练样本的标签(最大化log D(x)和 𝑙𝑜𝑔(1−𝐷(𝐺(𝑧)))),G最小化log(1 – D(G(z))),即最大化D的损失。

融合训练模型的生成式对抗网络(GANT)

​ 联合模型通过真实数据训练得到,将联合模型作为影响判别器的一个重要因素,可以缓解由于采样特征数据的数据量不足带来的生成器难收敛和精度不足的问题。与 GAN 算法的训练机制类似,GANT算法的训练机制同样分为两个部分:固定生成器 G 优化判别器 D和固定判别器 D优化生成器 G。

GANT 结构如下图所示:

在这里插入图片描述

GANR大致流程如下:

1.固定生成器G,优化判别器D:

  • 对于任意输入x,使用联合模型M计算其为伪造样本的评估值Y(x) = min{‖M(x) - c‖}, c∈Ce

  • 采样自真实数据分布 p d a t a p_{data} pdata(x)的数据x,标注为1-αY(x),其中α∈[0,1]为联合模型对真实样本的影响因子

  • 采样自生成器数据分布 p g ( x ) p_{g(x)} pg(x)的数据g(z),标注为μ-βY(g(z)),其中β∈[0,1]为联合模型对伪造样本的影响因子,μ∈[0,1]为伪造样本的上界

  • 采用均方误差作为判别器D的损失函数,优化D,其目标函数描述为:
    m i n { L D ( D , G ) = E x − p d a t a ( x ) [ ( 1 − α Y ( x ) − D ( x ) 2 ) ] + E x − p z ( x ) [ ( μ − β Y ( g ( z ) ) − D ( g ( z ) ) ) 2 ] } \mathop{min}\{L_D(D,G)=E_{x-p_{data}(x)}[(1-\alpha Y(x)-D(x)^2)]+E_{x-p_{z}(x)}[(\mu-\beta Y(g(z))-D(g(z)))^2]\} min{LD(D,G)=Expdata(x)[(1αY(x)D(x)2)]+Expz(x)[(μβY(g(z))D(g(z)))2]}

2.固定判别器D,优化生成器G:

  • 生成器G的目标是最大化判别器D的损失函数,即$ L_G(D,G) = max{{L_D(D,G)}}$

​ 通过这样的对抗训练过程,生成器G学习生成接近真实数据分布的样本,而判别器D则学习识别真实样本和生成样本的能力。联合模型M作为一个重要因素参与到了判别器D的训练中,能够帮助缓解生成器G收敛困难和精度不足的问题。

​ 这种基于GANT的训练机制,能够在保护参与节点隐私的前提下,生成高质量的测试数据样本,为后续的贡献度评估提供有力支撑。

总结

​ 该方案中,中央节点需要从各个参与节点获取某些输入数据来训练GANT模型,这涉及到了参与节点数据的共享问题。具体来说,中央节点训练GANT模型所需的输入包括:

1.联合(聚合)模型M:通过聚合各参与节点提交的本地模型得到的,需要各参与节点提供自己的本地模型

2.真实数据分布pdata(x):这部分数据来自各参与节点的本地数据集,需要各参与节点提供部分数据样本

​ 可以看出,虽然GANT算法本身不需要直接访问参与节点的全部数据,但仍需要参与节点提供一定的数据样本和模型参数。这就涉及到了如何在保护参与节点隐私的前提下,安全地共享这些必要的数据输入。论文中并没有详细说明这部分的实现机制,需要采用一些隐私保护技术,来确保在数据共享过程中参与节点的隐私不会被泄露,这也是论文中还需要完善的方面。

护参与节点隐私的前提下,安全地共享这些必要的数据输入。论文中并没有详细说明这部分的实现机制,需要采用一些隐私保护技术,来确保在数据共享过程中参与节点的隐私不会被泄露,这也是论文中还需要完善的方面。

参考论文:http://www.joca.cn/CN/10.11772/j.issn.1001-9081.2023020244

  • 31
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyTorch是一种深度学习框架,可以用于基于生成对抗网络(GAN)的模型训练和实现。GAN是一种由生成器和判别器组成的网络结构,旨在生成逼真的数据样本。 在PyTorch中,你可以使用其强大的张量操作和自动求导功能来构建和训练GAN模型。下面是一个简单的示例,展示了如何在PyTorch中实现一个基本的GAN: ```python import torch import torch.nn as nn import torch.optim as optim # 定义生成器模型 class Generator(nn.Module): def __init__(self): super(Generator, self).__init__() # 定义生成网络结构 def forward(self, x): # 前向传播逻辑 # 定义判别器模型 class Discriminator(nn.Module): def __init__(self): super(Discriminator, self).__init__() # 定义判别器网络结构 def forward(self, x): # 前向传播逻辑 # 初始化生成器和判别器 generator = Generator() discriminator = Discriminator() # 定义损失函数和优化器 criterion = nn.BCELoss() # 二分类交叉熵损失函数 optimizer_G = optim.Adam(generator.parameters(), lr=0.0002, betas=(0.5, 0.999)) optimizer_D = optim.Adam(discriminator.parameters(), lr=0.0002, betas=(0.5, 0.999)) # 训练GAN模型 for epoch in range(num_epochs): for i, real_data in enumerate(data_loader): # 更新判别器 optimizer_D.zero_grad() # 计算真实数据的判别器损失 # 生成一批噪声数据并通过生成生成假数据 # 计算假数据的判别器损失 # 计算总判别器损失 # 反向传播和优化判别器参数 # 更新生成器 optimizer_G.zero_grad() # 生成一批噪声数据并通过生成生成假数据 # 计算假数据的判别器损失 # 计算生成器损失 # 反向传播和优化生成器参数 # 打印训练信息 # 使用生成生成样本 noise = torch.randn(batch_size, latent_size, device=device) fake_samples = generator(noise) ``` 这只是一个基本的示例,你可以根据你的需求和数据集进行相应的调整。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值