Diffusion Model Noise Schedule

本文仅适用于已经了解什么是Diffusion Model的人。

我们知道,在Diffusion Model中存在正向扩散过程------破坏数据 逆向扩散过程------生成过程。在正向过程中,我们给定一个数据,随着时间步 <math xmlns="http://www.w3.org/1998/Math/MathML"> t t </math>t 逐渐给它添加噪声。而添加的噪声是我们已经预先设定好的噪声表。

今天这个文章浅浅总结一下Diffusion Model中常用的噪声表。

Linear Schedule

线性噪声表是出自Diffusion Model的经典之作《Denoising Diffusion Probabilistic Models》。

这这篇文章里,噪声表是取 <math xmlns="http://www.w3.org/1998/Math/MathML"> [ 1 0 − 4 , 0.02 ] [10^{-4},0.02] </math>[10−4,0.02]进行线性插值形成噪声表。

Cosine Schedule

然后就来到了这篇文章:《Improved Denoising Diffusion Probabilistic Models》

在这篇文章中,作者觉得线性噪声表效果并不好。线性噪声调度对高分辨率图像效果较好,但对于分辨率为64 × 64和32 × 32的图像效果欠佳。并且在这些分辨率下,前向加噪过程的末尾噪声太大,因此对样本质量的贡献不大。

于是作者想要一个想要一个两端平滑中间线性下降噪声表,因此提出Cosine Schedule。

<math xmlns="http://www.w3.org/1998/Math/MathML"> α t α_t </math>αt构造了一个不同的噪声调度:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> α ˉ t = f ( t ) f ( 0 ) , f ( t ) = cos ⁡ ( t / T + s 1 + s ⋅ π 2 ) 2 β t = 1 − α ˉ t α ˉ t − 1 \begin{aligned} & \bar{\alpha}_t=\frac{f(t)}{f(0)}, \quad f(t)=\cos \left(\frac{t / T+s}{1+s} \cdot \frac{\pi}{2}\right)^2 \\ & \beta_t=1-\frac{\bar{\alpha}t}{\bar{\alpha}{t-1}} \end{aligned} </math>αˉt=f(0)f(t),f(t)=cos(1+st/T+s⋅2π)2βt=1−αˉt−1αˉt

限制 <math xmlns="http://www.w3.org/1998/Math/MathML"> β t ≤ 0.999 β_t\leq0.999 </math>βt≤0.999,以防止在扩散过程接近 <math xmlns="http://www.w3.org/1998/Math/MathML"> t = T t = T </math>t=T时出现奇怪现象。

Sqrt Schedule

在《Diffusion-LM Improves Controllable Text Generation》中,作者觉得前两种噪声表对文本数据不具有鲁棒性。作者认为在接近原始数据embedding的地方去噪比较简单,如果添加噪声太小,不足以扰乱数据,因此应该添加更大的噪声。所以提出Sqrt Schedule


<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> α ˉ t = 1 − t / T + s \begin{aligned} \bar{\alpha}_t = 1-\sqrt{t / T+s} \end{aligned} </math>αˉt=1−t/T+s

在Diffusion-LM中设置 <math xmlns="http://www.w3.org/1998/Math/MathML"> s = 1 e − 4 s =1e^{-4} </math>s=1e−4, <math xmlns="http://www.w3.org/1998/Math/MathML"> T = 2000 T = 2000 </math>T=2000, 标准差为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 0.1 0.1 </math>0.1。

Adaptive Schedule

《Seqdiffuseq: Text diffusion with encoder-decoder transformers》这篇论文提出了一种文本扩散方法,并针对预测难度随时间步增加的问题设计了自适应调度(adaptive schedule)。该方法通过学习噪声规模和损失之间的关系,实现在训练过程中根据损失来动态地更新噪声规模,以应对预测难度的增加。

在该论文中,作者认为随着时间步的增加,文本扩散任务的预测难度会线性增长。为了有效地应对这一挑战,作者引入了自适应调度的概念。具体而言,他们首先构建了一个噪声调度(noise schedule),该调度规定了在不同时间步应用不同程度的噪声以模拟预测难度的增加。然后,他们通过在训练数据上的实验,学习了噪声规模和损失之间的关系。

Mutual Information Schedule

在《Structured denoising diffusion models in discrete state spaces》这篇论文中,研究人员提出了一种离散状态空间下的结构化去噪扩散模型,并为离散扩散过程设计了互信息调度(mutual information schedule)。该调度通过对原始数据和隐变量之间的互信息进行线性插值,来引导模型的学习过程。在涵盖吸收状态的离散扩散模型中,该调度策略的具体形式如下:

<math xmlns="http://www.w3.org/1998/Math/MathML"> β t = ( T − t + 1 ) − 1 \beta_t=(T-t+1)^{-1} </math>βt=(T−t+1)−1

这个调度策略的核心思想是,在训练过程中逐渐引入随机性,以更好地平衡模型的学习过程。随着时间步的增加, <math xmlns="http://www.w3.org/1998/Math/MathML"> β t \beta_t </math>βt 逐渐减小,使得模型在初始阶段更加关注高互信息的部分,然后逐步引入更多噪声和随机性,以便更好地捕捉数据的分布特征。

Spindle Schedule

在《Diffusionbert: Improving generative masked language models with diffusion models》这篇论文中,提出了一种名为 "spindle schedule" 的策略,用于非自回归生成中。这个策略基于 "easy-first policy",认为在生成序列时,常见的单词应该较早地被生成出来,以便作为后续生成较少见单词时的上下文信息。具体而言,该策略通过调整单词被打乱的概率,使得包含更多信息量的单词更有可能被打乱。

在 spindle schedule 中,相对较少见的单词会在生成序列的前向过程的开始阶段被替换为 [MASK],然后在去噪(恢复)阶段的结尾被逐渐恢复回其原始单词。这种策略的引入可以增强模型对上下文信息的捕捉,尤其是在生成相对不常见的单词时,从而提高非自回归生成模型的性能。

综上所述,spindle schedule 是一种用于非自回归生成的策略,通过调整单词的打乱概率,使得常见单词更早地被生成出来,从而增强了模型在不同单词的生成过程中的表现。

相关推荐
翔云API8 分钟前
PHP静默活体识别API接口应用场景与集成方案
人工智能
浊酒南街14 分钟前
吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.9-4.10
人工智能·深度学习·神经网络·cnn
Tony聊跨境30 分钟前
独立站SEO类型及优化:来检查这些方面你有没有落下
网络·人工智能·tcp/ip·ip
懒惰才能让科技进步36 分钟前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝
Qspace丨轻空间1 小时前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
没有不重的名么1 小时前
门控循环单元GRU
人工智能·深度学习·gru
Ni-Guvara1 小时前
函数对象笔记
c++·算法
love_and_hope1 小时前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
2403_875736871 小时前
道品科技智慧农业中的自动气象检测站
网络·人工智能·智慧城市
泉崎1 小时前
11.7比赛总结
数据结构·算法