一、AutoEncoder
自编码器是一种无监督学习模型,功能是将输入信息作为学习目标,学习数据的有效表示,同时能够从这个表示中重构输入数据。通常用于数据的降维、特征提取、去噪等任务。
1、Encoder
编码器将输入数据映射到一个低维的隐藏表示空间。这个隐藏表示包含了输入数据的关键特征,可以被看作是数据的压缩表示。编码器通常由神经网络构成,其中包含一个或多个隐藏层,其输出即为隐藏表示。
2、Decoder
解码器将编码器的隐藏表示映射回原始数据空间,重构输入数据。解码器也通常由神经网络构成,其输入是解码器输出的隐藏表示,输出是重构的数据。解码器的目标是尽可能地还原输入数据,使重构数据与原始输入尽量相似。
3、Loss Function
AE的损失函数通常由重构损失和正则化损失构成。重构损失衡量重构数据与原始输入之间的差异。正则化损失用于衡量编码器输出的概率分布与标准正态分布之间额差异,促使潜在空间中的分布更接近于标准正态分布。
优化器通过最小化损失函数来训练模型、调整模型参数,使得重构损失和正则化损失最小化。
二、Variational AutoEncoder
变分自编码器是在AE的基础上加入噪声,它可以产生新的数据样本,而不仅仅只是重构。
以满月的弦月为例,AE的输入是满月,则输出也会是满月,因为它的code是一对一的关系。
而VAE在code中加入一些noise,这样可以让在满月对应noise范围内的code都输出满月,弦月对应的noise范围内的code都输出弦月。当我们在code中采样时,如果踩到了既不是满月也不是弦月对应noise范围内的code,decoder输出的图片可能是介于二者之间,比如四分之三圆。
即VAE可以产生输入数据中不包含的数据,但AE只能尽可能接近原始数据样本。
三、 Vector Quantized Variational AutoEncoder
VQVAE是一种结合了自动编码器(AutoEncoder)和向量量化(Vector Quantized)的生成模型。它通过利用向量量化的技术来学习数据的离散表示,从而实现了更高效的数据压缩和表示学习。
1、Vector Quantization
在VQVAE中引入了向量量化的概念。传统的自动编码器将连续的潜在表示作为编码器的输出,而VQVAE将这些连续的潜在表示替换为离散的量化code,这个码字的集合通常被成为codebook。
2、Encoder
编码器将输入数据映射到连续的潜在表示空间,然后这些连续的表示被映射到离散的code空间,即向量量化模块,这个模块将每个连续的潜在表示与最接近的code进行匹配,并输出对应的离散code。
3、Decoder
解码器将这些离散的code解码为重构数据。解码器接受到离散的code作为输入,将其映射回原始的连续表示空间,并生成与原始输入数据尽可能接近的重构数据。
4、Loss Function
VQVAE的损失函数由重构损失和量化损失组成。重构损失衡量重构数据与原始输入数据之间的差异,量化损失衡量编码器输出的潜在表示与最接近的code之间的差异。
在训练过程中,VQVAE通过最小化损失函数来优化模型参数,使重构损失和量化损失都最小化。
总结
AE是重构原始数据并尽可能贴近原始数据。
VAE在AE的基础上可以产生不同于原始数据的新样本。
VQVAE能够学习到数据的离散表示来生成重构数据,具有更高效的表示学习和数据压缩能力。