GAN 研究的应用方向应该如何选择?

论坛 期权论坛 期权     
Oliver   2018-10-15 23:13   8638   7
目前研一CS小白,在这里请教一下各位前辈,GAN研究应用可以选择哪些点,能有机会发出文章,够我小硕毕业!
目前我查阅资料想到应用:
1.图像分类 :个人感觉这个不怎么靠谱
2.风格转换  目前考虑黑白老照片上色
3.语义分割  用GAN去做
4. 图像生成 生成了 有什么实际意义? 感觉GAN都是的G都是生成啊。
还有各位前辈如何学习GAN,有什么推荐的学习路径?课程博客什么的,还请各位前辈不吝赐教
分享到 :
0 人收藏

7 个回复

倒序浏览
2#
Xf Mao  3级会员 | 2018-10-15 23:13:51 发帖IP地址来自
题主问题中的四个应用:


图像分类:
这就很多了,用GAN做半监督分类的工作很多,已经快成为一个单独的研究方向了,其本质就是 @Dr.Frankenstein 所说的数据增强,我随便列举一些吧:
1.Semi-Supervised Learning with Generative Adversarial Network
这篇应该是最早提出这个想法的
2.UNSUPERVISED AND SEMI-SUPERVISED LEARNING WITH CATEGORICAL GENERATIVE ADVERSARIAL NETWORKS
比较有名的categorical gan
3.Triple Generative Adversarial Nets
nips2017的文章,主要讲分类器,判别器和生成器的三角恋关系:)
4.Good Semi-supervised Learning That Requires a Bad GAN
nips2017,这个比较偏理论
当然除此之外,还有很多


风格转换:
1.WESPE: Weakly Supervised Photo Enhancer for Digital Cameras
用GAN来做照片效果增强的文章,类似风格迁移,让照片的内容不变,但是对比度亮度有改善。
project地址:WESPE Project
在线demo地址:AI Photos



2.Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
大名鼎鼎的cyclegan,记得cyclegan刚出来那会儿效果还一般,因为是完全无监督的,但是自从引入了U-net结构和分块判别,现在的cyclegan已经可以生成较大一点的图了,效果也见好
github地址:junyanz/CycleGAN
题主说的黑白老照片上色,如果想做无监督的,可以试试这个,当然生成图像的分辨率不会很高。
其他做无监督图像分布对齐的工作有很多,不止cyclegan一个:
CVAE-GAN: Fine-Grained Image Generation through Asymmetric Training
Unsupervised Image-to-Image Translation with Generative Adversarial  Networks
AlignGAN: Learning to Align Cross-Domain Images with Conditional Generative Adversarial Networks


语义分割:
暂时没听过有这么牛逼的应用。。。
如果有的话,可以看看cyclegan里面有一个Cityscapes dataset,是从photo到label的转换,可能会满足你的需求
但是精确到像素级别的分割,就不可能用gan了


图像生成:
我把这个理解成,你要提高gan生成图像质量。那就涉及到了理论研究,鉴于你研一,还是先别乱看什么Wasserstein GAN,Least Squares GAN等等了,这些工作的本质都是从数学的角度去寻找一个最小化两个分布之间距离的最优约束。没有functional,manifold,topology,measure theory基础还是别碰为妙。现在普遍认为optimal transport (OT)损失是比较好的,但是效果怎样,到底有没有提升,还真没有一致的评判。




————————————————————————————————————————
再给题主多补充一些吧:


迁移学习:
我在之前的回答:Xf Mao:什么是迁移学习 (Transfer Learning)?这个领域历史发展前景如何?提到过,但是没有细节说,因为迁移学习的特性(本质是最小化两个分布的距离),GAN是可以和迁移学习做一个完美结合, @Dr.Frankenstein 提到的
最近Google的Wasserstein AE把GAN就当做了一个AE的regularizer
在ICLR2018,WAE这篇论文里面,把MMD和GAN同时作为regularizer做了比较,而MMD正好又是迁移学习中用的很多的loss function,可见GAN和迁移学习联系之微妙。


可以看看google的这篇论文:Unsupervised Pixel–Level Domain Adaptation with Generative Adversarial Networks




