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


# 文字怎样进入每一步预测？CFG

王德泉 · Coding with AI · Lecture 04


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

文字不只是生成结束后的评分条件。在同一个受损状态和同一个时间上，同一预测网络分别作出有条件和空条件两份预测；CFG调节它们的差异，再把组合后的预测交给更新规则。下一步仍然重复这件事。因此，文字可以沿生成过程持续改变走向。


[课程图解] 同一状态与难度：条件预测、空条件预测先组合，再由采样器更新。；图中标签与关系：CFG：同一步，比较有条件与空条件预测 同一受损状态 xₜ 同一难度 t 有条件预测 εc = εθ(xₜ, t, c) 空条件预测 ε∅ = εθ(xₜ, t, ∅) 文字条件 c 空条件 ∅ 按预测差异合并 ε = ε∅ + g (εc − ε∅) 采样更新规则 下一状态 xₛ 常规 CFG：每步两份预测 可合批；延迟仍须实际测量 继续下一步，并更新难度
同一状态与难度：条件预测、空条件预测先组合，再由采样器更新。


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

主画布最后一态给出本轮实际运行的 g=1/4/8 三张结果：提示均为 `A red ceramic mug on a wooden table beside a window, soft daylight, still life photograph`，使用相同 seed 11 和已保存初始 latent，固定模型、步数、尺寸和采样规则，只改变引导强度。比较杯身、把手、材质与窗边构图的实际变化；这一个 seed 不能证明“数值越大越好”，也不能估计候选分布的多样性。


[课程图解] 补充教学构造。课堂构造对照：左右关系是可直接检查的条件；这不是CFG参数实测。；图中标签与关系：满足条件吗？ 条件：红杯在梨左边 满足关系 左右错位
补充教学构造。课堂构造对照：左右关系是可直接检查的条件；这不是CFG参数实测。


[课程图解] 同提示、同初始 latent 的 g=1/4/8 真实单变量对照；一个 seed 不构成单调质量或多样性结论。；图中标签与关系：同一初始噪声，只改变引导强度 SD 1.5 · 本轮实测 Prompt: A red ceramic mug on a wooden table beside a window, soft daylight, still life photograph 双分支 CFG 的每一步 ε = ε∅ + g (εc − ε∅) →  更新规则  →  下一状态  ↺ g = 1 · 普通条件预测 g = 4 · 双分支 CFG g = 8 · 双分支 CFG 观察杯身、把手与窗边构图；这一个样本不能证明“引导越大越好”。 固定：seed 11 · 相同初始 latent · 20 步 · 512 × 512 · DDIM η = 0 · 空负提示
同提示、同初始 latent 的 g=1/4/8 真实单变量对照；一个 seed 不构成单调质量或多样性结论。


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

说明另附“红杯在梨左边”的构造图，帮助分清三种评价对象：条件服从检查图与要求之间的关系；形体自然度检查图内对象是否成立；多样性检查一批候选是否提供不同的合法答案。左右错位、断柄、近重复分别暴露不同问题。这些图是教学构造，不能冒充上面真实 CFG 对照的输出；三种评价也不能由某一项提升代替。它们与 N22 的批量评价呼应，此处新增的是怎样把文字条件影响加入每一步更新。


[课程图解] 补充教学构造。关系成立，杯柄仍可能断开。条件服从与形体分开判断。；图中标签与关系：形体成立吗？ 关系成立 关系不成立 位置关系对，杯柄却没有接上
补充教学构造。关系成立，杯柄仍可能断开。条件服从与形体分开判断。


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

Classifier-Free Guidance（CFG）的直觉，是比较同一状态下“给了条件”与“没有这项条件”两种预测，再调节二者差异对更新的影响。空条件分支需要有相应训练依据，不能在使用时任意把一个没这样训练过的模型输入清空，就认定得到了可靠的无条件预测。


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

一种常用记法是“空条件预测 + g ×（有条件预测 − 空条件预测）”。按这套约定，g=0 使用空条件预测，g=1 回到有条件预测，g>1 放大条件差异；有些材料采用偏移后的参数命名，读数前要先对齐公式。这里改变的是预测如何被组合，再经采样规则改变生成倾向，不是给最终图片贴一个“更听话”的标签。


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

**“把引导强度一直加大，是不是就能同时更准确、更好看？”** 不保证。强化某个方向可能提高条件显著性，也可能损害细节或减少候选变化。即使六张都把红杯放对位置，其中五张近重复，对探索任务仍有代价。应该固定提示、采样数量和其他条件，分别记录守约、形体、覆盖以及计算成本。


[课程图解] 补充教学构造。同样守约的候选，也可能近重复。教学示意不替代样本评价。；图中标签与关系：还有不同的合法答案吗？ 条件 形体 候选 A 近重复 A 另一合法杯形 两张图，还是同一类答案 覆盖增加
补充教学构造。同样守约的候选，也可能近重复。教学示意不替代样本评价。


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

