有时候如果数据集不够大,很少有人可以从头开始训练网络,最常见的做法是使用预训练网络来重新fine-tuning(微调),或者成为特征提取器。
使用条件:数据集大小,以及新数据集和元数据集的相似程度,有一点就是网络的前几层一般学的都是同意特征,后面几层学到的始于类别香断的特征,下面介绍常见的四种情况:
- 数据集小而且与元数据集相似,因为新数据集较小,如果直接fine-tune可能会过拟合,有一呢新旧数据集类似,我们期望他们高层特征类似,可以使用预训练网络当作特征提取器,用提取的特征训练线性分类器,
- 数据集大且和原数据集相似,例如都是识别猫,而且新数据集也大,可fine-tune整个网络。
- 新数据集小且和原数据集不相似,新数据集小最好不用fine-tune,与原数据集不类似,最好也不使用高层特征。这是可以只用前面层的特征来训练svm分类器。
- 新数据集大且和原数据集不相似,可以直接从新训练。