gan

对 GAN 的 value function 的理解

拟墨画扇 提交于 2019-11-27 19:09:42
上式分为两个步骤: 第一步:调整discriminative model D的权重,使得V中两项取得最大值 第二步:调整generative model G的权重,使得V中第二项取得最小值 首先,分析log D(x)的含义: D(x)表示discriminative model D对一个原始样本的评分,评分越高,表示D越趋向于相信该样本是一个真实样本 D(G(z))表示discriminative model D对一个生成样本的评分,评分越高,表示D越趋向于把一个生成样本当成了一个真实样本 因此,网络训练过程总结如下: 第一步:训练D,使得上述两个期望最大 第一项期望值最大,表示D将一个真实样本给出一个高的评分 第二项期望值最大,表示D将一个生成样本给出一个低分 第二步:训练G,使得期望值的第二项最小 第二项期望值最小,即:找到一个G,使其生成的样本能够在discriminative model D中获得一个较高的评分 图:GAN的训练收敛过程 蓝色表示D 绿色表示G 黑色表示原数据 2019年8月18日 于南湖畔 来源: https://www.cnblogs.com/sddai/p/11373612.html

深度学习-InfoGAN论文理解笔记

只愿长相守 提交于 2019-11-27 18:50:59
在弄清楚InfoGAN之前,可以先理解一下变分推断目的以及在概率论中的应用与ELBO是什么,以及KL散度 https://blog.csdn.net/qy20115549/article/details/93074519 https://blog.csdn.net/qy20115549/article/details/86644192 。 如果理解了变分推断,KL散度,ELBO,对于InfoGAN中的重要方法就可以很容易理解了。 这里首先看一下简单的对数推导为方便对InfoGAN文中的公式的阅读: 下面的笔记参阅: https://blog.csdn.net/u011699990/article/details/71599067 https://www.cnblogs.com/zzycv/p/9312039.html 先记一下预备知识就当作复习了。 条件熵公式推导: 用另一个变量对原变量分类后, 原变量的不确定性就会减小, 不确定程度减小了就是信息增益。 互信息(Mutual Information, MI)是变量间相互依赖性的度量, 它度量两个事件集合之间的相关性。 两个离散随机变量X和Y的互信息可定义为: p ( x , y ) 是X和Y的联合概率分布函数, 而 p ( x ) 和 p(y)分别是X和Y的边缘概率分布函数 在连续随机变量的情形下: I ( X ; Y )

Social GAN代码要点记录

廉价感情. 提交于 2019-11-27 16:41:30
近日在阅读Social GAN文献的实验代码,加深对模型的理解,发现源代码的工程化很强,也比较适合构建实验模型的学习,故细致阅读。下文是笔者阅读中一些要点总结,有关于 pytorch ,也有关于模型自身的。 GPU -> CPU SGAN的实验代码在工程化方面考虑比较充分,考虑到了在CPU和GPU两种平台上模型的运行。原生平台是GPU,若要切换为CPU,需要做如下改动(目前只改动了训练过程所需的,测试评估还未进行,但估计类似): args.use_gpu 需要置为0,以保证 int_dtype 和 float_dtype 不是cuda。 检索 cuda() ,可以发现在 model.py 还有些残缺未考虑的cuda定义,使用 torch.cuda.is_available() 判断是否GPU可使用,只有可行采用 cuda() 定义: x = xxx() if torch.cuda.is_available(): x = x.cuda() 池化层实现细节 Social GAN相较于Social LSTM提出了新的池化模型以满足不同行人轨迹间信息共享与相互作用,具体有以下几个方面的变动: Social GAN的池化频率为一次,只在利用已知轨迹编码后进行一次池化。(代码中一个额外选项是在预测的每一步都进行池化) 池化范围为全局而不是固定的范围区间,代码使用max

GAN训练不稳定原因

