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

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

首发地址:https://yq.aliyun.com/articles/68410


作者介绍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 ,译者:海棠

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

 翻译者: 海棠 

Wechat:269970760 

Email:duanzhch@tju.edu.cn

微信公众号:AI科技时讯

157f33dddfc596ede3681e0a2a0e7068dc288cc1

目录
相关文章
|
JavaScript 小程序 前端开发
uni-app入门:wxs基本使用
wxs(weixin script),是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。可以编写在 wxml 文件中的 标签内,或以 .wxs 为后缀名的文件内.
uni-app入门:wxs基本使用
|
3月前
|
人工智能 前端开发 调度
基于大模型的领域场景开发:从单智能体到多智能体的React框架设计与实现
本文介绍了基于大模型的领域场景开发演进过程,从提示词工程、RAG到流程编排,再到React模式的智能体架构升级。团队通过层级指挥模式实现单智能体自主规划与工具调用,并探索多智能体协作框架,提升复杂任务处理效率与灵活性。
813 19
基于大模型的领域场景开发:从单智能体到多智能体的React框架设计与实现
|
Web App开发 API Python
Playwright系列(8):认识playwright 相关库
Playwright系列(8):认识playwright 相关库
462 0
Playwright系列(8):认识playwright 相关库
|
机器学习/深度学习 自然语言处理
文生图模型-Stable Diffusion | AIGC
所谓的生成式模型就是通过文本或者随机采样的方式来得到一张图或者一段话的模型,比如文生图,顾名思义通过文本描述来生成图像的过程。当前流行的文生图模型,如DALE-2, midjourney以及今天要介绍的Stable Diffusion,这3种都是基于Diffusion扩散模型【1月更文挑战第6天】
1676 0
|
8月前
|
机器学习/深度学习 人工智能 搜索推荐
Second Me:硅基生命或成现实?如何用AI克隆自己,打造你的AI数字身份!
Second Me 是一个开源AI身份系统,允许用户创建完全私有的个性化AI代理,代表用户的真实自我,支持本地训练和部署,保护用户隐私和数据安全。
1192 8
Second Me:硅基生命或成现实?如何用AI克隆自己,打造你的AI数字身份!
|
机器学习/深度学习 算法 Java
矩阵运算在数据分析中的应用
矩阵运算在数据分析中的应用
|
机器学习/深度学习 自然语言处理 并行计算
扩散模型
本文详细介绍了扩散模型(Diffusion Models, DM),一种在计算机视觉和自然语言处理等领域取得显著进展的生成模型。文章分为四部分:基本原理、处理过程、应用和代码实战。首先,阐述了扩散模型的两个核心过程:前向扩散(加噪)和逆向扩散(去噪)。接着,介绍了训练和生成的具体步骤。最后,展示了模型在图像生成、视频生成和自然语言处理等领域的广泛应用,并提供了一个基于Python和PyTorch的代码示例,帮助读者快速入门。
|
机器学习/深度学习 数据采集
详解Diffusion扩散模型:理论、架构与实现
【9月更文挑战第23天】扩散模型(Diffusion Models)是一类基于随机过程的深度学习模型,通过逐步加噪和去噪实现图像生成,在此领域表现优异。模型分正向扩散和反向生成两阶段:前者从真实数据加入噪声至完全噪音,后者则学习从噪声中恢复数据,经由反向过程逐步还原生成清晰图像。其主要架构采用U-net神经网络,实现过程中需数据预处理及高斯噪声添加等步骤,最终通过模型逆向扩散生成新数据,具有广泛应用前景。
988 0
|
监控 数据可视化 测试技术
性能测试:性能测试流程与方法
**性能测试流程与方法概述:** 本文介绍了性能测试的关键步骤,包括现状分析、指标获取、用户场景定义、验收标准设定、测试计划编写、压力环境准备、执行压测、监控、结果分析、报告编写及改进建议。测试方法涉及并发模式(虚拟用户)和RPS模式(吞吐量),确保系统在不同负载下的稳定性和效率。
|
存储 运维 安全
SDN 网络编排与服务
【2月更文挑战第30天】网络编排是基于业务需求,对逻辑网络服务进行有序组织和安排,通过控制器构建满足需求的网络服务。