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 内 ...
随机推荐
- Problem F Free Weights
二分答案. 思路:对于二分给定的mid,即当前允许移动的最大重量,我们可以把小于改重量的标记一下,然后把没有标记的按照顺序放到另一个数组,然后判断是否满足两两相同. #include<bits/ ...
- Cocos2d-x在win7下的android交叉编译环境
cocos2d-x在win7下的Android交叉编译环境 2014年4月14日 cocos2d-x环境配置 前面把Visual Studio+Python开发环境配好了,但还没有讲如何在Androi ...
- mongo基础
以下如有任何问题,直接到官方操作文档左上角搜索框搜索 安装 On Windows, this path is on the drive from which you start MongoDB. Fo ...
- CVE-2019-1388:Windows UAC 本地提权复现
0x01 简介 用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制.其原理是通知用户是否对应用程序使用 ...
- 初识phar反序列化&&复现bytectf_2019_easycms&&RSS思路
概要 来自Secarma的安全研究员Sam Thomas发现了一种新的漏洞利用方式,可以在不使用php函数unserialize()的前提下,引起严重的php对象注入漏洞.这个新的攻击方式被他公开在了 ...
- php json接口demo
<?php class Student { public $no; public $username; public $password; } $student=new Student(); $ ...
- Inno Setup 大师 Tlama
https://stackoverflow.com/users/960757/tlama
- Task Scheduler Error Message: 80041318
Using the error lookup tool that comes with VC++ (errlook.exe, or "Error Lookup" on the To ...
- java 之 servlet简介
Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间 ...
- Java5-7作业总结(第八次作业)19201421-吴志越
前言:关于此次三次作业,相比于前3次难度着实高了一个档次,第五次作业,虽然对于工具类没有很高.但是第一题的复杂程度很高,对于正则表达式有很高的要求,需要使用很多正则表达式的方法,而且不能有一处错误,对 ...