资讯专栏INFORMATION COLUMN

我是如何在1天内构建一个深度学习模型并进击Kaggle比赛的

shinezejian / 1548人阅读

摘要:是为结果导向型人群开设的深度学习在线课程。但是最关键的是,我想通过构建简单的深度学习解决方案来实现理论和实践的相结合。我的目标是在一天结束前进入排名的前。我的时间都用于学习库组织数据和评估结果都是一些与深度学习无关的简单流程。

Fast.ai是Jeremy Howard为结果导向型人群开设的深度学习在线课程。

我读过很多关于机器学习的书,也参加过不少这方面的课程,但我认为Fast.ai是迄今为止实用的深度学习入门课程。在本文中,我将与大家分享我在学完前两课后的一些经验。

从数学开始学习人工智能是个错误的选择

22年前,我在斯坦福大学学习Bernie Widrow的神经网络课程,这位数字滤波器之父谆谆善诱,向我们讲解随机梯度下降的原理。

学了一半的理论课程,我还是不能完成神经网络的实现,只学会了如何用MatLab构建神经网络。后来,当我需要编写代码来训练我的网络权重时,我才终于理解了什么是随机梯度下降。

不过,这种窘境到现在也并未发生多大变化。大多数机器学习实战工程师都有着学术背景;当专业程序员问他们 “我该如何开始学习人工智能?”,多数工程师会向他们推荐一些偏重数学的学习资料,比如《深度学习》这本书(这种情况时有发生)。

对研究人员而言,Ian Goodfellow的这本书是一本很好的参考书,但对我们中的大多数人而言它并不是一本好的入门书籍。这本书关于梯度下降的章节使我回想起读研究生时遇到的窘境:

上图为Goodfellow等人所著的《深度学习》中关于梯度下降的一页。这本书有很好的研究参考价值,但是对专业程序员而言,并不是一本实用的入门书。我在圣诞节期间读完了本书三分之二的内容,但我还是不会构建神经网络。

对于研究人员或者人工智能前沿的推进而言,理解理论是至关重要的一步。但是,对于大多数人工智能商业应用而言,数学是个很大的干扰。

为什么?因为企业面临着一些更为严峻的挑战,例如选择正确的问题,组织数据,部署解决方案等。面对市场风险和执行风险,专业程序员不得不使用成熟的技术来开发应用——因此,懂得如何实现某一解决方案要比理解该方案的工作原理更为重要。

光读不练假把式,必须实践。

学习新技能的方法就是:使用该技能练习构建。深度学习也一样, JeremyHoward的Fast.ai课程注重实践,是学习人工智能最快的方法。

Fast.ai让你通过实践学习深度学习

课程的联合创始人Jeremy Howard和Rachel Thomas实现了他们的承诺——“让所有人都能运用机器学习的力量”。本文不对课程进行描述,我会推荐你阅读学习者对该课程的评论并分享我早期的经验。

我为什么决定参加这个课程

在参加该课程之前,我已具备良好的深度学习理论基础,并掌握了该技术各种应用的实践知识。我参加这个课程是为了获得更多实践经验。

构建简单的解决方案能帮我更加有效地筹划项目、雇用项目人员和进行工程学权衡——这是任何领导者都须具备的技能。

但是最关键的是,我想通过构建简单的深度学习解决方案来实现理论和实践的相结合。

如何建立一个算法来检测入侵物种

在一天内能达到什么样的水平?

学完前两课后,我决定参加Kaggle比赛。

我的目标是:

在一天结束前进入排名的前50%。

自己动手编写每行代码,不用剪切和粘贴。

了解所有引用的库和API。

我选择了“入侵物种监测”竞赛(Invasive Species Monitoring playground competition)。 这是一个比较简单的分类问题,对初学者而言算是一个很好的起点。

还有,它听起来就很有趣。

上图为 “入侵物种监测Kaggle竞赛”中入侵性绣球花(绣球花:一种植物的分类)。

比赛的内容是开发出识别森林和叶子图像中是否包含入侵性性绣球花的算法。

早上七点,我沏了一壶咖啡后开始工作,在亚马逊AWS上对GPU进行了加速。晚上9点,我的眼睛开始酸痛,我的大脑跟炸了一样。