笑着哭i 提交于 2019-11-27 12:45:00
版权声明:本文为CSDN博主「weixin_43698821」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_43698821/article/details/85003226 1、很难使得G和D同时收敛 大多深度模型的训练都使用优化算法寻找损失函数比较低的值。优化算法通常是个可靠的“下山”过程。生成对抗神经网络要求双方在博弈的过程中达到势均力敌(均衡)。每个模型在更新的过程中(比如生成器)成功的“下山”,但同样的更新可能会造成博弈的另一个模型(比如判别器)“上山”。甚至有时候博弈双方虽然最终达到了均衡,但双方在不断的抵消对方的进步并没有使双方同时达到一个有用的地方。对所有模型同时梯度下降使得某些模型收敛但不是所有模型都达到收敛最优。 2、生成器G发生模式崩溃 对于不同的输入生成相似的样本,最坏的情况仅生成一个单独的样本,判别器的学习会拒绝这些相似甚至相同的单一样本。在实际应用中,完全的模式崩溃很少,局部的模式崩溃很常见。局部模式崩溃是指生成器使不同的图片包含相同的颜色或者纹理主题,或者不同的图片包含同一只狗的不同部分。MinBatch GAN缓解了模式崩溃的问题但同时也引发了counting, perspective和全局结构等问题,这些问题通过设计更好的模型框架有可能解决。

GAN

女生的网名这么多〃 提交于 2019-11-27 09:58:07
GAN,MNIST生成数字 import os import matplotlib.pyplot as plt import itertools import pickle import imageio import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.autograd import Variable import numpy as np # G(z) class generator(nn.Module): # initializers def __init__(self, input_size=32, n_class = 10): super(generator, self).__init__() self.fc1 = nn.Linear(input_size, 256) self.fc2 = nn.Linear(self.fc1.out_features, 512) self.fc3 = nn.Linear(self.fc2.out_features, 1024) self.fc4 = nn.Linear(self.fc3.out

[论文笔记]ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks

浪尽此生 提交于 2019-11-27 04:57:20
[论文笔记]ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks 解析1 解析2 代码 本篇论文是基于SRGAN改进而来到,相比于SRGAN它在三个方面进行了改进: 1.网络的基本单元从基本的残差单元变为Residual-in-Residual Dense Block (RRDB); 2.GAN网络改进为Relativistic average GAN (RaGAN); 3.改进感知域损失函数,使用 激活前 的VGG特征,这个改进会提供更尖锐的边缘和更符合视觉的结果。 1. Network Architecture 1.1generator G 将所有的BN layer去除(fig4 左1,左2) 将原SRGAN中的resnet网络改为RRDB(fig4 右) 对残差信息进行scaling,即将残差信息乘以一个0到1之间的数,用于防止不稳定(fig4 右中的β) 更小的初始化,作者发现当初始化参数的方差变小时,残差结构更容易进行训练 BN层在训练时,使用一个batch的数据的均值和方差对该batch特征进行归一化,在测试时,使用在整个测试集上的数据预测的均值和方差。当训练集和测试集的统计量有很大不同的时候,BN层就会倾向于生成不好的伪影,并且限制模型的泛化能力。作者发现,BN层在网络比较深

gan以及其变种中值得思考部分

做~自己de王妃 提交于 2019-11-27 02:25:55
1. GAN 从原始gan(生成对抗网络)到wgan,说是各种gan的变形百花齐放也不为过,关于gan的文章数不胜数,有严谨数学推导的文章也多如牛毛,所以随笔写下一个关于gan和变种中可以引起思考,能够为其他领域的研究提供一点点思路的拙见。文章没有太过详细的关于数学的推导,但还是默认看文章的人对gan较为熟悉,所以不再浪费精力在怎么让你明白这个火了三年的网络到底是怎么一回事上,直接开门见山。 1.1原始GAN训练困难 (1)目前最公认的一个考虑是,gan想对原始数据分布进行建模,但原始数据分布以及生成器产生的数据分布都为高维空间中的低维流形(类比于一个平面中的两条曲线,或者一个立方体中的两个平面),因此对于这种情况,原始gan最后损失函数所推导出的js散度很难衡量这两个分布的“距离”,进而在进行梯度下降训练时,没有“动力”去减少两个分布的差距。 (2)在训练模型时,采样不够多,导致判别器很容易将这个“二分类”问题给解出来,本质与第一点相同(无论从对损失函数的形式还是数学严谨推导,都可以证明kl散度计算等价于解决二分类问题) 2.GAN变种 gan神经网络的变种过于繁杂,简单介绍以下几种变种中有意义的事:fGAN WGAN CycleGAN cGAN VAEGAN InfoGAN 2.1 fGAN 优点: (1)推导的F函数将原始GAN中的js散度推广到了更宽广的F散度

