我是如何在1天内构建一个深度学习模型并进击Kaggle比赛的深度学习
网络
我是如何在1天内构建一个深度学习模型并进击Kaggle比赛的深度学习
算法
我是如何在1天内构建一个深度学习模型并进击Kaggle比赛的深度学习
神经网络
我是如何在1天内构建一个深度学习模型并进击Kaggle比赛的深度学习
深度学习
我是如何在1天内构建一个深度学习模型并进击Kaggle比赛的深度学习
人工智能

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


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


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

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


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


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


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


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

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


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


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


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


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


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

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


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

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


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


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


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


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


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


我的目标是:

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

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

了解所有引用的库和API。


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


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



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

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


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


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


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


我的代码

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



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

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


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


验证结果

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


预测精度

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



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

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


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


包含花的图像被正确识别

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



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

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


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



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

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


胜利! 我进入了前50%!

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


目标达成!


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

我在一天内进入了排名的前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群:418451831

tags: ai,学习,课程,深度,Fast,算法,识别,人工智能,Kaggle,图像,程序员,入侵,构建
分页:12
转载请注明
本文标题:我是如何在1天内构建一个深度学习模型并进击Kaggle比赛的深度学习
本站链接:http://www.codesec.net/view/555518.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 商业智能 | 评论(0) | 阅读(326)