我决定将我的结果提交给Kaggle……

我的代码

这是我在github上的完整笔记,里面记录了我工作计划的7个步骤

不用对我的代码感到惊讶——我使用的方法与课堂上学习的方法类似。任何一个具有1年工作经验(或以上)的程序员应该都能写出这样的代码。

我90%的时间都用于学习库、组织数据和评估结果——都是一些与深度学习无关的简单流程。

验证结果

我使用90%的图像训练我的算法,并用剩余的10%来验证结果。

预测精度

我的预测精度达到了91%。这是混淆矩阵:

混淆矩阵显示了我的算法检测验证集的有效性。 最需要改进的的地方是漏报问题——在12个实例中算法错误地将入侵物种识别为非入侵物种。 您可以在下方查看该结果。

91%是什么概念? 就在3年前,较先进的计算机视觉识别技术也只能达到80%!我在第一次尝试中就超越了它。

包含花的图像被正确识别

我检查了被算法正确识别的图像。大蓝色绣球花似乎是关键特征。

某些被错误识别的图像存在明显问题

这个算法错误地识别了18个图像。 这是算法需要改进的地方。

漏报的图像似乎是未被正确识别的小花。 我认为通过裁剪照片生成更多标记样本,可以改善算法的结果。

胜利! 我进入了前50%!

在我的第一次尝试中,我在52位参赛者中排名第21,进入前50%。

目标达成!

我在一天内进入了排名的前50%。

没有较好只有更好。

Fast.ai是否适合你?

如果你的目标是加入Open.ai团队或赢得ImageNet竞赛,那么Fast.ai课程并不十分适合你,因为你需要学习偏导函数。

但对于其他人,比如想要获得实用的基础知识介绍的团队领导,希望学习深度学习工程师入门知识的专业程序员,想知道如何开发AI spec的产品经理,或者任何想对一吨乐高进行分类的人员来说,Fast.ai是个很好的开始。

相关链接

GitHub地址

https://github.com/kevindewalt/ai-notebooks/blob/master/invasive_species.ipynb

Fast.ai深度学习课程地址(英文)

http://course.fast.ai/

Invasive Species Monitoring

https://www.kaggle.com/c/invasive-species-monitoring

原文地址

https://medium.com/the-business-of-ai/fast-ai-how-i-built-a-deep-learning-application-to-detect-invasive-species-in-just-1-day-and-for-38e0ced809e9

欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:81035754

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4555.html

相关文章

  • Kaggle冠军经验分享丨如何15个月冲到排行榜首位

    摘要:你是如何开始参加比赛的正如之前所说的,我一直在阅读大量机器学习和深度学习方面的书籍和论文,但发现很难将我学到的算法应用于小型数据集。机器学习中,你对哪个子领域最感兴趣我对深度学习的各种进步都很感兴趣。 showImg(https://segmentfault.com/img/bVboxKz?w=800&h=600); 作者 Kaggle Team中文翻译 MikaCDA 数据分析师...

    AnthonyHan 评论0 收藏0
  • 如何为你深度学习任务挑选最合适 GPU?

    摘要:年月日,机器之心曾经推出文章为你的深度学习任务挑选最合适从性能到价格的全方位指南。如果你想要学习深度学习,这也具有心理上的重要性。如果你想快速学习深度学习,多个廉价的也很好。目前还没有适合显卡的深度学习库所以,只能选择英伟达了。 文章作者 Tim Dettmers 系瑞士卢加诺大学信息学硕士,热衷于开发自己的 GPU 集群和算法来加速深度学习。这篇博文最早版本发布于 2014 年 8 月,之...

    taohonghui 评论0 收藏0
  • 我是如何入门机器学习

    摘要:在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。相关学习链接,,入门后的体验在入门了机器学习之后,在实际工作中,绝大多数的情况下你并不需要去创造一个新的算法。 机器学习在很多眼里就是香饽饽,因为机器学习相关的岗位在当前市场待遇不错,但同时机器学习在很多人面前又是一座大山,因为发现它太难学了。在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。 PS:这篇文章...

    ShowerSun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<