目标检测:
1.A-Fast-RCNN: Hard positive generation via adversary for object detection
2.Perceptual Generative Adversarial Networks for Small Object Detection
没具体做过目标检测,只是听过,同组研究这个领域的小伙伴提供的。。。




目标跟踪:
之前在做这个领域的时候,发现一篇cvpr2018的文章,用Adversarial Learning来跟踪的
VITAL: VIsual Tracking via Adversarial Learning
没有链接,因为文章还没公布




对了忘记说了,我的方向以cv为主,nlp还有其他领域可能会覆盖不到。
以上。
3#
齐国君  2级吧友 | 2018-10-15 23:13:52 发帖IP地址来自
谢邀。所有重要的模型和方法,它的前沿无非是围绕理论、算法、应用三个方面展开,GAN也不例外,我就大概从这三个角度谈谈自己的个人想法。


===================================
以下是更新和原文。
最新更新:泛化性和mode collapse 的关系


一、理论
二、评价指标论
三、基于GAN的流型分析和半监督学习中的应用
四、从几何角度研究Mode collapse问题
五、泛化性和mode collapse 的关系
====================================
一、理论
关于GAN的理论,可以把GAN模型按照正则化、非正则化模型分成两大类。
非正则化包括经典GAN模型以及大部分变种,如f-GAN,Least Square GAN,EBGAN等等。这些模型的共同特点是不对要生成的样本的分布做任何先验假设,尝试去解决一般性的数据样本生成问题。然而,由于缺少正则化的先验条件,其模型的泛化性是存疑的。
换句话来说,泛化性说的是:所有模型都是需要先用有限的训练样本来训练的,那么由这些有限样本训练得到的模型可不可以从这些有限训练样本中生成出新的样本,而非简单地记着训练集
目前看来,无论从理论上还是实践上,非正则化的模型都无法证明他们的泛化能力。
这时候,如果我们给要生成的数据加入一些先验的条件,比如这些“数据的分布密度在空间中变化速度是有限”的这样的条件,是不是就可以解决泛化性的问题。这就是构建正则化GAN的动机。


目前看来,正则化模型的从理论上是成功的,已经从理论上证明了他们的泛化性能。这些模型包括Loss-Sensitive GAN, WGAN等。他们都是基于Lipschitz正则条件。对严格证明感兴趣的朋友可以参看 Loss-Sensitive Generative Adversarial Networks on Lipschitz Densities [pdf]。


那么第一可以进一步研究的问题来了:除了Lipschitz正则化条件,还有没有其他的正则化先验条件,可以从理论上保证泛化性?这个问题比较理论,但对深入理解GAN模型可以做什么和不可以做什么具有非常重要的意义。这点就像很多物理定理一样,都有其适用范围。宣称适用一切条件的方法肯定是不存在的。理解算法的适用范围就是 GAN理论要回答的问题。


[h1]二、评价指标[/h1]

当然,仅仅从理论上分析GAN模型的泛化性是不够的。我们还需要实验去验证他们。很遗憾的是,目前用来衡量不同GAN模型的实验指标都存在很大的问题。比如Inception Score,它用来衡量生成图片的质量,基于的假设是:高质量的图片,用一个分类网络(inception)对它进行分类后得到的类别应该是明确的。遗憾的是,任何一个分类器都很难覆盖所有可能的图片类别、而它的分类准确度也不可能是完美的。而且,即便有这么一个分类器,高inception score从逻辑上也只是个高质量图片的必要非充分条件。


更重要的是,inception score完全不反应模型的泛化性,即生成正式图片的能力。所有第二个可以研究的问题是:我们如何设计一个指标去比较不同GAN模型的泛化能力,这点也是至关重要的。
目前,已经有了一些有益的尝试。比如,同样地在Loss-Sensitive Generative Adversarial Networks on Lipschitz
Densities [pdf]这篇论文里,提出了一个MRE(Minimum Reconstruction
Error)的指标来度量泛化性。


