流模型和扩散模型用神经网络参数化向量场 utθ(xy)u_t^\theta(x\mid y)。网络接收带噪状态 xRdx\in\mathbb R^d、条件变量 yYy\in\mathcal Y 与时间 t[0,1]t\in[0,1],并输出同形状的预测向量。这里并非只做一次图像到图像的映射:同一网络要在整条概率路径上反复使用,既要在高噪声阶段决定全局布局,也要在接近数据时修补边缘和纹理。低维任务可以把三个输入拼接后送入 MLP,图像和视频则需要同时保留空间结构、扩大感受野,并让条件在不同尺度上持续影响计算。

条件嵌入

时间 tt 告诉网络当前面对的是哪一种去噪难度:噪声很强时,局部像素几乎不可信;噪声较弱时,大体结构已经形成,预测应更关注细节。若只输入一个标量,深层网络必须自己把这条一维坐标展开成许多不同变化速度的响应。傅立叶特征预先提供从低频到高频的时间基函数,使网络既容易表示随 tt 缓慢变化的全局策略,也能表示某些噪声区间内迅速变化的修正。对偶数 dd,可定义

TimeEmb(t)=2d[cos(2ω1t),,cos(2ωd/2t),sin(2ω1t),,sin(2ωd/2t)]T,\mathrm{TimeEmb}(t) = \sqrt{\frac{2}{d}} \left[ \cos(2\omega_1t),\ldots,\cos(2\omega_{d/2}t), \sin(2\omega_1t),\ldots,\sin(2\omega_{d/2}t) \right]^\mathsf T,

其中

ωi=ωmin(ωmaxωmin)i1d/21,i=1,,d/2.\omega_i = \omega_{\min} \left( \frac{\omega_{\max}}{\omega_{\min}} \right)^{\frac{i-1}{d/2-1}}, \qquad i=1,\ldots,d/2.

每一对正弦和余弦都描述一个频率,乘上 2/d\sqrt{2/d} 后整个向量的范数恒为 11,因此改变 tt 主要改变方向而不会任意放大条件幅值。频率范围过窄会让相邻时刻难以区分,过宽则可能引入模型和采样网格都用不到的快速振荡;具体范围仍要配合时间参数化与噪声调度选择。

yraw{0,,N}y_{raw}\in\{0,\ldots,N\} 是离散类别,每个类别只需表达一个整体语义,可以直接学习嵌入向量并与向量场网络一起训练。文本同时包含对象、属性和关系,将整句压成单个向量虽然便宜,却会迫使所有图像位置共享同一份语义摘要;保留长度为 SS 的 token 序列,能让不同图像区域分别查找与自己有关的词。实践中常使用冻结的预训练文本编码器,因为它已经在大规模语料中形成语义空间,生成模型无需从有限图文对中重新学习语言;代价是文本编码器丢失的信息也无法由后续网络恢复。其输出可写为

r=PromptEmbed(yraw)RS×k,y~=rWyRS×d,r=\mathrm{PromptEmbed}(y_{raw})\in\mathbb R^{S\times k}, \qquad \widetilde y=rW_y\in\mathbb R^{S\times d},

其中 WyRk×dW_y\in\mathbb R^{k\times d} 把语言特征转换到生成网络使用的隐藏维度。保留 token 序列时,后面的交叉注意力可以为每个图像 patch 动态组合这些词;全局文本表示可看作 S=1S=1 的特例,计算更省,但细粒度的词—区域对齐能力也更弱。

DiT

图像或潜变量可写成 xRC×H×Wx\in\mathbb R^{C\times H\times W}。逐像素做全局注意力会产生数量巨大的 token,而卷积又难以在浅层直接联系相距很远的区域。DiT 将相邻的 P×PP\times P 像素合成一个 patch,在保留二维布局的同时缩短序列;令 N=(H/P)(W/P)N=(H/P)(W/P)C=CP2C'=CP^2,则

