深入浅出生成对抗网络1-GAN入门

本文介绍了生成对抗网络(GAN)的概念,包括自动编码机和受限波尔茨曼机作为前驱技术的简述。GAN通过一个生成器和一个判别器的对抗训练过程,解决了无监督学习中生成模型的训练问题。这种模型通过博弈理论达到纳什均衡,实现了生成样本的真实性和多样性。

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

题记:谨以此文纪念即将逝去的大学生活

生成对抗网络(Generative Adversarial Networks: GAN)是什么?要回答这个问题,首先考虑为什么要提出生成对抗网络这个问题。

Yan Lecun 称生成对抗网络为“20 年来机器学习领域最酷的想法”。为什么深度学习著名专家会这样评价生成对抗网络?为了说明这个问题,来看看在生成对抗网络以前,是如何进行样本生成的。举两种方法,自动编码机和受限玻尔茨曼机。如果熟悉这两个模型,可以跳过下面两段。

自动编码机

自动编码机,有一个编码器(encoder)和解码器(decoder)。训练样本输入编码器得到编码(code),编码输入解码器得到输出样本。
训练阶段,目标是使得输出样本和输入样本尽可能相同。输出值需要和输入值进行对比,得到梯度信号,而后使用反向传播算法(back propagation)调整网络权重。对这个部分有问题请移步自动编码器有关博客。
样本生成阶段,输入随机值作为编码,输出值得到的是生成样本。输入的编码(code)作为生成样本的特征值,是一种对样本具有高度概括性的表示。(这也是整个模型被称为自动编码器的原因,原始样本数据被压缩了。)如果用概率图论的词语表示,这个编码就是隐变量。根据编码,解码器可以得到一个生成样本。

自动编码器结构

受限波尔茨曼机

受限波尔茨曼机(Restricted Boltzmann Machine: RBM)真的好古老啊。仔细看来,算是现代的深度学习方法的前辈。层叠RBM,得到深度信念网络,可以和RBM一样用来生成样本。
RBM方法来源于概率图论,是一个两层网络:可见层和隐含层。整个网络是一个概率模型,已知一层取值,可以计算另一层的最大似然取值。
训练阶段,训练样本输入到可见层,由可见层计算隐含层取值,再由隐含层取值计算可见层取值,作为输出。训练目标是让可见层输出与可见层输入相同。(这是对比散度算法的过程,虽然RBM训练的本质是使得模型能量最小)
样本生成阶段,隐含层取随机值,由隐含层计算得到可见层,即是生成样本。

受限波尔茨曼机

由于现在的神经网络基本都使用了梯度下降法进行学习,因此模型必须要有梯度信号才能学习。对于有监督学习,对比输出值和训练样本标签可以得到梯度信号。生成模型没有标准结果,生成样本本来就应该和训练样本不相同,那应该怎么训练生成模型呢?自动编码机和受限波尔茨曼机的训练方法是在复现训练样本,两个模型都有两个网络,第一个网络从原始图片提取特征,第二个网络根据特征生成图片,训练目标是让生成图片与原始图片相同。

生成对抗网络

生成对抗网络改变了上述的生成模型训练模式。GAN的思路是,使用一个网络,来得到生成网络需要的梯度信息。所以GAN有两个网络,一个是生成器网络,用于生成样本,输入是随机值。另一个网络是判别器网络,用来得到梯度信号。得到梯度信号的方法是,判别器判断输入样本的真实性,得到一个真实性分数,对于生成样本,真实性分数的期望值应该是1。然而,要训练一个网络能够判断样本真实性,就应该有正负样本。判别器还需要真实样本作为输入。整个生成对抗网络的模型结构如下:
GAN模型

归纳以上所讲的内容,核心的思想就是,生成对抗网络使用一个网络来得到梯度信号,从而用来训练样本生成网络。这一点,我认为是这个模型的精华所在。

对抗的网络

引入了两个网络,这样模型就与一般的结构大不相同了,虽然自动编码机和RBM也可以看做两个网络,但其实这两个网络只是一个网络的两个部分。GAN完全不同。生成器和判别器不能够同时进行训练。所以GAN的训练其实是交替进行的两个网络的训练。生成器期望增加生成样本的真实分数,而判别器期望减少生成样本的真实分数,另外增加真实样本的真实分数。两个网络向着不同的方向较劲,这也就是网络取名生成对抗网络的原因之一。
这里的对抗过程可以看做是一个最大最小值博弈,这个博弈应该收敛到纳什均衡点,在这个点,生成器既不能提高真实性分数,判别器也不能降低真实性分数。整个模型达到了最优。
关于这里的博弈,举一个下围棋的例子吧。生成器和判别器的博弈可以看做是下围棋。每一步都是增强自己的优势,或者说减少对方的优势。双方轮流进行。最后当棋局无法再进行下去的时候,双方的实力(就是占的棋盘空间)都达到了最大。

到了这里,如果对神经网络有基本的了解,基本上已经能够自己实现一个生成对抗网络了。数学上的推导,和其他神经网络基本是相同的。如果还有疑问,在之后的文章里,我会继续从数学表达和代码实现上进一步说明生成对抗网络的细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值