AI red teamer (人工智能红队)系列22 – 人工智能基础 – 扩散模型
扩散模型是一种生成模型,因其生成高质量图像的能力而引人关注。与生成对抗网络(GANs)和变分自编码器(VAEs)等传统生成模型不同,扩散模型通过添加和去除噪声的步骤来学习数据分布。事实证明,这种方法能有效生成逼真的图像、音频和其他类型的数据。
扩散模型的工作原理
扩散模型的功能是在输入图像中逐渐添加噪音,然后学习逆向生成新图像。然而,当根据文字提示生成图像时,如 "a cat in a hat",还需要额外的步骤将文字纳入生成过程。
要根据文本提示生成图像,扩散模型通常会集成一个文本编码器,如 Transformer
或 CLIP
将文本转换为抽象表示。然后,该抽象表示将为去噪过程提供条件,确保生成的图像与提示一致。
文本编码:
第一步是使用预先训练好的文本编码器对文本提示进行编码。例如,提示语 "a cat in a hat "会被转换成一个高维向量,以捕捉文本的语义。该向量可作为扩散模型的条件输入。根据条件去噪:
文本的抽象表示被用来作为去噪网络的条件。在反向过程中,去噪网络会预测要去除的噪声,并确保生成的图像与文本提示一致。这是通过修改损失函数来实现的,损失函数中包含一个衡量生成图像与文本嵌入之间差异的项。采样过程:
与无条件扩散模型一样,采样过程从纯噪声开始。但是,在反向过程的每一步,去噪网络都会使用噪声图像和文本嵌入来预测噪声。这就确保了生成的图像会逐渐演变以匹配文本描述。最终图像生成:
经过足够多的去噪步骤后,模型生成与给定提示一致的最终图像。在文本嵌入的指导下,添加和去除噪声的迭代过程有助于模型生成准确反映文本描述的高质量图像。
通过整合这些步骤,扩散模型可以有效地根据文本提示生成图像,使其成为文本生成图像方面的强大工具。扩散模型能以文本为生成过程的条件,从而生成多样化且与上下文相关的图像。
向前过程:添加噪音
扩散模型中的向前过程包括逐渐向数据中添加噪声,直到数据变成纯噪声。这个过程通常被称为 "前向扩散 "或 "噪声化 "过程。数学上可以表示为
x_T = q(x_T | x_0)
x_0
是原始数据(如图像)x_T
是纯噪音。q(x_T | x_0)
是给定原始数据的噪声数据分布。
一系列中间步骤定义了向前扩散过程:
x_t = q(x_t | x_{t-1})
t
是时间步长,从 0 到T
不等。q(x_t | x_{t-1})
是从步骤t-1
到步骤t
的转化概率。
逆向过程:消除噪音 (Reverse Process)
逆向过程被称为 "去噪 "过程,包括学习如何去除在正向过程中添加的噪声。目标是将噪声数据映射回原始数据分布。这是通过训练神经网络来预测每一步的噪声来实现的:
x_{t-1} = p_θ(x_{t-1} | x_t)
p_θ(x_{t-1} | x_t)
是由模型参数θ
参数化的学习分布。
逆向过程的训练目的是最大限度地减小正向过程中加入的预测噪声与实际噪声之间的差异。这通常使用均方误差 (MSE) 等损失函数来实现:
L = E[||ε - ε_pred||^2]
ε
是实际噪音。ε_pred
是预测噪声。
噪声计划 (Noise Schedule)
噪声计划决定了向前扩散过程中每一步的噪声添加量。常见的选择是线性函数,即噪声的方差随时间线性增加:
β_t = β_min + (t / T) * (β_max - β_min)
β_t
是步长t
时的噪声方差。β_min
和β_max
分别是最小方差和最大方差。
噪声计划的选择会对扩散模型的性能产生重大影响。精心设计的计划可确保模型在所有时间步长内有效地学习去噪。
去噪网络 (Denoising Network)
去噪网络是一个神经网络,它学会在每个时间步预测噪声。该神经网络通常是深度卷积神经网络(CNNs)
或transformer
,具体取决于数据的复杂程度。神经网络的输入是噪声数据 x_t
,输出是预测噪声 hat{ε}
。
去噪网络的结构对模型的性能非常重要。必须足够强大,能捕捉数据中的复杂模式,并能高效处理大型数据集和高分辨率图像。
训练
扩散模型的训练涉及在多个时间步长中最小化损失函数。这是通过梯度下降和反向传播来实现的。训练过程的计算量很大,尤其是对高分辨率图像而言,但它可以生成高质量的样本。
训练过程可概括如下:
初始化模型:
为去噪网络设置一组初始参数θ
。前向处理:
使用噪声计划在原始数据中添加噪声。逆向过程:
训练去噪网络,以预测每个时间步长的噪声。损失计算:
计算预测噪声与实际噪声之间的损失。参数更新:
为了最小化损失,使用梯度下降法更新模型参数。迭代:
重复多次迭代过程,直到模型收敛。
采样
模型训练完成后,就可以通过从所学分布中采样生成新图像。这就需要从纯噪声开始,反复应用反向过程来去除噪声:
x_0 = p_θ(x_0 | x_T)
x_T
是初始纯噪声。p_θ(x_0 | x_T)
是学习到的分布。
采样过程可概述如下:
使用噪声启动:
使用纯噪声x_T
初始化进程。迭代去噪:
从T
到 1 的每个时间步t
中,使用去噪网络预测噪声并更新数据。最终样本:
经过T
步后,生成的数据x_0
就是生成的图像。
数据假设
扩散模型对数据的假设:
马尔可夫特性:
扩散过程具有马尔可夫特性。这意味着正向过程(添加噪声)和逆向过程(去除噪声)中的每一步都只取决于前一步,而不是过程的整个历史静态数据分布:
扩散模型在一个固定的数据集上进行训练,并学习如何表示这些数据的基本分布。在训练过程中,假设该数据分布是静态的。平滑性假设:
当数据分布具有平滑性时,扩散模型往往表现的更好。这意味着输入数据的微小变化会导致输出的微小变化。
Comments NOTHING