迁移学习的两种类型

转载自:https://blog.csdn.net/wmz545546/article/details/77603543
  1. 迁移学习两种类型:
    • ConvNet as fixed feature extractor:利用在大数据集(如ImageNet)上预训练过的ConvNet(如AlexNet,VGGNet),移除最后几层(一般是最后分类器),将剩下的ConvNet作为应用于新数据集的固定不变的特征提取器,输出特征称为CNN codes,如果在预训练网络上是经过ReLUd,那这些codes也要经过ReLUd(important for performance);提取出所有CNN codes之后,再基于新数据集训练一个线性分类器(Linear SVM or Softmax classifier);
    • Fine-tuning the ConvNet:第一步:在新数据集上,替换预训练ConvNet顶层的分类器并retrain该分类器;第二步:以较小的学习率继续反向传播来微调预训练网络的权重,两种做法:微调ConvNet的所有层,或者保持some earlier layers fixed (due to overfitting concerns) ,只微调some higher-level portion of the network;
    • 原理:一般认为CNN中前端(靠近输入图片)的层提取的是纹理、色彩等基本特征,越靠近后端,提取的特征越高级、抽象、面向具体任务。所以更普遍的微调方法是:固定其他参数不变,替换预训练网络最后几层,基于新数据集重新训练最后几层的参数(之前的层参数保持不变,作为特征提取器),之后再用较小的学习率将网络整体训练。
    • 一些开源的Pretrained models:Model Zoo

  • When and how to fine-tune?
    • 四个主要场景:
    • 新数据集小,且与原始数据集相似:要考虑小数据集过度拟合问题;利用CNN codes 训练一个线性分类器
    • 新数据集大,且与原始数据集相似:不用考虑过度拟合,可尝试微调整个神经网络;
    • 新数据集小,并与原始数据集差距大:训练一个线性分类器,而新数据集与原始数据集差距大,work better to train the SVM classifier from activations somewhere earlier in the network
    • 新数据集大,且与原始数据集差距大,使用预训练模型参数,基于新数据集微调整个神经网络

  • Practical advice
    • a few additional things to keep in mind when performing Transfer Learning:
    • Constraints from pretrained models:使用预训练网络,新数据集使用的架构将受限,比如不能随意take out Conv layers from the pretrained network;

    • Learning rates:微调 ConvNet权重(ConvNet weights are relatively good)时的学习率要比新的线性分类器(权重是随机初始化的)的学习率要小;

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