时间步嵌入是数值表示,用于捕获关于离散步骤过程中进展的信息,通常用于按顺序操作的模型,例如扩散模型。这些嵌入将时间步(例如,在扩散过程中 1000 个步骤中的第 10 步)转换为神经网络可以处理的向量。例如,在通过迭代去除噪声来生成图像的扩散模型中,每个时间步对应于模型稍微调整图像的阶段。嵌入告诉模型它处于序列中的“位置”,使其能够根据当前步骤调整其行为。
它们的重要性源于需要根据过程的特定阶段来调节模型的行为。如果没有时间步信息,模型可能会无论处于哪个步骤都应用相同的操作,从而导致次优结果。例如,扩散过程的早期步骤可能需要对结构进行粗略调整,而后期步骤需要细粒度的细节。通过嵌入时间步,模型学会将特定操作与特定阶段关联起来。这通常通过将时间步通过小型神经网络或正弦函数映射到高维向量来实现,然后将该向量注入到模型的层中。例如,在 Stable Diffusion 中,时间步嵌入有助于控制每个去噪步骤中预测的噪声量,确保过程平稳收敛。
从开发者的角度来看,时间步嵌入是实用的,因为它们无需更改架构即可实现动态行为。在实现它们时,您可以将时间步通过嵌入层,并将结果与模型中的中间激活相结合。这种方法轻量且可扩展——无论您是训练一个具有 100 个步骤还是 1000 个步骤的模型,嵌入都会适应。它们还提高了输出的一致性:没有它们,模型可能会在步骤之间产生不稳定的过渡(例如,图像内容的突然变化)。通过明确编码时间上下文,嵌入有助于在序列中保持连贯性,使其成为时间感知模型的基础组件。