PaperNotes(5)-Conditional Generative Adversarial Nets

Conditional GAN 论文阅读笔记

  • Abstract
  • 1 Introduction
  • 2 Related Work
  • 3 Conditional Adversarial Nets
    • 3.1 Generative Adversarial Nets
    • 3.2 Conditional Adversarial Nets
  • 4 Experimental Results
    • 4.1 Unimodal
    • 4.2 Multimodal
  • 5 Future Work
  • 6.思考

文章地址:https://arxiv.org/abs/1411.1784
Mirza M, Osindero S. Conditional Generative Adversarial Nets[J]. Computer Science, 2014:2672-2680.

Abstract

生成对抗网[8]是最近被提出的一种训练生成模型的新方法。本文介绍了条件版本的GAN,仅通过多增加一个条件输入数据y。我们希望这个条件能同时约束生成器和判别器。我们展示了本文模型能够产生以类标签为条件的MNIST数字。这个模型还可以用来学习多模态模型,和标注图像–可以为没有训练标签的数据提供描述性的tags.

1 Introduction

最近,生成对抗网被提出,其作为生成模型的一种框架,可以避免许多难以处理的概率计算的困难。

对抗网络的优点是不需要马尔可夫链,只需要反向传播获得梯度,学习过程中不需要推理,并且可以很容易地将各种因素和相互作用纳入模型中。

此外,如[8]所示,它可以产生最先进的对数似然估计和逼真的样本。

在一个无条件的GAN模型中,数据生成的模式不受控制。但是,可以通过附加信息调整指导数据生成过程。条件可以是类标签,像[5]中的绘画数据的某些部分,甚至基于不同模态的数据。

本文我们展示了如何构建条件对抗网。在文中我们展示了两组实验结果。一个是基于类标签的MNIST数字数据集,另一个是MIR Flickr 25000数据集,用于多模式学习。

2 Related Work

最近监督神经网络(尤其是卷积网络)取得了许多成功[13,17],但要调整这些模型以适应大量的输出类别仍然是一个挑战。第二个问题是,迄今为止的大部分工作都集中在学习从输入到输出的一对一映射。然而,许多有趣的问题是一对多的概率映射。例如,在图像标记问题中,可以许多不同的标记赋予给定的同张图像,并且不同的注释者可以使用不同的(但通常是同义或相关的)术语来描述同一图像。

解决第一个问题的一种方法是利用其他模式的信息:例如,使用自然语言语料库中标签的向量表示,其中几何关系在语义上是有意义的。当在这样的空间中进行预测时,我们受益于:当预测错误时,我们仍然“接近”事实(例如预测“桌子”而不是“椅子”)。而且我们可以自然地对训练期间没见过的标签进行预测。文献[3]等研究表明,即使是从图像特征空间到词表示空间的简单线性映射也可以提高分类性能。

解决第二个问题的一种方法是使用条件概率生成模型,输入被视为条件变量,一对多映射被实例化为条件预测分布。

[16] 采用类似的方法来解决这个问题,并在MIR flickr25000数据集上训练一个多模态的深度Boltzmann机器。

此外,在[12]中,作者展示了如何训练一个有监督的多模态神经语言模型,并且他们能够为图像生成的描述性句子。

(这些相关工作的相关性不高吧)

3 Conditional Adversarial Nets

3.1 Generative Adversarial Nets

生成对抗网是一种新的生成式模型。它们由两个“对抗性”模型组成:一个是捕获数据分布的生成器G,另一个是判断样本来自训练数据还是生成数据的判别器D。G和D都可以是一个非线性映射函数,比如多层感知器。

为了学习数据x上的生成分布pgp_gpg,生成器构建了一个从先验噪声分布pz(z)p_z(z)pz(z)到数据空间G(z;θg)G(z;θ_g)G(z;θg)的映射函数。鉴别器D(x;θd)D(x;θ_d)D(x;θd)输出单个标量,表示x来自真实s数据的概率。

G和D同时训练:调整G的参数使log(1−D(G(z))log(1- D(G(z))log(1D(G(z))最小化,调整D的参数使logD(X))最大化,以上过程遵循两人的最小−最大博弈,其值函数为logD(X))最大化,以上过程遵循两人的最小-最大博弈,其值函数为logD(X))V(G,D)$:

min⁡Gmax⁡DV(D,G)=Ex∼pdata(x)[log⁡D(x)]+Ez∼pz(z)[log(1−D(G(z)))]\min_G \max_D V(D,G) = \mathbb{E}_{x\sim p_{data}(x)}[\log D(x)]+ \mathbb{E}_{z\sim p_z(z)}[log(1-D(G(z)))]GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

