生成式对抗网络(Generative Adversarial Nets, GAN)
一、发展历程:
最开始接触GANs是因为想了解有关于在少量数据的情况下如何做数据增广。然后就了解到了DCGAN生成手写数字的案例,简直是惊为天人,然今才逐渐开始了解生成对抗网络的思想。到了后来一直想用生成对抗网络的思想做语音识别和语音合成这一方面,一直找到合适的资料。再后来,鬼使神差的想结合GANs来做毕业论文,摸摸索索的缓慢向前进发,苦于身边也没有什么人敢这一方面的东西,基本上所有事情都只能靠自己。
这里记录下关于GANs的前世今生:
http://www.lancezhange.com/2015/11/19/adversarial-samples/ 这个博文讲了生成式对抗网络的一个产生过程(姑且看作产生过程)。。。。对抗样本指的是真实样本加上一定的扰动而构成的合成样本,这样的样本看似和真实样本差别不大,但是却可以在通过分类器后产生不同的结果。举例来说,真实样本是一本书,但是对抗样本可能会得到字典的结果。再比如真实样本是一只猴子,但是分类结果可能会是长臂猿。当然,上面的举例或许有不合适的地方,而且我的观点是:实际上,分类模型的能力还涉及到许多的知识,有可能分类模型本身就有可能过拟合或者是欠拟合,谁又能说的准,深度学习的模型本来就是一个黑盒子。
Intriguing properties of neural networks, by Christian Szegedy at Google, et al,2014这篇论文的作者把这个思想对准了深度学习,认为深度学习并没有那么牛逼。其实学术界一直以来都有深度学习,人工智能等方面的争议,有人赞成自然就有人反对,本来很多东西就被吃瓜群众过分夸大了,各种泡沫。这里还想多句嘴:整天吹嘘人工智能的那群人,玩着各种思想,各种的拉投资,早就已经赚得个盆满钵满了。二实际上,真正做出来多少成果,自己心里应该都有点b数。
https://www.kdnuggets.com/2015/07/deep-learning-adversarial-examples-misconceptions.html这里一篇论文有关于对抗样本的一些讲解。主要思想是:深度学习被他们证明受对抗样本的干扰最小;线性模型才是造成分类结果不一致的主要原因,而并非是非线性因素;在数据处理的过程中,因为对抗样本在实际情况中不一定会出现,因此在训练阶段拒绝处理对抗样本要比吧对抗样本错误分类要好,但这个结果并不是让人满意的解决方案;对抗样本的产生不一定要访问模型本身才能做到,可以自己训练;对抗样本上使用正则化并不能有效。
思维上的碰撞会使得理论更加的完善,这一点都不假。人们又开始思考机器和人的视觉真正差异的地方,(Deep Learning’s Deep Flaws)’s Deep Flaws, by Zachary Chase Lipton这篇文章继续分析,对抗样本对深度学习模型的表现不只是在深度学习方面才会有,各种机器学习都不会有100%的分类正确率。这些都推动了模型抗干扰能力方面的研究,而开始引用的博文里面有提到:现在相关领域的论文,无深度,不论文,灌水的太多,随便改一改模型的架构,调一调参数就能发表,结果好了也不知道好的原因。所以对抗样本或许可以用来评价这些模型构架,使得可以用对抗样本来训练,或许可以提高模型的能力,这样,提出了对抗训练的概念(adversarial training),通过这种方式提高模型的鲁棒性。
后来,GoodFellow在Generative Adversarial Networks, by Ian Goodfellow, et al中提出了生成式对抗网络的思想用于对抗训练,对抗训练产生的结果可以产生人眼无法分辨的样本,这算得上是对抗训练的开山之作,现在这篇论文的引用好像都过万了,而且根据谷歌公司的统计,最近两年的等会论文,在GANs方面的论文,数量上都有超过深度学习的趋势。在 GANs 中,包含一个生成模型G和一个判别模型D,D要判别样本是来自G还是真实数据集,而G的目标是生成能够骗过D的对抗样本,可以将G看做假币生产者,而D就是警察,通过G和D的不断交手,彼此的技能都会逐渐提高,最终使得G生产的假币能够以假乱真。后来又有人用拉普拉斯金字塔来构建生成模型,都取得了一定的效果。
但是GANs也有很多的不足之处,论文的作者提到了原始的模型有数据坍塌的问题,会生成很多奇奇怪怪的结果。比如猫有4只眼睛这些问题。之后Conditional generative adversarial nets for convolutional face generation 条件生成对抗网络(CGANs)被提出,对于原始的GAN模式有了比较大的改善。同时期还有很多优秀的论文比如DCGAN,WGAN等这里就不一一列举了。
二、文献跟踪
另外,关于GAN的跟踪请看这里:https://github.com/hindupuravinash/the-gan-zoo列出了各种版本的GANs
- 3D-ED-GAN - Shape Inpainting using 3D Generative Adversarial Network and Recurrent Convolutional Networks
- 3D-GAN - Learning a Probabilistic Latent Space of Object Shapes via 3D Generative-Adversarial Modeling (github)
- 3D-IWGAN - Improved Adversarial Systems for 3D Object Generation and Reconstruction (github)
- 3D-PhysNet - 3D-PhysNet: Learning the Intuitive Physics of Non-Rigid Object Deformations
- 3D-RecGAN - 3D Object Reconstruction from a Single Depth View with Adversarial Learning (github)
- ABC-GAN - ABC-GAN: Adaptive Blur and Control for improved training stability of Generative Adversarial Networks(github)
- ABC-GAN - GANs for LIFE: Generative Adversarial Networks for Likelihood Free Inference
- AC-GAN - Conditional Image Synthesis With Auxiliary Classifier GANs
- acGAN - Face Aging With Conditional Generative Adversarial Networks
- ACGAN - Coverless Information Hiding Based on Generative adversarial networks
- ACtuAL - ACtuAL: Actor-Critic Under Adversarial Learning
- AdaGAN - AdaGAN: Boosting Generative Models
- Adaptive GAN - Customizing an Adversarial Example Generator with Class-Conditional GANs
- AdvEntuRe - AdvEntuRe: Adversarial Training for Textual Entailment with Knowledge-Guided Examples
- AdvGAN - Generating adversarial examples with adversarial networks
- AE-GAN - AE-GAN: adversarial eliminating with GAN
- AEGAN - Learning Inverse Mapping by Autoencoder based Generative Adversarial Nets
- AF-DCGAN - AF-DCGAN: Amplitude Feature Deep Convolutional GAN for Fingerprint Construction in Indoor Localization System
- AffGAN - Amortised MAP Inference for Image Super-resolution
- AL-CGAN - Learning to Generate Images of Outdoor Scenes from Attributes and Semantic Layouts
- ALI - Adversarially Learned Inference (github)
- AlignGAN - AlignGAN: Learning to Align Cross-Domain Images with Conditional Generative Adversarial Networks
- AlphaGAN - AlphaGAN: Generative adversarial networks for natural image matting
- AM-GAN - Activation Maximization Generative Adversarial Nets
- AmbientGAN - AmbientGAN: Generative models from lossy measurements (github)
- AMC-GAN - Video Prediction with Appearance and Motion Conditions
- AnoGAN - Unsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery
- APD - Adversarial Distillation of Bayesian Neural Network Posteriors
- APE-GAN - APE-GAN: Adversarial Perturbation Elimination with GAN
- ARAE - Adversarially Regularized Autoencoders for Generating Discrete Structures (github)
- ARDA - Adversarial Representation Learning for Domain Adaptation
- ARIGAN - ARIGAN: Synthetic Arabidopsis Plants using Generative Adversarial Network
- ArtGAN - ArtGAN: Artwork Synthesis with Conditional Categorial GANs
- ASDL-GAN - Automatic Steganographic Distortion Learning Using a Generative Adversarial Network
- ATA-GAN - Attention-Aware Generative Adversarial Networks (ATA-GANs)
- Attention-GAN - Attention-GAN for Object Transfiguration in Wild Images
- AttGAN - Arbitrary Facial Attribute Editing: Only Change What You Want (github)
- AttnGAN - AttnGAN: Fine-Grained Text to Image Generation with Attentional Generative Adversarial Networks (github)
- AVID - AVID: Adversarial Visual Irregularity Detection
- B-DCGAN - B-DCGAN:Evaluation of Binarized DCGAN for FPGA
- b-GAN - Generative Adversarial Nets from a Density Ratio Estimation Perspective
- BAGAN - BAGAN: Data Augmentation with Balancing GAN
- Bayesian GAN - Deep and Hierarchical Implicit Models
- Bayesian GAN - Bayesian GAN (github)
- BCGAN - Bayesian Conditional Generative Adverserial Networks
- BCGAN - Bidirectional Conditional Generative Adversarial networks
- BEAM - Boltzmann Encoded Adversarial Machines
- BEGAN - BEGAN: Boundary Equilibrium Generative Adversarial Networks
- BGAN - Binary Generative Adversarial Networks for Image Retrieval (github)
- BicycleGAN - Toward Multimodal Image-to-Image Translation (github)
- BiGAN - Adversarial Feature Learning
- BinGAN - BinGAN: Learning Compact Binary Descriptors with a Regularized GAN
- BourGAN - BourGAN: Generative Networks with Metric Embeddings
- BranchGAN - Branched Generative Adversarial Networks for Multi-Scale Image Manifold Learning
- BRE - Improving GAN Training via Binarized Representation Entropy (BRE) Regularization (github)
- BS-GAN - Boundary-Seeking Generative Adversarial Networks
- BWGAN - Banach Wasserstein GAN
- C-GAN - Face Aging with Contextual Generative Adversarial Nets
- C-RNN-GAN - C-RNN-GAN: Continuous recurrent neural networks with adversarial training (github)
- CA-GAN - Composition-aided Sketch-realistic Portrait Generation
- CaloGAN - CaloGAN: Simulating 3D High Energy Particle Showers in Multi-Layer Electromagnetic Calorimeters with Generative Adversarial Networks (github)
- CAN - CAN: Creative Adversarial Networks, Generating Art by Learning About Styles and Deviating from Style Norms
- CapsGAN - CapsGAN: Using Dynamic Routing for Generative Adversarial Networks
- CapsuleGAN - CapsuleGAN: Generative Adversarial Capsule Network
- CatGAN - Unsupervised and Semi-supervised Learning with Categorical Generative Adversarial Networks
- CatGAN - CatGAN: Coupled Adversarial Transfer for Domain Generation
- CausalGAN - CausalGAN: Learning Causal Implicit Generative Models with Adversarial Training
- CC-GAN - Semi-Supervised Learning with Context-Conditional Generative Adversarial Networks (github)
- cd-GAN - Conditional Image-to-Image Translation
- CDcGAN - Simultaneously Color-Depth Super-Resolution with Conditional Generative Adversarial Network
- CE-GAN - Deep Learning for Imbalance Data Classification using Class Expert Generative Adversarial Network
- CFG-GAN - Composite Functional Gradient Learning of Generative Adversarial Models
- CGAN -