本文主要是对博文1进行翻译;其中“VAE with AF Prior”小节中大部分转自博文2。侵删。
目录
2. Denoising Autoencoder, 2008, [paper]
3. Sparse Autoencoder, [paper]
4. Contractive Autoencoder, 2011, [paper]
5. VAE: Variational Autoencoder, 2014, [paper]
方式1: 根据KL散度
补充:博文2:《干货 | 你的 KL 散度 vanish 了吗?》链接
9. VQ-VAE2, 2019, [paper], 比肩BigGAN的生成模型
符号定义

1. Autoencoder, 2006 [paper]
自编码器Autoencoder,是一个神经网络,采用无监督的方式学习一个Identity Function(一致变换):先对数据进行有效的压缩,然后再重建原始输入。
它由两部分组成:
- Encoder网络:它将原始的high-dimensional输入转换为latent low-dimensional code。输入的大小>输出的大小。
- Decoder网络:将latent low-dimensional code恢复为原始数据。

Encoder网络主要实现dimensionality reduction,与PCA和Matrix Factorization(矩阵因子分解)的功能类似。
Autoencoder的优化过程就是最小化reconstructed input与input之间的差异。一个好的latent representation不仅能够蕴含隐变量信息,也能很好的进行压缩和解压。

2. Denoising Autoencoder, 2008, [paper]
由于Autoencoder是学习一个Identity function,因此当网络的参数远远大于样本点数量时,会存在过拟合的问题。为了缓解过拟合问题,提高模型的鲁棒性,Denoising Autoencoder被提出。
Inspiration: 算法的思路来源于人类能够很好地识别对象,哪怕这个对象被部分损坏。因此,Denoise Autoencoder的目的是能够发现和捕获输入维度之间的关系,以便推断缺失的片段。
算法思路:为输入数据添加扰动,如:添加噪声/随机遮盖掉输入vector的部分值等方式,构造corrupted data;然后令Decoder恢复original input,而不是被扰动后的数据(corrupted data)。

3. Sparse Autoencoder, [paper]
Sparse Autoencoder(稀疏自编码) 在hidden unit activation上添加一个“sparse”约束,以避免过拟合和提高鲁棒性。它迫使模型在同一时间只有少量的隐藏单元被激活,换句话说,一个隐藏的神经元在大部分时间应该是不激活的。
回顾常用的激活函数,例如:sigmoid, tanh, relu, leaky relu, etc。当激活函数的值接近1时,神经元被激活;当接近于0时,神经元被抑制。
设第l层hidden-layer包含𝑠𝑙个神经元,那么第l层的第j个神经元的激活函数可以表示为:![]()

k-Sparse Autoencoder
k-Sparse Autoencoder(Makhzani and Frey, 2013),在bottlenect layer只保留k个神经元被激活,即:units with top k highest activations。
计算过程:
- 根据encoder network计算compressed code:
- 对code vector z的值进行排序,只保留前k个最大的值,其余的值置为0:
。(可以通过ReLU layer withan adjustable threshold实现)
- Decoder对𝑧′进行解码,重建输入数据
损失函数:
![]()
注意,反向传播时梯度只通过top k activated hidden units进行传播。
4. Contractive Autoencoder, 2011, [paper]
好的表征就要具有两个特点:
- 可以很好地重构输入数据,如:Autoencoder, sparse autoencoder
- 对输入数据中包含的一定程度的扰动具有鲁棒性,如:denoising autoencod

本文从Autoencoder出发,逐步介绍了多种改进版本,包括Denoising Autoencoder、Sparse Autoencoder等,直至发展到VAE及其变种。涵盖了变分自编码器的基础知识、损失函数推导、重参数技巧等内容。
最低0.47元/天 解锁文章
869

被折叠的 条评论
为什么被折叠?



