GAN生成对抗网络

本文概述了生成对抗网络的发展,包括其基本原理、关键模型如LSGAN和条件GAN,以及在图像生成、编辑、风格迁移等领域的应用。同时讨论了GAN的挑战和未来研究方向,如稳定性提升和评估指标的发展。

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

摘要

本周主要学习了生成对抗网络,生成对抗网络由生成模型和判别模型构成,生成模型获取真实数据 的概率分布,判别模型判断输入是真实数据还是生成器生成的数据,二者通过相互对抗训练,最终使生成模型学习 到真实数据的分布,使判别模型无法准确判断输入数据的来源。本文探讨了GANs的研究现状、应用场景和基本模型架构,并指出GANs自身存在的问题;从网络架构、损失函数和训练方式三个方面归纳GANs的主要发展;详细总结和分析GANs在人脸图像生成与编辑、风格迁移、图像超分辨率、图像修复以及序列数据和视频生成等应用领域的算法及其优缺点;介绍了GANs的常用评价指标,并分析了这些指标的适用场景和局限性;最后,从多个角度讨论了GANs面临的挑战,并提出可能的改进方向。

Abstract

1、研究背景和目的

生成式对抗网络GAN (Generative adversarial networks) 是Goodfellow等在2014年提出的一种生成式模型。GAN在结构上受博弈论中的二人零和博弈(即二人的利益之和为零, 一方的所得正是另一方的所失)的启发,系统由一个生成器和一个判别器构成。生成器捕捉真实数据样本的潜在分布,并生成新的数据样本;判别器是一个二分类器,判别输入是真实数据还是生成的样本。生成器和判别器均可以采用目前研究火热的深度神经网络。GAN的优化过程是一个极小极大博弈(Minimax game)问题,优化目标是达到纳什均衡,使生成器估测到数据样本的分布。目前, 图像和视觉领域是对GAN研究和应用最广泛的一个领域,已经可以生成数字、人脸等物体对象,构成各种逼真的室内外场景,从分割图像恢复原图像,给黑白图像上色,从物体轮廓恢复物体图像,从低分辨率图像生成高分辨率图像等。此外,GAN已经开始被应用到语音和语言处理、电脑病毒监测、棋类比赛程序等问题的研究中。

2.研究内容

2.1 GAN的原理

GAN的基本原理是让生成器和判别器相互对抗,从而学习到数据的分布。具体来说,GAN包括以下两个部分:

生成器(Generator)
生成器是一个神经网络,它的输入是一个潜在向量(latent vector),输出是一个与真实数据相似的假数据。生成器的目标是尽可能地接近真实数据的分布,从而生成高质量的假数据。

生成器的训练过程可以用以下公式表示:

G(z) =X’ 其中,z是一个潜在向量,表示假数据的潜在表示;G(z)表示生成器生成的假数据;x’表示与真实数据相似的假数据。

判别器(Discriminator)
判别器是另一个神经网络,它的目标是区分真实数据和假数据。具体来说,判别器将输入数据分为两个类别:真实数据和假数据。

生成器和判别器的训练过程可以用以下公式表示:

gan1

