首页天道酬勤()

()

admin 12-21 14:17 122次浏览

这是一个临时链接,仅用于预览文章,短期内无效

“来吧,和我一起填表学习吧。”

专注于2017-11-19量子比特的报道

原作slav伊凡诺v

Root编译从Slav发来的几篇博客

量子出品|公众号QbitAI

Slav Ivanov是后规划者(提高社交媒体影响力的APP )的首席执行官。 成为黑客后,成为企业家的大叔,结合自己的创业经验,向大家分享他认为好的迁移学习的资料。 以下是他的原文。

现在很多深度学习的应用都依赖于迁移学习,特别是在计算机视觉领域,本文主要介绍什么是迁移学成,如何完成迁移学习,以及可能存在的缺点。

我最初接触迁移的学习是因为企业家要用。

不如开个公司吧?

有一天,朋友和我们聊起了脑袋大开的想法。 他希望做下一个爆款社交媒体,宠物版的脸书。 人们可以展示他们主人的照片,也可以看到别人的喵喵和旺财。 我们都是第一反应,认为这个想法不错。

我们认为“没有人不想整天看萌萌的照片”。

我们马上筹集了资金,开始了潜在的用户调查。 问了几个喜欢宠物的人之后,我注意到了喜欢猫的人不太喜欢看狗的照片的问题。 养鹦鹉的人也不喜欢看猫的照片,养金鱼的人只喜欢看别人养的金鱼。

现在到了2017年,我们不用再苦苦地逐一询问人们喜欢看什么宠物的照片了。 我们利用直接机器学习的方法,自动识别人们看到的照片上拍的是什么宠物。 然后根据他们看到的照片宠物进行分类。

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

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

因为hhdxtg有自觉的飞鸟Krizhevsky带头,通过CNN获得了当年的ImageNet挑战赛(大致相当于计算机视觉的年度奥运会),将分类误差记录从26 )降到15 )。 CNN的活跃当时震惊了世界。

从此,CNN成为了计算机视觉中的主流算法。 也应用于其他深度学习领域。

如果您想了解更多关于深度学习的概述,建议您访问fast.ai上的“用于编解码器的科学深度学习”的第一部分和第二部分。 这篇文章中记载的所有学习资料的链接都在最后呢。 以后自作自受。 这些资料都是开放的。

在卷积神经网络的情况下,要分类的图像数据是输入。 然后,根据分类的不同,将学习后调整权重的参数称为滤波器和通道。 这些过滤器有好几层重叠,网络的最后一层有输出,告诉我们这张图是猫、狗、鸟等。

CNN的入门

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

我们开始利用这些数据训练我们的模型,并使用随机梯度下降算法(stochastic Gradient Descental Gorithm )进行了优化。 不久,我们的CNN就能区分猫和鹦鹉了。 我们给这个模型起了名字。 宠物可以识别宠物感染病毒。

其实,已经有很多前辈在ImageNet上做了很多工作,训练了很多CNN模型。 这些预先训练的神经网络都是开放的。 如果有兴趣,请去看pretrainedmodelsonkerasandtorchvisionforpytorch。

CNN模型的第一层滤波器现在可以识别边界、渐变、实心区域。 第二层过滤器可以联系从第一层得到的数据,判断哪个是条纹,哪个是直角,哪个是圆。

三楼已经能分辨人、鸟、车的车轮等了。

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

就这样,我们的Pet-cognizer解决了!

新的任务

我们试运行的项目被建议,如果能按照我们喜欢的灯泡的品种进行分类就更好了。 所以,我们又继续摆弄模型。 这种能够识别愉快的灯泡品种的模型称为Breed-cognizer。 但问题是,我们找不到几百张欢乐灯泡的照片来训练新模型。 我们的数据集有120个数据源,每个数据源有100张图。 我们打算先用这个小数据训练我们的CNN,但是结果很差。

="https://p6.toutiaoimg.com/origin/46ee0002608e788a39b0?from=pc">

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

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

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

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

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

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

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

△ 只训练最后一层的结果

精准微调

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

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

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

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

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

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

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

######△ 卫星图像

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

△ 肺部的CT扫描

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

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

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

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

a.深度学习概况:fast.ai

b.随机梯度下降算法概述:http://ruder.io/optimizing-gradient-descent/

c.更多预训练的神经网络

Pretrained Models on Keras:https://keras.io/applications/

TorchVision for PyTorch:http://pytorch.org/docs/master/torchvision/models.html

d.供参考的训练Breed-cognizer®的数据集:https://www.kaggle.com/c/dog-breed-identification/data

e.斯坦福CS231n李飞飞主讲的王牌课程

生肉:http://cs231n.github.io/transfer-learning/

熟肉:http://study.163.com/course/introduction/1003223001.htm

— 完 —

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

使用Windows服务器轻松访问海外站点怎么用vue+antd实现折叠与展开组件C++构造析构赋值运算函数怎么应用RoadRunner有哪些特性
图像识别的应用场景有(个人pos机怎么用) 自信自立自强(自尊自爱自立自强)
相关内容