生成对抗网络(GAN)

生成对抗网络(GAN)由生成器和判别器组成,通过博弈过程学习数据分布。训练时,判别器与生成器交替迭代,判别器试图区分真实和伪造样本,而生成器则努力生成逼真的数据。最终,当判别器无法区分时,生成器学会了数据分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


生成对抗网络是最近几年的热门研究方向,最近因为需要采用生成对抗网络对语音信息进行数据增广、增强处理,对一些论文进行了总结,如有不对之处,请大家多多指正。

生成对抗网络

生成对抗网络GAN(Generative adversarial networks)是在2014年由Ian Goodfellow大牛基于博弈论提出的,原文。如下图所示,生成对抗网络由两部分组成:生成器(Generator,G)和判别器(Discriminator,D)。生成器接收一个随机噪色,通过生成模型(一般为神经网络)生成一个假的样本。而判别器的输入为一个样本,通过判别网络判断这个输入的样本是来自于真实的数据还是由生成器生成的假数据。通过训练,判别器会给真实样本输出尽可能大的概率值,给生成样本尽可能小的概率值,而生成器会不断学习真实样本的数据分布,生成尽可能真的数据,直到判别器也无法判别这个样本是真实样本还是由生成样本(判别器的输出概率为0.5),即达到纳什平衡。
在这里插入图片描述

损失函数

由上面的描述可知,生成判别网络训练的时候,对于真实样本,判别器的输出越大越好(接近于1),即D(x)越大越好,而对于由生成器生成的样本,判别器的输出越小越好,即D(G(z))越小越好,但这两者是矛盾的,因此为了统一表示,将生成样本对应的判别器输出改写为1-D(G(z)),这样就能将这两者统一进行优化了,其损失函数可表示为:
在这里插入图片描述
这是一个最大最小优化,即包含了判别模型的优化,又包含了生成模型以假乱真的优化。</

生成对抗网络(Generative Adversarial Networks, GANs)是由Ian Goodfellow等人在2014年提出的深度学习模型架构[^4]。GAN由两个主要组成部分组成:生成器(Generator)和判别器(Discriminator)。它们通过一种零和博弈的方式相互作用。 **生成器**:尝试学习从随机噪声(通常是高斯分布)中生成与训练数据相似的新样本。它的目标是尽可能地欺骗判别器,使其误认为生成的数据是真实的。 **判别器**:负责区分真实数据和生成的数据。它试图准确地判断输入是来自训练数据还是生成器。 GAN的工作流程如下: 1. **训练过程**:生成器接收随机噪声作为输入并生成假样本,判别器则对这些样本进行分类,判断是真样本还是假样本。生成器根据判别器的反馈更新参数以提高生成能力,判别器也相应地调整其参数以提高识别能力。 2. **对抗迭代**:这两个模型交替优化,直到达到平衡状态,即生成器可以生成足够逼真的样本,使得判别器无法准确区分开来。 **示例代码**(简化版): ```python import torch.nn as nn # 假设我们有简单的生成器和判别器结构 class Generator(nn.Module): def __init__(self): super(Generator, self).__init__() # ... def forward(self, noise): # 生成器的前向传播 pass class Discriminator(nn.Module): def __init__(self): super(Discriminator, self).__init__() # ... def forward(self, input): # 判别器的前向传播 pass # 初始化并训练GAN generator = Generator() discriminator = Discriminator() for _ in range(num_epochs): fake_data = generator(noise) real_labels = torch.ones(batch_size) fake_labels = torch.zeros(batch_size) discriminator.zero_grad() d_loss_real = discriminator(real_data).mean() d_loss_fake = discriminator(fake_data.detach()).mean() d_loss = (d_loss_real + d_loss_fake).backward() discriminator_optimizer.step() generator.zero_grad() g_loss = discriminator(generator(noise)).mean().backward() generator_optimizer.step() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值