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 内 ...
随机推荐
- atom跨平台超好用的markdown实时预览
https://atom.io/ sublime有预览markdown的插件,但仅限于每次在浏览器中预览,想要找一个能够实时在软件中预览的,终于发现了atom. 很多功能以插件的形式安装,theme也 ...
- file_put_contens小trick
file_put_contents tricks 0x01 trick1 来自于P神的实例: <?php $text = $_GET['text']; if(preg_match('[<& ...
- Linux 常用到的命令
1.按照文件所有属用户和名字查询 find -user mpsp -name \*.bin 2.根据string 字符串查找内容 more +/string test.txt 3.查找文件尾部 后20 ...
- 开源软件SoftEther使用
最近在寻找比较好用的开源VPN,感觉SoftEther很符合我的需求.一方面是SoftEther属于开源软件并且一直在更新,另一方面是功能强大,好用. VPN支持路由功能和NAT功能,还支持多种类型的 ...
- position的用法(top, bottom, left, right 四个定位属性配合进行使用)
一般情况下 页面元素的定位方式是根据文档流也就是说默认的从上到下,从左到右的方式进行排列的,而将元素从文档流脱离出来显示的方式有两种,一种是 position 定位另一种是float 浮动,这里我们详 ...
- Flair:一款简单但技术先进的NLP库
过去的几年里,在NLP(自然语言处理)领域,我们已经见证了多项令人难以置信的突破,如ULMFiT.ELMo.Facebook的PyText以及谷歌的BERT等等. 这些技术大大推进了NLP的前沿性研究 ...
- python工业互联网监控项目实战4—python opcua
前面章节我们采用OPC作为设备到上位的信息交互的协议,本章我们介绍跨平台的OPC UA.OPC作为早期的工业通信规范,是基于COM/DCOM的技术实现的,用于设备和软件之间交换数据,最初,OPC标准仅 ...
- seo 回忆录百度基本概念(一)
前言 我以前的博客自己做的seo,现在拿来和大家一起交流,是白帽哈,黑帽的不敢发,也不敢学[微笑]. 正文 为什么做seo 做seo说到底就是为了排名.为什么需要排名呢?因为现在人比较懒,只会去查看第 ...
- thinkphp5--多文件入口设置
来源:http://www.cnblogs.com/walblog/p/8035426.html 今天在用tp5做项目的时候发现,前台是可以绑定默认到index模块的,但是后台不好弄,于是查了一下手册 ...
- Windows 切换 working directory
用函数 _chdir() 例如用计划任务启动,pwd 是 system32 使用相对路径的地方会出错. 在 main 函数刚启动的时候转换一下 working directory 可解.