变分自编码器:原来是这么一回事

链接:https://kexue.fm/archives/5253

分布变换

通常我们会拿VAEGAN比较,的确,它们两个的目标基本是一致的——希望构建一个从隐变量Z生成目标数据X的模型,但是实现上有所不同。更准确地讲,它们是假设了Z服从某些常见的分布(比如正态分布或均匀分布),然后希望训练一个模型X=g(Z),这个模型能够将原来的概率分布映射到训练集的概率分布,也就是说,它们的目的都是进行分布之间的变换。

生成模型的难题就是判断生成分布与真实分布的相似度,因为我们只知道两者的采样结果,不知道它们的分布表达式

那现在假设Z服从标准的正态分布,那么我就可以从中采样得到若干个Z1,Z2,…,Zn,然后对它做变换得到X1=g(Z1),X2=g(Z2)…,Xn=g(Zn)g有读者说不是有KL散度吗?当然不行,因为KL散度是根据两个概率分布的表达式来算它们的相似度的,然而目前我们并不知道它们的概率分布的表达式,我们只有一批从构造的分布采样而来的数据{X1,X2…,Xn},还有一批从真实的分布采样而来的数据{X1,X2,…,Xn}(也就是我们希望生成的训练集)。我们只有样本本身,没有分布表达式,当然也就没有方法算KL散度。

虽然遇到困难,但还是要想办法解决的。GAN的思路很直接粗犷:既然没有合适的度量,那我干脆把这个度量也用神经网络训练出来吧。就这样,WGAN就诞生了,详细过程请参考《互怼的艺术:从零直达WGAN-GP》。而VAE则使用了一个精致迂回的技巧。

VAE慢谈

这一部分我们先回顾一般教程是怎么介绍VAE的,然后再探究有什么问题,接着就自然地发现了VAE真正的面目。

经典回顾

首先我们有一批数据样本{X1,X2,…,Xn},其整体用X来描述,我们本想根据{X1,X2,…,Xn}得到X的分布p(X),如果能得到的话,那我直接根据p(X)来采样,就可以得到所有可能的X了(包括{X1,

X2,…,Xn}以外的),这是一个终极理想的生成模型了。当然,这个理想很难实现,于是我们将分布改一改

这里我们就不区分求和还是求积分了,意思对了就行。此时p(X|Z)就描述了一个由Z来生成X的模型,而我们假设Z服从标准正态分布,也就是p(Z)=N(0,I),如果这个理想能实现,那么我们就可以先从标准正态分布中采样一个Z,然后根据Z来算一个X,也是一个很棒的生成模型。接下来就是结合自编码器来实现重构,保证有效信息没有丢失,再加上一系列的推导,最后把模型实现。框架的示意图如下:

原文地址:https://www.cnblogs.com/skykill/p/8710827.html

时间: 2024-10-10 01:30:23

变分自编码器:原来是这么一回事的相关文章

变分自编码器(Variational Autoencoder, VAE)通俗教程

最佳阅读体验请前往原文地址:变分自编码器(Variational Autoencoder, VAE)通俗教程—— 作者:邓范鑫 1. 神秘变量与数据集 现在有一个数据集DX(dataset, 也可以叫datapoints),每个数据也称为数据点. X是一个实际的样本集合,我们假定这个样本受某种神秘力量操控,但是我们也无从知道这些神秘力量是什么?那么我们假定这股神秘力量有n个,起名字叫power1,power2,…,powern吧,他们的大小分别是z1,z2,…,zn,称之为神秘变量表示成一个向量

变分自编码器解析

概述 译自https://jaan.io/what-is-variational-autoencoder-vae-tutorial/ 在讨论变分自动编码器时,为什么深度学习研究人员和概率机器学习人员会感到困惑? 什么是变体自动编码器? 为什么这个词会引起混乱? 这是因为神经网络和概率模型在基本概念和描述语言上存在差异.此教程的目标是弥合这一思想鸿沟,允许在这些领域之间进行更多的协作和讨论,并提供一致的实现方法. 变分自编码器用起来很酷,让我们能够设计复杂的数据生成模型,并将其应用于大型数据集.它

