没有任何公式——直观的理解变分自动编码器VAE

简介: 本文简单介绍了变分自动编码器VAE的基本原理,从经典神经网络的贝叶斯计算概率方法慢慢转变到变分自动编码器神经网络中的优化问题,使用KL散度度量误差,给大家提供一个VAE的基本框架。全篇没有公式,通俗易懂。

作者介绍Hamidreza Saghir

12b5c884dbe35a3c41dda6d19ab83b10e7801298

autoencoders作为一种非常直观的无监督的学习方法是很受欢迎的,最简单的情况是三层的神经网络,第一层是数据输入,第二层的节点数一般少于输入层,并且第三层与输入层类似,层与层之间互相全连接,这种网络被称作自动编码器,因为该网络将输入编码成一个隐藏代码,然后从隐藏表示中译码出来。通过简单的测量重构误差和反传网络参数能够很好的训练该类网络。

 0324a99f1be1f83b526cfc9852f6850c6a2aeefb

上图是另一种版本的自动编码器,称为变分自动编码器-VAE”,不同点在于其隐藏代码来自于训练期间学习到的概率分布。

90年代,一些研究人员提出一种概率解释的神经网络模型,在该模型中,提供了适当的贝叶斯方法。然而,学习这些模型的参数是困难的,直到深度学习研究的新进展导致了用于这种概率方法更有效的学习参数。

概率解释通过假设每个参数的概率分布来降低网络中每个参数的单个值的刚性约束。例如,如果在经典神经网络中计算权重w_i=0.7,在概率版本中,计算均值大约为u_i = 0.7和方差为v_i = 0.1的高斯分布,即w_i =N(0.7,0.1)。这个假设将输入,隐藏表示以及神经网络的输出转换为概率随机变量。这类网络被称为贝叶斯神经网络或BNN。

d4fb842f611d24a0c42ff9fc7cb3e9686ba46dd1

学习的目标是找到上述分布的参数。这种学习被称为推理,贝叶斯网络中的推论对应于计算潜在变量相对于数据的条件概率。这类模型引入了变分逼近推理方法,将该计算问题转换为优化问题,可以使用随机梯度下降法解决。

在贝叶斯网络中,网络可以基于分布参数重新参数化。在变分自动编码器中,仅在隐藏节点上假设这些分布。因此,编码器变成一个变分推理网络,而且译码器变成一个将隐藏代码映射回数据分布的生成网络。

81cc9fd8bcaa8074b13fedc6c43f660947652db4

将分布的均值和方差视为传统网络的参数,并将方差乘以来自噪声发生器的样本以增加随机性。通过参数化隐藏分布,可以反向传播梯度到编码器的参数,并用随机梯度下降训练整个网络。此过程能够学习隐藏代码的均值与方差值,这就是所谓的重新调参技巧

在经典版的神经网络中,可以用均方误差MSE简单测量网络输出与期望的目标值之间的误差。但在处理分布时,MSE不再是一个好的误差度量,因此用KL­散度测量两个分布之间的差异。事实证明变分近似和真实后验分布之间的距离不是很容易被最小化。它包括两个主要部分。因此,可以最大化较小的项(ELBO)。从自动编码器的角度来看,ELBO函数可以看作是输入的重建代价与正则化项的和

在最大化ELBO之后,数据的下限接近数据分布,则距离接近零,间接地最小化了误差距离。最大化下界的算法与梯度下降的完全相反。沿着梯度的方向达到最大值,这整个算法被称为自动编码变分贝叶斯

下面是一个伪代码,可以看到VAE的架构:

network= {

  # encoder
  encoder_x = Input_layer(size=input_size, input=data)
  encoder_h = Dense_layer(size=hidden_size, input= encoder_x)

  # the re-parameterized distributions that are inferred from data 
  z_mean = Dense(size=number_of_distributions, input=encoder_h)
  z_variance = Dense(size=number_of_distributions, input=encoder_h)
  epsilon= random(size=number_of_distributions)

  # decoder network needs a sample from the code distribution
  z_sample= z_mean + exp(z_variance / 2) * epsilon

  #decoder
  decoder_h = Dense_layer(size=hidden_size, input=z_sample)
  decoder_output = Dense_layer(size=input_size, input=decoder_h)
}

