自动编码器的效果取决于它在数据经过瓶颈层后能否准确重建输入数据。重建损失函数是我们用来衡量原始输入,记作 $x$,与解码器生成输出,记作 $\hat{x}$ 之间差异的方法。这个损失函数量化了重建误差,训练时最小化它,是指导编码器和解码器学习过程的主要目标。选择合适的损失函数很重要,因为它隐含地对数据分布做出假设,并直接影响学到的潜在表示的特性。接下来,我们看看自动编码器中最常用的两种重建损失函数:均方误差(MSE)和二元交叉熵(BCE)。均方误差 (MSE)均方误差,也称为L2损失,是处理由连续实数值组成输入数据时的常用选择。这在图像数据中很常见,其中像素强度通常被归一化到 [0, 1] 或 [-1, 1] 等范围,或用于其他类型的连续传感器测量。MSE 计算输入 $x$ 中每个元素与其在重建输出 $\hat{x}$ 中对应元素之间的平均平方差。对于一个包含 $N$ 个特征的单个数据样本(例如,图像中的像素),MSE定义为:$$ L_{MSE}(x, \hat{x}) = \frac{1}{N}\sum_{i=1}^{N}(x_i - \hat{x}_i)^2 $$使用包含 $M$ 个样本的小批量进行训练时,损失通常在批次中所有样本上求平均:$$ L_{MSE} = \frac{1}{M} \sum_{j=1}^{M} \frac{1}{N} \sum_{i=1}^{N} (x_{ji} - \hat{x}_{ji})^2 $$使用MSE作为重建损失在数学上等同于最大化数据的对数似然,在重建误差服从高斯分布的假设下。具体来说,它假设真实数据 $x$ 是由解码器输出 $\hat{x}$ 加上均值为零、方差恒定的加性高斯噪声生成的。最小化MSE促使自动编码器生成的重建在欧几里得距离上平均接近原始输入。均方误差虽然直接且适用范围广,但对数据中的异常值敏感。单个重建误差很大的数据点可能主导损失值和梯度更新,从而可能阻碍模型学习大部分数据的微小特征。二元交叉熵 (BCE)二元交叉熵,常被称为对数损失,当输入数据是二元的(例如,值严格为0或1)或输入值表示概率(通常归一化到 [0, 1] 范围)时,是首选。这常见于MNIST(手写数字)等数据集,其中像素值可以被解释为“开启”(墨迹)或“关闭”(背景)的概率。为了使BCE适用,解码器的最后一层通常必须使用 sigmoid 激活函数,以确保每个特征 $i$ 的输出 $\hat{x}_i$ 落在开区间 (0, 1) 内。每个 $\hat{x}_i$ 随后可以被解释为伯努利分布的参数,表示特征 $i$ 的重建值应为1的概率。BCE损失对于单个数据样本 $x$ 定义为:$$ L_{BCE}(x, \hat{x}) = -\frac{1}{N}\sum_{i=1}^{N} [x_i \log(\hat{x}_i) + (1 - x_i) \log(1 - \hat{x}_i)] $$这里,$x_i$ 是真实值(0或1,或 [0, 1] 中的一个值),$\hat{x}_i$ 是解码器的预测概率。与MSE类似,这个损失在训练时,在小批量中所有样本上求平均。最小化BCE对应于最大化数据的对数似然,在每个输入特征 $x_i$ 独立地从由相应解码器输出 $\hat{x}_i$ 参数化的伯努利分布中抽取的假设下。这个公式直接对给定重建的输入数据出现概率进行建模,使其在统计上非常适合二元或概率输入。digraph G { rankdir=LR; node [shape=box, style=filled, fillcolor="#e9ecef", fontname="sans-serif"]; edge [fontname="sans-serif"]; X [label="输入\n(x)", fillcolor="#a5d8ff"]; X_hat [label="重建\n(x̂)", fillcolor="#ffc9c9"]; Loss [label="损失函数\nL(x, x̂)\n(例如, MSE, BCE)", shape=ellipse, fillcolor="#b2f2bb"]; Compare [label="比较", shape=plaintext]; X -> Compare [style=invis]; // 用于定位的隐藏边 X_hat -> Compare [style=invis]; // 用于定位的隐藏边 subgraph cluster_compare { style=invis; // 使子图不可见 rank=same; // 保持节点在同一级别 X; Compare; X_hat; } Compare -> Loss [label=" 量化\n差异"]; }流程图展示了重建损失函数如何比较原始输入 $x$ 与自动编码器重建的输出 $\hat{x}$。选择合适的损失函数MSE和BCE的选择主要取决于输入数据的性质和预处理方式:使用MSE: 如果您的输入数据包含连续值,可能无界或归一化到 [-1, 1] 等范围。它假设存在一个高斯误差分布。使用BCE: 如果您的输入数据是二元的 (0/1) 或表示严格归一化到 [0, 1] 范围内的概率。确保解码器的最终激活函数是 sigmoid。它假设每个特征存在一个伯努利分布。仔细考虑数据归一化很重要。将BCE应用于未正确缩放到 [0, 1] 的数据可能会导致数值不稳定(例如,对非正数取对数)。虽然MSE有时可用于 [0, 1] 归一化数据,但BCE通常为此类情况提供更具统计学基础的方法。其他损失函数,如平均绝对误差(MAE或L1损失),定义为 $L_{MAE} = \frac{1}{N}\sum_{i=1}^{N}|x_i - \hat{x}_i|$,也可以考虑。MAE与MSE相比,对异常值不那么敏感,但在某些图像任务中可能导致重建效果略微不那么清晰。最终,重建损失函数决定了如何衡量输入和输出之间的“相似性”。这个衡量方式直接影响优化过程,促使编码器将最核心的信息提炼到瓶颈层,以便解码器在重建时最小化所选的误差指标。因此,选择合适的损失函数是设计和训练一个有效的自动编码器的一个基本步骤。