生成对抗网络原文解析(带部分数学公式推导)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

谈起生成对抗网络,就不得不提到2014年Goodfellow的开山之作了,最近又重新看了这篇文章,打算以博客的形势论述自己目前的一些理解,文章有不对的也欢迎指出,共同进步。


一、生成对抗网络是什么?

生成对抗网络(GAN) 是一种特殊的网络结构,设计思想起源于博弈论,其由2个重要的部分构成:
1.**生成器(Generator):**其主要通过生成数据(大部分情况下是图像),目的是“骗过”判别器,达到以假乱真的效果
2.**判别器(Discriminator):**其主要任务是判别图像,是来自于生成器的就虚伪图像,还是真实的图像。
在训练的过程中,生成器的理想状态是能够生成出完全以假乱真的图像,使得判别器无法判断,而判别器的理想状态是能够精准的判断数据是真是假,从这种设计思想上就不难看出,有种对抗的感觉了。

二、怎么实现GAN

1.论文所用的符号解释

在这里插入图片描述

2.前期知识储备

1.损失函数

在神经网络之中,为了衡量真实的输出值与我们期待得到的这个label值的差异,在这里我们需要知道交叉熵损失函数。

在本文中,作者使用的损失函数为:

在这里插入图片描述

从判别器D的角度看:应该对真实的样本的判断D(x)增加,虚假的G(z)减少,这样D(G(Z))也小了。说明其判断准
从生成器G的角度看: 应该让D(x)减少,D(G(Z))增加,这样说明其骗的准。
到这一步,实际上是把那种对抗的思想用这个公式表达出来了,如果你比较熟悉交叉熵损失函数,你就会发现这个和交叉熵那函数长得很像。
而前面的min和max是对其训练过程的描述:

整个训练是一个迭代过程。其实极小极大化博弈可以分开理解,即在给定 G 的情况下先最大化 V(D,G)V(D,G) 而取 D,然后固定D,并最小化 V(D,G)V(D,G) 而得到 G。其中,给定 G,最大化 V(D,G)V(D,G) 评估了 Pg和Pdata之间的差异或距离。
https://blog.csdn.net/stalbo/article/details/79283399

2.一些数学知识

这篇文章真让我感觉到了数学在指导理论学习上的重要性,对我本人而言其数学证明难度比理解这个网络的构造思想难度大不少,还是本人这数学基础存在这一些问题,

1.最大似然估计

给定一个概率分布D,假定其概率密度函数(连续分布)或概率聚集函数(离散分布)为fD,以及一个分布参数θ,我们可以从这个分布中抽出一个具有n个值的采样X1,X2,…,Xn,通过利用fD,我们就能计算出其概率:
在这里插入图片描述
下面这种表示更常见:
在这里插入图片描述
解释一些为啥是乘法,而不是加法:应该多个样本(x1,x2…)他们发生的概率是独立的,而多个独立事件算概率就用乘法了。
我们的目的是找到让这个L(θ)值最大的那个θ的值,这里我们记作θ*,那么
在这里插入图片描述
取对数是为了变连乘为加法,同时对我们的θ*做一个对数运算也不会使得其计算变复杂。所以这里第一步他用的是等价符号。而期望可以写为积分的形式(注意这一点,此处是数学推导,实际训练过程中依然是离散的,无法进行积分)。又应为得到的这个式子,是关于θ的函数,随意添加x并没有什么大关系,就相当于添加常数了。作者又在后面补了一项。
到这一步,之前的我一下就迷惑了,哈??为啥会突然加上这个?这个是怎么来的。不过我后来理解了作者的思想,以及为啥添加的就是这个。

2.KL散度

用来衡量两种概率分布之间的相似程度,表示方法为:
离散型
在这里插入图片描述
这里就先不管他的连续形了,从表达式中不难看出,越相似,那么log中的分式比值就越近于1,取对数就接近0了,也就是DKL的值越小,说明这两个分布越相似。

3.JS散度

设有概率分布P和Q,M=1/2(P+Q),则有
在这里插入图片描述
这其实就是KL散度的一个变式,但是他有对称性,也可以不需要这个M,直接带入KL散度也行,就是那个式子看起来比较长。

3.推导

现在我们回到上面那个最大似然估计最后那个式子那里,把那个式子再变型
在这里插入图片描述
里面就有KL梯度的影子了。
现在问题是,还有一个PG怎么求,这里的Pg为:
在这里插入图片描述
I表示示性函数,也就是:
在这里插入图片描述
有个文章在这一步得出结论Pg无法求出,这一点我目前还是不太能理解,也欢迎解答我的疑惑。

