条件式变分自编码机(Conditional Variational Autoencoders)
Conditional Variational Autoencoders 条件式变换自编码机
摘要:
Conditional Variational Autoencoders --- 条件式变换自编码机
Goal of a Variational Autoencoder:
一个 VAE(variational autoencoder)是一个产生式模型,意味着我们可以产生看起来像我们的训练数据的 samples。
Conditional Variational Autoencoders --- 条件式变换自编码机
Goal of a Variational Autoencoder:
一个 VAE(variational autoencoder)是一个产生式模型,意味着我们可以产生看起来像我们的训练数据的 samples。以 mnist 数据集为例,这些伪造的样本可以看做是手写字体的合成图像。我们的 VAE 将会提供我们一个空间,我们称之为 latent space (潜在空间),我们可以从这里采样出 points。任何这些点都可以 decoded into 一个合理的手写字体的图像。
Structure of a VAE :
任何自编码机的目标都是重建其输入。通常,自编码机首先讲 input 压缩为一个小的 form,然后将其转换成 input的一个估计。这个被用于压缩图像的函数,称为 "encoder",解压该数据的函数称为 “decoder”。这些函数都可以是神经网络,我们这个文档中考虑的都是这种情况。

标准的自编码机可以工作的很好,如果你的目标是简单的重建你的输入,但是作为产生式模型,其效果并不是很好,因为随机的采样一个输入 V 给 decoder,并不能使得 decoder 产生合理的图像。 V 可能距离任何输入都很远,所以 decoder 可能永远都不会训练得到合理的数字图像,当给定的输入像 V 的时候。
我们需要一些方法来确认 the decoder 已经准备好了可以去 decode 出任何我们给定的合理的数字图像。为了达到这个目的,我们将会需要预先定义 decoder 希望看到的 输入的分布 (the distribution of inputs)。我们将会使用一种标准的 正态分布 来定义 decoder 将会接收到的 输入的分布。

我们想要训练 the decoder 从这个分布中随机的采样一个点,并且可以恢复出合理的 数字图像。

我们现在需要一个 encoder。在传统的自编码机当中,the encoder 从数据中采样出一个样本,并且在 latent space 中返回给一个点,然后将其传给 decoder。在一个 Variational autoencoder 中,编码机在 latent space 中产生一个概率分布。

The latent distributions 其输出是和 latent space 相同纬度的高斯 (gaussians of the same dimensionality as the latent space)。The encoder 产生这些高斯的参数。
所以我们有一个 encoder 从图像中采样,产生 latent space 的概率分布,the decoder 在 latent space 中采样该点,然后返回一个伪造的图像。所以对于一张给定的图像来说,the encoder 产生一个分布,在 latent space 中该分布中采样出一个点出来,然后将该点输入到 decoder 当中,产生一个人造图像。

The Structure of the Latent Space.
我们看到了之前 the decoder 应该期望看到从标准正态分布中采样的点。但是,现在我们已经表明,decoder 接收到的 samples 并非是标准的正态分布。这两个东西都不是非常的奇怪,即使,当从 encoder 中采样出的 points 仍然近似的拟合一个标注的正态分布的情况。我们想要这样的情况:

其中,不同分布的平均值 对应了 不同训练训练样本估计的标准正态 (a standard normal)。现在的假设是 the decoder 看到的 points, drawn from a standard normal distribution holds.
很明显,我们需要一些方法来衡量是否 the encoder 产生的分布的和 (sum)可以估计 (approximat)标准的正太分布。我们可以利用KL-散度(Kullback-Leibler divergence)衡量该估计的质量。KL-散度 衡量了两个分布的差异程度 (measures how different two probability distributions are)。
Training a VAE with The Representrization Trick.
在上述讨论的 VAE 当中,网络的输入和输出之间,有一个随机的变量。通过一个随机变量是无法后向传播的,其代表了一个很明显的问题是:你现在无法训练 the encoder。为了解决这个问题,the VAE 被表达成不同的方式,使得 the latent distribution 的参数可以分解为随机变量的参数,使得后向传播可以沿着latent distribution 的参数继续传播。
具体来说,就是
。但是,一个很重要的启发是:一个 VAE 可以利用 BP 算法进行 end-to-end 的训练。但是,由于仍然存在一些随机的元素,所以不被称为随机梯度下降,该训练过程被称为:随机梯度变化的贝叶斯(stochastic gradient variational Bayes (SGVB))。
Conditional Variational Autoencoder :
到目前为止,我们已经创造了一个 autoencoder 可以重建起输入,并且 decoder 也可以产生一个合理的手写字体识别的图像。该产生器,但是,仍然无法产生一个需要的特定数字的图像。进入 the conditional variational auroencoder (CVAE)。该条件式变换自编码机 有一个额外的输入给 encoder 和 decoder。

在训练的时候,输入给 encoder and decoder 的图像对应的数字是给定的。在这种情况下,将会被表示成 one-hot vector.
为了产生一个特定数字的图像,将该数字输入给 the decoder 以及服从标准正态分布采样出的 latent space 中的一个随机点。尽管 同样的点 被输入进来来产生呢两个不同的数字,这个过程将会正确的工作,因为系统不在依赖于 the latent space 来编码你要处理的数字。相反的,the latent space 编码了其他的信息,像 stroke width 或者说 the angle。

