Negative Prompt 为什么能影响生成结果?
简化版
Negative Prompt 不是生成后的过滤规则,而是扩散采样时的一组对照条件。在 Classifier-Free Guidance 中,模型分别计算正向条件和负向条件下的去噪预测,再沿二者差值强化正向语义、远离负向语义。
它只能软性改变概率分布,不能保证某个元素绝不出现。负向词过多、互相冲突或 Guidance Scale 过高,可能损害构图、颜色和细节。对违法内容、品牌规范等硬约束,仍要配合输入审核、输出检测和人工复核。
“不要出现某物”对扩散模型而言通常是方向引导,不是布尔约束。
详细版
以噪声预测模型为例,CFG 可写成:
ε_guided = ε_neg + w × (ε_pos - ε_neg)
ε_pos 是正向 Prompt 条件下的预测,ε_neg 是负向 Prompt 条件下的预测,w 是 Guidance Scale。传统 unconditional CFG 中,ε_neg 使用空条件;提供 Negative Prompt 后,空条件被替换成“不希望出现的概念”。
例如正向条件是“棚拍白色运动鞋”,负向条件是“文字、水印、低清晰度”。采样轨迹会倾向与前者相关、远离后者相关的方向,但如果训练数据中“运动鞋”和品牌文字高度共现,负向词并不能提供硬保证。
| 用法 | 可能收益 | 典型风险 |
|---|---|---|
| 抑制内容 | 减少水印、额外人物等 | 概念纠缠导致主体也受损 |
| 抑制风格 | 降低卡通、过饱和倾向 | 画面变平、审美下降 |
| 抑制质量缺陷 | 减少模糊、低质量先验 | 抽象质量词效果不稳定 |
| 固定模板长列表 | 快速复用经验 | 与新模型、新场景冲突 |
面试中应强调:负向提示效果依赖文本编码器、模型训练数据、采样器、CFG 强度和正向 Prompt,必须用目标域样本做 A/B,而不能把社区“万能负面词”当成通用最佳实践。
完整版教学
1. Negative Prompt 位于生成链路的哪里
文本编码器先把正向和负向文本分别编码,去噪网络在每个时间步通常需要两次条件预测,再由 CFG 合成输出:
positive text -> text encoder -> c_pos --┐
├-> denoiser -> CFG combine -> scheduler
negative text -> text encoder -> c_neg --┘
因此它从第一步到最后一步都可能影响生成轨迹,而不是图片完成后再擦除对象。
2. CFG 差分为什么产生“远离”效果
差向量 ε_pos - ε_neg 表示两种条件对当前 latent 去噪方向的相对影响。w>1 会放大这一差异,使样本更符合正向条件且相对不符合负向条件。
当负向条件为空时,它是常规 CFG;当负向条件包含“blurry”时,基准方向变为模型对模糊图像的预测,差分就可能把轨迹推向更清晰的区域。
3. 为什么它不是逻辑上的 NOT
文本嵌入是连续向量,概念在训练数据中也高度相关。模型没有执行 if object == watermark: reject,而是在高维分布上调整概率。
例如“没有帽子的人”可能仍生成帽子,因为否定语法在图文训练数据中监督较弱;写入负向条件“hat”通常比完整否定句更直接,但仍不能保证零出现率。
需要 100% 满足的产品约束,应由检测、重采样、局部修复或人工审核完成,不能只依赖 Negative Prompt。
4. Guidance Scale 如何放大收益与副作用
若 w=1,输出接近正向条件预测;增大 w 会强化正负差分。过高时,模型可能被推离训练分布,出现过饱和、边缘发硬、纹理重复或构图僵化。
假设目标域在 w=5、7、9、12 做测试,不能只选 CLIP 分数最高者,还应统计伪影率和审美偏好。负向词增多后,最佳 w 也可能变化。
5. 为什么长负向词列表可能适得其反
文本编码器有上下文长度限制,长列表会截断尾部词;大量概念还会争夺注意力,导致单个约束变弱。互相矛盾的词,如同时排斥“soft light”和“hard light”,会让方向难以解释。
更可靠的做法是先从 3~8 个与已观察失败直接相关的概念开始,每增加一组都做消融测试。模型版本变化后要重新评测旧模板。
| 策略 | 可解释性 | 适用情况 |
|---|---|---|
| 单个概念 | 最高,容易做因果对比 | 定位某一种明确缺陷 |
| 短列表 | 较高,可逐项消融 | 已知的少量高频失败 |
| 通用长模板 | 较低,概念容易冲突 | 仅适合作为待验证起点 |
6. 质量词为什么有时有效、有时无效
“low quality”“bad anatomy”等词来自训练数据标签和社区生成习惯。若基础模型见过这些标签并建立了对应视觉分布,它们可能有效;若新模型的标注方式、文本编码器或训练策略改变,词义可能弱化。
同样的词在摄影、人像、动漫和产品图中作用不同。应把它们看成经验先验,而非模型 API 的保留关键字。
7. 与 Prompt 权重和分步 Guidance 的关系
部分 Pipeline 支持对 Negative Prompt 中的概念加权,或只在采样早期/后期启用 CFG。早期步骤更影响构图和全局语义,后期更影响纹理与局部细节。
early steps: 人数、主体、布局
middle steps: 属性、服饰、背景
late steps: 纹理、锐度、小型伪影
若想抑制额外人物,可重点关注早中期;只在末期增加负向强度通常难以改变已经形成的布局。
8. Negative Prompt 不能替代安全系统
负向词可能减少某类不良内容,但用户可以改写、模型可能误解,生成结果也可能漏检。生产安全链路至少包括:
Prompt 风险分类
-> 策略决定允许/拒绝/降级
-> 生成时软引导
-> 图像安全分类与 OCR
-> 高风险样本人工审核或拦截
审计日志应记录策略版本、模型版本和检测结果,但避免保存不必要的敏感原图。
9. 如何建立可重复的 A/B 评测
固定基础模型、采样器、步数、正向 Prompt 和初始 latent,只改变负向条件。对每个 Prompt 使用多个种子,避免偶然样本误导结论。
例如 200 个目标域 Prompt × 4 个种子,共 800 对样本,统计:目标缺陷出现率、主体保真率、CLIP 对齐、人类偏好与安全漏检率。还应单独观察肤色、年龄和文化元素切片,防止某些负向词引入偏见。
10. 排查“负向词不生效”的顺序
- 确认 Pipeline 是否真的把 negative embeddings 传给 CFG。
- 检查 Guidance Scale 是否大于有效阈值。
- 检查文本是否被 Tokenizer 截断。
- 用单个明确概念替换长列表做消融。
- 检查目标概念是否与正向主体强耦合。
- 更换多个种子,区分概率变化与单样本失败。
- 检查模型是否使用不同的 Guidance 或文本条件机制。
11. 常见误区与追问
- 误区:Negative Prompt 是硬性黑名单。 它只改变采样概率,不能提供合规保证。
- 误区:负向词越多越干净。 长列表会截断、冲突并损伤正向语义。
- 误区:所有模型都认同一套“万能负面词”。 效果取决于训练标签、文本编码器和模型版本。
- 误区:CFG 越高,负向约束越强且无副作用。 过高 CFG 会产生过饱和和伪影。
- 误区:同一个种子对比一张图就足够。 需要多 Prompt、多种子和成对统计。
- 追问:空 Negative Prompt 等于什么? 通常退化为以空条件作为基准的常规 CFG。
- 追问:怎样禁止水印? 负向引导之外,还需 OCR/水印检测、重采样或局部修复。
12. 加强记忆
- 公式:
ε_neg + w(ε_pos-ε_neg)。 - 本质:连续条件差分,不是逻辑 NOT。
- 权衡:更强 Guidance 可能更对齐,也可能更失真。
- 方法:短列表、逐项消融、多种子 A/B。
- 边界:硬安全约束必须由模型外检测和审核兜底。