
<a id="n15-title"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-title)


# 能还原这把椅子，能否从零造一把新椅子？

王德泉 · Coding with AI · Lecture 04


<a id="n15-e4b88f2ffb82"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-e4b88f2ffb82)

先把一张已有椅图送进编码器，取得紧凑表示，再由解码器还原。若输出保住了椅背、材质和朝向，这说明从这张输入出发的一条重建路径有效。起点并非凭空选的，而是编码器根据真实椅图提供的。


[课程图解] 已有椅图经编码器给出起点，重建检验的是这条往返路径。；图中标签与关系：输入来源 同一解码器 输出样本 解码器 参数不变 已有椅图 表示 还原这把椅子
已有椅图经编码器给出起点，重建检验的是这条往返路径。


<a id="n15-4e789c27b591"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-4e789c27b591)

现在拿走原图，只给同一个解码器一个新起点。解码器参数没有改变，输入的来源却变了：这次没有编码器把我们送到一个已经会解释的位置。若随手取的数落在训练少见甚至没见过的区域，输出可能不成椅子。


<a id="n15-edb1b5c7cfaa"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-edb1b5c7cfaa)

**“解码器已经会画椅子，为什么不能随便给它一串数？”** 能处理一些输入，与能处理任意输入不是同一个承诺。生成系统还需要规定从哪里、按什么分布抽起点，并让这些起点与解码器训练过的表示相容。只观察到一把好椅子，也不足以验证这个抽取规则的整个范围。


[课程图解] 新起点不再由当前原图提供；同一解码器能否处理规定采样范围，要另外检查。；图中标签与关系：输入来源 同一解码器 输出样本 解码器 参数不变 z1 z2 z3 独立的小起点 样本 1 样本 2 样本 3 哪些起点可用？ 材质、方向可以不同
新起点不再由当前原图提供；同一解码器能否处理规定采样范围，要另外检查。


<a id="n15-e15ac3892ad8"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-e15ac3892ad8)

这种紧凑起点通常叫潜变量。它可以承载外观、形状或布局等变化，但不必每个坐标都对应一个人类命名的属性：改变一个方向，可能同时影响材质与角度。潜变量首先是组织可见结果的内部变量，是否易解释需要另查。


<a id="n15-7ce917ff01a9"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-7ce917ff01a9)

用潜变量模型描述一个可见结果的可能性时，也不能只检查“最像”的一个起点，而要考虑不同起点生成该结果的贡献。训练阶段的编码器帮助推断哪些起点能够解释当前图像；生成阶段则从规定的先验分布抽起点，不再需要一张待编码的原图。


<a id="n15-487d65991f79"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-487d65991f79)

普通自动编码器的重建能力没有自动解决这个新入口问题。VAE 试图把数据解释与可采样的潜在空间放到同一个训练任务里。这还不是“从任意数字都能生成好图”的保证；下一页把需要兼顾的两项检验并排展开。


<a id="n15-states"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-states)


## 画面怎样推进


<a id="n15-b0"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-b0)

真实椅图经编码与解码重建，首先检验已有输入的往返路径。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N15.html?step=b0)


<a id="n15-b1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-b1)

从独立小起点调用同一解码器改变了起点来源，没有原图提供编码。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N15.html?step=b1)


<a id="n15-b2"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-b2)

需要检查规定采样范围里的新起点是否可用，而不是只展示一个好样本。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N15.html?step=b2)


<a id="n15-materials"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-materials)


## 继续阅读与实验


<a id="n15-learning-unit-001"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-learning-unit-001)


### 解码器会重建，新的数字为什么仍可能无效？


<a id="n15-learning-unit-002"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-learning-unit-002)

重建的起点来自输入图像，编码器把它送到有利于还原的位置；无输入生成的起点来自另行规定的分布。两条路虽然共用解码器，访问区域却可能不同。把“能解释训练覆盖的代码”扩大成“任意代码都有效”，多加了一项没有检查的承诺。


<a id="n15-learning-unit-003"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-learning-unit-003)

LAB07 给出真实反例：仅保留随机编码重建目标的 β=0 模型，测试重建 NLL 降到 16.061，但测试编码均值平均离原点约 12.32；标准正态起点主要访问更小尺度。自检：十张重建清楚，能否接受标准先验生成已成功？先把输入图拿走，固定先验起点看同一解码器的输出，才是在检查新的入口。


<a id="n15-learning-unit-004"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-learning-unit-004)

[继续读：重建区域与先验入口的实际差异](https://codingai-lec04.pages.dev/lecture.html#ch03-role-answer)


<a id="n15-chapter-reading"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-chapter-reading)


### [CLS 03 · 潜变量：从重建到生成](https://codingai-lec04.pages.dev/lecture.html#ch03)

按连续正文理解这条方法的训练信号、使用过程与算例；数学与实践在相关问题旁展开。

先看：第3章，从对象和问题开始


<a id="n15-lab07-practice"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-lab07-practice)


### [LAB 07 · 图像 VAE：重建与可用起点](https://codingai-lec04.pages.dev/course/notebooks/6567b1168915486c8de4ab9cfea54a8e.html)

先比较原图与重建，再看同一先验起点。只改变 KL 权重，读取重建与编码区域的权衡。

先看：先看保存结果与读图解释


<a id="n15-lab02-practice"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-lab02-practice)


### [LAB 02 · VAE：ELBO 缺口与重参数化](https://codingai-lec04.pages.dev/course/notebooks/450ef87bdfb149769de691b69da7a52d.html)

先读本册保存结果，再按实现顺序核对一个算例；最后只改一个变量。

先看：先看保存结果与读图解释


<a id="n15-material-1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N15.html#n15-material-1)


### [Variational Autoencoder](https://mit-6s978.github.io/assets/pdfs/lec2_vae.pdf#page=4)

沿真实输入编码与先验采样两条路径读，检查没有原图时起点从哪里来；积分式放在路径理解之后。

先看：第4–23页：潜变量与生成模型

