生成对抗网络学习(GAN)学习笔记


2018-11-16 GAN的原理

GAN

GAN的思想就是一个博弈的思想。GAN有两个互相对抗的模型,一个生成模型G用于拟合样本数据分布和一个判别模型D用于估计输入样本是来自于真实的训练数据还是生成模型G。我们让两个网络相互竞争,生成网络来生成假的数据,对抗网络通过判别器去判别真伪,最后希望生成器生成的数据能够以假乱真。

判别网络的目的:就是能判别出来属于的一张图它是来自真实样本集还是假样本集。假如输入的是真样本,网络输出就接近1,输入的是假样本,网络输出接近0,那么很完美,达到了很好判别的目的。

生成网络的目的:生成网络是造样本的,它的目的就是使得自己造样本的能力尽可能强,强到什么程度呢,你判别网络没法判断我是真样本还是假样本。(不需要像传统图模型一样,需要一个严格的生成数据的表达式。这就避免了当数据非常复杂的时候,复杂度过度增长导致的不可计算。同时,它也不需要 inference 模型中的一些庞大计算量的求和计算。它唯一的需要的就是,一个噪音输入,一堆无标准的真实数据,两个可以逼近函数的网络。)

在训练网络时:
(1)训练判别器。
• 固定生成器
• 对于真图片,判别器的输出概率值尽可能接近 1
• 对于生成器生成的假图片,判别器尽可能输出 0
(2)训练生成器。
• 固定判别器
• 生成器生成图片,尽可能让判别器输出 1
(3)返回第一步,循环交替训练。
训练生成器时无须调整判别器的参数;训练判别器时,无须调整生成器的参数。

其中的损失函数应用了最大最小优化问题:
min G max D V ( D , G ) = E x p d a t a ( x ) [ log D ( x ) ] + E z p z ( z ) [ log ( 1 D ( G ( z ) ) ) ] \min\limits_G\max\limits_D V(D, G) = E_{x \sim p_{data}(x)}[\log D(x)] + E_{z \sim p_{z}(z)}[\log (1-D(G(z)))]
(z表示输入G的随机噪声)

训练模型D要最大概率地分对真实样本(最大化 log ( D ( x ) ) \log(D(x)) ,而生成模型G要最小化 log ( 1 D ( G ( z ) ) ) \log(1-D(G(z))) ,即最大化D的损失。G和D同时训练,但是训练中要固定一方,更新另一方的参数,交替迭代,使对方的错误最大化。最终,G能估计出真实样本的分布。

上面那个loss函数可以分开看成下面的两个公式。
优化D:
max D V ( D , G ) = E x p d a t a ( x ) [ log D ( x ) ] + E z p z ( z ) [ log ( 1 D ( G ( z ) ) ) ] \max\limits_D V(D, G) = E_{x \sim p_{data}(x)}[\log D(x)] + E_{z \sim p_{z}(z)}[\log (1-D(G(z)))]
优化G:
min G V ( D , G ) = E z p z ( z ) [ log ( 1 D ( G ( z ) ) ) ] \min\limits_G V(D, G) = E_{z \sim p_{z}(z)}[\log (1-D(G(z)))]

可以看到,优化D的时候,也就是判别网络,其实没有生成网络什么事,后面的G(z)这里就相当于已经得到的假样本。优化D的公式的第一项,使的真样本x输入的时候,得到的结果越大越好,可以理解,因为需要真样本的预测结果越接近于1越好嘛。对于假样本,需要优化是的其结果越小越好,也就是D(G(z))越小越好,因为它的标签为0。但是呢第一项是越大,第二项是越小,这不矛盾了,所以呢把第二项改成1-D(G(z)),这样就是越大越好,两者合起来就是越大越好。 那么同样在优化G的时候,这个时候没有真样本什么事,所以把第一项直接却掉了。这个时候只有假样本,但是我们说这个时候是希望假样本的标签是1的,所以是D(G(z))越大越好,但是呢为了统一成1-D(G(z))的形式,那么只能是最小化1-D(G(z)),本质上没有区别,只是为了形式的统一。之后这两个优化模型可以合并起来写,就变成了最开始的那个最大最小目标函数了。

也就是说,在训练过程中,会把生成模型生成的样本和真实样本随机地传送一张(或者一个 batch)给判别模型 D。判别模型 D 的目标是尽可能正确地识别出真实样本(输出为“真”,或者1),和尽可能正确地揪出生成的样本,也就是假样本(输出为“假”,或者0)。而生成模型的目标则和判别模型相反,就是尽可能最小化判别模型揪出它的概率。这样 G 和 D 就组成了一个min-max,在训练过程中双方都不断优化自己,直到达到平衡——双方都无法变得更好,也就是假样本与真样本完全不可区分。

  1. 李宏毅2017深度学习 GAN生成对抗神经网络相关学习视频合集

体会:如果GAN能够学出真实样本的分布,那么把G和D拆开看,它们各自的功能是什么?
而在分割网络结果上,进行判别性学习,是否能够使目标域学习到源域的分布?


2018-11-15 Multimodal Unsupervised Image-to-Image Translation

无监督image-to-image翻译是计算机视觉里的一个重要和富有挑战性的问题。给定源域中的一张图像,目标是学习目标域对应的图像的条件分布,在没有看到任何对应的图像对。虽然该条件分布本质上是多模态的,现有方法做了过于简化的假设,把该分布作为确定的一对一的映射进行建模。结果是,他们无法从一个给定源域图像生成多样化的输出。为了解决这个限制,我们提出一个多模态无监督Image-to-image翻译(MUNIT)框架。我们假设图像表示可以分解成一个内容编码,它是域不变的,和一个风格/样式编码,它捕获域特定的属性。将一个图像转化到另一个域,我们重组其内容与一个随机风格编码,它是从目标域的风格空间采样来的。我们分析了提出的框架并建立一些理论结果。广泛的实验与最先进的方法进行比较,进一步证明了提出的框架的优势。此外,我们的框架允许用户通过提供一个例子风格图像来控制翻译输出的风格。代码和pretrained模型 https://arxiv.org/abs/1804.04732.

论文链接
举例:给定猫的一张图片,提取它的内容代码和风格代码,用猫的内容代码和狗的风格代码可以生成狗的图像。


2018-11-13 Image-to-Image的论文汇总

图像生成一直是计算机视觉领域非常有意思的方向,图像到图像的变换是其中一个非常重要的应用,使用图像到图像的变换,可以完成非常多有趣的应用,可以把黑熊变成熊猫,把你的照片换成别人的表情,还可以把普通的照片变成毕加索风格的油画,自从GAN横空出世之后,这方面的应用也越来越多,下面是对这个领域的相关论文的一个整理,而且大部分都有代码!

文章链接

猜你喜欢

转载自blog.csdn.net/cp_oldy/article/details/84144357