对抗生成网络GAN

蹲街弑〆低调 提交于 2019-11-26 22:26:28
该方法常用于: 图像生成 图像修复,训练用了MSE+Global+Local数据,其中Global+Local判别式用于全局+局部一致性。 图像超分辨率重构 GAN的基本原理,主要包含两个网络,G(Generator)和D(Discriminator),含义如下:(以图像生成为例) G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。 D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。 在训练过程中,生成网络G的目标就是尽量生成尽可能真实的图片,去欺骗判别网络D。 而D的目标就是尽量把G生成的图片和真实的图片分别开来。 这样,通过G和D之间的博弈训练。在最理想的结果是,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。 本文参考了 https://baike.baidu.com/item/GAN/22181905 来源: https://www.cnblogs.com/xbit/p/9743607.html

生成对抗网络(GAN)

烈酒焚心 提交于 2019-11-26 22:26:10
  GAN的全称是 Generative Adversarial Networks,中文名称是生成对抗网络。原始的GAN是一种无监督学习方法,巧妙的利用“博弈”的思想来学习生成式模型。 1 GAN的原理   GAN的基本原理很简单,其由两个网络组成,一个是生成网络G(Generator) ,另外一个是判别网络D(Discriminator)。它们的功能分别是:    生成网络G: 负责生成图片,它接收一个随机的噪声 $z$,通过该噪声生成图片,将生成的图片记为 $G(z)$。    判别网络D: 负责判别一张图片是真实的图片还是由G生成的假的图片。其输入是一张图片 $x$ ,输出是0, 1值,0代表图片是由G生成的,1代表是真实图片。   在训练过程中,生成网路G的目标是尽量生成真实的图片去欺骗判别网络D。而判别网络D的目标就是尽量把G生成的图片和真实的图片区分开来。这样G和D就构成了一个动态的博弈过程。这是GAN的基本思想。   在最理想的状态下,G可以生成足以“以假乱真”的图片 $G(z)$。对于D来说,它难以判断G生成的图片究竟是不是真实的,因此 $D(G(z)) = 0.5$ (在这里我们输入的真实图片和生成的图片是各一半的)。此时得到的生成网络G就可以用来生成图片。 2 GAN损失函数   从数学的角度上来看GAN,假设用于训练的真实图片数据是 $x$,图片数据的分布为

生成对抗网络GAN

人走茶凉 提交于 2019-11-26 22:25:54
简介:     前面学到的网络比如CNN、RNN这些都是基于有监督式的学习,训练模型时我们需要输入样本和对应的label,给定损失函数,利用网络来学习数据的模式和特征。那么我们就不禁提出一个想法,有没有一种网络,对于给定的输入,且输入的数据无指定label,通过一个网络对这些数据进行学习,自动得出损失函数,从而学习数据的分布呢?答案肯定是有的,这就是16年非常火热的无监督式的学习下的生成对抗GAN网络,被一些学者认为是20年来机器学习领域最酷的想法。本文只是记录对该网络的个人理解,仅供个人学习和参考。 论文: Generative Adversarial Net(2014) GAN论文集合: 这里 GAN代码集合: 这里 GAN的基本概念:   GAN的思想是一种二人零和博弈思想(two-player game),博弈双方的利益之和是一个常数,比如两个人掰手腕,假设总的空间是一定的,你的力气大一点,那你就得到的空间多一点,相应的我的空间就少一点,相反我力气大我就得到的多一点,但有一点是确定的就是,我们两人的总空间是一定的,这就是二人博弈,但是呢总利益是一定的。引申到GAN里面就是可以看成,GAN中有两个这样的博弈者,一个是生成模型(G),一个是判别模型(D),他们各自有各自的功能。 生成模型(伪装者角色):在GAN网络中生成器扮演伪装者角色,我希望生成的数据伪装度特别高