3.2 Conditional Adversarial Nets

如果生成器和鉴别器都以一些附加信息为条件y,生成对抗网可以扩展为一个条件模型。y可以是任何类型的辅助信息,例如类标签或来自其他模式的数据。我们可以通过向D和G输入y作为附加输入层来实现条件控制。

在G中,先验输入噪声pz(z)和y被组合在联合隐藏表示中,并且对抗性训练框架对hidden representation的构成方式具有很大的灵活性。(目前,我们只是将条件输入和先验噪声作为MLP的一个隐藏层的输入,但是可以想象使用更高阶的交互来允许复杂的生成机制,这在传统的生成框架中是非常困难的。)

在鉴别器中,x和y被表示为判别函数的输入(在这种情况下由MLP实现)。

此时两人极小极大博弈的目标函数如下所示:
min⁡Gmax⁡DV(D,G)=Ex∼pdata(x)[logD(x∣y)]+Ez∼pz(z)[log⁡(1−D(G(z∣y)))]\min_G \max_D V(D,G)= \mathbb{E}_{x\sim p_{data}(x)}[logD(x|y)]+\mathbb{E}_{z\sim p_z(z)}[\log (1-D(G(z|y)))]GminDmaxV(D,G)=Expdata(x)[logD(xy)]+Ezpz(z)[log(1D(G(zy)))]

(细节没有说)
图1展示了一个简单条件对抗网的结构。
在这里插入图片描述

4 Experimental Results

4.1 Unimodal

我们在MNIST图像上训练了一个条件对抗网络,条件输入是类标签。类标签采用one-hot 编码。

对于生成器G,噪声先验z是从单位超立方体内的均匀分布提取维数为100向量。ReLu作为隐藏层的激活函数[4,11],层大小分别为200和1000,然后将它们映射到维度为1200的第二个组合隐藏ReLu层。然后我们有一个最终的sigmoid单元层作为我们的输出,用于生成784维MNIST样本(28*28)。

判别器D将x映射到具有240个单元和5个pieces的maxout[6]层,而将y映射到具有50个单元和5个pieces的maxout层。这两个隐藏层映射到一个有240个单元和4个pieces的联合maxout层,然后被送入sigmoid层。(只要判别器有足够的能力,判别器的精确结构并不重要;我们发现maxout单元通常非常适合这项任务。)
网络训练超参数设置

maxout 通俗理解–本来传统的MLP算法在第i层到第i+1层,参数只有一组,然而现在不这么干了,在这一层同时训练n组参数,然后选择激活值最大的作为下一层神经元的激活值。

模型采用随机梯度下降法训练,mini-batch size为100,初始学习率为0.1,指数下降到0.000001,衰减因子为1.00004。同时使用动量系数,初始值为0.5,增加到0.7。概率为0.5的Dropout[9]同时应用于生成器和鉴别器。以验证集上对数似然的最佳估计作为停止点。(什么的停止点?超参数的停止点?)

表1显示了MNIST数据集测试数据的高斯Parzen窗口对数似然估计。从每10个类中抽取1000个样本,并将高斯Parzen窗口(概率密度估计的一种)拟合到这些样本上。然后,我们使用Parzen窗口分布估计测试集的对数似然(关于如何构造这个估计的更多细节,请参见[8])

我们所提出的条件对抗网络结果与一些模型的效果是相当,也优于一些方法(包括非条件对抗网络)。我们提出这些结果更多的是概念的证明,而不是作为有效性的证明,并认为随着超参数空间和体系结构的进一步探索,条件模型应该匹配或将超过非条件模型的性能。

4.2 Multimodal

(生成词向量的工作)

像Flickr这样的照片网站?是一个丰富的标记数据源,这些数据以图像和它们相关联的用户生成元数据(UGM)的形式存在,尤其是用户标记。

用户生成的元数据不同于更“规范”的图像标记模式,因为它们通常更具描述性,并且在语义上更接近人类用自然语言描述图像的方式,而不仅仅是识别图像中的对象。UGM的另一个方面是synoymy很流行,不同的用户可能使用不同的词汇来描述相同的概念,因此,有一种有效的方法来规范这些标签变得非常重要。概念词嵌入[14]在这里是非常有用的,因为相关概念最终由相似的向量表示。

在本节中,我们将演示图像的自动标记,使用基于图像特征的条件对抗网络来生成的标记向量分布来实现。