它是这样工作的。在一个数据集上,比如CIFAR-10,把它分成训练集、验证集和测试集三个部分。我们在训练集上训练一个GAN模型,在验证集上调试超参数,这样模型在训练过程中就没有用到任何测试样本。那么,如果GAN有泛化性,它就有能力比较好地去生成这些未见到的测试样本。
下面这份图给出了MRE的测试结果。可以看到,正则化的GAN,包括LS-GAN, GLS-GAN, WGAN, WGAN-GP比非正则话的结果DCGAN要好,而且训练过程更加得稳定,不像DCGAN那里存在不稳定地波动。







图:随训练过程,在测试集上MRE的变化。


同时,如下图结果,从数值上看,GLS-GAN (Generalized Loss-Sensitive GAN),比其他GAN模型,不管正则化的还是非正则化的,就要有更小的MRE误差。这点不难理解,因为其他正则化模型都是它的一个特例。



图:在tiny ImageNet上,最终在测试集上的MRE。越小泛化性越高。


换句话来说,也回到理论问题上,目前的正则化都是基于Lipschiz条件的,GLS-GAN是Lipschiz正则化里最大的一个超类。如下图所示。



图:正则化与非正则化GAN模型。


那么有没有其他的,同样基于Lipschiz正则条件的,不包含在GLS-GAN里的模型,也是一个未解答的问题


显然MRE的思路秉承了一般机器学习问题的评测思路,基于对训练数据、验证数据和测试数据集的划分。


那么,一个新的问题是,有没有更加直接的指标可以不依赖于具体数据集,可以对GAN模型的泛化性进行更加直接地度量


今天先写到这里,后面有时间接着谈一谈GAN在算法和应用方面的可能方向,特别是小训练样本下的思路。


[h1]三、基于GAN的流型分析和半监督学习中的作用[/h1]接着昨天的讨论。


具有泛化能力GAN的一个重要作用是:我们第一次有了一个比较理想的工具,可以用来表示和描述数据流型(manifold)。之前,如果我们想表示流型,一般是借助于一个图模型(Graph)。在图模型里,我们用节点表示数据点,用边表示数据直接的相似性。有了Graph,我们可以定量计算数据点上函数的变化。比如,在分类问题中,我们感兴趣的函数是分类函数,输出的是数据点的标签。有了基于Graph的流型,我们就可以建立一个分类模型:它输出的分类标签在相似样本上具有最小的变化。这个就是一种平滑性的假设,是基于图的半监督方法的核心假设。





图:基于图的流型表示和半监督分类。




尽管这种基于图的半监督方法取得了很大的成功,但是它的缺点也是很明显的。当数据点数量非常巨大的时候,构建这样一个Graph的代价会非常大。为了解决这个问题, Graph为我们提供了一个很好的基础。通过训练得到的生成器G(z),其实就是一个非常好的流型模型。这里z就是流型上的参数坐标,通过不断变化z,我们就可以在高维空间中划出一个流型结构。


有了这样一个流型和它的描述G,我们可以在数据流型上研究各种几何结构。比如切向量空间、曲率,进而去定义在流型上,沿着各个切向量,函数会如何变化等等。好了,这里GAN就和半监督学习联系起来了。以前我们是用Graph这种离散的结果去研究分类函数的变化,并通过最小化这种变化去得到平滑性假设。


现在,有了流型直接的参数化描述G(z),我们就能直接去刻画一个函数(比如分类问题中的分类器)在流型上的变化,进而去建立一个基于这种参数化流型的半监督分类理论,而非去借助基于图的流型模型。


具体来说,半监督图流型中,我们常用到Laplacian矩阵来做训练;现在,有了参数化的流型后,我们就可以直接定义Laplace-Beltrami算子,从而实现半监督的训练。下面是基于这个方法在一些数据集上得到的结果。更多的结果可以参考这篇论文“Global versus Localized Generative Adversarial Networks”[pdf]。





这里,有个比较精细的问题。通常的GAN模型,得到的是一个全局的参数话模型:我们只有一个z变量去参数化整个流型。事实上,在数学上,这种整体的参数化王是不存在的,比如我们无法用一个参数坐标去覆盖整个球面。这时我们往往要借助于通过若干个局部的坐标系去覆盖整个流型。