之后作者指出,最优判别器的解为:
在这里插入图片描述
这一点直观上能理解,但是需要数学证明,数学证明很是有点费劲,我目前先跳过了。


3.生成对抗网络的训练

在这里插入图片描述
先固定生成器,训练判别器,再固定判别器训练生成器,如此循环,直到整体收敛。


4.实验相关

在这篇论文中,作者主要进行了两方面的实验:一是对生成对抗网络(GAN)的基本结构进行实验验证,二是对超参数进行实验探究。

对于第一个实验,作者使用了一个简单的多层感知机(MLP)结构作为生成器和判别器。生成器从一个随机噪声向量中生成手写数字图像,判别器则尝试将生成的图像与真实图像区分开来。作者使用了交叉熵作为判别器的损失函数,并通过优化器(如随机梯度下降)对生成器和判别器进行交替训练,不断提高模型的性能。

为了验证 GAN 模型的有效性,作者使用了 MNIST 手写数字数据集进行训练和测试。作者通过对生成器和判别器的训练和调参,成功地生成了高质量、多样化的手写数字图像。此外,作者还通过对生成器和判别器的权重进行可视化,深入探究了 GAN 模型生成图像的本质原理和机制。

对于第二个实验,作者主要探究了超参数对 GAN 模型的性能影响。作者尝试了不同的噪声维度、学习率、隐层节点数等超参数设置,并比较它们对模型性能的影响。作者发现,这些超参数的设置对模型性能的影响非常显著,不同的设置会导致模型性能的明显变化。

通过这些实验,作者成功地验证了生成对抗网络模型的有效性和潜力,并对后续研究者提供了重要的启示和参考。


5.总结

优点:

生成高质量数据:GAN 可以生成高质量、逼真的图像、音频、视频等多种类型的数据,这些数据甚至可以被误认为是真实的。
无需手动标注数据:GAN不需要手动标注数据,可以自动从数据集中学习分布,因此可以节省大量的人力和时间成本。
多样性:GAN可以生成多种不同的样本,这些样本可以从不同的视角、角度、光照等方面呈现出不同的特征,具有很强的多样性。 可应用于多个领域:GAN
可以应用于多个领域,如图像处理、语音合成、自然语言处理等,是一种非常通用的生成模型。

缺点:

训练不稳定:GAN 的训练非常不稳定,容易出现模式崩溃(mode collapse)等问题,需要采取一些技巧来稳定训练。
需要大量数据:GAN 需要大量的数据来学习分布,如果数据集太小,可能会导致生成的数据不够逼真。
难以评估:由于没有明确的损失函数,GAN的效果很难用传统的指标来评估,这也给模型的评估带来了困难。
生成的数据可能不可靠:由于生成的数据不是从真实数据中采样得到的,可能存在不合理、虚假等问题,需要进行验证和筛选。

参考文章:
1.https://blog.csdn.net/stalbo/article/details/79283399
2.https://blog.csdn.net/coder_kang/article/details/103483255

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成对抗网络(Generative Adversarial Networks,简称GAN)是由Ian Goodfellow等人在2014年提出的一种深度学习模型。它由生成器(Generator)和判别器(Discriminator)两部分组成,通过对抗训练的方式来学习数据的分布。 生成器的目标是生成与真实数据相似的样本,而判别器的目标是区分生成器生成的样本和真实数据。两个模型相互竞争、相互博弈,通过不断迭代优化来达到最终的平衡状态。 下面是GAN的公式推导: 1. 生成器: - 输入:随机噪声向量 z - 输出:生成的样本 G(z) 2. 判别器: - 输入:真实样本 x 和生成样本 G(z) - 输出:判别为真实样本的概率 D(x),判别为生成样本的概率 D(G(z)) 3. 目标函数: - 生成器的目标是尽量使生成样本被判别为真实样本,即最大化 D(G(z)) - 判别器的目标是尽量正确地判别真实样本和生成样本,即最大化 D(x) 和最小化 D(G(z)) 4. 优化过程: - 利用梯度下降法来迭代优化生成器和判别器的参数。 - 生成器的参数更新:θ_G ← θ_G + α * ∇θ_G log(1 - D(G(z))) - 判别器的参数更新:θ_D ← θ_D + α * (∇θ_D log(D(x)) + ∇θ_D log(1 - D(G(z)))) 其中,θ_G 和 θ_D 分别表示生成器和判别器的参数,α 是学习率。 通过不断迭代优化生成器和判别器的参数,GAN可以学习到生成器网络能够生成逼真的样本,并且判别器网络能够准确地区分真实样本和生成样本。这样的训练过程可以使生成器逐渐接近真实数据分布,从而实现生成高质量的样本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值