本文主要对EBGAN, LSGAN, BEGAN三个模型核心理论进行简单记录.

引言  

GAN的原理就是利用Discriminator作为Generator的引导,使得最终Generator生成的samples可以以假乱真,具体过程可以用下图表示.  
上图来自李宏毅深度学习PPT中,蓝色线表示Generator distribution, 绿色线表示data distribution,在优化过程中,对于real data我们 要使得最后的prob接近1,fake data最后的损失接近0,那么这个优化过程会使得G向real data的分布靠近,因为real data分布可以使得最后discriminator 的预测最大,当跑过头然后再往回更新,最终达到制衡.此时generator得到的samples与real data分布相近.  

以上是最为常见的GAN的做法,最后的evaluation function是binary classification,那这篇Post主要讲的GAN可以看作为enegry-based. 那么能量的度量与 分类相反,当两个分布接近的时候,能量达到平衡,也就是最小,可以看作classification-based GAN损失函数取反.我们首先来看看EBGAN.

EBGAN1

EBGAN网络结构如下图表示:  


上图中,discriminator与以往的GAN不同,使用的结构为AutoEncoder, 这样的结构输入是Image, 输出也是image, 因此为了度量fake or real,这里选取了MSE最为损失函数. 同时,加入margin.如下面公式表示:  

LDx,z=D(x)+max(0,m−D(G(z)))LDx,z=D(x)+max(0,m−D(G(z)))
LGz=D(G(z))LGz=D(G(z))

上述都是最小化损失函数.对于real data, 在网络的输出我们得到对应的restruction loss, 如果用GAN原理来解释,可以看作generator的outputs输入到discriminator中,我们为 达到以假乱真,那么mse向较小的的方向更新,即此时G的分布应该趋近Data的分布. D的任务就是将这两种样本区分开.但这里有个缺点,就是real data的重构损失可以很小,最小到0,但 对于fake data,最大可以大到多大,无穷大,这对训练整个模型是不利的.因此引入margin, 由公式可以看出,引入margin之后,当D(G(z))D(G(z))大于m的时候,它对LDLD的贡献为0,可以 理解为对于偏离太离谱的fake data直接忽略. 如此一来,当G生产的data distribution接近real data时,两者重构损失是接近的,因此LDLD接近m, 此时mse在[0, m]之间.这说明引入margin之后 对于训练是有帮助的,而且可以使得G生产的data重构误差可以很小,自然可以解释为生成了可以看的图片.  

这里考虑极端情况,如果D(x)+m−D(G(x))≈0D(x)+m−D(G(x))≈0,即D(x)−D(G(x))=−mD(x)−D(G(x))=−m,这时G的重构误差小于D,这种情况会不会出现.由GAN的对抗训练,是不会出现的.因为如果G的重构误差比real data重构误差还小,那么discriminator的引导作用消失,因为G的最终目标是real data的分布, 因此两者极端情况就是相等.  

后续,作者为了增加样本多样性,利用code做文章,加入相似性的约束,这里主要对损失函数进行解读,可能有人会问margin可不可以自适应,可以的,MAGAN(Margin Adaptivation GAN),下面这篇GAN也可以看成自适应marginGAN.

LS-GAN2

同样的,先上公式:  

LD(x,z)=D(x)+max(0,Δ(x,G(x))+D(x)−D(G(z)))LD(x,z)=D(x)+max(0,Δ(x,G(x))+D(x)−D(G(z)))
LG(z)=D(G(z))LG(z)=D(G(z))

上面公式如何理解,我们可以用下图来说明:  
在优化时,margin=Δ(x,G(x))+D(x)margin=Δ(x,G(x))+D(x), 自适应反映在第一项.baseline为D(x)D(x),每次优化的margin为G生产的图片和real data之间的差异,这个差异可以使用mse等度量函数.当两者差异较大是margin就会很大,当随着优化的进行,两者差异会减小,此时二者margin就会很小.当达到理想情况,即G得到的data distribution接近real data,此时两者margin是此时discriminator对real data的重构损失,与D(G(z))D(G(z))很接近,此时LDLD达到理想的最小值.   LS-GAN较EBGAN优点在于margin自适应,当然可以看作EBGAN的一种.  

BEGAN3

直接上公式:  

LD(x,z)=D(x)-ktD(G(z))LD(x,z)=D(x)-ktD(G(z))
LG(z)=D(G(z))LG(z)=D(G(z))

其中ktkt初始化为0,即D在训练最开始只针对real data进行建模,直到满足D(x)D(x)大于D(G(z))D(G(z)),也就是不能让G生产的数据被认为是real data.目标还是使得G最后的分布接近real data,但不能超越real data.整个训练过程相当于以逸待劳,每次当满足上述条件时,更新ktkt, 然后在下一次满足条件是再次更新,这样可以达到逐步迁移分布的效果.更新公式如下:  

kt+1=kt+λ(γD(x)−D(G(z)))kt+1=kt+λ(γD(x)−D(G(z)))

γγ的值可以设置,可以设想一下,如果γγ的不断减小逼近0,那么最后G得到的图片可以看成real data,因为此时一直在更新ktkt.

下图是实验结果:  

这里BEGAN结构使用与EBGAN相同,不同之处在于loss function的设计,可以看到,BEGAN生成的图片有点厉害.