同时,使用局部坐标系的另一个更加实际的好处是,我们给定一个目标数据点x后,整体坐标系G(z)要求我们必须知道对应的一个参数坐标z;而使用局部坐标系后,我们就直接可以在x附近去建立一个局部坐标系G(x,z)去研究流型周围的几何结构,而不用去解一个逆问题去去它对应的z了。这个极大地方便了我们处理流型上不同数据点。



图:流型的局部化参数表示。(“Global versus Localized Generative Adversarial Networks”[pdf])


沿着这个思路,我们可以利用参数化的局部坐标和它表示的流型来研究一系列问题。
1. 比较理论的研究可以专注于,有了这些局部参数表示,如何去定义出一整套黎曼流型的数学结构,比如局部的曲率,黎曼度量,和如果沿着流型去算测地线和两个数据点之间的测地距离。
2. 从应用的角度,给定了一个图像x,用局部表示G(x,z)可以对这个x在它的局部领域中做各种编辑操作或者控制图像的各种属性。这个可以结合有监督的对局部参数的意义进行训练。


当然,从几何和流型参数化的角度还可以给出对GAN更深入的理解,比如对mode collapse问题。今天先写到这里,后面继续讨论如何从流型collapse 的角度来解释和避免GAN的mode collapse




[h1]四、从几何角度研究Mode collapse问题[/h1]当然,从几何和流型参数化的角度还可以给出对GAN更深入的理解,比如对mode collapse问题。在GAN的相关研究中,mode collapse是一个被广泛关注的问题。有很多相关的论文在从不同角度来研究和解决这个问题。
而基于Localized GAN所揭示的几何方法,我们可以从流型局部崩溃的角度来
解释和避免GAN的mode
collapse。具体来说,给定了一个z,当z发生变化的时候,对应的G(z)没有变化,那么在这个局部,GAN就发生了mode collapse,也就是不能产生不断连续变化的样本。这个现象从几何上来看,就是对应的流型在这个局部点处,沿着不同的切向量方向不再有变化。换言之,所有切向量不再彼此相互独立--某些切向量要么消失,要么相互之间变得线性相关,从而导致流型的维度在局部出现缺陷(dimension
deficient)。
为了解决这个问题,最直接的是我们可以给流型的切向量加上一个正交约束(Orthonormal
constraint),从而避免这种局部的维度缺陷。下图是在CelebA 数据集上得到的结果。可以看到,通过对不同的切向量加上正交化的约束,我们可以在不同参数方向上成功地得到不同的变化。

上图:在给定输入图像的局部坐标系下对人脸的不同属性进行编辑。上图:在给定输入图像的局部坐标系下对人脸的不同属性进行编辑。
值得注意的是,尽管我们是从局部GAN的角度推导和实现了对切向量的正交化约束,这个思路和方法同样适用于传统的整体GAN模型。我们只需要在训练整体GAN模型的同时,在每个训练数据样本或者一个batch的子集上也加上这个约束来求取相应的下降梯度就同样可以训练整体GAN模型;这个方向可以引申出未来的相关工作。


[h1]五、泛化性和mode collapse 的关系[/h1]表面看来,这两个问题是不同的,一个是在研究能不能生成新样本,一个是研究生成样本的多样性。


但从道理上来说,有良好泛化性的模型,因为可以较好的逼近真实样本的分布,所以应该不存在生成样本多样性不足的问题的。


但反之则不然:即便没有mode collapse,也不能保证生成器模型的泛化性。所以从这点让来看,泛化性是个更广义的问题。


从某种意义上,泛化性可以看作是,而mode collapse是它表现出来的现象


但是不是研究mode collapse 就不重要了呢?这个也不是这样子的。对mode collapse这个典型想象的理解,可以有助于为研究生成器的泛化性提供非常有价值的样本。


比如,在发生mode collapse的地方,该点的密度函数显然会存在一个很高的峰值,在这个峰附近,密度函数的Lipschitz常数会变得很大。这个提示我们,通过对生成密度做Lipschitz正则化,是有利于帮助我们解决mode collapse问题,同时提高生成器的泛化性的。LS-GAN的成功也证实了这点。


