GAN的前身——VAE模型原理
GAN的前身——VAE模型
今天跟大家说一说VAE模型相关的原理,首先我们从判别模型和生成模型定义开始说起:
判别式模型:已知观察变量X和隐含变量z,它对p(z|X)进行建模,它根据输入的观察变量X得到隐含变量z出现的可能性。
在图像模型中,比如根据原始图像推测图像具备的一些性质,例如根据数字图像推测数字的名称等等图像分类问题。
生成式模型:与判别式模型相反,它对p(X|z)进行建模,输入变量是隐含变量,输出是观察变量的概率。
在图像中,通常是输入图像具备的性质,输出是性质对应的图像。
生成式模型通常用于解决如下问题:
1.构建高维、复杂概率分布,2.数据缺失,3.多模态输出,4.真实输出模型,5.未来数据预测,等系列问题
VAE
在经典的自编码机中,编码网络把原始图像编码卷积成向量,解码网络则能够将向量解码成原始图像,通过使用尽可能多的图像来训练网络,如果保存了某张图像的编码向量,那么就能够随时用解码组建来重建该图像。

那么,问题就来了,潜在向量除了从已有图像中编码得到,能否凭空创造出这些潜在的向量来呢? 我们可以这样做,在编码网络中,增加一个约束,使得编码网络所生成的潜在向量大体上服从单位高斯分布。那么,解码器经过训练之后,能是能够解码服从单位高斯分布的解码器了,于是我们只需要从单位高斯分布中菜样出一个潜在向量,并将其传到解码器中即可。


在VAE中,假定认为输入数据的数据集D(显示变量)的分布完全有一组隐变量z操控,而这组隐变量之间相互独立而且服从高斯分布,那么VAE让encoder去学习输入数据的隐变量模型,也就是去学习这组隐变量的高斯概率分布的参数均值和方差,而隐变量z就可以从这组分布参数的正态分布中采样得到z~N,再通过decoder对z隐变量进行解码来重构输入,本质上是实现了连续的,平滑的潜在空间表示。
对于目标函数,误差项精度与潜在变量在单位高斯分布上的契合程度,包括两部分的内容:1、生成误差,用以衡量网络在重构图像精度的均方误差,2、潜在误差,用以衡量潜在变量在单位高斯分布上契合程度的KL散度,总的目标函数如下:

假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布,那么,按照真实分布p来衡量识别一个样本所需的编码长度的期望为:

如果采用错误的分布q来表示来自真实分布p的平均编码长度,则应该是:

此时,就将H(p,q)称之为交叉熵。
对于KL散度,又称为相对熵,就是两个概率分布P和Q差别的非对称性度量。典型情况下,P表示数据的真实分布,Q表示数据的理论分布,那么D(P||Q)的计算如下:

KL散度不是对称的,并不满足距离的性质,即D(P||Q) != D(Q||P)。为了解决对称问题,我们引入JS散度。
JS散度度量了两个概率分布的相似度,基于KL散度的变体,解决了KL散度的非对称的问题,一般的,JS散度是对称的,其取值是0到1之间,计算如下:

明白了度量之后,在VAE模型中并没有真正的用z~N来采样得到z变量,因为采样之后,无法进行求导。其做法是先采样一个标准高斯分布(正态分布),然后通过变换得到z~N分布,这样就能够对参数进行正常的求导计算了:



VAE遵循 编码-解码 的模式,能直接把生成的图像同原始图像进行对比,不足的是由于它是直接均方误差,其神经网络倾向于生成模糊的图像。

