【机器学习】《动手学深度学习 PyTorch版》李沐深度学习笔记(微调)

微调

1.微调的步骤

1.在源数据集(如ImageNet数据集)上预训练一个神经网络模型,即源模型。
2.创建一个新的神经网络模型,即目标模型。它复制了源模型上除了输出层外的所有模型设计及其参数。我们假设这些模型参数包含了源数据集上学习到的知识,且这些知识同样适用于目标数据集。我们还假设源模型的输出层与源数据集的标签紧密相关,因此在目标模型中不予采用。
3.为目标模型添加一个输出大小为目标数据集类别个数的输出层,并随机初始化该层的模型参数。
4.在目标数据集(如椅子数据集)上训练目标模型。我们只需要从头训练输出层,而其余层的参数都是基于源模型的参数微调得到的。

2.微调的训练过程

1.是一个目标数据集上的正常训练任务
2.相当于使用了更强的正则化:
更小的学习率(大stride在初始模型中已走过了,相当于已经有一个比较好的模型了)
更少的迭代次数
3.源数据集远复杂于目标数据,通常得到的微调效果更好

3. 常用的微调技术

1.重用分类器权重**(是对最后的分类层进行的处理)**
源数据可能也有目标数据中的部分标号
可以使用预训练好的模型分类器中对应标号对应的向量作初始化值
2.固定一些层
神经网络通常学习有层次的特征表示(底层描述的特征更加通用,而高层的特征和数据集相关性更强)
可以固定相对底部的层,不参与参数更新(应用了更强的正则化)

4.总结

1.微调通过使用在大数据上得到的预训练模型来初始化权重来提高精度
2.预训练模型质量非常重要
3.微调通常速度更快、精度更高

你可能感兴趣的:(深度学习,pytorch)