生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记

本文介绍了生成对抗网络(GANs)的基础概念,包括其生成对抗过程和数学原理。GANs由生成器和判别器组成,通过博弈学习生成接近真实数据的样本。此外,讨论了GANs的优势如生成清晰样本,以及存在的问题,如不收敛和训练难度。还探讨了DCGANs和GANs在文本转图像、图像生成等领域的应用,并给出了TensorFlow实现生成手写体字样的示例。
摘要由CSDN通过智能技术生成

生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记

一、生成对抗网络(GANs)

生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多的训练样本(Training Examples),从而学习这些训练案例生成的概率分布。
GAN[Goodfellow Ian,GAN]启发自博弈论中的二人零和博弈(two-player game),由[Goodfellow et al, NIPS 2014]开创性地提出。在二人零和博弈中,两位博弈方的利益之和为零或一个常数,即一方有所得,另一方必有所失。GAN模型中的两位博弈方分别由生成式模型(generative model)和判别式模型(discriminative model)充当。生成模型G捕捉样本数据的分布,判别模型是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率。G和D一般都是非线性映射函数,例如多层感知机、卷积神经网络等。

二、生成对抗网络的原理

1、生成对抗过程

GANs的方法,就是让两个网络相互竞争“玩一个游戏”。
其中一个叫做生成器网络( Generator Network),它不断捕捉训练库里真实图片的概率分布,将输入的随机噪声(Random Noise)转变成新的样本(也就是假数据)。
另一个叫做判别器网络(Discriminator Network),它可以同时观察真实和假造的数据,判断这个数据到底是不是真的。
所以整个训练过程包含两步,(在下图里,判别器用 D 表示,生成器用 G 表示,真实数据库样本用 X 表示,噪声用 Z 表示)。
这里写图片描述

第一步,只有判别器D参与。
我们把X样本输入可微函数D里运行,D输出0-1之间的某个值,数值越大意味着X样本是真实的可能性越大。在这个过程中,判别器D尽可能使输出的值靠近1,因为这一阶段的X样本就是真实的图片。
第二步,判别器D和生成器G都参与。
我们首先将噪声数据Z喂给生成器G,G从原有真实图像库里学习概率分布,从而产生假的图像样本。然后,我们把假的数据交给判别器D。这一次,D将尽可能输入数值0,这代表着输入数据Z是假的。
所以这个过程中,判别器D相当于一个监督情况下的二分类器,数据要么归为1,要么归为0。
与传统神经网络训练不一样的且有趣的地方,就是我们训练生成器的方法不同。生成器一心想要“骗过”判别器。使用博弈理论分析技术,我们可以证明这里面存在一种均衡。

2、数学原理

在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
最后博弈的结果是什么?在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。
以上只是大致说了一下GAN的核心原理,如何用数学语言描述呢?这里直接摘录论文里的公式:
这里写图片描述
简单分析一下这个公式:
• 整个式子由两项构成。x表示真实图片,z表示输入G网络的噪声,而G(z)表示G网络生成的图片。
• D(x)表示D网络判断真实图片是否真实的概率(因为x就是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))是D网络判断G生成的图片的是否真实的概率。
• G的目的:上面提到过,D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。
• D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)

三、GAN的优势与缺陷

1、优势

• 根据实际的结果,它们看上去可以比其它模型产生了更好的样本(图像更锐利、清晰)。
• 生成对抗式网络框架能训练任何一种生成器网络(理论上-实践中,用 REINFORCE 来训练带有离散输出的生成网络非常困难)。大部分其他的框架需要该生成器网络有一些特定的函数形式,比如输出层是高斯的。重要的是所有其他的框架需要生成器网络遍布非零质量(non-zero mass)。生成对抗式网络能学习可以仅在与数据接近的细流形(thin manifold)上生成点。
• 不需要设计遵循任何种类的因式分解的模型,任何生成器网络和任何鉴别器都会有用。
• 无需利用马尔科夫链反复采样,无需在学习过程中进行推断(Inference),回避了近似计算棘手的概率的难题。

2、存在的主要问题:

• 解决不收敛(non-convergence)的问题。
目前面临的基本问题是:所有的理论都认为 GAN 应该在纳什均衡(Nash equilibrium)上有卓越的表现,但梯度下降只有在凸函数的情况下才能保证实现纳什均衡。当博弈双方都由神经网络表示时,在没有实际达到均衡的情况下,让它们永远保持对自己策略的调整是可能的【OpenAI Ian Goodfellow的Quora】。
• 难以训练:崩溃问题(collapse problem)
GAN模型被定义为极小极大问题,没有损失函数,在训练过程中很难区分是否正在取得进展。GAN的学习过程可能发生崩溃问题(collapse problem),生成器开始退化,总是生成同样的样本点,无法继续学习。当生成模型崩溃时,判别模型也会对相似的样本点指向相似的方向,训练无法继续。
• 无需预先建模,模型过于自由不可控。
与其他生成式模型相比,GAN这种竞争的方式不再要求一个假设的数据分布,即不需要formulate p(x),而是使用一种分布直接进行采样sampling,从而真正达到理论上可以完全逼近真实数据,这也是GAN最大的优势。然而,这种不需要预先建模的方法缺点是太过自由了,对于较大的图片,较多的 pixel的情形,基于简单

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值