其中,Expdata(x)表示判别器对于真实数据的判断结果;EzP{z}[log (1-D(G(z))]表示判别器对于生成器生成的假数据的判断结果。这个公式可以看作是一个博弈过程,其中生成器和判别器相互对抗,不断调整参数,从而最终学习到数据的分布。

具体来说,GAN的训练过程如下:

随机生成一组潜在向量z,并使用生成器生成一组假数据。

将一组真实数据和一组假数据作为输入,训练判别器。

使用生成器生成一组新的假数据,并训练判别器。

重复步骤2和3,直到生成器生成的假数据与真实数据的分布相似。

2.2 GAN的学习方法

GAN的目标函数如下:

img

对于判别器D来说,这是一个二分类问题,f(D,G)为二分类问题中常见的交叉损失函数。对于生成器G来说,为了尽可能欺骗D,所以需要最大化生成样本的判别概率D(G(z)),即最小化log(1-D(G(z)))。

实际训练时,生成器和判别器采取交替训练,即先训练D,然后训练G,不断往复。值得注意的是,对于生成器,其最小化的是img,即最小化f(D,G)的最大值。为了保证f(D,G)取得最大值,所以我们通常会训练迭代k次判别器,然后再迭代1次生成器。当生成器G固定时,我们对f(D,G)求导,求出最优判别器imgimg

把最优判别器带入上述目标函数,可以进一步求出在最优判别器下,生成器的目标函数等价于优化imgimg的JS散度。

2.3 GAN的衍生模型

Goodfellow等于2014年首次提出GAN模型。

GAN在基于梯度下降训练时存在梯度消失的问题,因为当真实样本和生成样本之间具有极小重叠甚至没有重叠时,其目标函数的Jensen-Shannon散度是一个常数,导致优化目标不连续。为了解决训练梯度消失问题,Arjovsky 等于2017年提出了Wasser-stein GAN (W-GAN)。W-GAN用Earth-Mover代替Jensen-Shannon 散度来度量真实样本和生成样本分布之间的距离,用一个批评函数f来对应GAN的判别器,而且批评函数f需要建立在Lipschitz连续性假设上。

GAN的判别器D具有无限的建模能力,无论真实样本和生成的样本有多复杂,判别器D都能把它们区分开,这容易导致过拟合问题。为了限制模型的建模能力,Qi于2017年提出了Loss-sensitive GAN (LS-GAN),将最小化目标函数得到的损失函数限定在满足Lipschitz连续性函数类上,Qi还给出了梯度消失时的定量分析结果。需要指出,W-GAN和LS-GAN并没有改变GAN 模型的结构,只是在优化方法上进行了改进。GAN的训练只需要数据源的标注信息(真或伪),并根据判别器输出来优化。Odena于2016年提出了Semi-GAN,将真实数据的标注信息加入判别器D的训练。Mirza等人于2014年提出Conditional GAN (CGAN),它加入额外的信息y到G、D和真实数据来建模,这里的y可以是标签或其他辅助信息。

传统GAN都是学习一个生成式模型来把隐变量分布映射到复杂真实数据分布上, Donahue等于2016年提出一种Bidirectional GANs (BiGANs) 来实现将复杂数据映射到隐变量空间,从而实现特征学习。除了GAN的基本框架,BiGANs 额外加入了一个解码器Q用于将真实数据x映射到隐变量空间,其优化问题转换为img

GAN能够学得有效的语义特征,但是输入噪声变量z的特定变量维数和特定语义之间的关系不明确,而Chen等人于2016年提出的InfoGAN 能够获取输入的隐层变量和具体语义之间的互信息。

Odena等人于2016年提出的Auxiliary Classifier GAN (AC-GAN) 可以实现多分类问题,它的判别器输出相应的标签概率。在实际训练中,目标函数则包含真实数据来源的似然和正确分类标签的似然,不再单独由判别器二分类损失来反传调节参数,可以进一步调节损失函数使得分类正确率更高,AC-GAN 的关键是可以利用输入生成器的标注信息来生成对应的图像标签,同时还可以在判别器扩展调节损失函数,从而进一步提高对抗网络的生成和判别能力。

考虑到GAN的输出为连续实数分布而无法产生离散空间的分布,Yu等人于2016年提出了一种能够生成离散序列的生成式模型Seq-GAN。他们用RNN实现生成器G,用CNN 实现判别器D,用D的输出判别概率通过增强学习来更新G。增强学习中的奖励通过D来计算,对于后面可能的行为采用了蒙特卡洛搜索实现,计算D的输出平均作为奖励值反馈。

3、生成对抗网络的主要贡献

3.1 生成器和判别器的对抗学习

GAN的最重要贡献之一是引入了生成器和判别器这两个网络。生成器负责生成数据样本,而判别器负责评估这些生成的样本的真实程度。通过这种对抗性的学习方式,生成器和判别器不断竞争和优化,推动了生成模型的发展。这种框架鼓励生成器生成更逼真的样本,同时判别器努力提高自己的鉴别能力,最终实现了高质量数据的生成。

3.2 最小二乘GAN(LSGAN)

LSGAN提出了一种重要的改进,即使用最小二乘损失函数来替代传统的交叉熵损失函数。传统GAN在训练过程中常常会遇到训练不稳定的问题,导致生成的样本质量不佳。LSGAN通过引入最小二乘损失函数,使得损失更加平滑,训练过程更加稳定,生成的样本更接近真实数据的分布,有效地克服了传统GAN的缺陷。

3.3 条件生成

GAN引入了条件生成的概念,这是一个重要的进步。通过在生成器和判别器中引入条件信息,生成器可以根据给定的条件生成特定类别或属性的数据。例如,在图像生成任务中,可以通过提供类别标签来生成特定类别的图像。这种能力广泛应用于诸如图像编辑、文本生成等领域,增强了模型的实用性和灵活性。

3.4 生成样本多样性

GAN允许通过调整生成器的输入噪声或条件来生成多样性的数据样本。这意味着生成器可以生成不同风格、不同变化的数据,从而提供更多多样性的内容。这在创意生成领域具有巨大潜力,例如生成艺术作品、音乐、文本等,使得模型能够创造出更富有创意和多样性的内容。

3.5 无监督和自监督学习

GAN的框架使得无监督学习和自监督学习成为可能。模型可以在没有明确标签的情况下学习到数据的分布和特征。这一能力对于数据量有限或缺乏标签的任务非常有价值,例如在医学影像分析、自然语言处理等领域中,GAN被广泛应用于无监督特征学习和数据生成。

3.6 转移学习和数据增强

生成对抗网络可以用于转移学习,即在一个领域中通过训练生成器,然后将生成器微调到另一个领域,从而实现知识迁移和数据增强。这种技术有助于提高模型在特定任务上的性能,并减少了对大规模标注数据的依赖。GAN的转移学习功能在计算机视觉和自然语言处理等领域中得到广泛应用,加速了模型的部署和应用。

4.代码实现:

import time
import torch
from torch import nn, optim

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')


class FlattenLayer(torch.nn.Module):
    def __init__(self):
        super(FlattenLayer, self).__init__()
    def forward(self, x): # x shape: (batch, *, *, ...)
        return x.view(x.shape[0], -1)


# 使用vgg_block函数来实现这个基础的VGG块
def vgg_block(num_convs, in_channels, out_channels):
    blk = []
    for i in range(num_convs):
        if i == 0:
            blk.append(nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1))
        else:
            blk.append(nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1))
        blk.append(nn.ReLU())
    blk.append(nn.MaxPool2d(kernel_size=2, stride=2))
    return nn.Sequential(*blk)


