# CLS 04 · 重建:约束、位置与表示评价 按问题继续 词典/PCA数值、线性自编码约束、遮挡索引、masked ConvAE与MAE区别 对应课堂(7 页) 可先阅读已有结果,再决定是否运行。重算时请核对各节记录的数据、参数、环境与日期。 **学习路径:** [从遮挡重建到表示评价](/course/study/masked-reconstruction.html) 从[P19—22的MAE位置图](/course/pages/l3-r2-p19.html)进入,本册回答:**限制什么,才能使重建不只是复制输入?** 先读“MAE让昂贵编码器只看少量位置”,手写可见位置、补位顺序和隐藏loss分母;再看[LAB 08](https://deepnote.com/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/b5ba27f2c5ba4ec0922208a7d5dc80a4)保存的同图重建与冻结读出。你的产出是一张对照:模型恢复了哪些像素,哪些下游能力另外测过,两者为什么不能互相代替。 PCA、去噪与词典的推导保留在前半部,遇到瓶颈或误差问题再回读。需要一个无需神经网络的实际优化入口时,选[LAB 05像素词典](https://deepnote.com/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/de39b998077f44cca4b8407085547766)。可直接引用[隐藏loss分母](/course/blocks/mae-masked-loss-denominator.html)或[重建限制](/course/blocks/reconstruction-restrictions.html)。 如果不提供“猫”“杯子”这样的类别标签,图像还有什么可以当答案?最直接的是图像自身:把它压缩、破坏或遮住一部分,再让模型恢复。困难不在于是否有监督数值,而在于我们允许模型怎样取得它。把输入原样复制到输出可以获得零误差,却没有迫使模型形成有用的表示。重建方法之间真正改变的是限制条件:代码可以取什么值、信息从哪里通过、哪些位置可见,以及误差计算在哪里。 ## 同样是压缩,离散词典与线性子空间留下不同东西 把一个 $2\times2$ 灰度 patch 展平为 $x\in\mathbb R^4$。K-means 学习 $K$ 个中心 $c_k$,用最近中心的索引编码: $a(x)=\arg\min_k\|x-c_k\|^2,\qquad \hat x=c_{a(x)}.$ 若词典恰为 $c_1=(1,0,1,0)$、$c_2=(0,1,0,1)$,它可以零误差重建左右两种明暗边,但 $(0.5,0.5,0.5,0.5)$ 到两中心的平方距离都为 1,只能按约定任选其一。代码被限制为一个离散索引,约需 $\log_2 K$ bit,另须存储词典;这不是任意实数向量的无损压缩。改变 $K$ 会改变量化误差与存储成本。原 [LAB 05](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/de39b998077f44cca4b8407085547766?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=de39b998077f44cca4b8407085547766&utm_term=get_notebook) 在真实 MNIST patch 上进行 Lloyd 拟合,可查看中心怎样随数据形成,而非只背“无监督”这个标签。 PCA 改用连续线性坐标。对已减去均值的 $x$,选列正交矩阵 $U\in\mathbb R^{d\times k}$,编码 $z=U^Tx$,重建 $\hat x=Uz$。最小化平方重建误差等价于保留协方差最大的 $k$ 个方向。 用四点 $(2,0),(-2,0),(0,1),(0,-1)$ 手算。均值为 0,按 $1/4$ 计算协方差是 $\mathrm{diag}(2,0.5)$。只保留一维时选横轴,四点重建为 $(2,0),(-2,0),(0,0),(0,0)$;逐点平方误差为 $0,0,1,1$,平均 0.5。若选纵轴,平均误差为 2。被丢掉的方向方差小,不代表它对任务不重要:如果标签恰好区分纵坐标正负,PCA 的最优重建轴可能删去标签所需的差异。 ![PCA 的平方误差与 MAE 的位置恢复](/course/repair/assets/cls05-pca-mask.svg) 左图按真实坐标画出四点和一维投影;右图展示 patch 的乱序、可见项与恢复位置。两者都在重建,但一个限制子空间,一个限制输入可见性。 ## PCA 为什么可以看成受约束的线性自编码器 自编码器由 $z=f_\theta(x)$ 与 $\hat x=g_\phi(z)$ 组成,以 $\|x-\hat x\|^2$ 等重建损失更新参数。令 $f(x)=U^Tx,g(z)=Uz$ 并要求 $U^TU=I$,就得到上面的 PCA 形式。一般线性、低秩、平方误差自编码器也能学到 PCA 的主子空间,尽管编码坐标不一定等于标准主成分;平移、旋转等参数化差异要与重建子空间区分。 所以 SVD 可以精确说明一种线性自编码约束,但 SVD 本身没有执行一个另行承诺的非线性网络训练。引入非线性编码器和解码器以后,表示可以适应弯曲的数据结构;也可能凭较大容量记忆训练样本。瓶颈维数、正则化、跳连是否绕过瓶颈、训练与保留误差,都影响我们能否把低损失解释为学到了结构。 去噪自编码器进一步改变训练对:先从破坏分布采样 $\tilde x\sim q(\tilde x\mid x)$,再最小化 $\mathbb E\|g(f(\tilde x))-x\|^2$。输入是带噪图片,目标仍是干净图片。训练时不给模型干净图,不能在可视化时偷偷把目标的边缘或 mask 喂回去。Gaussian 噪声、置零像素和随机遮块提出不同恢复任务;噪声太轻会接近复制,太重可能留下不足以判断的证据。在 [去噪自编码器原论文](https://www.jmlr.org/papers/v11/vincent10a.html) 中,破坏过程正是组织表示学习的一个关键约束。 平方误差还有一个值得记住的性质:最佳预测是给定输入后的条件均值。若一个被遮挡像素在其余条件相同下等概率为 0 或 1,输出 0.5 的平均平方误差是 0.25,而总是输出 0 或 1 的误差是 0.5。模糊有时来自目标的统计偏好,不一定只是网络没有优化好。下一讲讨论采样时会重新遇到这个问题。 [此段独立阅读](/course/notebook-blocks/a06579c00c0d4cf0a190f71ae8b83559.html) ## MAE 让昂贵编码器只看少量位置 把图像切为 patch 后,MAE 随机选择可见子集,编码器只处理可见 patch 及其位置;轻量解码器补入 mask token,恢复完整位置顺序,再预测被遮挡的像素目标。原 MAE 的一个关键设计是高遮挡率与这种不对称编码—解码结构,见 [MAE §3 与图 1](https://arxiv.org/html/2111.06377v3)。这里不是先让编码器看完整图,再在输出端涂黑几块。 四个原始位置是 `[0,1,2,3]`。随机排列 `ids_shuffle=[2,0,3,1]`,只保留前两项,所以编码器看到原位置 2、0。解码器先得到 `[z2,z0,M,M]`,再用逆排列 `ids_restore=[1,3,0,2]` 取回 `[z0,M,z2,M]`。位置 1、3 的损失可以按 $L=\frac{1}{|\mathcal M|}\sum_{i\in\mathcal M}\|\hat x_i-x_i\|^2$ 计算,其中 $\mathcal M$ 为遮挡位置集合。若补 mask 后忘记恢复顺序,即便预测数值合理,也是在与错误位置的目标比较。排列练习可以证明索引正确;它不能证明编码器已经学会图像语义。 再看计算:16 个 patch 只保留 4 个,编码器注意力的成对位置数由 $16^2=256$ 变为 $4^2=16$,这是二次项的 1/16;线性层、patch embedding、解码器和实际硬件开销不按同样比例缩小。因此不能把这个比例直接称为端到端加速 16 倍。高 mask 比例同时改变任务难度与编码成本,需要一起讨论。 | 方法 | 输入受什么限制 | 代码/表示约束 | 重建好能支持什么判断 | | --- | --- | --- | --- | | K-means 词典 | 通常看到完整 patch | 一个中心索引 | 该词典的量化误差小 | | PCA | 通常看到完整向量 | 低维线性子空间 | 方差被线性子空间有效保留 | | 去噪自编码器 | 看到明确破坏后的图 | 架构、瓶颈及正则化 | 对指定破坏能恢复保留图像 | | MAE | 编码器只看可见 patch | 可见位置及编码—解码设计 | 能利用上下文预测遮挡目标 | 这四行都没有自动回答“少量标签能否读出类别”“颜色是否保留”“边界是否准确”。那些是另设的评价问题。[LAB 08](https://deepnote.com/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/b5ba27f2c5ba4ec0922208a7d5dc80a4) 把索引检查与图像重建分开:先确认输入—mask—目标位置,再比较输入、重建和误差,最后冻结编码器作读出。划分必须先按原图进行,再生成破坏版本;否则同一原图的干净版和带噪版可能分居训练与测试,给出过于乐观的结果。 ### 已运行的图像重建:恢复更好,表示评价另算 LAB 08 在 2026-09-22 本地 CPU 从头训练卷积自编码器。数据是 `sklearn load_digits` 的 1797 张 8×8 灰度图,先按原图分层随机划分 1257 训练、540 保留,再生成破坏;没有按书写者分组,因此结论是这个原图随机划分下的数字任务。标签只用于划分与读出,不进入重建损失。16 维瓶颈的去噪网络训练 40 epoch,破坏为 25% 像素丢弃加标准差 0.15 的高斯噪声并裁到 [0,1]。 | 保留集方法 | 与干净目标的逐像素 MSE | | --- | --- | | 直接使用带噪输入 | 0.06244 | | 训练集拟合的 rank-16 PCA 重建 | 0.04160 | | 学到的卷积去噪自编码器 | 0.03217 | ![真实输入、破坏、重建与遮挡恢复](/assets/display/cdcfe2b4d2103d5484256b71.webp) 另一个两通道卷积模型接收“被遮挡图像+可见性 mask”,在 50% 的 2×2 patch 隐藏率下训练 50 epoch。它处理整张密集网格,**不是原论文只编码可见 token 的 ViT MAE**。固定每图同一排列、让隐藏集合嵌套,测试 25%/50%/75% 遮挡时,隐藏位置 MSE 分别为 0.03933/0.04341/0.05563;相应训练均值基线为 0.07420/0.07402/0.07390。遮挡增加后重建变难,但这个卷积模型并未获得 MAE 的可见 token 计算节省。 冻结编码器、输入干净保留图像作 5NN,去噪架构由随机初始化的 84.26% 到训练后的 95.00%;遮挡架构由 88.52% 到 92.04%。两种架构输入通道不同,随机基线也应分别保留,不能把它们混成同一个起点。重建改善和读出改善在这次实验中同时出现,但它们仍是两项独立测量。配置、输入 hash 与权重均在 LAB 08 对应材料中。 重建为“保存信息”提供了可计算目标;下一册 [CLS 05](https://deepnote.com/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/b8320404134f4a2e858ccfe7d50a71d3) 会主动要求某些变化在表示中不产生差异。二者的张力是具体的:准确重建颜色需要留下颜色,颜色不变的对比目标却可能鼓励忽略它。好的表示要服务什么,必须由下游问题回答。 [此段独立阅读](/course/notebook-blocks/5dc1a98878994b8989105349ef7bd0c6.html) ### 读到这里,可以如何继续? 若你能解释“限制输入”与“限制表示”有什么不同,并能给16块示意写出隐藏loss分母,就已完成本册机制主线。接下来选 [LAB 08 · 图像重建:遮挡损失与表示评价](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/b5ba27f2c5ba4ec0922208a7d5dc80a4?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=b5ba27f2c5ba4ec0922208a7d5dc80a4&utm_term=get_notebook):先看真实输入、重建、误差,最后读冻结5NN。其模型是masked ConvAE,仍处理稠密网格;原MAE的可见token节省计算由 [少看图块为何省计算,又为何不是固定加速比](/course/blocks/mae-compute-not-sixteen-times.html) 单独解释。 只想看一个无需神经网络的实际无标签优化,可选 [LAB 05 · 像素 patch 词典:拟合与重建](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/de39b998077f44cca4b8407085547766?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=de39b998077f44cca4b8407085547766&utm_term=get_notebook) 的MNIST patch词典。关于教师目标的旧拓展已由 [CLS 06 · 表示的三个检查:目标、信息与新域](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/c0645a4db6e04188ab5b119e87c53bed?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=c0645a4db6e04188ab5b119e87c53bed&utm_term=get_notebook) 统一组织,不需要在词典实验末尾再学一遍。最后回到 [P23 本页说明](/course/pages/l3-r2-p23.html):重建好与新任务好,需要分别测量。 [此段独立阅读](/course/notebook-blocks/de414705e5654ffa86fc46358756877d.html)