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


# 图像也能接龙：先缩短表示，再学会组合

王德泉 · Coding with AI · Lecture 04


<a id="n13-9e6f73f2b123"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N13.html#n13-9e6f73f2b123)

图像也可以按顺序生成。先有一部分颜色或图块，再在已生成部分的条件下确定下一部分；自回归没有规定输出一定是文字。困难在于，高分辨率图像包含很多位置，逐个处理会形成很长的序列。


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

一种办法是先学习更紧凑的视觉表示：编码器把图像变成较短的表示，解码器再把表示展开成图像。自回归模型随后学习这些表示怎样组合，生成新的表示序列，再交给解码器。这里其实有两项学习任务：怎样压缩并还原，怎样构造新的合理组合。


[课程图解] 原图先经编码器取得紧凑表示，再由解码器重建；原图与其重建之间才能比较压缩损失。；图中标签与关系：重建：从原图编码，再把表示解码 原图 编码器 紧凑表示 解码器 重建 细纹变粗 压缩损失：只比较原图与它的重建
原图先经编码器取得紧凑表示，再由解码器重建；原图与其重建之间才能比较压缩损失。


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

画面用同一杯子分开检查两种错误。第一项从原图出发，经编码、解码回到重建图；若细纹在这条往返路径里已经变粗，就说明表示环节没有保住这些细节。第二项没有先编码原图，而是由生成器提供新表示；若新的组合把杯柄接断，错误发生在新组合的结构上，不能直接归给前一项压缩损失。图里的小网格用短线把相邻表示的连接关系画出来，错位在解码之前已经可见；右侧照片展示对应的断柄错误类型。这是一种关系示意，并不是说真实模型的每个潜变量都能直接读成一段杯柄。


[课程图解] 新表示中的相邻连接先已错位，同一解码器将对应错误展开为断柄；网格说明关系，照片展示错误类型。；图中标签与关系：生成：先提出新表示，再由同一解码器展开 表示生成器 新表示：相邻块不相容 错位已出现在解码之前 同一解码器 解码后的新组合 杯柄连接断开 网格说明表示的关系；照片展示对应错误类型
新表示中的相邻连接先已错位，同一解码器将对应错误展开为断柄；网格说明关系，照片展示错误类型。


<a id="n13-3912c5238f78"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N13.html#n13-3912c5238f78)

**“解码器能把每个局部都画出来，为什么还会断柄？”** 因为相邻部件还要在边界上接合。能解码某一块，不代表任意两块都相容。这个问题与鞋例相通，只是约束从同色变成了图块之间的连接关系。生成表示的模型仍须学习这些关系。


<a id="n13-5eae193fe38d"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N13.html#n13-5eae193fe38d)

压缩也不是无代价的加速。已经从表示里丢失的文字笔画或纹理，后面即使能补出自然细节，也不能保证那就是原图真实细节。因此，评价一套系统时，先检查重建保留了什么，再检查新表示是否合理，最后检查端到端任务；这样才能知道应改哪个环节。


<a id="n13-20a857a94c43"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N13.html#n13-20a857a94c43)

视觉 token 也不必理解为照片里天然存在的单词；它是人为选择或学习得到的表示单元。N19 会解释离散编号如何查回表示，后面还会看到不先量化成离散编号的生成路线。


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

先回到文字：除了新部分彼此接得上，生成内容还必须接住原任务。下一页看一句很顺却违背照片的描述。


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


## 画面怎样推进


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

图像也能按位置接续，长序列使生成组织与成本成为问题。

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


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

原图编码再解码后的细纹损失属于压缩与表示路径。

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


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

新表示在解码后出现杯柄断接，是新组合的结构问题，不能与原图重建损失混同。

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


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


## 继续阅读与实验


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


### 缩短图像序列后，剩下哪两项学习任务？


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

先声明一个假想表示：32×32 的 RGB 图若逐八位颜色通道生成，共需 3,072 个位置；若被压成 8×8 潜网格、每个位置一个代码，外层序列只有 64 项。数量减少来自表示选择，不能据此直接宣称像素细节保持不变或端到端速度提升了多少。


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

先检查原图→编码→解码：若杯身细纹已丢失，问题在表示往返。再检查新代码→解码：若杯柄接断，可能是代码之间的新组合不相容。自检：每个局部代码都合法，能否保证整张图合法？不能；相邻边界和整体布局仍要由代码联合先验学习，压缩器与生成器承担不同任务。


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

[继续读：视觉表示与代码先验的两条路径](https://codingai-lec04.pages.dev/lecture.html#ch02-tokenizer-prior)


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


### [CLS 02 · 自回归：学习条件与产生序列](https://codingai-lec04.pages.dev/lecture.html#ch02)

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

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


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


### [LAB 01 · 自回归：联合概率、贪心与温度](https://codingai-lec04.pages.dev/course/notebooks/39071d41f84d4621ad69c6140a6dccc9.html)

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

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


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


### [Autoregressive Models](https://mit-6s978.github.io/assets/pdfs/lec3_ar.pdf#page=17)

追踪图像、紧凑表示和新生成序列的接口，分别定位表示丢失与组合错误。

先看：第17–19页与58–65页：图像与生成单元


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


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

看表示学习怎样服务另一套生成过程，不把重建成功当成新组合已经合理。

先看：第75–81页：视觉表示与生成

