查看原文
其他

入门 | 迁移学习在图像分类中的简单应用策略

2018-01-04 机器之心

选自Miguel Blog

作者:Miguel González-Fierro

机器之心编译

参与:陈韵竹、刘晓坤


迁移学习(Transfer Learning)预期将成为图像分类领域机器学习商业成就的下一驱动力。对深度网络的再利用正影响着学界和业界的走向。本文介绍了迁移学习的基本概念,以及使用迁移学习的策略。本文使用 PyTorch 代码在多个数据集中进行了实验。

 

GitHub 地址:https://github.com/miguelgfierro/sciblog_support/blob/master/A_Gentle_Introduction_to_Transfer_Learning/Intro_Transfer_Learning.ipynb


为什么使用迁移学习?


根据 Coursera 联合创始人、斯坦福副教授吴恩达介绍,迁移学习(Transfer Learning)将会成为机器学习商业成就的下一驱动力。


迁移学习是一种机器学习技术,允许在特定的数据集上再利用已训练的卷积神经网络(CNN),并将其调整或迁移到其他数据集。之所以要复用已经训练的 CNN,是因为训练时间太长。例如,在 4 个英伟达 K80 GPU 中将 ResNet18 训练 30 个 epoch 需要 3 天的时间;而在同样的 GPU 上将 ResNet152 训练 120 个 epoch 需要 4 个月。


迁移学习策略


总体而言,迁移学习有两种策略,不过我还没有看到关于命名的最终一致意见。微调(finetuning)——其中包括使用基础数据集上的预训练网络以及在目标数据集中训练所有层;冻结与训练(freeze and train)——其中包括冻结除最后一层的所有层(权重不更新)并训练最后一层。也可以冻结前面几层,然后微调其余层,这是由于一些证据表明 CNN 的前几层包含纹理过滤器(texture filter)和色彩斑点(color blob)。但是,我们这里的工作只分析两种极端情况:训练所有层,以及只训练最后一层。


最常见的基本数据集是 ImageNet,它包含 120 万个图像、1000 个类别。这些类别主要被分为两大类:动物和物体。每个类别的图像数量大约为 1000 个。大多数深度学习库都提供在 ImageNet 上预训练的 CNN 模型。


在下图中,我们可以看到上述提到的两种迁移学习策略。我们在 ImageNet 上使用了一个预训练的 CNN,并将 Simpsons 数据集的子集 Homer Simpson 作为目标集,用该网络对其进行分类。这个子集包含 20 个类,每个类有 300-1000 个图像。


然后,我们可以使用冻结与训练,只训练最后一层(如图上方所示);或者微调所有层(如图下方所示)。



微调 VS 冻结


我们很难知道在何种情况下应该只训练最后一层,在何种情况下应该微调网络。在「How transferable are features in deep neural networks?」(Yosinsky et. al., 2014) 中,作者解决了在 ImageNet 数据集中量化 CNN 特定层普适程度的问题。他们发现,由于层的相互适应,可迁移性会受到中间层分裂的负面影响。随着任务性质差异的增加,可迁移性的差距会逐渐增长。最终他们发现,通过权重迁移进行网络初始化,而非从零权重开始训练,能够提高泛化性能。


正如 Karpathy 的深度学习教程中指出的,以下是在不同场景中对新数据集使用迁移学习的一些指导原则:


  • 小目标集,图像相似:当目标数据集与基础数据集相比较小,且图像相似时,建议采取冻结和训练,只训练最后一层。

  • 大目标集,图像相似:建议使用微调。

  • 小目标集,图像不同:建议采取冻结和训练,训练最后一层或最后几层。

  • 大目标集,图像不同:建议使用微调。


在实验中,我们使用了有限的几个数据集,以及一个小型网络 ResNet18,所以是否能将结果推广到所有数据集和网络还言之尚早。但是,这些发现可能会对何时使用迁移学习这一问题提供一些启示。以下是结果的总结:



我们观察到的第一个细节是,相比色度数据集而言,训练灰度数据集准确率会下降。这与其他文章作者观察一致,即基础数据集和目标数据集之间的域差异越大,迁移效果越差。


我们同样发现,对于 Simpson 和 Caltech256 数据集而言,冻结会使得准确率大大下降。这在 Simpson 数据集中可以理解,原因可能是域的区别太大了:在 ImageNet 中都是自然图像,但在 Simpson 中大多数都是素色的。在 Caltech 数据集中,除了在冻结时产生的准确率下降,我们最先观察到的是它本身只具有很低的准确率。这可能是因为,对于涵盖很多类别的数据集,每个类别的图像太少了,大约每个类只有几百个而已。


猫狗(dogs vs cats)数据集的域和 ImageNet 最接近。事实上,ImageNet 中就包含着几个品种的猫和狗。在这种情况下,微调和冻结没有多大差别。


最后,在膜翅目昆虫(hymenoptera)数据库中,我们发现,在冻结时,色度数据集有一点小改善。这可能是因为域很靠近,且数据集比较小。在膜翅目昆虫灰度数据库中,冻结就没有改善,这很可能是由于域的差异。


原文地址:https://miguelgfierro.com/blog/2017/a-gentle-introduction-to-transfer-learning-for-image-classification/



本文为机器之心编译,转载请联系本公众号获得授权。

✄------------------------------------------------

加入机器之心(全职记者/实习生):hr@jiqizhixin.com

投稿或寻求报道:content@jiqizhixin.com

广告&商务合作:bd@jiqizhixin.com


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存