# 卷积层模块串联数个vgg_block,其超参数由变量conv_arch定义
# 第一块的输入输出通道分别是1(因为下面要使用的Fashion-MNIST数据的通道数为1)和64
conv_arch = ((1, 1, 64), (1, 64, 128), (2, 128, 256), (2, 256, 512), (2, 512, 512))
# 经过5个vgg_block, 宽高会减半5次, 变成 224/32 = 7
fc_features = 512 * 7 * 7
fc_hidden_units = 4096


# VGG
def vgg(conv_arch, fc_features, fc_hidden_units=4096):
    net = nn.Sequential()
    # 卷积层部分
    for i, (num_convs, in_channels, out_channels) in enumerate(conv_arch):
        net.add_module('vgg_block_' + str(i+1), vgg_block(num_convs, in_channels, out_channels))
    # 全连接层部分
    net.add_module('fc', nn.Sequential(
                            FlattenLayer(),
                            nn.Linear(fc_features, fc_hidden_units),
                            nn.ReLU(),
                            nn.Dropout(0.5),
                            nn.Linear(fc_hidden_units, fc_hidden_units),
                            nn.ReLU(),
                            nn.Dropout(0.5),
                            nn.Linear(fc_hidden_units, 10)
                         ))
    return net

5.总结

在本周学习中,我学习了生成对抗网络,生成对抗网络自推出以来,在人工智能领域引起了广泛关注。虽然GANs在图像生成、风格迁移、数据增强等多个应用领域取得了显著成就,但仍存在诸如训练不稳定性、模式崩溃和难以评估生成质量等挑战。未来的研究可能会集中在提升模型稳定性、增强生成质量、以及开发更加有效的评估指标。此外,随着技术的发展,GANs在保护隐私、减少偏见和道德伦理方面的应用也将成为研究的重要方向。
能领域引起了广泛关注。虽然GANs在图像生成、风格迁移、数据增强等多个应用领域取得了显著成就,但仍存在诸如训练不稳定性、模式崩溃和难以评估生成质量等挑战。未来的研究可能会集中在提升模型稳定性、增强生成质量、以及开发更加有效的评估指标。此外,随着技术的发展,GANs在保护隐私、减少偏见和道德伦理方面的应用也将成为研究的重要方向。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值