迁移学习

原文链接:http://cs231n.github.io/transfer-learning/

1.迁移学习方案

在实践中,很少有人从头开始(随机初始化)训练整个卷积网络,因为拥有足够大小的数据集是相对罕见的。 相反,通常在一个非常大的数据集(例如ImageNet,其包含具有1000个类别的120万张图像)上预先训练ConvNet,然后使用ConvNet作为感兴趣的任务的初始化模型或固定特征提取器。 三种主要的迁移学习方案如下:

1.1 ConvNet作为固定特征提取器。

在ImageNet上预先训练一个ConvNet,删除最后一个完全连接的层(该层的输出是1000个类别的分数用于不同的任务,如ImageNet),然后将剩下的ConvNet结构作为新数据集的固定特征提取器。 在AlexNet中,对于每一张图,将会产生一个4096-D的向量,向量包含了紧接在分类器之前的隐藏层的激活输出。 我们将这些特征称为CNN编码。 如果它们在基于ImageNet的ConvNet训练期间也被阈值处理(通常是这种情况),那么这些代码是ReLUd(即阈值为零),对性能很重要。 一旦为所有图像提取4096-D代码后,可以为新数据集训练一个线性分类器(例如线性SVM或Softmax分类器)。

1.2 微调ConvNet。

第二种策略不仅需要在新数据集上替换和重新训练ConvNet最顶层的分类器,而且还需要通过连续的反向传播来微调预训练网络的权重。 可以微调ConvNet的所有层,或者可以保留一些底层(由于过度拟合问题),仅微调网络的某些更高层部分。 这是因为观察到ConvNet的前面几个底层特征包含更多通用特征(例如边缘检测器或颜色斑点检测器),这些特征对许多任务应该很有用,而更高层的ConvNet逐渐变得更加特定于原始数据集中的类别细节。 例如,对于包含许多犬种的ImageNet,ConvNet的表示能力很大一部分专注于能够区分狗品种的特征。

1.3 预训练模型。

由于现在在多个GPU上使用ImageNet来训练ConvNets需要2-3周的时间,因此通常会看到人们发布他们的最终ConvNet检查点,以便于其他人可以使用网络进行微调。 例如,Caffe库有一个Model Zoo,人们可以在这里共享网络权重。

2. 何时以及如何微调?

如何确定应在新数据集上执行哪种类型的转移学习? 这是由几个因素决定的,但最重要的两个因素是新数据集的大小(小或大),以及它与原始数据集的相似性(例如就图像的内容和类别而言,类似ImageNet的数据,或者非常不同,例如显微镜图像)。 值得注意的是ConvNet 在较底层中的特征更通用,而在后续较顶层中特征更具原始数据集的特性,以下是4种主要场景的一些常用经验法则:

2.1 新数据集很小,与原始数据集类似。

由于数据很小,对ConvNet进行微调并不是一个好的选择,因为存在过度拟合问题。但是由于数据与原始数据类似,我们希望ConvNet中更高层的特征与此数据集也相关。因此,最好的方法可能是在CNN编码的基础上训练一个线性分类器。

2.2 新数据集很大,与原始数据集类似。

由于有更多的数据,所以如果试图对整个网络进行微调,可以保证不会过拟合。

2.3 新数据集很小但与原始数据集非常不同。

由于数据很小,因此最好只训练线性分类器。由于数据集非常不同,训练网络顶层的分类器不太合适,因为其中包含很多数据集特定的特征。相反,基于网络的某些底层激活输出训练SVM分类器可能会更好。

2.4 新数据集很大,与原始数据集非常不同。

由于数据集非常大,预期可以从头开始训练ConvNet。然而,在实践中,使用来自预训练模型的权重进行初始化通常仍然是有益的。在这种情况下,我们将有足够的数据和信心来微调整个网络。

3. 实用建议。

在执行迁移学习时,还需要注意以下几点:

3.1 来自预训练模型的约束。

值得注意的是,如果希望使用预训练网络,则应该对可用于新数据集的结构稍加约束。例如,您不能随意从预训练网络中取出Conv图层。但是,一些变化是直截了当的:由于参数共享,您可以轻松地在不同空间大小的图像上运行预训练网络。这在Conv / Pool层的情况下是显而易见的,因为它们的前向传播函数独立于输入体积空间大小(只要步长“适合”)。在FC层的情况下,这仍然适用,因为FC层可以转换为卷积层:例如,在AlexNet中,第一个FC层之前的最终pooling体积的大小为[6x6x512]。因此,查看此体积的FC层相当于具有感知大小为6x6的卷积层,并且填充为0。

3.2 学习率。

与用于计算新数据集的类别得分的新线性分类器的权重(随机初始化的)相比,对ConvNet权重进行微调时的学习速率通常较小。这是因为我们期望ConvNet权重相对较好,因此我们不希望太快和太多地改变它们(特别是当基于预训练权值的新线性分类器正在通过随机初始化进行训练时)。

4. 参考文献

[1] CNN Features off-the-shelf: an Astounding Baseline for Recognitiontrains SVMs on features from ImageNet-pretrained ConvNet and reports several state of the art results.

[2] DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition reported similar findings in 2013. The framework in this paper (DeCAF) was a Python-based precursor to the C++ Caffe library.

[3] How transferable are features in deep neural networks?studies the transfer learning performance in detail, including some unintuitive findings about layer co-adaptations.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值