下面的这些数字图像就是通过固定所需要的数字输入给 the decoder,然后从 the latent space 中取一些随机的样本来产生一些有用的,不同版本的那个数字。像您所看到的那样,这些数字在类型上有所不同,但是同一行的数字,很明显是同一个数字。
Conclusion
VAEs 是非常有效的无监督学习工具。标准 VAE 的 latent space 应该捕获到你的数据中有用的模式。例如,我们可以看到,一个 VAE 在没有任何 label 的情况下训练,可以成功的分类出 mnist 图像,分为 latent space 中 10个具有区分度的区域,每个区域包含几乎某个数字所有的图像。 CVAEs 对于产生匹配 某些 labels 的伪造样本来说,是非常有用的。对于处理 时序数据,VAEs 也非常有用,只需将 the encoder and the decoder 替换为 RNNs 即可。
(完毕)
----------------------------------------------------------------------------
原文链接: http://ijdykeman.github.io/ml/2016/12/21/cvae.html
条件式变分自编码机(Conditional Variational Autoencoders)的更多相关文章
- (译) Conditional Variational Autoencoders 条件式变换自编码机
Conditional Variational Autoencoders --- 条件式变换自编码机 Goal of a Variational Autoencoder: 一个 VAE(variati ...
- Latent Representation Learning For Artificial Bandwidth Extension Using A Conditional Variational Auto-Encoder
博客作者:凌逆战 论文地址:https://ieeexplore.ieee.xilesou.top/abstract/document/8683611/ 地址:https://www.cnblogs. ...
- 基于图嵌入的高斯混合变分自编码器的深度聚类(Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedding, DGG)
基于图嵌入的高斯混合变分自编码器的深度聚类 Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedd ...
- [Bayesian] “我是bayesian我怕谁”系列 - Variational Autoencoders
本是neural network的内容,但偏偏有个variational打头,那就聊聊.涉及的内容可能比较杂,但终归会 end with VAE. 各个概念的详细解释请点击推荐的链接,本文只是重在理清 ...
- Understanding Variational Autoencoders (VAEs)
Understanding Variational Autoencoders (VAEs) 2019-09-29 11:33:18 This blog is from: https://towards ...
- (转) 变分自编码器(Variational Autoencoder, VAE)通俗教程
变分自编码器(Variational Autoencoder, VAE)通俗教程 转载自: http://www.dengfanxin.cn/?p=334&sukey=72885186ae5c ...
- 变分自编码器(Variational auto-encoder,VAE)
参考: https://www.cnblogs.com/huangshiyu13/p/6209016.html https://zhuanlan.zhihu.com/p/25401928 https: ...
- Variational Autoencoders and Nonlinear ICA: A Unifying Framework
目录 概 主要内容 本文的模型 Identifiability Khemakhem I., Kingma D. P., Monti R. P. and Hyv"{a}rinen A. Var ...
- Improving Variational Auto-Encoders using Householder Flow
目录 概 主要内容 代码 Tomczak J. and Welling M. Improving Variational Auto-Encoders using Householder Flow. N ...
随机推荐
- 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)
注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...
- UOJ#310 【UNR #2】黎明前的巧克力 FWT 多项式
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ310.html 题目传送门 - UOJ#310 题意 给定 $n$ 个数 ,请你选出两个不相交的集合(两个 ...
- maven私服nexus(三)
将项目中的第三方jar包上传至maven私服中 上传jar包到maven私服 在你使用的maven配置文件settings中加上如下信息 代表你访问的账号密码 <servers> < ...
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第十集之Nginx反向代理原理】(有参考其他文章)
1,正向代理(代理客户机) 2,反向代理(代理服务器,所以叫反向代理) 3,集群+负载均衡 集群指的是将几台服务器集中在一起,实现同一业务. 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台 ...
- 关系网络数据可视化:1. 关系网络图&Gephi
1.关系网络图 如何来表示两个对象之间的关系? 把对象变成点,点的大小.颜色可以是它的两个参数,两个点之间的关系可以用连线来表示.连线分为无向(只是连接的导向,一些简单的关系很容易体现)和有向(复杂网 ...
- css上传图片中等待不可点击效果
<!DOCTYPE html> <html> <head> <title>上传中</title> <style type=" ...
- execution(* com.sample.service.impl..*.*(..))
execution(* com.sample.service.impl..*.*(..)) 解释如下: 符号 含义 execution() 表达式的主体: 第一个”*“符号 表示返回值的类型任意: c ...
- Django 中bootstrap的引用
bootstrap的优越性 如果你有基本的HTML+CSS,bootstrap其实就是在标签中加入具体的class来实现样式.和原生态的HTML+CSS需要先在head标签的style写样式或者引入外 ...
- Java的运算符
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.下面介绍JAVA中的运算符: (1)算术运算符: 单目:+(取正) -(取负) ++(自增1) --(自减1) 双目:+ - * / % ...
- Alpha(4/10)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...