注意力机制在做什么
早期网络的视野是被结构写死的:卷积只看邻近像素,循环网络一步一步读、读完就忘。注意力机制把这个限制拆了,每个 token 都可以看向其余所有 token,自己决定对谁上心。自注意力是「一段序列看自己」的那种,提示词内部的指代关系就是这么解出来的。
整个把戏就这么多,而它能解释一类你早就遇到过的翻车。你要「蓝色天鹅绒球体上的红色玻璃立方体」,出来的却是蓝色立方体。渲染没出问题,是「红色」这个词的影响力摊到了两个物体上,没能落在其中一个身上。这时候把句子拆简单,比把「红色」再重复三遍有效得多。
图像与视频模型为什么换成了 Transformer
SD 1.5 和 SDXL 的去噪主干是卷积 U-Net。现在的旗舰图像与视频模型换成了扩散 Transformer,一般简写成 DiT。换的理由有三条。
一是可预测的规模效应。Transformer 的质量随参数、数据、算力稳定上涨,一次训练就从赌博变成了算预算。二是视频。把一段片子按空间和时间切块,每块算一个 token,视频就退化成「序列更长的文本问题」。三是文本条件:Transformer 模型能吃下长得多的文本嵌入,所以现在的模型能接一整段提示词,而老模型实际上写到二十几个词就被截断了。
这件事怎么改变你写提示词
- 完整句子胜过关键词堆。 老模型靠 CLIP 文本编码器,token 窗口很短,所以堆 tag 是当年最划算的写法。DiT 模型是真的在读语言,正常的描述句更走得进去。
- 但长度仍有天花板。 长提示词会稀释注意力,大概过了三四个从句,多出来的指令就开始被悄悄丢掉。
- 顺序仍然有影响,只是没那么霸道。 靠前的 token 权重更高,把最不愿意丢的东西放最前面。
- 重复不等于强调。 把「电影感」写三遍基本只是在浪费 token。要加强就用权重语法,或者用模型提供的反向提示词。
哪些锅不该架构背
有相当一部分失败和架构无关。数不清物体个数、拼不对长单词、五秒里保不住同一张脸,这些是某个具体权重和它训练数据的问题,不是 Transformer 这个结构的问题。一个从没见过好手部的模型,你把提示词结构调到天上去也变不出好手。
真正有用的是拿它来分诊:属性串味、从句被丢、构图漂移属于注意力问题,把提示词写短写干净就有救;模型压根不知道这个概念属于数据问题,得换模型、给参考图,或者去做微调。先把一次坏结果扔进这两个桶里的一个,能省掉大量白跑的生成。