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

选自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/

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

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-01-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

如何利用深度学习识别千万张图片?

首先我们来谈一下什么是卷积神经网络,相信在深度学习中这是最重要的概念,首先你可以把卷积想象成一种混合信息的手段。想象一下装满信息的两个桶,我们把它们倒入一个桶中...

2535
来自专栏灯塔大数据

荐读|初学者如何选择合适的机器学习算法

文主要的目标读者是机器学习爱好者或数据科学的初学者,以及对学习和应用机器学习算法解决实际问题抱有浓厚兴趣的读者。 面对大量的机器学习算法,初学者通常会问自己一...

4347
来自专栏机器之心

盘点 | 机器学习入门算法:从线性模型到神经网络

选自Dataconomy 机器之心编译 参与:王宇欣、吴攀、蒋思源 近段时间以来,我们频频听到「机器学习(machine learning)」这个词(通常在预测...

37012
来自专栏Java 源码分析

数字图像处理

2808
来自专栏专知

何去何从:从经典深度学习模型探讨图像识别新方向

【导读】1月22日,深度学习工程师George Seif发布一篇文章,主要介绍了一些经典的用于图像识别的深度学习模型,包括AlexNet、VGGNet、Goog...

4426
来自专栏机器学习算法与Python学习

深度学习角度 | 图像识别将何去何从?

本文主要介绍了一些经典的用于图像识别的深度学习模型,包括AlexNet、VGGNet、GoogLeNet、ResNet、DenseNet的网络结构及创新之处,并...

4725
来自专栏AI科技评论

微软IJCAI2016演讲PPT:深度学习在语音识别上不再难有用武之地

微软研究院在IJCAI2016第一天的Tutorial上讲述了自己将深度学习、深度神经网络应用于语义理解上的一些经验和收获。作为小娜和小冰的开发者,微软在自然预...

47212
来自专栏AI研习社

谷歌的新CNN特征可视化方法,构造出一个华丽繁复的新世界

AI 研习社按:深度神经网络解释性不好的问题一直是所有研究人员和商业应用方案上方悬着的一团乌云,现代CNN网络固然有强大的特征抽取能力,但没有完善的理论可以描述...

3965
来自专栏新智元

【重磅】无监督学习生成式对抗网络突破,OpenAI 5大项目落地

【新智元导读】“生成对抗网络是切片面包发明以来最令人激动的事情!”LeCun前不久在Quroa答问时毫不加掩饰对生成对抗网络的喜爱,他认为这是深度学习近期最值得...

4429
来自专栏深度学习自然语言处理

小知识 | 谈谈 损失函数, 成本函数, 目标函数 的区别

在我刚开始学机器学习的时候也是闹不懂这三者的区别,当然,嘿嘿,初学者的你们是不是也有那么一丢丢迷茫呢?那么今天咱们就把这样的问题解决了!

1823

扫码关注云+社区

领取腾讯云代金券