Patchify(x)RN×C.\mathrm{Patchify}(x)\in\mathbb R^{N\times C'}.

经线性投影并加入位置嵌入后,初始 token 为

x~0=Patchify(x)Wx+EposRN×d,\widetilde x_0 = \mathrm{Patchify}(x)W_x+E_{\mathrm{pos}} \in\mathbb R^{N\times d},

其中 WxRC×dW_x\in\mathbb R^{C'\times d}EposRN×dE_{\mathrm{pos}}\in\mathbb R^{N\times d}。自注意力只根据 token 内容计算关系,对输入顺序本身没有偏好;如果不加入位置,交换左上角和右下角的 patch 只会交换输出,网络无法知道物体应当如何排列。位置嵌入为内容相似的 patch 提供不同的空间身份。patch 越大,序列越短且注意力成本越低,但一个 token 内的细节更早被压缩;patch 越小,空间分辨率更好,注意力的 O(N2)O(N^2) 成本也随之上升。

时间嵌入 t~=TimeEmb(t)Rd\widetilde t=\mathrm{TimeEmb}(t)\in\mathbb R^d、文本 token y~RS×d\widetilde y\in\mathbb R^{S\times d} 与图像 token 一起进入 LL 个 DiT block:

x~i+1=DiTBlock(x~i,t~,y~),i=0,,L1.\widetilde x_{i+1} = \mathrm{DiTBlock}(\widetilde x_i,\widetilde t,\widetilde y), \qquad i=0,\ldots,L-1.

最后由输出头映射并反 patchify:

u=Depatchify ⁣(Head(x~L,t~))RC×H×W.u = \mathrm{Depatchify}\!\left( \mathrm{Head}(\widetilde x_L,\widetilde t) \right) \in\mathbb R^{C\times H\times W}.

这里 LL 是网络层数,NN 只表示 patch 数。经过多层交互后,每个 patch 都能汇集远处区域的信息,因此网络可在同一次前向中协调物体形状、遮挡关系和全局构图。不同 DiT 变体对条件的注入方式并不相同:文本是多个有独立含义的 token,常通过 cross-attention 供图像位置按需读取;类别和时间是全局条件,用它们调制所有 token 的归一化统计通常更直接,经典类别条件 DiT 因而可以不使用 cross-attention。

注意力要解决的是“当前 patch 应从哪些位置取信息”。给定查询 QRN×dhQ\in\mathbb R^{N\times d_h}、键和值 K,VRM×dhK,V\in\mathbb R^{M\times d_h},缩放点积注意力为

Attn(Q,K,V)=softmax ⁣(QKTdh)V.\mathrm{Attn}(Q,K,V) = \mathrm{softmax}\!\left( \frac{QK^\mathsf T}{\sqrt{d_h}} \right)V.

设一层有 HaH_a 个头,且 dh=d/Had_h=d/H_a。第 rr 个头使用

WQ(r),WK(r),WV(r)Rd×dh,r=1,,Ha,W_Q^{(r)},W_K^{(r)},W_V^{(r)} \in\mathbb R^{d\times d_h}, \qquad r=1,\ldots,H_a,

并定义

headr(x,z)=Attn ⁣(xWQ(r),zWK(r),zWV(r)).\mathrm{head}_r(x,z) = \mathrm{Attn}\!\left( xW_Q^{(r)},zW_K^{(r)},zW_V^{(r)} \right).

矩阵 QKTQK^\mathsf T 为每个查询与所有键计算内容相似度,Softmax 把它变成总和为 11 的取值权重,除以 dh\sqrt{d_h} 则避免维度增大后点积过大、Softmax 过早饱和。令 z=xz=x 时,patch 从其他 patch 读取结构信息;令 z=y~z=\widetilde y 时,patch 从文本 token 中选择相关语义。多个头使用不同投影,可以同时表示轮廓关系、颜色对应和长距离依赖等不同交互,拼接后再用 WORHadh×dW_O\in\mathbb R^{H_ad_h\times d} 投影回隐藏维度:

MHA(x,z)=Concat(head1,,headHa)WO.\mathrm{MHA}(x,z) = \mathrm{Concat}( \mathrm{head}_1,\ldots,\mathrm{head}_{H_a} )W_O.

时间是整张图共享的全局状态,没有必要像文本一样让每个 patch 单独检索。自适应归一化让时间嵌入直接改变每个通道的工作区间:若 gg 根据 t~\widetilde t 产生缩放、偏移和门控参数,则其中一个子层可写为

AdaNormγ,β(h)=(1+γ)Norm(h)+β,\mathrm{AdaNorm}_{\gamma,\beta}(h) = (1+\gamma)\odot\mathrm{Norm}(h)+\beta,

h=h+αMHA ⁣(AdaNormγ,β(h),AdaNormγ,β(h)).h' = h+\alpha\odot \mathrm{MHA}\!\left( \mathrm{AdaNorm}_{\gamma,\beta}(h), \mathrm{AdaNorm}_{\gamma,\beta}(h) \right).

γ\gamma 改变归一化特征的相对幅度,β\beta 移动其中心,二者让同一组注意力权重在不同噪声时刻处理不同的特征分布;α\alpha 再控制这一子层应对当前表示改动多少。后续的文本交叉注意力和逐 token MLP 通常各自拥有由 t~\widetilde t 生成的调制参数和残差门控。AdaLN-Zero 将残差门控初始化为零,使很深的网络在训练开始时近似恒等映射,梯度可以先沿主干稳定传播,再逐步学会启用各个分支;仅把缩放和偏移初始化为零,残差分支仍可能输出较大值,不能得到这一稳定性。

U-Net

U-Net 是另一类常用的向量场网络。对固定的 y,ty,t,输入状态 xx 与输出 utθ(xy)u_t^\theta(x\mid y) 都保留图像或潜变量的空间布局。去噪既要判断低频的物体布局,也要恢复高频的边缘和纹理,单一分辨率很难经济地兼顾两者;U-Net 用编码—解码结构在不同尺度上分配计算。

典型 U-Net 先用输入卷积提升通道数,再通过多个下采样阶段得到低分辨率、高通道特征,在 bottleneck 处处理全局关系,最后逐级上采样恢复原分辨率。每次下采样都让一个特征单元覆盖更大的原图区域,因而能用较低成本判断物体是否完整、远处区域是否协调;上采样则把这些全局决定重新落实到像素位置。以 256×256256\times256 的 RGB 图像为例,一条简化路径可以写为

xtinputR3×256×256E(xtinput)R512×32×32MDxtoutputR3×256×256.x_t^{input}\in\mathbb R^{3\times256\times256} \longrightarrow \mathcal E(x_t^{input})\in\mathbb R^{512\times32\times32} \longrightarrow \mathcal M \longrightarrow \mathcal D \longrightarrow x_t^{output}\in\mathbb R^{3\times256\times256}.

如果只依赖 bottleneck,压缩过程中丢失的精确边界很难凭空重建。每个编码阶段因而会保留特征,并通过 skip connection 送到匹配分辨率的解码阶段,再以拼接或相加的方式融合。解码器一边使用深层特征决定“画什么”,一边借助浅层特征确定“具体画在哪里”;这类跨编码器—解码器的连接传递不同尺度的信息,不应与 ResNet block 内帮助优化的 residual connection 混为一谈。

现代扩散 U-Net 通常以 ResNet block、步幅卷积或重采样层完成尺度变化,而不是只依赖固定池化,使下采样本身也能针对生成任务学习。时间嵌入会通过加法、scale-shift 归一化或门控注入各个 ResNet block,让高、低分辨率分支都知道当前该恢复哪一层次的信息;类别嵌入可走同一路径,文本 token 则常在若干分辨率层通过 cross-attention 进入。全局注意力通常优先放在低分辨率层,因为此时 token 少、成本低,而高分辨率卷积负责局部细节。U-Net 的多尺度先验在图像上高效且稳定,DiT 的全局交互和规则堆叠则更容易随数据与计算规模扩展;实际系统会根据分辨率、条件长度和算力取舍,也常把卷积、多尺度与 Transformer 组合使用。