而另一方面,我们上面介绍的通过对切向量做正交约束,进而防止流型维度缺陷和mode collapse的方法, 是不是也能为我们打开一扇从几何角度提高生成器泛化性的思路呢?这个可以留待后续的研究来揭示。
4#
Dr.Frankenstein  4级常客 | 2018-10-15 23:13:53 发帖IP地址来自
感谢@江亦凡指出,有些地方我说的不清楚。我在这里重新表述一下。
我认为,GAN不适合做分类和语义分割。
GAN不会不适合做应用和transfer,但鉴于早就有不少好文章和比较直观的应用做出来了,在这里继续下功夫想出好文章比较难,要么就是incremental work,这是比较容易被拒的;要么就是挖新坑,但挖的不好难出效果,也难说服reviewer,我脑洞不够大,有什么GAN应用的好点子求艾特我。

—————————-
以下原答案
—————————-


GAN当初设计出来的目的其实是为了做数据增强,本质上,它认为某一类数据存在一个先验分布,这个分布可以通过对抗学习的方式拟合出来,进而,这一类数据就可以自由生成。

用GAN做偏应用的文章,我个人觉得不是一个很好的思路。題主举的几个例子,在我看来,不是GAN很好的应用方向,大概还是对GAN不是很熟吧。

对于语义分割和分类这种任务,目前都可以理解为拟合带标签数据的分布,是做判别分析,跟GAN完全不是一个思路。

transfer learning的目标可以理解为拟合两个不同但类似分布之前的transfer函数,用GAN去拟合这个?也许可行,但难保效果会好,而且也看不出insight,为啥非要套GAN呢?说不清motivation的文章都不用往后看就拒了。

GAN最有用的是那个生成器,通常判别器训练完了就没用了,做数据生成,以我的脑洞还没想到啥好玩的应用。

但可以从两个方向去做GAN研究

一是训练稳定性,这是一个非常重要的问题。GAN训练的不稳定研究有了很多研究探讨了,不深谈的话,其实我觉得对于复杂分布的数据拟合,这个任务对于判别器的要求太高了。

不对分布做任何假设,判别器对太复杂的分布难以做出靠谱判断,自然就学不好。目前GAN做得好的大多是人脸、mnist手写数字这类特征明显,分布简单的数据。

想提高稳定性,就需要对这个架构进行改进,不能让它这么单纯。对分布做一定约束,利用先验知识,利用结构化信息辅助等等,都有可能会出结果,研究思路就是找一个训练不稳定的情况,去做分析,再加东西上去。

