1. Autoencoder 简介
Autoencoder是一种用于学习数据高效压缩表示的人工神经网络。它由两个主要部分组成:
Encoder
-
编码器将输入数据映射到一个更小的、低维空间中的压缩表示,这个空间通常称为latent space或bottleneck。
-
这一过程可以看作是数据压缩,去除冗余信息,仅保留最重要的特征。
Decoder
-
解码器从潜在表示中重构原始输入数据。
-
理想情况下,解码器的输出应尽可能接近原始输入。
2. Autoencoder的种类
2.1 Vanilla Autoencoder
vanilla autoencoder是最简单形式的自动编码器,旨在通过瓶颈层尽可能准确地重构输入数据。它是更高级自动编码器变体的基础。
Vanilla autoencoder的训练目标是最小化输入 和输出 之间的重构损失. 常见的损失函数包括:
均方误差(MSE):适用于连续数据。
二元交叉熵损失(Binary Cross-Entropy Loss): 适用于二元数据。
2.2 Denoising Autoencoder
Denoising autoencoder (DAE) 是一种自动编码器变体,它专门训练从受损(有噪声)的输入中重构干净的输入数据。这使其成为学习有意义特征和执行数据去噪任务的强大工具。
原始输入数据通过添加噪声或引入干扰被人为破坏,生成带噪输入。常见的破坏类型包括:
-
高斯噪声:在输入数据中添加随机噪声。
-
椒盐噪声:随机翻转图像中的像素值。
-
遮掩噪声:将输入的随机部分设为零。
-
随机失活噪声:随机丢弃部分特征。
与基础型自动编码器类似,常用的损失函数包括均方误差(MSE)和二元交叉熵损失(Binary Cross-Entropy Loss)。
2.3 变分自动编码器 Variational Autoencoder (VAE)
变分自动编码器(VAE)是一种用于学习数据概率表示的自动编码器。与标准自动编码器将数据编码为固定的潜在表示不同,VAE 将数据编码为潜在空间中的一个分布(通常是高斯分布)。这使得 VAE 在生成任务中尤其有用。
VAE 的三个主要组成部分:
编码器(Encoder)
-
编码器将输入数据 映射到潜在分布 .。
-
对于每个潜在变量,编码器输出两个参数:
-
均值()
-
标准差()
-
潜在空间(Latent Space)
-
表示输入数据的压缩概率分布。
-
潜在空间中的变量 通过以下公式采样: 其中 。这种操作称为重参数化技巧(reparameterization trick),它允许通过随机采样过程进行反向传播。
解码器(Decoder)
-
解码器将潜在变量 映射回原始数据空间 。
-
它尝试从潜在表示中重构输入数据 。
2.3.1 损失函数
VAE 的损失函数由两部分组成:
重构损失
-
它衡量重构数据与原始数据的匹配程度。
-
我们通常使用二元交叉熵或均方误差。
KL 散度
-
它使潜在空间分布 接近先验分布 , 通常是标准高斯分布 .
-
定义为: 该项正则化潜在空间,确保插值平滑且具有意义。
总损失公式为:
2.3.2 证据下界 Evidence Lower Bound (ELBO)
在变分自动编码器(VAE)中,核心目标是最大化输入数据的边际似然 ,即尽可能解释数据。为此,一个重要的数学工具是证据下界(ELBO)。
2.3.2.1 什么是 ELBO?
ELBO 是通过变分推断近似数据边际似然