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


# 一张照片，怎样自动变成很多道训练题？

王德泉 · Coding with AI · Lecture 04


<a id="n30-06fa42ae9e2b"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N30.html#n30-06fa42ae9e2b)

上一页区分了两件事：训练时，可以拿一张已知照片主动加噪；生成时，却没有一张指定原图等着从噪声中找回来。这一页接着回答：既然没有人逐张手写答案，模型的训练题和批改依据从哪里来？


<a id="n30-8669362a9164"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N30.html#n30-8669362a9164)

从那张红杯照片出发，我们主动加入扰动。扰动较轻时，杯子还容易辨认；扰动较重时，可见的信息更少。同一张照片可以在不同难度、不同扰动下，形成许多道题。难度标记也要送给模型：同样一片模糊颜色，在轻度受损时可能值得保留，在重度受损时则可能主要来自扰动。训练时可以直接抽一个噪声等级来造题，不必每次从头逐步损坏到这一等级。时刻标签必须与实际采用的噪声日程匹配；错贴难度会让模型用错误前提解释输入。


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

关键是把**出题者掌握的信息**与**作答模型可以看到的信息**分开。出题者保留原图，也知道这次加入了什么扰动。这里训练的是预测扰动的模型：它收到的是受损图与难度，给出对扰动的预测。之后，训练过程把预测与已知扰动比较，并用差异调整模型参数。


[课程图解] 原图和已知扰动用于出题、批改；模型的合法输入只有受损图与难度，反馈回到同一套参数。；图中标签与关系：出题 仅供出题 模型输入 受损图 难度 预测器 预测 比较 监督：已知扰动 反馈改参数
原图和已知扰动用于出题、批改；模型的合法输入只有受损图与难度，反馈回到同一套参数。


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

干净照片没有因此变成这次作答的输入。它参与了造题；知道答案的批改者也没有把答案提前塞给模型。**无需逐张人工标注，不等于没有训练答案或目标：这里的目标来自我们已知的造题过程。**许多照片、许多难度下的题目，训练的是同一套模型，而不是每张照片单独配一个模型。


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

**学生：**“既然已经知道加了什么噪声，为什么还要让模型猜？”


<a id="n30-29c27fdc5e38"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N30.html#n30-29c27fdc5e38)

**教师：**“我们知道，是因为这道训练题由我们制造。让模型在不知道这次扰动答案的情况下作答，再给反馈，是为了让它学会从受损输入与难度中提取可用规律。使用时会面对新的状态，出题时保存的答案不会跟着交给它。”


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

**学生：**“把干净图也递进去，训练误差不就小了吗？”


<a id="n30-592bcae324e9"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N30.html#n30-592bcae324e9)

**教师：**“这样改变了任务：模型拿到了正常生成时没有的额外信息。误差小不能替代任务成立；我们要检查的是在合法输入条件下能做什么。”


<a id="n30-38eeb7094030"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N30.html#n30-38eeb7094030)

**学生：**“那一张照片出很多题，是不是就等于有了很多不同的训练照片？”


<a id="n30-6e5569d2b27f"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N30.html#n30-6e5569d2b27f)

**教师：**“增加了这张照片上的扰动与难度组合，却没有凭空增加新的杯型、场景或结构。造题能扩展练习方式，不能自动补足原始数据未覆盖的内容。”


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

这一页先选“预测扰动”把监督关系讲清。后面还会比较预测干净图或其他变化信息的做法；不要把这里的一种训练表达当成所有扩散模型只能使用的答案形式。同样，训练时拿到可批改的目标，不等于模型能从任意严重受损输入精确找回唯一原图。信息丢失后，不同原图可能都与眼前输入相容。


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

现在可以用一句话串起图中的回路：**我们知道怎样损坏一张图，所以知道怎样给预测提供反馈；模型学会的是在规定输入下作预测，反馈更新的仍是同一套参数。**


<a id="n30-01fa976f931f"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N30.html#n30-01fa976f931f)

**接下来：**如果受损图容得下多个合理来处，会不会最后只得到它们的模糊平均？下一页用杯柄的两个可能位置区分“预测中要处理的不确定性”与“最后交付一个完整候选”。再下一页会把预测器与更新规则接起来，看到一次生成怎样由多次更新组成。


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


## 画面怎样推进


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

一张照片可形成不同扰动和难度的许多训练题，但没有新增真实场景。

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


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

模型输入只有受损图与难度；原图和已知扰动留在出题、批改端。

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


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

预测扰动与已知扰动比较后调整同一模型参数，无人工逐图标签仍有训练目标。

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


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


## 继续阅读与实验


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


## 无人工标注的训练题，答案从哪里来？


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

把图缩成一个数：x₀=2，累计信号系数0.64，抽到ε=−0.5。受损值是xₜ=0.8×2+0.6×(−0.5)=1.3。预测器只读1.3与时间，不读2或−0.5；训练过程保存ε来批改。若预测−0.3，噪声平方误差为(−0.3+0.5)²=0.04，误差用于更新共享参数。


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

由预测反推的干净估计为(1.3+0.18)/0.8=1.85，仍不等于原值2。已知造题规则提供了监督答案，没有让受损观察变成可唯一求逆的方程。换不同照片、时间和噪声，是同一网络反复学习的不同练习题。


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

接着读：[这一完整一维算例](https://codingai-lec04.pages.dev/lecture.html#ch05-one-dimensional)与[输入和监督的分界](https://codingai-lec04.pages.dev/lecture.html#ch05-training-question)。


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


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

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

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


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


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

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

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


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


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

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

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


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


### [Diffusion Models](https://mit-6s978.github.io/assets/pdfs/lec5_diffusion.pdf)

把原图、受损图、难度与扰动目标对应到训练算法，检查目标是否误入作答输入。

先看：第21–23、44–45、55–57页


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


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

比较解析最优预测、零预测和偏置预测，检查训练目标从何而来；这里不训练网络。

先看：第2节“降低噪声时，相同xₜ会提供更多还是更少信息？”

