谈谈Adversarial Autoencoders
来源:互联网 发布:3d打印设计软件 编辑:程序博客网 时间:2024/05/16 11:25
保留初心,砥砺前行
最近看了Adversarial Autoencoders(以下简称AAE)这篇paper,就随便写几句笔记。
paper链接,点我
1. 概述:
GAN和VAE是近年来很火的生成模型(关于GAN,我之前写过几篇了,需要的话点击文末的相关链接即可),对于这两个模型的研究层出不穷,变体无数,而将这两者结合也是一种优秀的思路。GAN说白了就是对抗,VAE就是一种Autoencoders,而本文的AAE就是将对抗的思想融入到Autoencoders中来。如下图所示:
这个图大概的意思是:上半部分就是AE,我们都知道AE需要把一个真实分布映射成隐层的z,AAE就是在z这里动手脚,(如图下半部分所示)在此加上对抗思想来优化这个z。
2. 优势:
知道了大概的思路,在具体理解一个事情前,我们先来进行一些思考:
从上图中可以明确地看出,这个模型不像原来的GAN一样生成出一些样本,然后和真实数据比较,梯度反向传播从而渐渐优化模型;这个模型操作的是隐层的z,通过调整z来达到得到想要的生成的效果。真实样本可以是不连续的(普通GAN无法训练优化),但是z却是连续的,我们可以做到通过微调z来生成更加真实的样本。也就是说AAE完美避开了GAN无法生成离散样本的问题。
3. Adversarial Autoencoders:
首先来展示一些下文有关的符号:
p(z) 任意的先验分布
q(z) 聚合后验分布
q(z | x) encoding分布
p(x | z) decoding分布
pd(x) 真实数据分布
p(x) 模型分布
简易说明图
The adversarial autoencoder is an autoencoder that is regularized by matching the aggregated posterior, q(z), to an arbitrary prior, p(z).
公式(1)是paper中给出的q(z)的表达式。
AAE就是一种让 q(z)去匹配p(z)的AE,配合最上边的符号解释和“AE简易说明图”,我们可以理解这句话,也可以理解这个模型。通过图可以看出这是一个AE框架,包括encoder、中间编码层和decoder。我们让中间编码层的q(z)去匹配一个p(z),怎么做到呢?此时对抗思想就出场了,见下图:
红框中与“AE简易说明图”中的内容类似,就是一个AE,对抗思想的引入在于黄框中的内容,AE的encoder部分,作为GAN中的generator,生成样本,也就是编码层中的编码,与黄框左边部分的真实样本,一个符合p(z)分布的样本混在一起让discriminator进行辨别,从而使discriminator与作为generator的encoder部分不断优化,并且在对抗的同时,AE也在最小化reconstruction error,最终可以生成更好的样本。
文中列出了三种q(z | x)的选择,包括确定性函数,高斯后验和通用近似后验,其中使用确定性函数,它的q(z)只是和真实数据分布有关,其他两种的q(z)除了与真实分布有关,还与这两种方式中的某些随机性有关。不同的选择在训练过程中会有细微的差别,但是文中提到,他们使用不同的方式会得到类似的结果。
相关链接:
GAN入门
GAN深入讨论
SeqGAN
文中图片部分来自网络,部分本人绘制
- 谈谈Adversarial Autoencoders
- 深度学习(四十六)Adversarial Autoencoders学习笔记
- A wizard’s guide to Adversarial Autoencoders: Part 1, Autoencoder?
- A wizard’s guide to Adversarial Autoencoders: Part 2, Exploring latent space with Adversarial Autoen
- Autoencoders
- Autoencoders
- Autoencoders
- Autoencoders
- Autoencoders
- A wizard’s guide to Adversarial Autoencoders: Part 3, Disentanglement of style and content.
- Stacked Autoencoders
- Stacked Autoencoders
- Stacked Autoencoders
- Adversarial Autoencoder
- Denoising Autoencoders (dA)
- Deep learning------------ Autoencoders
- Stacking Autoencoders VS CDBN
- Stacking Autoencoders vs DBN
- SpringMVC接收复杂集合参数
- 深入剖析C++多态、VPTR指针、虚函数表
- Jenkins之解决乱码问题
- MySql学习之主从复制
- 线性表的增删——数据结构
- 谈谈Adversarial Autoencoders
- 九度 题目1026:又一版 A+B
- spring security登录验证
- Servlet生命周期
- innodb数据库 OPTIMIZE TABLE 提示Table does not support optimize, doing recreate + analyze instead
- 树的知识点简单总结
- ajax 中文乱码
- 总结骏汇项目的js问题(三)之充值优惠
- acitvity与Fragment之间使用接口进行数据回调