对于图像特征,我们在带有21000个标签的完整ImageNet数据集上预先训练了一个类似于[13]的卷积模型[15]。我们使用最后一个有4096个单元的全连接层的输出作为图像表示。

对于单词表示,我们首先从YFCC100M 数据集元数据中收集用户标记、标题和描述的文本语料库。在对文本进行预处理和清理之后,我们训练了一个单词向量大小为200的skip gram模型[14]。我们省略了词汇表中出现次数少于200次的单词,最终得到了一本247465的词典。

在GAN训练过程中,我们保持卷积模型和语言模型参数不变。梯度在这两个模型中的传递将作为下一步的工作。

在实验中,我们使用MIR-flickr25000数据集[10],并使用上面描述的卷积模型和语言模型提取图像和标签特征。我们的实验中省略了没有任何标记的图像,并将注释视为额外的标记。前15万个样本被用作训练集。在训练集中带有多标签的图像会按相应的tag 重复多次。

为了评估,我们为每个图像生成100个样本,并使用词汇表中单词与每个样本向量表示的余弦相似度来找出最接近的20个单词。然后我们从100个样本中选出最常见的10个单词。表4.2显示了用户分配的标记和注释以及生成的标记的一些示例。

最佳的生成器结构为:接收大小为100的高斯噪声作为噪声先验,并将其映射到500维ReLu层。将4096维图像特征向量映射到2000维ReLu隐层。这两个层被映射到一个200维线性层的联合表示,该层将输出生成的词向量。

最佳鉴别器结构为:500维和1200维ReLu隐层组成,分别用于词向量和图像特征,maxout层由1000个单元和3个块组成连接层,最后送入单个sigmoid单元。

模型采用随机梯度下降法训练,mini-batch size 为100,初始学习率为0.1,指数下降到.000001,衰减因子为1.00004。使用动量梯度下降算法,动量系数的初始值为0.5,增加到0.7。发生器和鉴别器均采用了概率为0.5的drop out 结构。

超参数和体系结构的选择是通过交叉验证以及随机网格搜索和手动选择的混合(尽管搜索空间有限)

5 Future Work

本文的结果是非常初步的,但它们展示了条件对抗网的潜力,并显示了有趣和有用的应用前景。

在未来探索中,我们希望探索更复杂的模型,并对其性能和特点进行更详细和透彻的分析。

在目前的实验中,我们只单独使用每个标签。但是,我们希望通过同时使用多个标签(有效地将生成问题作为“集合生成”的一个)来实现更好的结果。

另外一个可以深入研究的方向是构建一个联合训练方案,用来学习语言模型(语言模型随着网络进行训练)。类似[12]这样的工作表明,我们可以学习适合特定任务的语言模型。

6.思考

1.本文只是简单的在GAN的输入处嵌入了一个条件,并没有说明由此带来的训练上的差别。光从目标函数上来看应该是训练形式不做改变。

