《ENERGY-BASED GENERATIVE ADVERSARIAL NETWORKS》

先介绍EBGAN,再详细解读为什么这样做。

Auto-encoder Discriminator

Energy-based GAN和普通的GAN的区别就是把Discriminator的网络架构从一个二分类的分类器改成了一个auto-encoder,然后用auto-encoder的reconstruction error做为鉴别器的输出。模型图如下所示

这样鉴别器的输入和普通的GAN一样,还是一张图片,输出还是一个标量用来为生成器提供梯度。那么这个AE是怎么得到的呢?

图中的Auto-encoder是预先在大量的真实图片上训练得到的,所以当一张真实图片输入进AE时,得到的重建误差将会是比较小的,当生成图片输入时得到的重建误差将会较大。这样自然而然的就可以得到EBGAN的loss函数了:
LD(x,z)=D(x)+[m−D(G(z))]+=∥Dec⁡(Enc⁡(x))−x∥+[m−∥Dec⁡(Enc⁡(G(z)))−G(z)∥]+(1)\begin{aligned} \mathcal{L}_{D}(x, z) &=D(x)+[m-D(G(z))]^{+} \\ &=\|\operatorname{Dec}(\operatorname{Enc}(x))-x\|+[m-\|\operatorname{Dec}(\operatorname{Enc}(G(z)))-G(z)\|]^{+} \end{aligned} \tag{1} LD​(x,z)​=D(x)+[m−D(G(z))]+=∥Dec(Enc(x))−x∥+[m−∥Dec(Enc(G(z)))−G(z)∥]+​(1)

LG(z)=∥D(G(z))∥=∥Dec⁡(Enc⁡(G(z)))−G(z)∥(2)\begin{aligned} \mathcal{L}_{G}(z) &=\|D(G(z))\| \\ &=\|\operatorname{Dec}(\operatorname{Enc}(G(z)))-G(z)\| \end{aligned} \tag{2} LG​(z)​=∥D(G(z))∥=∥Dec(Enc(G(z)))−G(z)∥​(2)

其中[⋅]+=max⁡(0,⋅)[\cdot]^{+}=\max (0, \cdot)[⋅]+=max(0,⋅),D(⋅)=∥Dec⁡(Enc⁡(⋅))−⋅∥D(\cdot)=\|\operatorname{Dec}(\operatorname{Enc}(\cdot))-\cdot\|D(⋅)=∥Dec(Enc(⋅))−⋅∥,mmm是一个margin,之后解释。最小化公式(1)意味着最小化D(x)D(x)D(x)和最大化D(G(z))D(G(z))D(G(z)),即判别器对真实图片的打分应该尽可能低,对生成图片的打分应该高一些。但是也不能特别高,需要margin。

margin

在神经网络中拟合逼近一个事情很难,但是破坏一个事情很简单,如果我们去最大化重建损失那很简单,只要对所有输入图片都输出一个随机噪音就可以得到非常大的D(G(z))D(G(z))D(G(z)),因此要约束一个上界。

如下图所示

当有了margin的约束,生成图片对应的曲线抬高到一定程度之后就没有惩罚了,此时的loss主要来源于拉低真实图片的曲线。这样就实现了EGBAN的优化过程。

Pulling-away Term

Pulling-away Term是用来保证生成多样性、解决mode collapse问题的。作者首先提到了Salimans et al.,2016提出的“minibatch discriminator”,其思想时每次给D输入一个batch,而且D要检测整个batch而不是分别检测每张图片。Real image batch中每张图片是不一样的,而如果出现了mode collapse,即所有图片一样,则一定是假的。

作者在这里提出了pulling-away term,简称PT:
fPT(S)=1N(N−1)∑i∑j≠i(Si⊤Sj∥Si∥∥Sj∥)2(3)f_{P T}(S)=\frac{1}{N(N-1)} \sum_{i} \sum_{j \neq i}\left(\frac{S_{i}^{\top} S_{j}}{\left\|S_{i}\right\|\left\|S_{j}\right\|}\right)^{2}\tag{3} fPT​(S)=N(N−1)1​i∑​j​=i∑​(∥Si​∥∥Sj​∥Si⊤​Sj​​)2(3)
其思想是生成的fake image batch中的每张图片经过D的Encoder编码后产生一个向量,两两向量算cosine距离并求和取平均。让这一项尽可能小则代表两两向量越接近正交,这个生成图片batch内多样性越强。注意这一项仅用于G生成假图片时训练。PT也是有权重的,作者在实验中取了0.1。

