【动手学深度学习v2】计算机视觉——2微调

微调 Fine-Tuning

  • 1 网络架构
  • 2 微调步骤
  • 3 训练
  • 4 常用技术
    • 重用分类器权重
    • 固定一些层
  • 5 总结

1 网络架构

一个神经网络一般可以分两块:

  • 特征抽取,将原始像素变成容易线性分割的特征
  • Softmax回归,线性分类器做分类

2 微调步骤

  1. Pretrain: 在源数据集(例如ImageNet数据集)上预训练神经网络模型,即源模型。
  2. Copy: 创建一个新的神经网络模型,即目标模型。复制源模型上的所有模型设计及其参数(输出层除外)。
  3. Random Initialization: 向目标模型添加输出层,输出数是目标数据集中的类别数。随机初始化该层的模型参数。
  4. Fine-tune, Train from scratch: 在目标数据集(如椅子数据集)上训练目标模型。输出层将从头开始进行训练,而所有其他层的参数将根据源模型的参数进行微调。
    【动手学深度学习v2】计算机视觉——2微调_第1张图片

3 训练

  • 是目标数据集上一个正常的训练任务,但使用更强的正则化(更小的学习率,更少的数据迭代)
  • 源数据集远复杂于目标数据集(类别数、样本数大很多),通常微调效果更好

4 常用技术

重用分类器权重

如果源数据集也有标号A(表示车辆),目标数据集也有标号A;
可以用预训练好的模型中分类器对应标号对应向量初始化新模型

固定一些层

神经网络通常学习有层次的的特征表示,低层次更通用,高层次特征跟数据集更相关;可以固定底层一些参数,不参与更新。

5 总结

  • 微调通过使用在大数据上得到的预训练好的模型来初始化模型参数,来完成精度提升
  • 预训练模型质量很重要,看重其训练的数据集
  • 微调通常更快更好

你可能感兴趣的:(DeepLearning,深度学习,计算机视觉,人工智能)