2.与早期调研的李宏毅的条件GAN目标函数有所不同。李宏毅的课件中所用的框架为另一篇文章的工作:Generative Adversarial Text to Image Synthesis [ICML 2016,http://arxiv.org/abs/1605.05396] ,此文是目前公认的条件GAN框架的出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蛙泳姿势教学

偶尔看到分享的一篇日志,记录下,忙过这段时间努力学蛙泳。 蛙泳配合有一个顺口溜,在讲解蛙泳动作要领之前先介绍给大家:“划手腿不动,收手再收腿,先伸胳膊后蹬腿,并拢伸直漂一会儿。”从顺口溜中…

leetcode238 除本身以外数组的乘积

给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请不要使用除法,且在 O(n) 时间复杂度内完…

C 和c++的一些杂想,想到哪儿写到哪儿

关于C和c++一直有好多的程序猿在研究,研究区别研究相似的地方,究竟用那个预言好,没有确定的说法,要看你做什么了。 初始化操作: 在初始化的时候,我们都知道C语言一般都是这样处理的: int a=12; C++ 呢,除了这样复制初始化之外还可以直接初始化: int a(12); 啊…

C++(2)--mac使用VScode 进行C++编译、运行、调试

mac 使用VScode 进行C开发1.编译的基础概念2. mac 编译c代码2.1 查看编译器情况2.2 安装插件C/C,C/C Clang Command Adapte2.3新建一个C project2.3.1本地新建文件夹2.3.2新建mian.cpp文件2.3.3 编写hello word demo2.4 代码编译,运行,调试2.…

boost库linux编译安装

0.下载 1.解压boost_1_49_0.tar.g然后放到/opt/ 2. 进入解压后的文件夹 cd /opt/boost_1_49_0 3.将boost安装配置在/boost/prefix目录下 不过之前先 mkdir -p /boost/prefix

leetcode136 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: …

C++(3)--编译、gdb调试

3--编译和执行过程1.编译2.gdb调试gdb 查coreGCC是一个编译套件,是一个以"gcc"命令为首的源码施工队。施工队的成员有gcc、cpp、as、ld四个成员 预处理–宏定义展开,头文件引入-- cpp 等价于 gcc -E编译–C语言->汇编语言–gcc -S汇编–汇…

leetcode94 二叉树的中序遍历

给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归 /*** Definition for a binary tree node.* public class TreeNode …

使用动态链接库

1. 动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载…

算法(29)--两棵树匹配

树匹配1.剑指 Offer 26. 树的子结构2.剑指 Offer 27. 二叉树的镜像3.剑指 Offer 28. 对称的二叉树1.剑指 Offer 26. 树的子结构 判断:小树B是否是大树A的一部分,需要以大树A的每个为根节点进行匹配判断。 算法:判断两个节点是否相等&#xf…

leetcode647 回文子串

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。 示例 1: 输入: "abc" 输出: 3 解释: 三个回文子串: "a", "…

windows下关于Objective-C开发环境的配置

最近IOS一直很火,也想学习以以下OC开发,一般装个虚拟机,然后装个mac,我相信大多数人的机子跑不起来或者很卡,所以之前借鉴了一个文章,就是关于在windows下配置OC开发环境,这里我把自己的安装说一…

如何选择商铺投资

如何选择商铺? 选择商铺时,需要考虑哪些因素呢? 聂先生表示,要看地段,包括周围的商业环境、停车方便程度、汽车流量、未来发展前景、视觉效果等因素。此外,地域经济也很重要,必须要有一个好的投…

PaperNotes(6)-GAN/DCGAN/WGAN/WGAN-GP/WGAN-SN-网络结构/实验效果

GAN模型网络结构实验效果演化1.GAN1.1网络结构1.2实验结果2.DCGAN2.1网络结构2.2实验结果3.WGAN3.1网络结构3.2实验结果4.WGAN-GP4.1网络结构4.2实验结果5.WGAN-SN5.1网络结构5.2实验结果小结1.GAN 文章: https://arxiv.org/pdf/1406.2661.pdf 代码: Py…

Spring Security使用

Spring Security 在web应用开发中,安全无疑是十分重要的,选择Spring Security来保护web应用是一个非常好的选择。 Spring Security 是spring项目之中的一个安全模块,可以非常方便与spring项目无缝集成。特别是在spring boot项目中加入sprin…

nginx python webpy 配置安装

安装webpy$ wget http://webpy.org/static/web.py-0.34.tar.gz$ tar xvzf web.py-0.34.tar.gz$ cd web.py-0.34$ sudo python setup.py install安装 Fluphttp://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz$ wget http://www.saddi.com/software/flup/dist/flup-1.0.2…

PaperNotes(7)-GANs模式坍塌/训练不稳定

GANs-模式坍塌-训练不稳定1.训练不稳定问题相关文章1.1 DCGAN1.2Big-GAN1.3WGAN 、WGAN-GP、SN-WGAN1.4其他工作2.模式坍塌问题相关文章2.1 MAD-GAN2.2 Unrolled GAN2.3 DRAGAN2.4 D2GAN2.5 InfoGAN2.6 Deligan2.7 EBGAN2.8 Maximum Entropy Generators for Energy-Based Model…

thinkphp框架起步认识

先看看thinkphp的文档吧:这是我在网上找的一个不错的链接地址,对自己有用,同时相信对读者也有用吧。 http://doc.thinkphp.cn/manual/class.html ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说…

leetcode403 青蛙过河

一只青蛙想要过河。 假定河流被等分为 x 个单元格,并且在每一个单元格内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。 给定石子的位置列表(用单元格序号升序表示)&#xff…

PaperNotes(8)-Stein Variational Gradient Descent A General Purpose Bayesian Inference Algorithm

通用贝叶斯推理算法-Stein Variational Gradient DescentAbstract1 Introduction2 Background3 Variational Inference Using Smooth Transforms3.1 Stein Operator as the Derivative of KL Divergence定理3.1引理3.23.2 Stein Variational Gradient Descent4 Related Works5 …