常规双分支 CFG 在一个更新位置需要有条件与空条件两份预测；可以批量计算，仍不意味着工作量免费。速度和质量的取舍应在完整运行中衡量。本页一个 seed 的三张真实图没有测出最优引导强度或一般速度收益；中间状态的机制示意也不是这三次运行保存的推理轨迹。


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

下一页再换一个改进位置：如果每次预测处理的表示更紧凑，或网络骨干更易扩展，系统会怎样改变？


<a id="n34-10f23a0889c9"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N34.html#n34-10f23a0889c9)


## 与实际pipeline的对应


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

LAB06 固定 SD 1.5，模型 commit `451f4fe16113bff5a5d2269ed5ad43b0592e9a14`，Diffusers `0.35.1`，CPU bfloat16。三次运行均为 DDIM、20 步、`eta=0`、512×512、空负提示，使用相同 seed 11 和同一已保存初始 latent。此 pipeline 在 `guidance_scale≤1` 时跳过双分支 CFG，但仍向模型输入文字条件；所以界面 g=1 是普通条件预测，不能把 g=0 按钮解释成上述公式的空条件预测。实际外推对照为 g=1/4/8：g=4/8 每一步组合两份预测，再更新状态。保存图分别为 `txt-cfg-1-seed-11.png`、`txt-baseline-seed-11.png`（g=4）、`txt-cfg-8-seed-11.png`；运行设置和可选重算入口见 LAB06。


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


## 画面怎样推进


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

同一受损状态 x_t 和同一难度 t 同时进入同一网络的有条件与空条件预测；文字 c 在预测端进入。空条件能力来自训练时的条件丢弃，不是把任意模型的提示删掉就自然成立。

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


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

两份预测按 epsilon_empty + g (epsilon_c - epsilon_empty) 合并，再交给采样器更新到下一状态；下一步重复。此约定 g=0 为空条件，g=1 为有条件，g>1 为外推。常规 CFG 每步计算两份预测，可合批，实际延迟仍需测量。

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


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

同一提示、seed 11 和已保存初始 latent，固定 SD 1.5、20 步、512×512、DDIM η=0 与空负提示，仅比较 g=1/4/8。g=1 在本实现中仍使用文字条件，但跳过双分支 CFG；g=4/8 在每一步组合两份预测再更新。三张是本轮实际生成结果，用于观察颜色、材质、杯柄与构图差异；单个 seed 不支持“强度越大越好”，也不能据此估计多样性分布。

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


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


## 继续阅读与实验


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


## 一次CFG组合怎样算，真实图又该怎样读？


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

同一状态、同一时间下，令空条件预测εᵤ=(0.2,−0.1)，文本条件预测ε꜀=(0.4,−0.2)。差为(0.2,−0.1)，按εCFG=εᵤ+s(ε꜀−εᵤ)，s=1得到(0.4,−0.2)，s=4得到(1.0,−0.5)。这是可手算的教学张量，不是实测中间值；组合经scheduler更新当前潜变量，下一步重新预测，不是混合两张终图。


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

真实图阵每行固定提示、种子和初始latent，列为CFG1/4/8。先横读一行的杯形、位置与构图，再纵读随机起点的差别：seed37行在CFG8出现额外较大红色容器。这个反例不能移到CFG4，也不能因红色更显著就判全部条件更正确。


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

数学公式s=0取空条件；本实验pipeline在guidance_scale≤1时却关闭双分支、仍输入文字。软件开关需另核对。要继续学，先算预测组合，再读保存图中对象与关系，最后检查额外计算量。


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

接着读：[算例及真实张量的区分](https://codingai-lec04.pages.dev/lecture.html#ch05-cfg-example)、[真实图阵](https://codingai-lec04.pages.dev/lecture.html#ch05-cfg-results)与[逐行读图](https://codingai-lec04.pages.dev/lecture.html#ch05-u0036)。


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


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

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

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


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


### [LAB 06 · 真实文生图与编辑](https://codingai-lec04.pages.dev/course/notebooks/aa278b6be88e4114bdfea0de5b8aee33.html#block-16f70debaa8f4a2c8cb0cb3d614bfa8a)

先看同起点的真实保存图，再选择一个参数重算；失败结果与全部条件一起保留。

先看：CFG 同起点图阵与组合机制


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


### [LAB06 · 实际文生图与编辑](https://codingai-lec04.pages.dev/course/experiments/image-generation.html)

先看保存图阵、输入和参数，再只改一个变量。

先看：文生图单变量对照；img2img与固定遮罩编辑


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


### [LAB06 · Deepnote与可选重算](https://deepnote.com/project/6f83a923-d155-47be-be58-680db701ff7f/notebook/aa278b6be88e4114bdfea0de5b8aee33)

读取实际运行范围，下载同源Notebook并选择是否重算。

先看：先看保存结果与运行记录


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


### [Generative Models (part 2)](https://cs231n.stanford.edu/slides/2026/lecture_14.pdf)

先对齐引导公式的参数约定，再区分条件服从、样本质量和多样性；不直接比较不同记法下的刻度。

先看：Classifier-Free Guidance与生成评价相关页

