手把手带你入坑迁移学习(by 当过黑客的CTO大叔)

原作 Slav Ivanov Root 编译自 Slav寄几的博客 量子位 出品 | 公众号 QbitAI

Slav Ivanov是Post Planer(提高社交媒体影响力的App)的CTO,这个当过黑客后又从良当企业家的大叔,结合自己的创业经历,把他认为比较好的迁移学习的资料分享给大家。以下是他的原文。


现在很多深度学习的应用都依赖于迁移学习,特别是在计算机视觉领域,这篇文章主要给大家介绍一下什么是迁移学成,怎么完成迁移学习,以及可能存在的缺点。

我最开始接触迁移学习,是因为创业要用到。

不如开个公司吧?

有一天,一个朋友和我们聊了个脑洞大开的想法。他希望能做出下一个爆款社交媒体,宠物版的脸书。人们可以在展示他们主子的照片,以及看其他人的喵喵和旺财。我们都第一反应都觉得,这个主意还不错诶。

我们以为:谁会不想翻一整天萌宠的照片?

我们很快筹到了资金,然后开始做潜在用户调查。在问了几个特别喜欢宠物的人之后,我们意识到个问题:喜欢猫的人并不怎么喜欢看狗的照片。养鹦鹉的人也不喜欢看猫的照片,养金鱼的人只喜欢看其他人养的金鱼。

因为现在已经2017年了,我们不再需要花费大力气挨个问人们喜欢看什么宠物的照片,我们直接借用机器学习的办法,去自动识别人们看的照片里是什么宠物。然后根据他们所看照片的宠物来分类

卷积神经网络(CNN,Convolutional Neural Networks)

我们把我们的计划分享给了个刚拿到机器学习PhD的哥们,他建议我们用CNN来解决这个问题。

因为最初有个很牛逼的团队,由Alex Krizhevsky领头,凭借CNN赢得了那一年的ImageNet挑战赛(大体上相当于计算机视觉的年度奥林匹克),他把分类误差记录从 26% 降到了 15%。CNN的表现当时震惊了世界。

从那以后,CNN就成为了计算机视觉里的主流算法。也同样应用于其他深度学习领域。

如果大家对深度学习的概况想要有更多的了解,我墙裂建议大家去看fast.ai上的Practical Deep Learning for coders的第一部分和第二部分(本文提到的所有学习资料链接都放在最后咯,一会看完自取哈)。这些资料都是开放的。

对于卷积神经网络来说,我们需要分类的图像数据是输入。然后可学习后不断调整权重的参数,依据分类的不同我们会称之为过滤器或通道。这些过滤器层层堆在一起,在网络的最后一层,是输出,告诉我们这张图里是猫,或狗,或鸟之类的。

CNN的入门

所以我们就用fast.ai上的资料,然后自己搭建CNN。我们知道深度学习需要大量的数据,所以我们就下载了ImageNet数据库,里面有上百万张图,当然也包括猫狗、金鱼。

我们开始用这些数据来训练我们的模型,并用随机梯度下降算法(Stochastic Gradient Descent algorithm)来优化。过了不久,我们的CNN就可以区分猫狗和鹦鹉啦。我们还给这个模型起了个名字,宠物识别Pet-cognizer®。

其实,已经有很多前辈用ImageNet做了大量的工作,训练出很多CNN模型。这些经过预训练的神经网络都是开放的。有兴趣的话可以去看Pretrained Models on Keras and TorchVision for PyTorch。

CNN模型里第一层过滤器已经可以分辨出边界、渐变和纯色区域。第二层过滤器可以结合从第一层得到的数据去判断哪些是条纹,哪些是直角,哪些是圆。

第三层已经可以辨别人、鸟、汽车轮子之类的了。

最后,神经网络的输出层显示最后的分类结果。

就这样,我们的Pet-cognizer®搞定啦!

新的任务

当我们试运行我们的项目是,有人建议说如果我们能按狗狗的品种来分类就更好了。所以,我们再继续捣腾模型。我们把这种可以识别狗狗品种的模型叫做Breed-cognizer®。但问题在于,我们不能找到足够多的上百张狗狗的图片来训练我们的新模型。我们的数据集有120个数据源,每个有100张图。我们只能先尝试这用这个很小的数据来训练我们的CNN,可是结果很差。

从零开始训练,所有结果都不对

Reddit上有一个板块专门是迁移学习,探讨怎么把之前建模的知识迁移到另一个任务里。

迁移学习,字面上看就是我们要做的事。所以我们决定重新考虑在已经训练好的Pet-cognizer®上,看看怎么改改再用。

场景1:新的数据集和最初的数据集是相似的。

我们的Breed-cognizer®所需的数据集,包含了真实世界里的图片(而不是文档的图片或者医学类的扫描),这一点和我们第一次训练用的ImageNet很像。所以是可以再用之前CNN的过滤器的。我们不用再学一次了。

对于Breed-cognizer®来说,我们仅仅把网络最后一层换了。因为我们现在要知道的,不再是这张图片是什么小动物,而是狗狗是什么品种。

因为最后一层权重是最初训练的时候随机设的,所以要训练最后一层并且调参的话,可能会改变上面几层的过滤器,所以我们就把除最后一层以外的所有层的权重都固定住,只优化最后一层。

