首页 > 其他分享 >stable diffusion

stable diffusion

时间:2023-03-18 16:57:11浏览次数:30  
标签:diffusion loss 训练 模型 stable eta 参数 拟合

  • 机器学习

    • 三类机器学习:分类、回归、聚类
    • 基础方程:\(f(x) = w_1x_1+w_2x_2+\dots+w_dx_d+b = w^Tx +b\)
      引入 \(x_0=1,w_0=b\)则 \(f(x) = w_0x_0+w_1x_1+w_2x_2+\dots+w_dx_d+b = w^Tx\)
    • 通过空间映射可以把非线性问题转换线性问题。通过求解w,即可解决问题,那么如何求解w呢?
      1. 先随机或指定初始的w
      2. 训练样本代入计算,结果称为期望值
      3. 用函数衡量期望值与实际值的损失loss,该函数即损失函数
      4. 根据损失值增大或减小w
      5. 重复执行b-d,直到找到最优w
    • 利用梯度下降法找到loss(w)的局部最小值。
    • 每次移动的步长,称为学习率$\eta $。
      • \(w \gets w - \eta \frac{\partial Loss}{\partial w}\)
      • \(\eta\) 小时,可以保证收敛。设置过小,参数更新会很慢(时间会很长)
      • \(\eta\) 较大,训练将振荡收敛
      • \(\eta\) 过大,系统无法收敛(可能导致直接从一个坑跳到另一个坑,甚至可能几个坑来回跳)
      • 所以在实际的应用中,学习率的选择,一般是先大后小。先大可以让loss函数尽快的往loss小的方向下降,等到了坑里,学习率就要慢慢的减小,防止直接跳出坑。所以最好的方式,就是先比较大,然后慢慢缩减变小。
  • 训练集、验证集、测试集

    • 训练集(train set):用于训练模型(拟合参数):即模型拟合的数据样本集合,如通过训练拟合一些参数来建立一个分类器。
    • 验证集(validation set): 用于确定网络结构或者控制模型复杂程度的超参数(拟合超参数):是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。 通常用来在模型迭代训练时,用以验证当前模型泛化能力(准确率,召回率等),防止过拟合的现象出现,以决定如何调整超参数。具体原理参照本文的二(三)。
    • 测试集(test set): 用来评估模最终模型的性能如何(评价模型好坏):测试集没有参于训练,主要是测试训练好的模型的准确能力等,但不能作为调参、选择特征等算法相关的选择的依据。说白了就只用于评价模型好坏的一个数据集。
      image
  • Stable Diffusion :文本->图像的生成公共AI模型。

  • Automatic1111 web UI:开源社区开发工具,用于使用Stable Diffusion。

  • DreamBooth:一种AI算法。向现有Stable Diffusion模型传授主题/风格。

    • 直接拿样本数据对整个模型进行微调
    • 好处
      • 训练结果可直接保存在模型中
      • 在模型风格和添加的图像之间可得到不错的平衡
    • 缺点
      • 每次都生成一个.ckpt的模型,100步的模型每20步保存一次,4G的模型就用了20G容量。难以保存、很耗容量。
      • 硬体要求高。常用的是8G显卡,但DreamBooth建议24G的显卡,最低12G
  • LoRA:

    • 好处
      • 模型很小。一个LoRA模型常见的为100+MB,最小可为2MB。
      • 训练很快。建议学习率1e-4。(DreamBooth建议1e-6)
      • 极限可在6G显卡训练(即VRAM=6GB)(DreamBooth最低12GB)
      • 一个模型中可载入多个LoRA,搭配扩充功能可以使一个模型产生多个角色。
    • 坏处
      • 训练成果品质低。对模型调整仅限与部分(Dreambooth更全面)。

image

标签:diffusion,loss,训练,模型,stable,eta,参数,拟合
From: https://www.cnblogs.com/th-is/p/17229229.html

相关文章