GAN的前身——VAE模型原理的更多相关文章
- AIOps探索:基于VAE模型的周期性KPI异常检测方法——VAE异常检测
AIOps探索:基于VAE模型的周期性KPI异常检测方法 from:jinjinlin.com 作者:林锦进 前言 在智能运维领域中,由于缺少异常样本,有监督方法的使用场景受限.因此,如何利用无监 ...
- word2vec模型原理与实现
word2vec是Google在2013年开源的一款将词表征为实数值向量的高效工具. gensim包提供了word2vec的python接口. word2vec采用了CBOW(Continuous B ...
- 【转】Select模型原理
Select模型原理利用select函数,判断套接字上是否存在数据,或者能否向一个套接字写入数据.目的是防止应用程序在套接字处于锁定模式时,调用recv(或send)从没有数据的套接字上接收数据,被迫 ...
- Select模型原理
Select模型原理 利用select函数,推断套接字上是否存在数据,或者是否能向一个套接字写入数据.目的是防止应用程序在套接字处于锁定模式时,调用recv(或send)从没有数据的套接字上接收数据, ...
- asp.net请求响应模型原理随记回顾
asp.net请求响应模型原理随记回顾: 根据一崇敬的讲师总结:(会存在些错误,大家可以做参考) 1.-当在浏览器输入url后,客户端会将请求根据http协议封装成为http请求报文.并通过主sock ...
- Actor模型原理
1.Actor模型 在使用Java进行并发编程时需要特别的关注锁和内存原子性等一系列线程问题,而Actor模型内部的状态由它自己维护即它内部数据只能由它自己修改(通过消息传递来进行状态修改),所以使用 ...
- [NLP] TextCNN模型原理和实现
1. 模型原理 1.1 论文 Yoon Kim在论文(2014 EMNLP) Convolutional Neural Networks for Sentence Classification提出Te ...
- Holt-Winters模型原理分析
Holt-Winters模型原理分析及代码实现(python) from:https://blog.csdn.net/u010665216/article/details/78051192 引言 最近 ...
- 阅读笔记--java内存模型原理
在阅读本篇文章之前,我所理解的和上网了解到的java内存模型原理如下: 不同架构的物理计算机可以有不一样的内存模型,Java 虚拟机也有自己的内存模型.Java 虚拟机规范中试图定义一种 Java 内 ...
随机推荐
- ASE team work proposal
Hi,我们是Azure Wrapper,欢迎来到我们的blog~我们将在这里记录下ASE课程的滴滴点点,美妙的旅程就要开始啦! 以下是每位队员提交的关于ASE 团队项目的提议: 朱玉影: 随着信息时代 ...
- 基于canvas的画板
最近重新在看Html5&CSS3的知识,看到canvas的时候,想到了以前在学校学计算机图形学时做过的画图实验,于是想,可以基于html5和css3来做一款画板,经过1天的努力,完成了画板的一 ...
- Linux服务器压力测试总结(CPU、Memory、IO等)
测试工具:sysbench.memtester.htop 1.htop安装使用 yum install ncurses-devel # 安装依赖包 tar zxvf htop-2.2.0.tar.gz ...
- 今天我们来讨论一下display和visibility两个CSS属性。
在讨论着两个属性之前我们先来看看HTML标签的全局属性.就是可以直接在HTML标签上直接写的属性. 以下是菜鸟教程的截图: 1.看以下第一个快捷键的属性accesskey;设置的就不多说了.主要就是2 ...
- 视频+图文 String类干货向总结
目录 一.字符串的介绍及视频讲解 二.字符串的两种创建方式 方法一:通过new创建 方法二:直接创建 三.字符串的长度获取:length()方法 四.使用 == 和equals()方法比较两个字符串 ...
- 设计模式 - 模板方法模式详解及其在Spring中的应用
基本介绍 模板方法模式(Template Method Pattern)也叫模板模式,它在一个抽象类中公开定义了执行它的方法的模板,它的字类可以按需重写方法实现,但调用将以抽象类中定义的方式进行. 简 ...
- 3. css百度制作字体图片
http://fontstore.baidu.com/static/editor/index.html?qq-pf-to=pcqq.group
- 【题解】POJ3041 Asteroids - 图论 - 二分图匹配
声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 POJ3041 Asteroids 题目描述 假如你现在正处在一个 \(N*N\ ...
- tensorflow1.0 构建神经网络做图片分类
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_dat ...
- 高级数据结构---赫(哈)夫曼树及java代码实现
我们经常会用到文件压缩,压缩之后文件会变小,便于传输,使用的时候又将其解压出来.为什么压缩之后会变小,而且压缩和解压也不会出错.赫夫曼编码和赫夫曼树了解一下. 赫夫曼树: 它是一种的叶子结点带有权重的 ...