二是套用对抗思路做别的任务。最近Google的Wasserstein AE把GAN就当做了一个AE的regularizer。能用这种思路的地方还很多,可以多看看其它无监督、弱监督的task,好好想想怎么灌水(逃
5#
方轩固  4级常客 | 2018-10-15 23:13:54 发帖IP地址来自
刚好前几天给师兄写了一份review,直接贴一部分在这里吧,权当抛砖引玉,一些具体的idea我就隐去了。我也是刚入门的小白,谬误之处请多指正。


这两周的主要工作分三个方向,一是是针对上次review里提到的、将“密集连接、多层分类器””逐层自动生长”的思想和GAN 结合 的想法,读了一些相关的工作,考虑进一步推进的可能性。二是对主流使用的GAN生成图像的量化指标,以及为解决“model collapse”问题的各种trick做了一个的总结。三是看了浏览了一些关于GAN“触类旁通”,有具体应用场景的文章。


功利一点说,对于我自己基础积累都偏弱的情况,以上的三个方向:新颖的网络结构,针对某些已有成果的总结与分析,改进已有的结果并套上一个不错的应用场景,都是比较可能出成果发论文的方向。以下一一列叙。


一  生长结构的GAN


上一篇review中已经提到,我是受了Densenet 作者的最新工作Multi-Scale Dense Networks for Resource Efficient Image Classification的启发,想着能否将“自主生长”“多层网络”与GAN结合,以达到提高图片质量,加快训练速度的目的。然而这两周做的文献调研里,我发现这个工作已经由NVIDIA的组做了,且做得非常漂亮,已被ICLR 2018接收:Progressive Growing of GANs for Improved Quality, Stability, and Variation(PG-GAN)。本文的核心就是用不断生长的生成器网络(G),来生成像素越来越高的图片,而与之对应的,判别器网络(D)也不断生长。图例如下





直到最后能生成极高精度(1024*1024)的图像——目前这是生成模型领域的最好结果。这项工作里最重要的一个细节就是加入新的层时,如何将其平滑地初始化,使其既能利用已有层的结果,又能增添新的细节信息。本文的做法是在新加层后面加一个 residual block,既接受新加入层的信息,又部分接受原先层的信息,图例如下。



当然,本文还有一些解决model collapse 的trick也很有意思,我会在第二部分里讨论。这篇文章对我的启发很大,顺着他的引用,我也粗看了一些近几年来“多层次GAN”的工作,比如在不同像素图片上进行两轮生成-判别的stack GAN(用于 text to image 任务);单个生成器网络G, 多个判别器网络D的Generative Multi-Adversarial Network; 多个生成器G,单个判别器D的Multi-Agent Diverse GAN;以及多个G,D堆成金字塔结构的 -GAN 等,一些图例见下。




这些新奇结构的GAN大多都是为特定的任务设计的,平心而论,他们的实验论证都不算太扎实,其实用性还有待考证,但主要胜在结构新颖。但和NVIDIA这篇GP-GAN比起来还是逊色不少。还有值得一说的是,NVIDA这篇的实现代码是我看过GAN领域最复杂的代码之一了,目前以我的能力完全消化还要时间。而且他们在论文里也说了,为达到用CELEBA-HQ数据集上生成1024*1024的图像的任务,足足用8块 Tesla V100 跑了4天,所以复现难度还是比较大。


总之,在生长结构+GAN这个方向上,我觉得我能做,且做得动的工作,还是先熟悉已有工作的细节与框架,然后做一些可能的修改。此外,progressive GAN的思想在nlp方向上应该也是行得通的,但目前这方面的工作不多。


二  GAN生成图像的量化指标,以及trick的总结


自GAN从2014被提出以来,如何找一个好的metric来量化衡量生成图片的质量,一直是一个开放性问题。所谓“图片的质量”又可以分为两个方面:一是生成的图片的真实性——生成的图片是否是合理、非常贴近真实的;二是生成图片的多样性——是否能避开 model collapse 问题,生成尽可能丰富种类的图片。


关于第一点,生成图片的真实性判断,其实就是判别器网络做的事,但我们不能把用来训练的网络再用来做测试。所以现在的通行做法是,额外再用真实图片 预训练一个网络,最后把GAN训练完成后生成的图片喂入这个网络,让这个网络来给生成图片“打分”,评估生成图片集与真实图片集的差异,目前我看到的有“Inception score”,”sliced Wasserstein distance”这几种。


更值得关注的是第二点,生成图片的多样性的评估与改进的trick。第一点中提到的几种metric对 model collapse 问题都无效——模型如果永远只能生成同一张图片,但这张图片的真实度非常高,那“Inception score”同样会非常高。为解决model collapse,增强模型输出的多样性,许多作者都用了自己的trick, 但目前貌似没有通行的做法。我目前看到的有这么几种:


1. “用上几轮训练的loss,而不是本轮的loss 来更新判别器”(Learning from Simulated and Unsupervised Images through Adversarial Training);
2.  在判别器网络的最后加一个“minibatch layer”,用一个大的张量来累计统计该batch中所有样本的,并作为输出。(Progressive Growing of GANs for Improved Quality, Stability, and Variation


3.  将判别器D展开(unrolled)并回滚(UNROLLED GENERATIVE ADVERSARIAL NETWORKS)图例如下。

而关于多样性的度量标准就比较少了,我在Conditional Image Synthesis with Auxiliary Classifier GANs这篇文章里,首次看到了他们用multi-scale structural similarity (MS-SSIM)这种指标,来衡量“一批量图片之间的相似度”,指标分数越高,一批图的相似度就越高。之后看到的几篇工作里也引用了这种做法。图例如下。

三 具体应用场景 & 与其他工作的结合


现在GAN真正的应用场景还不是特别多,但有一些触类旁通,局部优化其他成熟技术的工作也很多。比如上一篇review 里提到的Learning from Simulated and Unsupervised Images through Adversarial Training,就是给 image to image 的框架套上了“生成精修模拟图片,为其他医学检测任务提供大量样本”的场景。这周看了一篇 2018 CVPR接收的 DA-GAN ,就是把GAN和nlp那边的 attention model + text to image 结合起来做,将句子分解为单词,学习隐空间里单词到图片内容的映射,再将各个图片内容合成图片。图例如下。此外,还浏览到一篇将 word ebedding 中 negative-sample 环节,与GAN结合起来做的。



其实之前还写过一点关于去年UCB那两篇用CGAN和cycle GAN做 image to image 的,大家感兴趣的话我也可以分享下。我也是去年十一月才入坑,和题主共勉哈。
6#
ming  QQ用户 | 2018-10-15 23:13:55 发帖IP地址来自
我发现的几个gan比较有意思的偏应用的文章:

Professor Forcing: 用rnn生成序列,比如说写小说,可以用discriminator来判断生成的小说和真实的小说,进而rnn根据discriminator的结果来加强自己写小说的能力。具体细节还有一些关于teacher forcing的东西,因此这种方法可以认为是teacher forcing的进阶版,被称为professor forcing。

另一个是deepmind用reinforcement learning让机器人在仿真中做各种动作,discriminator读取仿真的动作和用mocap截取的真人动作来判断仿真动作有多像人,这个结果被当做reinforcement learning的reward。

感觉很多脑洞可以从这两个例子展开。
7#
raningtkyH  2级吧友 | 2018-10-15 23:13:56 发帖IP地址来自
这段比较流行用GAN generate graph。可以generate graph,之后产生对应的分子结构或者蛋白质结构。据说西门子用这个合成类似的分子,性能和train的差不多。我觉得GAN最主要的目的还是unsupervised learning,理解这个世界的representation的方式。
8#
张狗子  2级吧友 | 2018-10-15 23:13:58 发帖IP地址来自
目前来说,GAN主要是做样本生成吧,我前几天复现了WGAN-GP以及DCGAN的模型,数据集是在mnist进行测试效果图一般吧(只是模型复现了一下,与实验结果还是有差距。另外图示并没有迭代足够轮数。

另外这篇论文是arxiv上的一篇文章WGAN-GP,这篇文章的不同主要表现在discriminator的loss function上


其中
是从generator上服从正态分布的数据中sample出来的数据,然后生成的图片
部分代码实现如下(tensorflow)(知乎代码排版好乱!
  1. def gan_loss(logits_real, logits_fake, batch_size, x, G_sample):      D_loss = - tf.reduce_mean(logits_real) + tf.reduce_mean(logits_fake)      G_loss = - tf.reduce_mean(logits_fake)      lam = 10        eps = tf.random_uniform([batch_size,1], minval=0, maxval=1)      x_hat = eps*x+(1-eps)*G_sample      with tf.variable_scope('',reuse=True) as scope:           grad_D_x_hat = tf.gradients(discriminator(x_hat), [x_hat])[0]      grad_norm = tf.sqrt(tf.reduce_sum(tf.square(grad_D_x_hat),axis = 1))      grad_pen = tf.reduce_mean(tf.square(grad_norm-1))      D_loss += lam*grad_pen      return D_loss, G_loss
复制代码
对比之前的GAN,在此基础上增加正则项的效果,可以使训练效果更加稳定,减少了训练过程中梯度消失或者梯度爆炸的训练问题,通过这几天的复现模型,我觉得GAN就是从原来的样本分布中拟合出新的样本,拟合出的新的样本服从训练样本。至于你说的图像风格转移,这个主要用到特征可视化和tranfer learning以及特征迁移的东西,GAN涉及的应该不是很多吧。至于学习GAN,多去arxiv上看看相关的论文就好了。(欢迎前辈指正O(∩_∩)O!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP