希望一个已经在大规模数据集预训练好的模型能够适应自己的数据集或任务。
网络架构
一个神经网络一般可以分为两块:特征抽取部分将原始像素编程容易线性分割的特征、线性分类部分用于分类(最后的全连接输出层)
微调
已经预训练好的模型,特征提取部分仍然可以对不同的数据集做特征抽取,但不同数据集的label可能发生变化,不可以直接使用原模型的线性分类器对自己的数据集进行分类。
微调中的权重初始化
自己的模型与预训练模型使用相同网络架构,使用与训练好的模型的特征抽取部分的权重作为自己的模型的特征抽取部分的权重,最后的线性分类层的权重则可以随机初始化。
训练
是一个目标数据集上的正常训练任务,但使用更强的正则化:使用更小的学习率、使用更少的数据迭代数。原数据集复杂度远高于目标数据集复杂度通常微调效果更好。
固定一些层
神经网络通常学习有层次地特征表示:低层次地特征更加通用、高层次地特征则更与数据及相关。可以固定低层次地层地参数,不参与更新。
总结
微调通过使用大规模数据集上训练好地预训练模型来初始化自己模型权重以提升模型精度。
预训练模型的质量很重要。
微调通常速度更快、精度更高。