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


# 从恢复图片，到学习一群样本怎样移动

王德泉 · Coding with AI · Lecture 04


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

上一页把变化信息作为一种预测对象。现在抽取一个噪声起点和一个数据端点，在它们之间构造中间状态，并为中间状态规定一个监督方向。再换另一对端点，继续造题。训练中的共享预测器只根据当前状态和时间作答，而不是每次都知道那一对完整端点。


<a id="n37-706aa54e723f"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N37.html#n37-706aa54e723f)

[Flow Matching](https://arxiv.org/abs/2210.02747)由 Yaron Lipman 等作者提出，用可构造的概率路径提供向量场监督，使模型学习将简单分布搬运到数据分布。生成时从新的起点出发，依照学到的方向场求解运动，而不是重放某一份训练配对。课堂用端点与箭头说明这两种关系；平面上两条图线接近，也不表示高维图像状态必然相同。


[课程图解] 多份端点配对共同训练一个方向场；虚线描述造题关系，未声明采样路线已笔直。；图中标签与关系：噪声 A 中间训练状态 数据 A 监督方向 噪声 B 中间训练状态 数据 B 监督方向 共同学习一个预测器 当前表示 → 模型预测 → 更新规则 → 下一状态 路径与训练配对
多份端点配对共同训练一个方向场；虚线描述造题关系，未声明采样路线已笔直。


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

**“训练配对都画成直线，生成怎么还可能拐弯？”** 每份训练题有自己的起点和端点，但模型要把许多题共同压进一个函数。同一个状态附近可能有不同的监督方向；学到的是综合这些关系的场。沿这个场更新后，当前位置变了，下一次方向也可能变。直线描述的是造题方式，不是已经验证过的采样轨迹。


<a id="n37-049df33f7b0a"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N37.html#n37-049df33f7b0a)

[Rectified Flow](https://arxiv.org/abs/2209.03003)由 Xingchao Liu、Chengyue Gong 与 Qiang Liu 提出，研究沿直线插值学习运输，并通过 reflow 继续调整配对。可以先让当前模型从起点生成一个端点，把这次产生的起终点作为新训练对，再学习相应路径。这里新配对来自模型自己的运输关系，不是随意把图上的弯箭头擦直。重新训练可能改善路径的直线性，也可能继承当前模型的遗漏与偏差，仍需评价生成分布。产生这些端点和再次训练本身也有计算成本，少步使用的收益应与准备成本分开报告。


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

名字里有 Flow 的工作也并不全是同一种方法。传统 normalizing flow 通常通过可逆变换与相应密度计算建立似然；连续 flow 使用随时间变化的动力过程；Flow Matching 是学习这种方向场的一种训练方法。都涉及分布变换，却不因此共享相同的结构约束、目标或计算方式。


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

若目标是更少步数，路径容易求解是一项帮助，但仍不能把大步数值误差忽略。下一页进一步改变学习关系，让网络专门练习跨过一段，而不只在当前位置给一个短方向。


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


## 同一生成循环，本页改变路径与训练配对

当前表示 → 模型预测 → 更新规则 → 下一状态 路径与训练配对


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


## 画面怎样推进


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

一份端点配对构造中间状态和监督方向，配对线不是采样记录。

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


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

多份训练关系共享同一预测器；综合得到的方向场不必沿每份配对直线移动。

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


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

Reflow用当前模型生成端点构成新配对再训练，路径改善与继承偏差都需检验。

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


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


## 继续阅读与实验


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


## 直线造题，为什么能学出转弯的生成路线？


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

本章约定数据在t=0、噪声在t=1。教学配对取数据x=2、噪声ε=−1，则zₜ=(1−t)x+tε；在t=0.4处得到0.8，监督速度ε−x=−3。这份训练题知道两个端点，网络却只读当前值0.8与时间，学习对局部方向作预测。


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

很多配对会经过同一位置附近，却给出不同方向；平方误差学习的是综合后的条件平均场。状态移动后，附近可能来处变了，下一次方向也会变，所以单份直线监督不保证生成直线。reflow用现有模型运输的起终点重新造题，还需重新训练并检查是否继承遗漏。


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

接着读：[从端点配对到共享方向场](https://codingai-lec04.pages.dev/lecture.html#ch05-flow)。


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


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

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

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


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


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

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

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


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


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

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

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


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


### [Flow Matching for Generative Modeling](https://arxiv.org/abs/2210.02747)

确认概率路径、条件方向监督和学到的场之间的关系。

先看：第3节


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


### [Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow](https://arxiv.org/abs/2209.03003)

追踪新配对来自哪次模型运输；解释配对直线为什么不等于实际采样直线。

先看：方法与Reflow部分


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


### [LAB 05｜条件均值、噪声预测与流积分](https://deepnote.com/project/6f83a923-d155-47be-be58-680db701ff7f/notebook/be6db259db4f48478c7481ab51129971)

以解析高斯方向场亲手检查时间方向；先看约定的数据端和噪声端，勿机械照搬加减号。

先看：第3节