Variational Auto-encoder(VAE)变分自编码器-Pytorch

import os import torch import torch.nn as nn import torch.nn.functional as F import torchvision from torchvision import transforms from torchvision.utils import save_image # 配置GPU或CPU设置 # Device configuration device = torch.device('cuda' if torch.cud

变分自编码

一 变分自编码(Variational Auto-Encoder) 变分自编码不再是学习样本的个体,而是学习样本的规律,这样训练出来的自编码不单具有重构样本的功能,还具有仿照样本的功能. 变分自编码,其实就是在编码过程中改变了样本的分布("变分"可以理解为改变分布).前面所说的"学习样本的规律",具体指的就是样本的分布,假设我们知道样本的分布函数,就可以从这个函数中随便的取一个样本,然后进行网络解码层向前传导,这样就可以生成一个新的样本. 为了得到这个样本的分布函数

【Learning Notes】变分自编码(Variational Auto-Encoder,VAE)

近年,随着有监督学习的低枝果实被采摘的所剩无几,无监督学习成为了研究热点.VAE(Variational Auto-Encoder,变分自编码器)[1,2] 和 GAN(Generative Adversarial Networks) 等模型,受到越来越多的关注. 笔者最近也在学习 VAE 的知识(从深度学习角度).首先,作为工程师,我想要正确的实现 VAE 算法,以及了解 VAE 能够帮助我们解决什么实际问题:作为人工智能从业者,我同时希望在一定程度上了解背后的原理. 作为学习笔记,本文按照由

变分自动编码器

变分自动编码器 自编码器 中间层的编码维度要远远小于输出数据,整个模型训练目标为最小化重建输入数据误差 标准自编码器面临的问题在于 自编玛器将输入数据转为隐空间中的表达式不是连续的,使得解码器对于存在于类别之间的区域无法进行解码,因此提出了变分自编码器 变分自编码器 变分自编码器的隐空间设计为连续的分布以便进行随机采样和插值,编码器输出两个n维向量,分别为均值向量u以及标准差向量sigma:随后通过对u和sigam作为均值和方差采样得到随机变量x,n次采样后形成n维采样后结果作为编码输出,送入后

Auto-encoder 在异常检测中的应用

1 Auto-encoder 目的是提取特征.  Auto-encoder能恢复样本训练过程,就保证了隐含层提取的特征是样本的重要,本质的特征,否则不能恢复样本. 2 用样本学习好Auto-encoder, 将时间序列样本,输入训练好的auto-encoder, 如果输出与输入残差值(平方误差和等)小表示没有异常发生,否则发生异常. 3 隐含层提取的特征很难表达,变分自编码器(Variational autoencoder,VAE):编码数据的分布 是一个描述隐含层特征的特殊自动编码器 4 RN

生成对抗式网络

本报告总结了 NIPS 上 Ian Goodfellow 的 生成式对抗网络课程.其内容有:(1)为何生成式建模是值得学习的话题:(2)生成式模型如何工作,GAN 与其他生成式模型的比较:(3)GAN 工作原理:(4)GAN 的研究前沿:(5)将 GAN 和其他方法组合的当前最优的图像模型.最后给出帮助读者学习的三个练习和相应的解答. 引言 本报告总结了 NIPS2016 上的生成对抗网络的课程.回答了很多之前的听众提出来的大多数问题,并尽可能地确保它对大家有用.当然,它不能算是 GAN 这个领

(转)【重磅】无监督学习生成式对抗网络突破,OpenAI 5大项目落地

[重磅]无监督学习生成式对抗网络突破,OpenAI 5大项目落地 [新智元导读]"生成对抗网络是切片面包发明以来最令人激动的事情!"LeCun前不久在Quroa答问时毫不加掩饰对生成对抗网络的喜爱,他认为这是深度学习近期最值得期待.也最有可能取得突破的领域.生成对抗学习是无监督学习的一种,该理论由 Ian Goodfellow 提出,此人现在 OpenAI 工作.作为业内公认进行前沿基础理论研究的机构,OpenAI 不久前在博客中总结了他们的5大项目成果,结合丰富实例介绍了生成对抗网络