vae自动编码器_Variational Autoencoders (VAEs) 变分自动编码器

本文深入介绍了变分自动编码器(VAEs),包括隐含参数模型的概念,VAE的目标设置与最优化,以及条件变分自动编码器的应用。详细阐述了在Pytorch中实现VAE的步骤,包括编码器、译码器的设计,以及损失函数的构造。通过MNIST数据集训练VAE和CVAE,生成手写数字。
摘要由CSDN通过智能技术生成

684545c98273564dc639f3824cf8a84d.png
本文理论部分基本译自 Tutorial on Variational Autoencoders by Carl Doersch

1. 介绍

“生成模型”是指能够通过定义在高维空间

的数据
的概率分布
随机生成观测数据的模型。举例来说,对于一幅图片,生成模型的工作就是捕获图像中像素点之间的关系并通过这种关系生成新的目标。最为直接的办法就是通过数学公式计算
,但是这在大部分情况下无法实现。因此,我们可以通过学习一个模型
使其尽可能地接近样本
的真实(但未知的)概率分布

一个流行的框架便是变分自动编码器(Variational Autoencoder, VAE)。VAEs 需要前提假设,但相较于 VAEs 能够模拟的复杂依赖关系而言这些假设引入的误差可以说微不足道。

1.1 隐含参数模型

如果要自动生成手写数字0-9,那么事先决定要生成什么数字是很有必要的。这个决定被称作隐含变量 (latent variable)。隐含变量通常表示为一个高维向量

在我们能够说我们的模型能够表征数据集之前,我们需要保证有一个(或多个)隐含参数能够导致模型生成与数据

类似的结果。更为标注的表达为:假设我们有能够简单地通过概率密度函数(probability density function, PDF)
进行采样的高维隐含变量
,还有一类以
为参数的确定性函数
。我们想要优化
使得
与数据集中的
类似。鉴于此,我们可以写出公式

在这里我们用
代替了
以便于使用概率法则。在 VAEs 中,
通常都是一个高斯分布,即
。但是
并不一定要服从高斯分布,但是必须对于
连续。在后面的讨论中我们会隐去参数

2. 变分自动编码器

为了解公式(1),VAEs 必须解决两个问题:如何定义隐含变量

;如何对
进行积分。

在理想情况下,我们并不想手动定义

的每一个维度(特征),也不想定义
的维度之间的依赖关系。VAEs 采取了一个非同寻常的手段来解决这个问题:它们假设
的维度无法简单解释,因此转而声称
可以由一个简单的分布(例如正态分布
)采样得到。这个手段基于一个事实:任何
维分布均可以通过对在
维的正态分布作用一个足够复杂的映射函数而来。举例来说,函数
可以把二维标准正态分布变成二维圈(如图1所示)。我们可以令
为一个多层神经网络来学习这个映射函数。

b8a66519436139af7ae997adb3720f6a.png
图1. 函数g(z)可以把二维标准正态分布变成二维圈。

既然已经给定

,接下来的问题就是如何最大化公式(1)。

2. 设置目标</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值