提示词不是被"听懂"的,是被"映射"的
你给 Midjourney 输入"一只猫",它给你一只猫。输入"一只毛茸茸的橘猫蹲在窗台上,午后阳光斜照,背景虚化,电影感",它给你一张相当像样的照片。但如果你输入"一只表情忧郁、正在思考存在主义问题的猫"——它大概率会给你一只戴着贝雷帽的怪猫,或者干脆画崩。

这事让我困惑了很久。为什么描述越"有内涵",AI 反而越听不懂?后来我想明白一件事:提示词从来不是被"听懂"的,它是被"映射"的。
目前主流的开源图像生成模型——以 Stable Diffusion 为代表——读你的提示词,靠的是一个叫 CLIP 的文本编码器。它把一句自然语言变成一个向量——一个在高维空间里的坐标点。"一只猫"在某个坐标,"橘猫在窗台上"在另一个坐标,这两个坐标之间的距离,就是模型理解的"语义距离"。
但注意,这个坐标不是人定义的,是 CLIP 在数亿个图文对里"学"出来的。所以它更像一个统计模型对语言的投影,而不是人对语言的理解。这就是为什么提示词工程是一门"谈判"的艺术。
整个生成过程,文本参与的方式比你想的更底层
以 Stable Diffusion 为例,你的提示词是这样参与生成的:
- 提示词被切成最多
77个 token,每个 token 变成一个向量。 - 模型从一张纯噪声图开始,在每一轮去噪时,U-Net 里的交叉注意力层会让图像的每个区域"看"一眼全部文本 token,决定这个区域应该受哪些词的引导。
- 迭代几十步后,噪声被逐步剥离,剩下的就是符合文本条件的图像。
这意味着,提示词不是"开头定个方向",而是全程参与每一次去噪决策。你写的每个词,都会在每一步采样中拉拽像素的走向。
为什么"存在主义猫"会画崩,而"橘猫窗台阳光"不会
因为 CLIP 是在"图像-文本匹配"任务上训练的,训练数据不是教科书,是互联网上的图片和它的替代文本——比如 LAION-5B 里,一张苹果照片配的文字可能是 "a red apple on a wooden table",而不是"果实,色泽鲜艳,象征原罪"。
所以,CLIP 对"可视觉化的词"最敏感。你写"橘猫、窗台、阳光、背景虚化",每个词都对应明确的视觉特征,模型知道该往哪走。你写"存在主义",CLIP 在训练数据里见到的往往是哲学书封面或表情包,特征极不稳定,于是模型只能瞎猜。
| 你写的 | 模型实际读到的 | 结果 |
|---|---|---|
| 一只思考存在主义问题的猫 | 抽象、与猫关联不稳定的视觉特征 | 容易崩 |
| 一只橘猫蹲在窗台上,午后阳光,背景虚化 | 猫+窗台+阳光+虚化,每个词都有视觉落点 | 稳定出图 |
| 赛博朋克风格 | 霓虹灯、雨夜、义体、高对比(与赛博朋克共现的视觉特征) | 稳定出图 |
所以"好的描述=好的图片",准确的说法是:好的描述,让模型在你的意图和训练数据的统计规律之间找到最大重叠。
负面提示词不是"不要",是"反方向"
你可能会问:模型又不是人,它怎么理解"不要"?其实它不理解。负面提示词在采样时做了一件很数学的事:模型会同时计算"按正向提示词走"的去噪方向和"按负面提示词走"的去噪方向,然后把负面方向从正方向里减掉。于是,包含"畸形手指"特征的区域,在每一步都被轻微地推向反方向。这就是为什么它有效。
权重语法也是同理。在 Stable Diffusion WebUI 里写 (cat:1.3),不是模型真的给"猫"加了 1.3 倍权重,而是实现上把 cat 这个 token 在交叉注意力中的影响力放大。效果是:图像里更多区域会朝"猫"的特征靠拢。
这两个技巧的共同本质:它们不是在跟模型说人话,而是在直接操纵条件信号。提示词工程里真正的力量,来自理解条件信号是怎么被计算的。
从"越长越好"到"克制地精准"
我最早以为提示词越长越好,细节越丰富,模型应该画得越准。我甚至写过大段大段的英文描述,结果出来的图像一盘散沙——每个元素都有一点,但整体没有重点。
后来我看到交叉注意力的可视化,才发现问题在哪:生成图片时,每个词都会吸引图像上的一部分区域。描述越长,注意力越分散,每个词分到的"地盘"就越小。你写"一只戴帽子的猫、旁边有本书、背景是森林、远处有山",模型要把有限的注意力分配给所有词,最后哪个都做不完整。
想通这件事之后,我开始做减法。只保留对画面最关键的三到五个视觉元素,把剩余空间留给风格词和画质词。出图稳定性一下子高了很多。这就是我想说的"克制地精准":提示词工程的要点,不是用更多词描述更多细节,而是用有限 token 精准地框住画面核心。
好的描述=好的图片,但天花板就在这
提示词工程有一个绕不过去的天花板:CLIP 对空间关系的理解非常弱。你写"猫在狗的左边",它往往画不出来;你写"三只猫",它可能给你两只;你写"背影",它给你一张正脸。因为 CLIP 学到的更多是"物体是什么",而不是"物体在哪里、有几个"。
这意味着,提示词只适合控制"内容"和"风格",不适合控制"构图"和"精确结构"。真要精确控制,得用 ControlNet 传姿态或深度图,用 LoRA 锁定风格,用参考图约束色彩。提示词在这些工具面前,更像一个总导演,而不是执行导演。
进阶:更强的文本编码器会取代提示词工程吗?
SDXL 改用两个文本编码器(OpenCLIP ViT-bigG 和 CLIP ViT-L),并增加了 pooled text embedding,文本表征质量明显提升,对自然语言描述的响应也更稳定。未来如果换成 T5 或直接让多模态大模型参与条件生成,提示词可能真的会变成"说人话就行"。但至少在今天的 Stable Diffusion 生态里,理解文本编码器的偏好,依然是控制画面的核心技能。
所以,回到开头的问题:为什么好的描述=好的图片?我现在的回答是:因为好的描述最接近模型训练数据的分布。它不是在取悦模型,而是在你的意图和数据的统计规律之间找一个最大重叠。提示词工程是一门沟通的学问,但沟通对象不是人类,是一个用几亿图文对训练出来的统计模型。理解它的偏好,尊重它的边界,你才能把它的能力用到位。而在它做不到的地方——手、空间关系、精确计数——不用硬调提示词,换工具就好。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/188.html