Energy-based

现在我们已经了解EBGAN了,这里的energy就是指的auto-encoder的输出。Energy Function就是AE,AE的输出是energy。Energy Function会趋于给真实图片(high quality)较低的能量,生成图片(low quality)较高的能量。用MSE来代表能量也比较形象,熵本来就是能量单位,熵最小就是能量最小。AE在大量真实图片上训练,已经能够模拟出真实图片的分布,生成图片经过AE输出的熵自然要大一些。

用energy而不是二分类的01值也可以避免GAN梯度消失的问题,能够给不同质量的生成图片不同的梯度值。

另一个角度

借用苏剑林老师的文章《能量视角下的GAN模型》的图:

一开始能量函数只是一条平直的直线。

然后将真样本x1,x2,…xnx_{1}, x_{2}, \ldots x_{n}x1​,x2​,…xn​依次放在U(x)U(x)U(x)上,压出一条凹凸不平的函数,将其固定住,U(x)U(x)U(x)就构成了一个能量函数。(EBGAN里的Auto-encoder

接下来我们得到一批生成样本,x1^,x2^,…xn^\widehat{x_{1}}, \widehat{x_{2}}, \ldots \widehat{x_{n}}x1​​,x2​​,…xn​​,将它们任意放置于U(x)U(x)U(x)上。然后固定住U(x)U(x)U(x),松开x1^,x2^,…xn^\widehat{x_{1}}, \widehat{x_{2}}, \ldots \widehat{x_{n}}x1​​,x2​​,…xn​​,于是x1^,x2^,…xn^\widehat{x_{1}}, \widehat{x_{2}}, \ldots \widehat{x_{n}}x1​​,x2​​,…xn​​就会顺着“能量”的坡度慢慢滚落到坑底(固定判别器,训练生成器),而坑底代表着真实样本,所以x1^,x2^,…xn^\widehat{x_{1}}, \widehat{x_{2}}, \ldots \widehat{x_{n}}x1​​,x2​​,…xn​​都变得很像真样本了。

而且在训练生成器时,由于有很多“坑”,在优化时有很多选择:

比如上图中的生成样本x1^\hat{x_1}x1​^​慢慢下滑,并不一定能到达x1x_1x1​的坑,而只是到达中间一个“次真”的坑,所以需要不断改进、修正,争取越过阻碍下滑到最低点的峰。

可以考虑在最优化时加入动量,如下图所示:

但是这要会导致新的问题:假样本纷纷跃过最近的坑,从而去到达非常远但是较低的坑,聚集在某些真样本附近,进而出现Mode Collapse问题:

这或许可以解释W-GAN相较于GAN改进:“不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp,SGD也行”

这也是在EBGAN中添加Pulling-away Term的原因。

优点

EBGAN的判别器可以几乎不需要负例训练,只需要大量的真实样本就可以训练判别器,很大的优势。

能量模型与异常API序列检测

我觉得这个EBGAN和之前异常API序列检测核心思想非常像,也可以成为能量模型:

  • 在EBGAN中,能量函数是Auto-Encoder,事先在大量的真实样本上拟合训练,从而能够给真实样本较低的熵、假样本较高的熵;在GAN训练时持续降低真实样本的熵、适当提高假样本的熵。

  • 在异常检测中,能量函数是“API预测模块”,事先在大量的正常API序列上预测训练,从而能够给正常API序列较低的熵、恶意API序列较高的熵;在模型训练时持续降低正常API序列上的熵、适当提高恶意API序列上的熵(Unlearning)。

包括DeepLog、《Lifelong Anomaly Detection Through Unlearning》似乎都可以套入能量模型中,只不过Energy Function形式各不相同。

【GAN】《ENERGY-BASED GENERATIVE ADVERSARIAL NETWORKS》 ICLR‘17相关推荐

  1. (转)ICLR 2019 《GAN DISSECTION: VISUALIZING AND UNDERSTANDING GENERATIVE ADVERSARIAL NETWORKS》

    ICLR 2019 <GAN DISSECTION: VISUALIZING AND UNDERSTANDING GENERATIVE ADVERSARIAL NETWORKS> ICLR ...

  2. 【速读】Social GAN : Socially Acceptable Trajectories with Generative Adversarial Networks

    Social GAN : Socially Acceptable Trajectories with Generative Adversarial Networks Paper:https://ope ...

  3. Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks 中文翻译

    Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks 中文翻译 如有异议,请多指教,非专业 ...

  4. 自动驾驶轨迹预测论文阅读(三)Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks

    [略读]GUPTA A, JOHNSON J, FEI-FEI L, et al., 2018. Social GAN: Socially Acceptable Trajectories with G ...

  5. 【01】《正则表达式必知必会》(已看)(仅存放)

    [01]<正则表达式必知必会> 共149页. 扫描版,中文版. Sams Teach Yourselef Regular Expressions in 10 minutes Ben For ...

  6. 【数据分析】《交易执行质量研究白皮书》上篇:分析的作用

    [数据分析]<交易执行质量研究白皮书>上篇:分析的作用 规章制度的变化.竞争.市场划分和其他因素促使买方和卖方公司实施分析系统以帮助他们提高交易质量并降低合规成本. <交易执行质量研 ...

  7. GAN Dissection: Visualizing and Understanding Generative Adversarial Networks

    GAN Dissection: Visualizing and Understanding Generative Adversarial Networks 该论文介绍了一个可视化和理解生成网络学得结构 ...

  8. 【论文学习】《Parallel WaveGAN: A fast waveform generation model based on generative adversarial networks》

    <Parallel WaveGAN : A fast waveform generation model based on generative adversarial networks wit ...

  9. 【FeatherNets】《FeatherNets:Convolutional Neural Networks as Light as Feather for Face Anti-spoofing》

    CVPR-2019 workshop code:https://github.com/SoftwareGift/FeatherNets_Face-Anti-spoofing-Attack-Detect ...

最新文章

  1. 【读书笔记-数据挖掘概念与技术】数据挖掘的发展趋势和研究前沿
  2. 【动态树】[BZOJ2002] Bounce 弹飞绵羊
  3. EF6 在原有数据库中使用 CodeFirst 总复习(四、新建实体对象)
  4. 1、CSS Backgrounds(背景)
  5. jieba是python中一个重要的标准函数库_python——Jieba库整理(基础知识+实例)
  6. html桌面刷新,桌面不能自动刷新怎么办
  7. 使用Angular 4、Bootstrap 4、TypeScript和ASP.NET Core开发的Apworks框架案例应用
  8. aws上部署hadoop_在AWS Elastic MapReduce上运行PageRank Hadoop作业
  9. HDFS机架感知概念及配置实现
  10. windows下的workon env
  11. LeetCode(268)——缺失数字(JavaScript)
  12. 【面试刷题复习】更新中 2021.8.30
  13. 2014 - 2015
  14. 三款常用IP发包工具介绍
  15. magicbook大学计算机系,大学开学选择哪款笔记本? Redmibook 14全面对比荣耀Magicbook...
  16. 微信授权登录增加浏览器历史记录解决方法
  17. 数据分析可视化系列(四)B站关键词搜索结果
  18. 微信公众号开发(一)--开发模式与编辑模式
  19. 应届生落户上海申请及办理流程
  20. 这几个习惯,让我成为了高阶网络工程师。

热门文章

  1. 《NFL橄榄球》:明尼苏达维京人·橄榄1号位
  2. CSS小球下落回弹动画效果
  3. 【真相】年终奖都是有哪些坑
  4. packer学习—用Docker构建器构建docker镜像
  5. js 实现递归从后台获取任务数据,直到任务完成
  6. 设计模式-备忘录模式(Memento)-Java
  7. python如何画出多个独立的图片_在Python中用Matplotlib绘制多个图形并组合显示,利用,多图,合并,展示...
  8. qq显示服务器升级,QQ扩列升级中是什么意思?2021QQ扩列什么时候可以再次使用...
  9. 表情捕捉的指标/图像的无参考质量评价
  10. three.js教程创建消防场景示例二