文档"/>
Stable Diffusion 使用文档
Stable Diffusion 简单介绍
扩散模型最早在2015年的Deep Unsupervised Learning using Nonequilibrium Thermodynamics中提出,但并没有什么效果,故影响较小直到 DDPM(Denoising Diffusion Probabilistic Models) 的出现。之前的主流生成网络就是GAN。
GAN
GAN(Generative adversarial network) 生成对抗网络;重点:一个生成器,一个判别器。
度量两个概率分布之间相似度的方法:KL散度、JS散度。
优化对抗网络的方式,本质上是求解一个最优化问题:(loss函数)
交替训练优化生成器和判别器。
GAN的一些缺点:
-
训练不稳定,不易收敛
-
- 同时训练很难达到 nash 平衡
- 梯度消失,当判别器表现不好,那么生成器在对抗中训练的效果也就不真实;如果判别器表现很好,那么Loss接近于零,训练会很难
-
容易出现模型坍缩,生成器总是生成相同样本
-
生成过程不可控
-
不具备可解释性,生成器概率分布没有显示表达
VAE
autoencoder:自编码器,两部分组成 -> 编码网络和解码网络;旨在以无监督的方式学习身份函数,以重构原始输入并在该过程中压缩数据,以便发现更有效和压缩的表示。
VAE是自编码器中的一种,先简单介绍自动编码器:
Autoencoder
bottleneck为VAE最后一层网络,其将输入数据映射到潜在空间中,产生一个潜在变量的向量(较低的维度)。在VAE中,bottleneck的大小是预先定义的,并且影响模型的性能和容量。较小的bottleneck可以更好地压缩数据,但可能会导致信息损失和难以恢复的模糊图像。较大的bottleneck可以更好地保留信息,但可能需要更多的训练数据和计算资源。
Denoising Autoencoder
传统VAE当参数数量大于数据量时,VAE容易发生过拟合,即当自编码器的参数数量大于数据点数量时,自编码器有过多的参数可以调整,从而可以轻松地学习到数据点的细节和噪声,这可能导致模型在训练集上表现很好,但在新的数据上表现较差。
改进:
模拟人也可以从部分失真(损失)的图像中辨别出主体内容。
为了进一步避免过拟合、提高鲁棒性,后续发展sparse autoencoder:强制模型在同一时间只有少部分激活的隐藏单元;k-sparse autoencoder:通过仅保留瓶颈层中前k个最高激活值来强制实现稀疏性。
VAE(Variational Autoencoder)
变分自编码器;之前的自编码器都是将输入映射为固定的向量,而VAE在实现上和上述方式都不一样,是将输入映射到一个分布当中。
VAE对每一个样本X,都会去匹配一个高斯分布,隐变量z就是从拟合的高斯分布中采样获得;所以关键点在与如何去拟合这个高斯分布(构建两个神经网络来拟合高斯分布的均值、方差参数)。拟合过程中的误差损失用KL散度衡量,并反馈调整拟合参数。
优点:与将输入映射到固定向量相比,将输入映射到分布中能够更好地表达数据的不确定性和多样性,从而提高了模型的表现和生成能力。
CVAE(Condition Variational Autoencoder)
相较于VAE,增加了条件信息来控制生成的内容,如下图:
训练时带上了条件编码信息,那么在解码的时候,带上想要的数字信息就可以生成指定的数字类型
- 数字进行独热编码目的是让数字之间无关化
UNET
最常用、最简单的一种分割模型,它简单、高效、易懂、容易构建,且可以从小数据集中训练。
有时间再补充
DDPM
Denoising Diffusion Probabilistic Models,去噪扩散概率模型。
x0代表像素空间映射,整个加噪和去噪的过程都是马尔科夫过程;超参数:
- T表示加噪轮次
- \beta 表示图像和噪声权重
前向过程:从X0 -> Xt,逐步增加高斯噪声
后项过程:从Xt -> X0,但q(Xt-1|Xt)未知(但符合高斯分布),考虑推导期望和方差的表达式;-> 结果与噪声相关,所以求解方法是用深度学习来拟合噪声的概率分布。详见:
更多推荐
Stable Diffusion 使用文档
发布评论