标注一个数据集非常的昂贵,我们希望在一个预训练好的模型上,学到识别能力,拿到自己的场景微调,使得数据集即使很小的情况下,也能有不过的结果。
一个神经网络一般可以分成两块:
1.特征抽取将原始像素变成易线性分割的特征
2.线性分类器来做分类
源数据集很大,学得一个很好的特征提取模型
我们的目标数据集比较小,此时源数据集学得特征提取模型可能任然适用于目标数据集(总比随机初始化好),再适当微调。
除了最后一层随机初始化,特征提取过程直接从预训练模型拷贝过来。举例:预训练模型是ResNet18,那么我们的模型也要是ResNet18,网络结构要是一样的。
是在一个目标数据集上的正常训练任务,但是使用了更强的正则化:
1.更小的学习率
2.更少的数据迭代
源数据集远复杂于目标数据集,通常微调效果更好
1.源数据集可能也有目标数据中的部分标号
2.可以使用预训练好模型分类器中对应标号对应的向量来做初始化
神经网络通常学习有层次的特征表示:
1.低层次的特征更加通用
2.高层次的特征则更跟数据集相关
可以固定底部一些层的参数,不参与更新,如更强的正则
1.微调通过使用在大数据集上得到的预训练好的模型来初始化模型权重来完成提升精度
2.预训练模型质量很重要
3.微调通常速度更快、精度更高