这篇post就到这里,主要讲Enegry-based GAN以及margin的GAN的损失函数,没有对模型具体细节进行探讨,具体还需参看论文.

References

  1. Zhao J, Mathieu M, Lecun Y. Energy-based Generative Adversarial Network[J]. 2017. ↩

  2. Qi G J. Loss-Sensitive Generative Adversarial Networks on Lipschitz Densities[J]. 2017. ↩

  3. Boundary Equilibrium Generative Adversarial Networks ↩

EBGAN, LSGAN, BEGAN相关推荐

  1. 【GANs学习笔记】(十五)EBGAN、BEGAN

    完整笔记:http://www.gwylab.com/note-gans.html ----------------------- 本章借鉴内容: https://blog.csdn.net/qq_2 ...

  2. 深度学习--生成式对抗网络--DCGAN/WGAN/WGAN-GP/LSGAN/BEGAN算法理论

    目录 一 生成式对抗网络基础 1 生成式对抗网络的概念 1)网络属于无监督学习 2)网络中判别器D与生成器G的相互博弈,其纳什均衡为D(G(Z))=0.5 3)网络的训练阶段分为两个阶段 2 生成式对 ...

  3. 深度学习(四十四)——GAN的评估指标, DCGAN, WGAN-GP, CGAN, BEGAN EBGAN

    GAN的评估指标 尽管可用的GAN模型非常多,但对它们的评估仍然主要是定性评估,通常需要借助人工检验生成图像的视觉保真度来进行.此类评估非常耗时,且主观性较强.具备一定误导性.鉴于定性评估的内在缺陷, ...

  4. 【阿里云课程】生成模型之GAN优化目标设计与改进

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第11课中的一节,介绍如下: GAN优化目标设计与改进 本次课程是阿里天池联合有三AI推出的深度学习系列课程第11期,深度生 ...

  5. 【机器学习】生成式对抗网络模型综述

    生成式对抗网络模型综述 摘要 生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉.自然语言处理.半监督学习等重要领域.生成式对抗网络最最直接的应用是数据的生成,而数据 ...

  6. 生成对抗网络 : LSGAN, WGAN, CGAN, infoGAN, EBGAN, BEGAN, VAE

    训练"稳定",样本的"多样性"和"清晰度"似乎是GAN的 3大指标 - David 9 VAE与GAN 聊到随机样本生成, 不得不提VAE与 ...

  7. DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN原理总结及对比

    文章目录 1.DCGAN 2.WGAN 3.WGAN-GP (improved wgan) 4.LSGAN 5.BEGAN: (不是EBGAN) 对比细节: 转自 https://blog.csdn. ...

  8. 生成对抗式网络 GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN等原理介绍、应用介绍及简单Tensorflow实现

    生成式对抗网络(GAN,Generative Adversarial Networks)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一.学界大牛Yann Lecun 曾说,令他最激 ...

  9. GAN小结(BEGAN EBGAN WGAN CycleGAN conditional GAN DCGAN PGGAN VAEGAN)

    断断续续看了生成对抗网络一些日子,下面把我比较感兴趣也算是我认为效果比较好的GAN进行简单梳理,其中会参考众多前辈的文章,主要包括 1.EBGAN 原文 https://arxiv.org/pdf/1 ...

最新文章

  1. 手把手教你 用C++实现一个 可持久化 的http_server
  2. P1494 小Z的袜子
  3. android 深度定制,深度定制安卓是什么
  4. SQL Serve里你总要去改变的3个配置选项
  5. python点操作符语法_最基础的python语法
  6. js中同时得到整数商及余数_js和vue实现时分秒倒计时的方法
  7. STM32F1 端口复用、端口(部分和完全)重映射
  8. 用框图说明计算机控制系统,计算机控制系统试题
  9. elcentro matlab,EL-Centro地震波积分计算与基线调整.docx
  10. 软件开发中Alpha、Beta、RC、GA版本的含义
  11. Python计算从n个元素中任选i个的组合数C(n,i)
  12. 布同:后台开发入职四年的经历和体会
  13. python3 sorted()的用法
  14. Java IO流的分类
  15. 决策树和随机森林预测员工离职率学习代码
  16. 时间脱敏,也许能稍稍帮助你摆脱焦虑
  17. 微分和导数的关系是什么?两者的几何意义有什么不同?为什么要定义微分 ?...
  18. Win10 主题 美化 动漫
  19. 为什么企业组织更愿意选择内部私有的IM,而不使用钉钉、微信等软件?
  20. 基于java jsp的企业员工绩效考评系统

热门文章

  1. httpclient 调取接口_使用HttpClient调用接口的实例讲解
  2. d3.json php,使用d3.json从PHP进行JSON输出
  3. java如何画周期sanjiao信号_如何声明一个可变长度的std_logic_vector信号
  4. android 释放so,在安卓项目里部署so文件你需要知道的知识
  5. qpython3h手机版 写弹窗代码_Android Q之气泡弹窗的实现示例
  6. websocket session超时_SSE(ServerSent Events):替代websocket完成服务器推送
  7. turtle文库 ——python
  8. 个人博客开发-01-nodeJs项目搭建
  9. 【树莓派】制作树莓派最小镜像:img裁剪瘦身
  10. PHP中的静态属性、静态方法、常量属性