基于之前介绍的组成部分,我们来对基础自编码器进行数学形式化。自编码器由编码器和解码器两部分组成,它们通常以神经网络的形式实现。编码器函数编码器(记作 $f$)接收一个输入向量 $x \in \mathbb{R}^d$,并将其映射到低维潜在表示(或编码)$z \in \mathbb{R}^k$,其中 $k < d$。这个映射由编码器的参数 $\theta_e$(包含权重和偏置)来确定。我们可以写成:$$z = f(x; \theta_e)$$对于一个简单的单隐藏层自编码器,这可能看起来像:$$z = \sigma_e(W_e x + b_e)$$其中,$W_e$ 是权重矩阵,$b_e$ 是偏置向量,$\sigma_e$ 是编码器的逐元素激活函数(如 Sigmoid、ReLU 或 tanh)。实际应用中,编码器可以是包含多个层的更深的网络。解码器函数解码器(记作 $g$)接收潜在表示 $z \in \mathbb{R}^k$,并将其映射回重构结果 $\hat{x} \in \mathbb{R}^d$。目标是使 $\hat{x}$ 尽可能地接近原始输入 $x$。这个映射由解码器的参数 $\theta_d$ 来确定:$$\hat{x} = g(z; \theta_d)$$与编码器类似,一个简单的单层解码器可能表示为:$$\hat{x} = \sigma_d(W_d z + b_d)$$其中 $W_d$ 和 $b_d$ 是解码器的权重和偏置,$\sigma_d$ 是解码器的激活函数。$\sigma_d$ 的选择通常取决于输入数据 $x$ 的特性。例如,如果 $x$ 表示介于 0 和 1 之间归一化的像素值,则 Sigmoid 激活函数很常用。如果 $x$ 可以取任何实数值(归一化后),则可以使用线性激活函数。整体自编码器与目标函数整个自编码器结合了编码器和解码器。给定输入 $x$,重构结果 $\hat{x}$ 是通过先将 $x$ 编码为 $z$,然后将 $z$ 解码回 $\hat{x}$ 而获得的:$$\hat{x} = g(f(x; \theta_e); \theta_d)$$自编码器通过最小化原始输入 $x$ 与其重构结果 $\hat{x}$ 之间的差异进行训练。这种差异由重构损失函数 $L(x, \hat{x})$ 量化。自编码器的整体目标函数 $J(\theta)$(其中 $\theta = {\theta_e, \theta_d}$ 代表所有可训练参数)通常是数据集 $D = {x^{(1)}, x^{(2)}, ..., x^{(N)}}$ 中 $N$ 个样本的平均损失:$$J(\theta) = \frac{1}{N} \sum_{i=1}^{N} L(x^{(i)}, \hat{x}^{(i)})$$代入编码器和解码器函数:$$J(\theta) = \frac{1}{N} \sum_{i=1}^{N} L(x^{(i)}, g(f(x^{(i)}; \theta_e); \theta_d))$$常见重构损失函数$L(x, \hat{x})$ 的选择较为重要,并取决于输入数据 $x$ 的特性:均方误差(MSE): 当输入数据是连续的(常假定为高斯分布)时使用。它衡量 $x$ 和 $\hat{x}$ 各元素之间的平均平方差。 $$L_{MSE}(x, \hat{x}) = \frac{1}{d} \sum_{j=1}^{d} (x_j - \hat{x}_j)^2$$ 最小化 MSE 对应于在重构误差为高斯分布的假设下最大化对数似然。它适合归一化图像像素或连续特征等输入。二元交叉熵(BCE): 当输入数据是二元或可解释为概率(例如,范围在 [0, 1] 的值)时使用。这通常适用于 MNIST 等图像,其中像素值被视为伯努利参数。 $$L_{BCE}(x, \hat{x}) = - \frac{1}{d} \sum_{j=1}^{d} [x_j \log(\hat{x}_j) + (1 - x_j) \log(1 - \hat{x}_j)]$$ 最小化 BCE 对应于在输入每个元素服从伯努利分布的假设下最大化对数似然。当使用 BCE 时,解码器的最终激活函数 $\sigma_d$ 通常应为 Sigmoid 函数,以确保输出 $\hat{x}_j$ 处于 (0, 1) 范围内,可解释为概率。优化视角训练的目的是找到最优参数 $\theta^* = {\theta_e^, \theta_d^}$,使目标函数 $J(\theta)$ 最小化。这通过使用基于梯度下降的优化算法来实现。反向传播用于计算损失 $L$ 相对于 $\theta_e$ 和 $\theta_d$ 中所有参数的梯度。这些梯度 $\nabla_{\theta_e} J(\theta)$ 和 $\nabla_{\theta_d} J(\theta)$ 随后被 Adam 或 RMSprop 等优化器用来迭代更新参数。本质上,数学公式定义了一个特定的优化问题:学习函数 $f$ 和 $g$,使得它们按顺序应用($g \circ f$)能根据所选损失度量 $L$ 尽可能准确地重构输入数据。瓶颈 $z$ 促使网络学习一种压缩表示,这种表示捕获了重构所需的最主要信息。