# 【干货】一文读懂什么是变分自编码器

【导读】本文是工程师Irhum Shafkat的一篇博文，主要梳理了变分自编码器的相关知识。我们知道，变分自编码器是一种生成模型，在文本生成、图像风格迁移等诸多任务中有显著的效果，那么什么是变分自编码器？它存在什么问题？它有什么改进算法？本文较为全面地讲解了变分自编码器的相关内容，分别介绍：标准变分自编码器的结构、存在的问题以及相关的解决思路，并预测了变分自编码器的改进方向，相信能给您的研究带来一些启发。

Intuitively Understanding Variational Autoencoders

▌首先，什么是变分？

▌解码标准自动编码器

Autoencoders采取这个想法，并使编码器生成的编码有利于重建自己的输入。

▌标准自动编码器的问题

▌变分自动编码器

```# build your encoder upto here. It can simply be a series of dense layers,
a convolutional network
# or even an LSTM decoder. Once made,
flatten out the final layer of the encoder, call it hidden.

latent_size = 5
mean = Dense(latent_size)(hidden)

# we usually don't directly compute the stddev σ
# but the log of the stddev instead, which is log(σ)
# the reasoning is similar to why we use softmax,
# numbers in fixed range [0, 1], the network can
output a wider range of numbers which we can later compress down
log_stddev = Dense(latent_size)(hidden)

def sampler(mean, log_stddev):
# we sample from the standard normal a matrix of batch_size * l
atent_size (taking into account minibatches)
std_norm = K.random_normal(shape=(K.shape(mean)[0], latent_size),
mean=0, stddev=1)
# sampling from Z~N(μ, σ^2) is the same as
sampling from μ + σX, X~(0,1)
return mean + K.exp(log_stddev) * std_norm```

```def vae_loss(input_img, output):
# compute the average MSE error, then scale it up, ie.
simply sum on all axes
reconstruction_loss = K.sum(K.square(output-input_img))
# compute the KL loss
kl_loss = - 0.5 * K.sum(1 + log_stddev - K.square(mean) -
K.square(K.exp(log_stddev)), axis=-1)
# return the average loss over all images in batch
total_loss = K.mean(reconstruction_loss + kl_loss)

▌矢量运算

▌下一个研究方向？

VAE可以处理明显不同类型的数据，顺序或非顺序，连续或离散，标记或完全不标记，使其成为非常强大的生成工具。 我希望你现在能够理解VAE是如何工作的，而且你也可以在自己的研究中使用它们。

Notes

• Latent Constraints: Conditional Generation from Unconditional Generative Models
• Kullback-Leibler Divergence Explained
• KL divergence between two univariate Gaussians
• Deep Feature Consistent Variational Autoencoder
• Hierarchical Variational Autoencoders for Music

• Tutorial on Variational Autoencoders
• Tutorial — What is a variational autoencoder?

Implementations:

• Building Autoencoders in Keras
• Convolutional-deconvolutional autoencoder in Keras

https://towardsdatascience.com/intuitively-understanding-variational-autoencoders-1bfe67eb5daf

0 条评论

## 相关文章

4029

40911

1052

4008

2245

1742

961

### Python+sklearn使用DBSCAN聚类算法案例一则

DBSCAN聚类算法概述： DBSCAN属于密度聚类算法，把类定义为密度相连对象的最大集合，通过在样本空间中不断搜索最大集合完成聚类。 DBSCAN能够在带有噪...

5444

4685

### 【NLP】Attention Model（注意力模型）学习总结

最近两年，注意力模型（Attention Model）被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中，是深度学习技术中最值得关注...

4732