扩散模型预测噪声、x0、velocity的不同训练目标之间有什么区别和侧重?

酥酥 发布于 16 天前 36 次阅读


扩散模型预测噪声、x0、velocity的不同训练目标之间有什么区别和侧重?

一、Diffusers中的代码实现是怎样的?

Diffusers中,官方其实已经给出了三种不同目标的实现,通过noise_scheduler.config.prediction_type来控制预测什么目标。

				
					# 1. 前向加噪
noise = torch.randn_like(latents)
noisy_latents = noise_scheduler.add_noise(latents, noise, timesteps)
 
# 2. 网络预测
model_pred = unet(noisy_latents, timesteps, encoder_hidden_states).sample
 
# 3. 根据prediction_type选择target
# epsilon-prediction
if noise_scheduler.config.prediction_type == "epsilon":
    target = noise
elif noise_scheduler.config.prediction_type == "v_prediction":
    # velocity-prediction
    target = noise_scheduler.get_velocity(latents, noise, timesteps)
else:
    # x0-prediction
    target = latents 
 
# 4. 计算MSE loss
loss = F.mse_loss(model_pred.float(), target.float(), reduction="mean")
				
			

二、数学视角上看epsilon、x0、velocity目标区别

这三者在数学上通过可逆线性变换可以互相变换,但在标准MSE loss下,它们实际上对应了不同的timestep加权策略

三、现有方法对于优化目标的insight:什么时候我们会考虑抛弃传统-prediction?

近年来,也开始浮现很多工作开始质疑并摈弃DDPM中-prediction的默认设定,认为它可能不是最优的优化目标,不同优化目标的侧重在具体的任务应用中,效应尤为明显。具体来说,我们有:

  • JiT(Just image Transformer)
  • • ConsisLoRA

(一)JiT(Just image Transformer):回归x0-prediction

JiT是Kaiming团队的近期工作,文章指出:经典的预测噪声(即-prediction)是在高维空间中寻找一个离散的、非manifold的量;而预测是将数据映射到低维的data manifold上。于是,JiT提出了一种在pixel-space直接预测image pixels的DiT架构。

文章证明的insight在于:对于Transformer架构,直接预测是一个更自然、更简单的几何任务。他们证明了在大patch尺寸下,ε-prediction也能够训练出极强的生成模型。

个人感觉JiT的贡献在于揭示了回归到pixel-space diffusion上的好处和可能性,这一点和NVIDIA的近期工作PixelDiT动机也是相同的,关于这两篇工作的具体介绍,可以参考我的往期回答。如果pixel-space diffusion真正能够取得成功,对于整个image generation领域的insight是非常建设性的,不仅仅意味着text-to-image diffusion model生成的图像质量会更高,更多的是,一众下游任务的性能也会随之提升,毕竟各领域任务分支也某种程度上「苦LDM久矣」——很多LDM的问题不是在latent space打补丁就能解决好的。

(二) ConsisLoRA:一个风格迁移工作的例子

ConsisLoRA这篇工作相比于JiT就更加细分了,它指出在LoRA微调进行风格迁移时,ε-prediction容易导致content leakage或风格对齐不准的问题。

要知道,图像风格迁移有两个难点:

  • • 一来我们要想办法最大化保真source image的空间布局;
  • • 二来我们要在空间布局保真的前提下,准确地实现风格上的渲染效果。

而ConsisLoRA的核心分析是:包含了过多的高频纹理信息,而风格往往与整体结构有关。ConsisLoRA提出优化目标应从转向,或者设计一种从到的loss transition,本质上可以诶理解为一种multi-stage tuning的过程,不同的stage/训练不同LoRA时使用的优化目标不同,从而让权重关注不同timestep区间上的信息恢复,这一点正好就能对应image style transfer这个任务中关于「空间布局」和「风格」的不同侧重问题。