cost={
  reconstruction_loss = input_size * crossentropy(data, decoder_output)
  kl_loss = - 0.5 * sum(1 + z_variance - square(z_mean) - exp(z_variance))
  cost_total= reconstruction_loss + kl_loss
}

stochastic_gradient_descent(data, network, cost_total)

该笔记是基于此keras例子。编码器的所得学习潜在空间和在MNIST数据集上训练的简单VAE的结果如下。

eb74970c96711308d7b9b4fb88d0e141765aed8b

44447deb8a959a610889cb929a385efe09493614


数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《An intuitive understanding of variational autoencoders without any formula》,作者:Hamidreza Saghir ,译者:海棠

文章为简译,更为详细的内容,请查看原文

 

相关文章
|
4天前
|
机器学习/深度学习 自然语言处理 数据可视化
深度探索变分自编码器在无监督特征学习中的应用
【4月更文挑战第20天】 在深度学习领域,无监督学习一直是研究的热点问题之一。本文聚焦于一种前沿的生成模型——变分自编码器(Variational Autoencoder, VAE),探讨其在无监督特征学习中的关键作用与应用潜力。不同于传统的摘要形式,本文将直接深入VAE的核心机制,分析其如何通过引入随机隐变量和重参数化技巧,实现对复杂数据分布的有效建模。文章还将展示VAE在多个实际数据集上的应用结果,验证其作为无监督特征提取工具的有效性和普适性。通过理论与实践的结合,本文旨在为读者提供关于VAE在无监督特征学习领域的全面认识。
|
12天前
|
人工智能 物联网
PiSSA :将模型原始权重进行奇异值分解的一种新的微调方法
我们开始看4月的新论文了,这是来自北京大学人工智能研究所、北京大学智能科学与技术学院的研究人员发布的Principal Singular Values and Singular Vectors Adaptation(PiSSA)方法。
17 3
|
1月前
|
人工智能 搜索推荐 物联网
DoRA(权重分解低秩适应):一种新颖的模型微调方法_dora模型
DoRA(权重分解低秩适应):一种新颖的模型微调方法_dora模型
78 0
|
6月前
如何使用变分自编码器进行图像生成
如何使用变分自编码器进行图像生成
48 0
|
2月前
|
机器学习/深度学习 编解码 算法
大卷积核大有用处 | LSKNet + DiffusionDet更高更强的目标检测模型
大卷积核大有用处 | LSKNet + DiffusionDet更高更强的目标检测模型
61 0
|
3月前
|
传感器 移动开发 测试技术
通过卷积公式学习声速重建的成像模型
【1月更文挑战第1篇】通过卷积公式学习声速重建的成像模型
45 2
|
4月前
|
机器学习/深度学习 XML 编解码
ENVI实现最小距离法、最大似然法、支持向量机遥感图像监督分类与分类后处理操作
ENVI实现最小距离法、最大似然法、支持向量机遥感图像监督分类与分类后处理操作
|
8月前
|
机器学习/深度学习 编解码 索引
神经网络风格化过程的特征控制
翻译:《Controlling Perceptual Factors in Neural Style Transfer》
|
11月前
|
机器学习/深度学习 人工智能 算法
【Pytorch神经网络理论篇】 33 基于图片内容处理的机器视觉:目标检测+图片分割+非极大值抑制+Mask R-CNN模型
目标检测任务的精度相对较高,主要是以检测框的方式,找出图片中目标物体所在的位置。目标检测任务的模型运算量相对较小,速度相对较快。
179 0
|
算法 C++
降维算法:主成分分析 VS 自动编码器(二)
降维算法:主成分分析 VS 自动编码器(二)
87 0
降维算法:主成分分析 VS 自动编码器(二)