与普通人寿保险相比gan训练相比有什么需要注意的地方

在TensorFlow中对比两大生成模型:VAE与GAN | 机器之心
在TensorFlow中对比两大生成模型:VAE与GAN变分自编码器(VAE)与生成对抗网络(GAN)是复杂分布上无监督学习最具前景的两类方法。本文中,作者在&MNIST&上对这两类生成模型的性能进行了对比测试。项目链接:本项目总结了使用变分自编码器(Variational&Autoencode,VAE)和生成对抗网络(GAN)对给定数据分布进行建模,并且对比了这些模型的性能。你可能会问:我们已经有了数百万张图像,为什么还要从给定数据分布中生成图像呢?正如&Ian&Goodfellow&在&NIPS&2016&教程中指出的那样,实际上有很多应用。我觉得比较有趣的一种是使用&GAN&模拟可能的未来,就像强化学习中使用策略梯度的智能体那样。&本文组织架构:&变分自编码器(VAE)&生成对抗网络(GAN)&训练普通&GAN&的难点&训练细节&在&MNIST&上进行&VAE&和&GAN&对比实验& & & & 在无标签的情况下训练&GAN&判别器& & & & 在有标签的情况下训练&GAN&判别器&在&CIFAR&上进行&VAE&和&GAN&实验&延伸阅读VAE&变分自编码器可用于对先验数据分布进行建模。从名字上就可以看出,它包括两部分:编码器和解码器。编码器将数据分布的高级特征映射到数据的低级表征,低级表征叫作本征向量(latent&vector)。解码器吸收数据的低级表征,然后输出同样数据的高级表征。&从数学上来讲,让&X&作为编码器的输入,z&作为本征向量,X′作为解码器的输出。&图&1&是&VAE&的可视化图。图&1:VAE&的架构&这与标准自编码器有何不同?关键区别在于我们对本征向量的约束。如果是标准自编码器,那么我们主要关注重建损失(reconstruction&loss),即:而在变分自编码器的情况中,我们希望本征向量遵循特定的分布,通常是单位高斯分布(unit&Gaussian&distribution),使下列损失得到优化:p(z′)~N(0,I)&中&I&指单位矩阵(identity&matrx),q(z∣X)&是本征向量的分布,其中。和由神经网络来计算。KL(A,B)&是分布&B&到&A&的&KL&散度。&由于损失函数中还有其他项,因此存在模型生成图像的精度和本征向量的分布与单位高斯分布的接近程度之间存在权衡(trade-off)。这两部分由两个超参数λ_1&和λ_2&来控制。GAN&GAN&是根据给定的先验分布生成数据的另一种方式,包括同时进行的两部分:判别器和生成器。&判别器用于对「真」图像和「伪」图像进行分类,生成器从随机噪声中生成图像(随机噪声通常叫作本征向量或代码,该噪声通常从均匀分布(uniform&distribution)或高斯分布中获取)。生成器的任务是生成可以以假乱真的图像,令判别器也无法区分出来。也就是说,生成器和判别器是互相对抗的。判别器非常努力地尝试区分真伪图像,同时生成器尽力生成更加逼真的图像,使判别器将这些图像也分类为「真」图像。&图&2&是&GAN&的典型结构。图&2:GAN&生成器包括利用代码输出图像的解卷积层。图&3&是生成器的架构图。图&3:典型&GAN&的生成器图示(图像来源:OpenAI)训练&GAN&的难点&训练&GAN&时我们会遇到一些挑战,我认为其中最大的挑战在于本征向量/代码的采样。代码只是从先验分布中对本征变量的噪声采样。有很多种方法可以克服该挑战,包括:使用&VAE&对本征变量进行编码,学习数据的先验分布。这听起来要好一些,因为编码器能够学习数据分布,现在我们可以从分布中进行采样,而不是生成随机噪声。训练细节&我们知道两个分布&p(真实分布)和&q(估计分布)之间的交叉熵通过以下公式计算:对于二元分类,对于&GAN,我们假设分布的一半来自真实数据分布,一半来自估计分布,因此:训练&GAN&需要同时优化两个损失函数。&按照极小极大值算法,这里,判别器需要区分图像的真伪,不管图像是否包含真实物体,都没有注意力。当我们在&CIFAR&上检查&GAN&生成的图像时会明显看到这一点。&我们可以重新定义判别器损失目标,使之包含标签。这被证明可以提高主观样本的质量。&如:在&MNIST&或&CIFAR-10(两个数据集都有&10&个类别)。&上述&Python&损失函数在&TensorFlow&中的实现:&
def VAE_loss(true_images, logits, mean, std):
true_images : batch of input images
: linear output of the decoder network (the constructed images)
: mean of the latent code
: standard deviation of the latent code
= tf.reshape(true_images, [-1, img_h*img_w*img_d])
encoder_loss = 0.5 * tf.reduce_sum(tf.square(mean)+tf.square(std)
-tf.log(tf.square(std))-1, 1)
decoder_loss = tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(
logits=logits, labels=img_flat), 1)
return tf.reduce_mean(encoder_loss + decoder_loss)
def GAN_loss_without_labels(true_logit, fake_logit):
true_logit : Given data from true distribution,
`true_logit` is the output of Discriminator (a column vector)
fake_logit : Given data generated from Generator,
`fake_logit` is the output of Discriminator (a column vector)
true_prob = tf.nn.sigmoid(true_logit)
fake_prob = tf.nn.sigmoid(fake_logit)
d_loss = tf.reduce_mean(-tf.log(true_prob)-tf.log(1-fake_prob))
g_loss = tf.reduce_mean(-tf.log(fake_prob))
return d_loss, g_loss
def GAN_loss_with_labels(true_logit, fake_logit):
true_logit : Given data from true distribution,
`true_logit` is the output of Discriminator (a matrix now)
fake_logit : Given data generated from Generator,
`fake_logit` is the output of Discriminator (a matrix now)
d_true_loss = tf.nn.softmax_cross_entropy_with_logits(
labels=self.labels, logits=self.true_logit, dim=1)
d_fake_loss = tf.nn.softmax_cross_entropy_with_logits(
labels=1-self.labels, logits=self.fake_logit, dim=1)
g_loss = tf.nn.softmax_cross_entropy_with_logits(
labels=self.labels, logits=self.fake_logit, dim=1)
d_loss = d_true_loss + d_fake_loss
return tf.reduce_mean(d_loss), tf.reduce_mean(g_loss)
在&MNIST&上进行&VAE&与&GAN&对比实验#1&不使用标签训练判别器我在&MNIST&上训练了一个&VAE。代码地址:https://github.com/kvmanohar22/Generative-Models实验使用了&MNIST&的&28×28&图像,下图中:左侧:数据分布的&64&张原始图像中间:VAE&生成的&64&张图像右侧:GAN&生成的&64&张图像第&1&次迭代第&2&次迭代第&3&次迭代第&4&次迭代第&100&次迭代VAE(125)和&GAN(368)训练的最终结果以下动图展示了&GAN&生成图像的过程(模型训练了&368&个&epoch)。显然,VAE&生成的图像与&GAN&生成的图像相比,前者更加模糊。这个结果在预料之中,因为&VAE&模型生成的所有输出都是分布的平均。为了减少图像的模糊,我们可以使用&L1&损失来代替&L2&损失。在第一个实验后,作者还将在近期研究使用标签训练判别器,并在&CIFAR&数据集上测试&VAE&与&GAN&的性能。使用下载&MNIST&和&CIFAR&数据集使用&MNIST&训练&VAE&请运行:python main.py --train --model vae --dataset mnist使用&MNIST&训练&GAN&请运行:python main.py --train --model gan --dataset mnist想要获取完整的命令行选项,请运行:python main.py --help该模型由&generate_frq&决定生成图片的频率,默认值为&1。GAN&在&MNIST&上的训练结果MNIST&数据集中的样本图像:上方是&VAE&生成的图像,下方的动图展示了&GAN&生成图像的过程:You will always be lucky if you know how to make friends with strange cats.联系电话:+86 010-联系邮箱:GAN:神经网络的左右互博 - 简书
GAN:神经网络的左右互博
从对抗样本说起
下图是一个有趣的例子。最左边是一个熊猫的图片,也能被模型正确地分类(57.7%的置信度),但稍微加了一点点干扰后,新的图片人眼看上去几乎无差异,但模型立马就(十分肯定地)把它分到了长臂猿。
带干扰的对抗样本
这在某种程度上说明了很多模型在训练的时候并没有学到数据的内在表达,而更多的是学到了跟分类相关的某种模式以最小化目标函数而已。
平均化效益
下图说明了在多模态形式场景,对抗训练的优越性。左图是需要预测的真实图片,中间图片是基于大量样本最小化均方差的图片,右图是对抗网络生成的图片。对比可以发现,对于很多模型来说,最小化均方差往往意味着平均化,往钟型曲线的中部靠拢,而对于样本是多模态的场景则并不适用。
Next Video Frame Prediction
上述两个例子表明,在通过样本学习真实数据分布的时候,引入对抗机制是可能的方向之一。
生成式对抗网络 (Generative Adversarial Nets,GAN) 在16的NIPS大放异彩,成为神经网络最受关注的技术之一, 但数典归宗,GAN还是在生成式模型的大门派里。 这是Ian Goodfellow给谱的家谱。按Ian的分法,(基于最大似然的)生成式模型本质上都是通过样本来学习真实数据的概率分布P_data,进而使用学到的概率分布P_model来生成新的样本,当然期望P_data和P_modal的偏差尽可能小。
生成式模型纵览
在有些情况下,p_model的密度函数是可以显式地(或近似地)表示出来,这就是图中左边的模型,包括前几年炙手可热的变分自解码(Variational Autoencoder,VAE)和玻尔兹曼机,VAE最大的问题在于需要有个预设先验分布,这一点会带来许多桎梏,Ian就提到,对于VAE来讲,先验弄的不好,后面做的再好也是白搭,“路线错了,知识越多越反动”。在图的右边是无法显式表达密度函数的模型,其中GAN和马尔科夫链不同之处在于,马尔科夫链需要多轮运行才能生成一个样本,此外,对于高维空间的计算也十分困难。
左右互搏的哲学
大道至简,GAN的思想其实十分朴素:
有一对模型,一个生成模型(G)生成假样本,最好是六耳猕猴,直叫众人真假难辨;一个判别模型(D)识别假样本,最好是火眼金睛,敢让赝品无所遁形。
那么GAN的训练过程就变成了生成模型(G)和判别模型(D)之间的竞争过程——随机从真实样本和由生成模型(G)生成出的“假样本”中取一个,让判别模型(D)去判断是否为真。把这个问题,转化为了一个博弈的问题。利用纳什均衡来得到最终的目标函数:
极大极小博弈
其实这个思想韩非子两千年前也给我们举了个例子,说不定当时的匠人已经学会用对抗训练的方法来打造他的矛和盾。
由上可以看到简单GAN其实非常“自由”:首先生成模型(G)生成的分布很可能只是样本分布空间中的一个子流形,并没有逼近真实分布;其次判别模型很有可能只需要一个简单分类,区分这个子流形和真实样本分布就可以。因此,一些新的工作就通过加一些限制以改善GAN的效果。另外,最近也有一些工作是在GAN的序列化改进上。
Conditional Generative Adversarial Nets
一些有趣的应用
看到下图是不是联想到在word2vec里面的词语运算?
在GAN中也可以实现图片的运算了。在左边首先通过三张图片生成一个特定样本,比如戴眼镜的男性,不戴眼睛的男性,不戴眼镜的女性,再通过GAN的隐空间里实现图片的加减法,生成带眼睛的女性图片。
另外一个直接应用就是文字生成图像:
这其实就是带有限制条件的GAN,只是这里的限制是文本信息,以加强生成图片和文本之间的关联。
GAN在文本应用的难点
Ian本尊曾经在reddit上参与GAN应用到自然语言处理中(NLP)的讨论,他的看法是由于在对抗训练中,扰动通常都是通过对实值数据细微的修改产生,这一点在图片中易于实现,因为图片本身即是以连续实值矩阵的形式存储在计算机中。但文本基础单元(字、词)的表示通常是离散的,例如,无法知道“企鹅”+0.01是个什么词,即便将“企鹅”嵌入成连续向量,这个向量的细微修改很有可能根本不能对应到任何词汇,亦即无法生成一个伪造的自然语言样本。这是在NLP中直接应用GAN的最大阻碍。
reddit上的讨论
当然最近也有一些工作,通过间接的方式运用GAN到NLP中,例如,先将文本向量化,将GAN作为中间层,然后再接入RNN,这样即便GAN产生的扰动无法对应到真实世界里的文本,但对于RNN来说这一点关系不大。
有监督的深度学习通常需要大量标记样本驱动训练,然而在现实中,大量数据都是无标注的,很多学者认为,无监督、半监督的方法可能是真正通往AI的道路。因此,GAN作为一种非监督的方法,将会在持续革新的AI领域里获得越来越多的青睐。
(本文转自雷锋网,转载已获取授权,未经允许禁止转载)原文链接:http://www.leiphone.com/news/201701/Kq6FvnjgbKK8Lh8N.html
作者:亚萌 相关参考: 【OpenAI】 Generative Models 【搜狐科技】GA...
GAN,全称为Generative Adversarial Nets,直译为生成式对抗网络。它一方面将产生式模型拉回到了一直由判别式模型称霸的AI竞技场,引起了学者甚至大众对产生式模型的研究兴趣,同时也将对抗训练从常规的游戏竞技领域引到了更一般领域,引起了从学术界到工业界的...
摘要:在深度学习之前已经有很多生成模型,但苦于生成模型难以描述难以建模,科研人员遇到了很多挑战,而深度学习的出现帮助他们解决了不少问题。本章介绍基于深度学习思想的生成模型——VAE和GAN,以及GAN的变种模型。 在深度学习之前已经有很多生成模型,但苦于生成模型难以描述难以...
首发于 From Beijing with Love 提高驾驶技术:用GAN去除(爱情)动作片中的马赛克和衣服 達聞西 達聞西 1 天前 作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章。这篇就介绍利用生成式对抗网络(GAN)的两个基本驾驶技能: 1) 去除(爱情)...
所谓的对抗网络可以归结为unsupervised learning 或者 generative model。从无监督学习来进行feature representation,有k-means聚类算法,auto-encoders[2],以及09年的Deep belief...
IN操作符 IN操作符允许我们在WHERE子句中规定多个值。这个操作符可以让我们在表中选取有一定规律的特定值,比如多个同样的订单选取最新的一个。 SQL IN 语法 例子 简单的例子网上有,这里说一个复杂点的例子 有如上图所示的表 查询要求 1.我们要在指定chain_id...
其实拥抱 不过是说时快 来时 又那么那么不紧不慢罢了 很想跳起来拥抱你 高大的身躯 然后在耳畔 轻轻诉说 我们来时的故事 我在六月诉说 终于盼来七月 听到八月的预约 拥抱在九月见
蓝蓝的大海 融化了蓝蓝的天空 蓝蓝的浪花 把蓝色的栈桥包容 云 不再是云 那是海的一部分 太阳 也不再是太阳 那是海上蓝色的航灯 我 也不再是我 已是海里的水滴
我的理想生活 一个可以维持自己生活的熟练技能,不委屈求全 一个温暖的家,有老公,有孩子的陪伴 可以偶尔休假,旅旅游 可以偶尔聚会,看看书 冬日,带着孩子在外面晒晒太阳 夏日,吃着冰棍,吹着冷风 可以有压力,可以有贷款 也有一个憧憬的未来 简简单单,一切刚好
日念家人一好处,念力加持享幸福! 正念,正向,正行,正力! 第86天() 念先生好86天:一早就收到先生的关心和问候!暖暖的!愉快的一天开始了!先生今几乎在车上奔波着…晚上又要帮孩子做晚餐!陪伴孩子!一天辛苦了!满满的爱和责任!为先生点赞!感恩!么么哒!...当前位置:
【组图】令人拍案叫绝的 Wasserstein GAN,彻底解决GAN训练不稳定问题
时间: 19:27本文链接:http://www.kejitianxia.com/227581.html
原标题:令人击节称赏的 Wasserstein GAN,彻底办理GAN练习不不变问题
1 新智元推荐
来历:知乎专栏 作者授权转载
作者:郑华滨
AI复始,万象更新 !
新智元祝宽大订户鸡年大吉!
  新智元启动新一轮大雇用:COO、执行总编、主编、高级编译、编缉、运营总监、客户司理、咨询总监、行政助理等 9 大岗亭全面开放。
  简历投递:.cn
  HR 微信:
  新智元为COO和执行总编提供最高深百万的年薪鼓励;为主干员工提供最完整的培训体系、高于业界平均程度的人为和奖金。
  加盟新智元,与人工智能业界首脑联袂改变世界。
  论文下载地点:https://arxiv.org/abs/
  在GAN的相关研究如火如荼甚至可以说是泛滥的本日,一篇新鲜出炉的arXiv论文Wassertein GAN却在 Reddit 的 Machine Learning 频道火了,连Goodfellow都在帖子里和各人热烈接头,这篇论文毕竟有什么了不起的处所呢?
  要知道自从2014年Ian Goodfellow提出以来,GAN就存在着练习坚苦、生成器和鉴别器的loss无法指示练习历程、生成样本缺乏多样性等问题。从当时起,许多论文都在实验办理,可是结果不尽人意,好比最有名的一个改造DCGAN依靠的是对鉴别器和生成器的架构举办尝试列举,最终找到一组较量好的网络架构配置,可是实际上是治标不治本,没有彻底办理问题。目前天的主角Wasserstein GAN(下面简称WGAN)乐成地做到了以下爆炸性的几点:
  那以上长处来自那边?这就是令人击节称赏的部门了——实际上作者整整花了两篇论文,在第一篇《Towards Principled Methods for Training Generative Adversarial Networks》内里推了一堆公式定理,从理论上阐明白原始GAN的问题地址,从而针对性地给出了改造要点;在这第二篇《Wassertein GAN》内里,又再从这个改造点出发推了一堆公式定理,最终给出了改造的算法实现流程,而改造后对比原始GAN的算法实现流程却只改了四点:
  算法截图如下:
  窜改是如此简朴,结果却惊人地好,以至于Reddit上不少人在叹息:就这样?没有此外了? 太简朴了吧!这些回响让我想起了一个颇有年初的鸡汤段子,说是一个工程师在电机外壳上用粉笔划了一条线解除了妨碍,要价一万美元——画一条线,1美元;知道在哪画线,9999美元。上面这四点改培育是作者Martin Arjovsky划的简简朴单四条线,对付工程实现便已足够,可是知道在哪划线,背后却是精良的数学阐明,而这也是本文想要整理的内容。
  本文内容分为五个部门:
  领略原文的许多公式定理需要对测度论、 拓扑学等数学常识有所把握,本文会从直观的角度对每一个重要公式举办解读,有时通过一些低维的例子辅佐读者领略数学背后的思想,所以难免会失于严谨,如有引喻不妥之处,接待在评论中指出。
  以下简称 Wassertein GAN为“WGAN本作”,简称 Towards Principled Methods for Training Generative Adversarial Networks为“WGAN前作”。
  WGAN 源码实现:https://github.com/martinarjovsky/WassersteinGAN
  第一部门:原始GAN毕竟出了什么问题?
  回首一下,原始GAN中鉴别器要最小化如下损失函数,尽大概把真实样天职为正例,生成样天职为负例:
  个中 Pr 是真实样天职布,Pg 是由生成器发生的样天职布。对付生成器,Goodfellow 一开始提出来一个损失函数,厥后又提出了一个改造的损失函数,别离是
  后者在 WGAN 两篇论文中称为“the - log D alternative”或“the - log D trick”。WGAN 前道别离阐明白这两种形式的原始GAN各自的问题地址,下面别离说明。
  第一种原始GAN形式的问题
  一句话归纳综合:鉴别器越好,生成器梯度消失越严重。WGAN 前作从两个角度举办了论证,第一个角度是从生成器的等价损失函数切入的。
  首先从公式1可以获得,在生成器 G 牢靠参数时最优的鉴别器 D 应该是什么。对付一个详细的样本,它大概来自真实漫衍也大概来自生身漫衍,它对公式1损失函数的孝敬是
  令其关于D(x)的导数为0,得
  化简得最优鉴别器为:
本文相关推荐
声明:本网部分信息转载于其他网站,如稿件涉及版权等问题,请联系我们处理!email:
备案号:鲁ICP备号13被浏览1,936分享邀请回答1添加评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答

我要回帖

更多关于 与普通股相比 优先股 的文章

 

随机推荐