-
机器学习
- 三类机器学习:分类、回归、聚类
- 基础方程:\(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呢?
- 先随机或指定初始的w
- 训练样本代入计算,结果称为期望值
- 用函数衡量期望值与实际值的损失loss,该函数即损失函数
- 根据损失值增大或减小w
- 重复执行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): 用来评估模最终模型的性能如何(评价模型好坏):测试集没有参于训练,主要是测试训练好的模型的准确能力等,但不能作为调参、选择特征等算法相关的选择的依据。说白了就只用于评价模型好坏的一个数据集。
-
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更全面)。
- 好处