微调(Fine-tune)原理

  在本身的数据集上训练一个新的深度学习模型时,通常采起在预训练好的模型上进行微调的方法。什么是微调?这里已VGG16为例进行讲解,下面贴出VGGNet结构示意图。  网络

   

  上面圈出来的是VGG16示意图,也能够用以下两个图表示。性能

   

   

  如上图所示 ,VGG16的结构为卷积+全链接层。卷积层分为5个部分共13层,即图中的conv1~conv5。还有3层是全链接层,即图中的fc六、fc七、fc8。卷积层加上全链接层合起来一共为16层,所以它被称为VGG16。若是要将VGG16的结构用于一个新的数据集,首先要去掉fc8这一层。缘由是fc8层的输入是fc7的特征,输出是1000类的几率,这1000类正好对应了ImageNet模型中的1000个类别。在本身的数据中,类别数通常不是1000类,所以fc8层的结构在此时是不适用的,必须将fc8层去掉,从新采用符合数据集类别数的全链接层,做为新的fc8。好比数据集为5类,那么新的fc8的输出也应当是5类。学习

  此外,在训练的时候,网络的参数的初始值并非随机化生成的,而是采用VGG16在ImageNet上已经训练好的参数做为训练的初始值。这样作的缘由在于,在ImageNet数据集上训练过的VGG16中的参数已经包含了大量有用的卷积过滤器,与其从零开始初始化VGG16的全部参数,不如使用已经训练好的参数看成训练的起点。这样作不只能够节约大量训练时间,并且有助于分类器性能的提升。spa

  载入VGG16的参数后,就能够开始训练了。此时须要指定训练层数的范围。通常来讲,能够选择如下几种范围进行训练:blog

  (1):只训练fc8。训练范围必定要包含fc8这一层。由于fc8的结构被调整过,全部它的参数不能直接从ImageNet预训练模型中取得。能够只训练fc8,保持其余层的参数不动。这就至关于将VGG16看成一个“特征提取器”:用fc7层提取的特征作一个Softmax模型分类。这样作的好处是训练速度快,但每每性能不会太好。
  (2):训练全部参数。还能够对网络中的全部参数进行训练,这种方法的训练速度可能比较慢,可是能取得较高的性能,能够充分发挥深度模型的威力。
  (3):训练部分参数。一般是固定浅层参数不变,训练深层参数。如固定conv一、conv2部分的参数不训练,只训练conv三、conv四、conv五、fc六、fc七、fc8的参数深度学习

  微调的原理大体意思就是先看懂网络的结构图,而后把网络的一部分修改为本身须要的模型。这种训练方法就是所谓的对神经网络模型作微调。借助微调,能够从预训练模型出发,将神经网络应用到本身的数据集上。原理

相关文章
相关标签/搜索