在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

自编码器

自编码器通过中间的潜在编码重建输入。本课八维编码对留出手写数字的平均重建优于二维,但同一数字解码器遇到棋盘格仍失败:编码更宽,不保证能恢复陌生模式。

可以把编码看作递给重画者的短说明。说明长度有限,重画者还依赖已有经验。适合描述数字的方式不一定适合棋盘格,增加几个坐标也不会自动补上这种经验。

编码与重建

编码器将 x 映射到 z,解码器将 z 映射到重建 x̂。训练调节两者权重,降低重建与输入的差异。不需要类别标签,每张输入就是自己的目标。《深度学习》第 14 章介绍这一目标及限制直接复制的必要性。

欠完备自编码器让编码维数少于输入值数,借此检查紧凑表示保留了什么。绕过编码的直接复制路径会破坏这个检验。限制可能促成有用表示,但不保证一定有用。

解码器只能读取编码与已训练权重,不能偷看原图。原始像素只在误差计算时再次出现。本课每图 64 像素:

MSE = Σᵢ(x̂ᵢ − xᵢ)² / 64

平方防止正负误差相消,平均得到逐像素误差,背景也计入。潜在坐标是学出的数值,不一定是像素、类别概率或某个可命名形状。重建得像 8,输出仍是 64 个强度值,不是 8 类预测。

网络结构

输入是 [0,1] 的 8×8 灰度图。网络 64 → 24 → k → 24 → 64,k = 2、4、8。隐藏层为 tanh,输出 sigmoid。按行向量记法:

hEnc = tanh(x W₁ + b₁)

z = tanh(hEnc W₂ + b₂)

hDec = tanh(z W₃ + b₃)

x̂ = sigmoid(hDec W₄ + b₄)

逐步演示

默认八维模型和原数据第 249 行的手写 8,来自 scikit-learn 8×8 digits,不是 MNIST。训练使用另外 1,437 张,留出 360 张;此图用于展示重建对比。

  1. 确定目标:重建全部 64 像素,数字标签只用于选择示例。
  2. 编码:八坐标的舍入值为 [0.0612, 0.4671, −0.3931, 0.0032, −0.1654, −0.0009, 0.4504, 0.2202]。解码器只能依赖这些数和权重。
  3. 解码:轮廓保留,各像素强度不完全相同。
  4. 先看单像素再看平均:零基像素 [6,4] 原值 0.4375,重建约 0.8077649,平方误差约 0.1370961,是该图最大的单项。64 项平均为 0.0106606,最大误差与平均误差回答不同问题。
  5. 回看训练记录:第 0 轮该图 MSE 0.1891698,第 1、10、50、200 轮分别为 0.0887845、0.0467999、0.0120355、0.0106606。图像始终未参与训练;这是离线检查点回放,不是播放时训练。
  6. 先比同图,再比集合:独立训练的二维模型对此图 MSE 为 0.0465775,细节丢失更多。对相同 360 张留出图,二维均值 0.0375854、八维 0.0148576,集合结果也支持八维更好。
  7. 改变输入类型:保持八维最终权重,改用合成棋盘格,MSE 达 0.4291607,未恢复交替模式。数字训练没有让它成为通用复制器。

训练图表显示的是 360 张留出图的平均 MSE,与当前图误差分开。第 200 轮分别为 0.0148576 和 0.0106606。横轴按 0、1、10、50、200 的实际轮距排布,不是五个连续更新。

编码宽度与输入分布

改变瓶颈会选择另一套独立训练的网络。划分、24 单元隐藏层、优化器、轮数和种子策略固定,参数数与学得权重必然不同;二维不是从八维模型删去六个坐标。

编码维数默认数字 MSE360 留出数字平均 MSE棋盘格 MSE
20.04657750.03758540.4074093
40.01716100.02474780.4114591
80.01066060.01485760.4291607

宽网络在数字集更好,棋盘格却反向排序。报告平均重建误差要说明输入分布,不保证宽度改善每个样本,也不保证优化找到理论最优权重。

八个实数不是八比特。维数比不是文件压缩率,还要计算数值精度与解码器存储成本。

选择需要的编码

在同一留出数字集比较各宽度,在编码预算内选择满足误差容忍度的模型,并看重建图,检查平均值掩盖的细节。容忍度由应用决定。用此数据选模型后,最终报告还需独立评估。

陌生输入类型另测,否则数字均值会掩盖棋盘格失败。若计划把 z 用在其他任务,应直接评估那个任务,不能由重建好推断迁移好。相关内容见 PCA和反向传播。

边界情况

  • 二维瓶颈:本配置数字平均误差最高,不是所有二维编码都必然失败的证明。
  • 棋盘格:三模型 MSE 都大于 0.4,是未训练的合成探针,选择后整个流程都展示同一失败。
  • 重放或变速:数值相同,不更新权重,也不添加随机噪声。
  • 宽度范围:2、4、8 只是提供的结构。更大或过完备编码若要学到超出复制的表示,需其他约束。

常见错误

  • 给解码器目标图或绕过编码的复制路径,零误差也不能说明编码保留信息。
  • 把 MSE 当数字置信度;它只比较像素。
  • 期待自动去噪。本课输入和目标为同图;去噪自编码器需损坏输入、干净目标的不同任务。
  • 随机取潜在数就期待有效图像。普通自编码器没有训练采样先验,重建目标本身不保证生成能力。
  • 把低误差重建叫无损压缩,或把维数当编码比特数。

模型范围

小型全连接网络、8×8 数字、编码器/解码器分组显示、五个离线检查点。Adam 训练 200 轮,示例图留出。未包含卷积、正则化、去噪、变分推断和潜在采样先验。扩散模型展示从噪声生成新样本的另一项任务。