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


# 自回归与扩散，可以在同一张图里合作

王德泉 · Coding with AI · Lecture 04


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

前面把自回归与扩散分开讲，是为了看清各自组织生成的方式，并不意味着一个系统只能选一个标签。现在一张图已经有若干已知区域，另一些区域待补。外层先决定本轮生成哪个位置或哪组位置；这一步组织的是依赖关系与生成次序。


<a id="n40-18315c3b5010"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N40.html#n40-18315c3b5010)

对当前黄色位置，内层再回答“给这里什么值”。这个值可以是一段连续视觉表示，由一个小型扩散过程在已知内容的条件下逐步生成。内层结束后，把结果写回原来的位置；它从未知变为已知，下一轮便可以用它作为条件。右侧局部的起点、中间态和终点始终属于同一位置，不是在图中换了三个不同区域。


[课程图解] 内层生成的终点写回同一待补位置，成为外层下一轮的已知条件。；图中标签与关系：外层：选择待补位置 已知块保留 内层：生成同一裁区 起点 中间 终点 写回同一位置 当前表示 → 模型预测 → 更新规则 → 下一状态 外层位置 · 内层取值
内层生成的终点写回同一待补位置，成为外层下一轮的已知条件。


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

**“内层用了扩散，外层还算自回归吗？”** 可以，因为两者负责不同层次。外层利用已经确定的内容，组织尚未确定部分的条件生成；内层表达当前连续变量的条件分布。自回归不必限定成“每次在离散词表里挑一个整数”，也不必总按从左到右的顺序逐个像素推进。


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

MAR 所属的 [Autoregressive Image Generation without Vector Quantization](https://arxiv.org/abs/2406.11838v3) 研究，用 diffusion loss 建模连续 token 的条件分布，并探索生成次序。它让“外层如何分解联合生成”和“每个条件分布怎样表达”成为可以分别选择的部件。课堂用一个区域突出分工，并不规定真实系统每轮只能补一块。


<a id="n40-0c7b51a4e32d"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N40.html#n40-0c7b51a4e32d)

**“既然内层很强，外层次序就不重要了吧？”** 仍重要。当前块能够利用哪些上下文，由外层的已知集合决定；已经写回的结果也会影响后续。若先前内容出了错，内层面对的就是带偏差的条件。另一方面，内层要调用多少次也会进入总成本，不能只数外层轮数就判断系统快慢。


<a id="n40-114d2a65ffd4"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N40.html#n40-114d2a65ffd4)

这把我们带到编辑任务的关键边界：新生成的一块不只要自己像，还要与整张图接得上。下一页继续问：哪里允许改变，哪里必须保持？


<a id="n40-process-key"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N40.html#n40-process-key)


## 同一生成循环，本页改变外层位置 · 内层取值

当前表示 → 模型预测 → 更新规则 → 下一状态 外层位置 · 内层取值


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


## 画面怎样推进


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

外层根据已知集合决定本轮待补位置，组织生成依赖。

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


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

内层扩散为同一位置的连续表示取值，仍以外层提供的内容为条件。

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


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

生成结果写回原位置并成为已知内容，供下一轮使用。

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


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


## 继续阅读与实验


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


## 同一位置里用了扩散，外层还可以自回归吗？


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

设图中位置1和3已知，位置2待填。外层把已知内容作为条件；内层从噪声开始，连续几次更新位置2的视觉表示，结束后再写回位置2。内层的起点、中间态、终点都属于同一个位置，不能看成又生成了三个新位置。


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

MAR展示了这种分工：外层组织哪些内容可见与如何接续，内层表达当前连续token的条件分布。若一个简单计划有K轮、每轮内层N次预测，总量就含K×N份工作；真实系统还要计算批量和分组策略。强内层不会取消外层条件中的错误与成本。


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

接着读：[外层依赖与内层分布的合作](https://codingai-lec04.pages.dev/lecture.html#ch05-composition)。


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


### [CLS 05 · 扩散：训练、采样与少步生成](https://codingai-lec04.pages.dev/lecture.html#ch05)

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

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


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


### [LAB 09 · 学得去噪器与完整采样](https://codingai-lec04.pages.dev/course/notebooks/e6fcbdfe3ca2418c9ed09344b4ae2b33.html)

固定初始噪声，仅改采样步数；把网络近似误差与数值步进误差分开。

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


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


### [LAB 05 · 扩散的条件均值与流积分](https://codingai-lec04.pages.dev/course/notebooks/be6db259db4f48478c7481ab51129971.html)

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

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


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


### [Autoregressive Image Generation without Vector Quantization](https://arxiv.org/abs/2406.11838v3)

查连续token的diffusion loss怎样接进外层生成关系，区分取值方式、生成次序与总调用成本。

先看：第3节与模型图