只训练最后一层的结果

精准微调

但是我们从训练的情况了解到,最后一层目前的参数不适合当前的任务。

比如说,模型里肯定有一些权重是倾向于更高效区分出猫和金鱼的。但是这个权重对推送狗狗照片没什么用。为了进一步优化我们的网络,我们还解锁倒数后几层,再重新微调。

那要解锁几层呢?这要看情况,我们一层一层试过去,直到发现再无法优化结果为止。

但因为这些被解锁层都对最后结果有影响,所以我们只能慢一点点地训练,希望尽可能做到保留有用的权重,而把无关的去掉。

训练的进度会影响到我们每一次梯度下降迭代的调参程度。这样精准地微调之后,推送识别器的准确率可以达到90%(在无法增加数据样本的情况下)。

场景2:新的数据集不再和最初的数据集一样

我们视觉识别模型的效果很好,越来越多的人听说到我们的模型表现后,开始联系我们,开出各种项目需求。其中一个还是卫星图像识别,另外一个是医学初创企业。

###### 卫星图像

这两个项目需求的数据集都和我们曾经训练宠物识别器不一样。特别是医学上的CT影像。

肺部的CT扫描

这种情况,还是用预训练过的权重更好,但是需要解锁所有网络层。然后我们在用新数据集,以正常的学习率训练。另外,斯坦福CS231n李飞飞主讲的王牌课程也论述了这个问题。

迁移学系几乎是所有视觉识别研究的主场。除非你有个庞大的数据集,否则很少会一上来从0开始训练。这篇入门文章所提到的学习资源可能会给你建立一定的感觉,迁移学习大概是怎么一回事,以及它的工作原理。

原文链接:https://blog.slavv.com/a-gentle-intro-to-transfer-learning-2c0b674375a0

最后给大家个List~~汇总下前面提到的学习资源(๑•̀ㅂ•́)و✧

  1. 深度学习概况:fast.ai
  2. 随机梯度下降算法概述:http://ruder.io/optimizing-gradient-descent/
  3. 更多预训练的神经网络 Pretrained Models on Keras:https://keras.io/applications/ TorchVision for PyTorch:http://pytorch.org/docs/master/torchvision/models.html
  4. 供参考的训练Breed-cognizer®的数据集:https://www.kaggle.com/c/dog-breed-identification/data
  5. 斯坦福CS231n李飞飞主讲的王牌课程 生肉:http://cs231n.github.io/transfer-learning/ 熟肉:http://study.163.com/course/introduction/1003223001.htm

原文发布于微信公众号 - 量子位(QbitAI)

原文发表时间:2017-11-19

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI2ML人工智能to机器学习

图文并茂,卡曼滤波

我务必向大家介绍卡尔曼滤波器(Kalman Filter),因为它之所能, 忒惊人!

792
来自专栏灯塔大数据

塔秘 | 宅男的福音:用GAN自动生成二次元萌妹子

导读:相信每个人都会被卡哇伊的二次元妹子萌到,我们很多人也可能梦想自己创作二次元人物,但奈何技艺不精、功力不足,得到的结果往往无法达到我们的期望。现在人工智能来...

5467
来自专栏数据魔术师

机器学习与运筹学竟如此暧昧??

8215
来自专栏用户2442861的专栏

结合实例与代码谈数字图像处理都研究什么?

图像处理(以及机器视觉)在学校里是一个很大的研究方向,很多研究生、博士生都在导师的带领下从事着这方面的研究。另外,就工作而言,也确实有很多这方面的岗位和机会虚...

2591
来自专栏量子位

用DensePose,教照片里的人学跳舞,系群体鬼畜 | ECCV 2018

Facebook团队,把负责感知的多人姿势识别模型DensePose,与负责生成的深度生成网络结合起来。

1663
来自专栏机器之心

学界 | 结合生成式与判别式方法,Petuum新研究助力医疗诊断

36412
来自专栏AI科技大本营的专栏

腾讯AI Lab多篇论文入选CVPR、ACL及ICML等顶级会议(附论文下载)

腾讯AI Lab微信公众号今日发布了其第一条消息,宣布腾讯AI Lab多篇论文入选即将开幕的CVPR、ACL及ICML等顶级会议。 在AI科技大本营公众号会...

4278
来自专栏新智元

【深度学习路线图】关键概念、模型及其发展关系

【新智元导读】新智元以前也译介过 Carlos E. Perez 关于深度学习的文章。这次我们要介绍的是他最新制作的“深度学习路线图”。 Perez 发现,他...

7244
来自专栏CVer

[计算机视觉论文速递] 2018-06-06

这篇文章有4篇论文速递信息,涉及目标跟踪、GAN、Zero-Shot Learning、视频分类和行人重识别等方向(含一篇IJCAI 2018和一篇IROS 2...

1742
来自专栏AI科技大本营的专栏

如何让摄像头变成“暗夜之眼”?英特尔开发了一套基于FCN的成像系统

【AI科技大本营导读】手机拍照的重要性不必多说,不论是国外的苹果、三星,还是国内的华为、小米,都在提升拍照性能上下足了功夫,目前的手机摄像头已经逐渐从单摄走向双...

943

扫码关注云+社区

领取腾讯云代金券