从0到1:我是如何在一年内无师自通机器学习的?

编者按:去年,Per Harald Borgen 写了一篇名为《为期一周的机器学习研究》的文章,讲述了他如何通过五天的努力开启机器学习之旅。

接下来你看到的是此文的后续,Per Harald Borgen 将和我们分享他如何在一年内掌握机器学习知识的经历,并在工作中完成了第一个机器学习项目,包括使用各种各样的机器学习和自然语言处理技术,使 Xeneta 的潜在客户达到合格标准。

在 Per Harald Borgen看来,他并不认为只有获得博士或硕士学位的人才能在机器学习方面更加专业。“研究机器学习并不需要你数学学得很好,也不需要你一定要取得什么样的学位。”

如果你对机器学习抱有好奇又心存敬畏,不妨看看这篇文章。

入门:Hacker News (黑客新闻)和 Udacity (优达学城)

我对机器学习的兴趣开始于 2014 年。那时候我刚开始在 Hacker News 上阅读有关它的一些文章。然后我就发现通过检测数据来教会机器做一些事情,这种想法十分有趣。当时的我甚至连一个专业的开发员都不算,只能算是一个业余编码员,但我还是想试一试。

所以我就开始看 Udacity 的监督学习课程的前几章,并同时开始阅读有关这方面的所有文章。

尽管没有掌握到实践技能,但我还是对机器学习的概念有了一定的认识。但由于我很少听大规模在线开放课程,所以并没有听完。

“成功”挂掉Coursera 机器学习课程

2015 年 1 月,我参加了伦敦的“创始人和程序员”训练营地(FAC bootcamp),想成为一名程序员。几周过后,我想学习如何码机器学习算法,于是我就和几个同伴成立了一个学习小组。每周二晚上,我们都会在 Coursera 上观看机器学习课程。

这个课程很棒,我也学到了很多。但是对于一个初学者来说,课程内容太难,因此我必须要一遍遍反复观看才能掌握要点。

与此同时, Octave 编码任务也同样十分具有挑战性,尤其是如果你不了解 Octave 的话。后来,因为难度太大,小伙伴们一个个都放弃了,再后来,我自己也最终放弃了。

事后,我意识到,我应该找一个适合我的课程来听。要么是用机器学习图书馆来进行编码任务,而不是从头创建算法,又或者至少是用我了解的编程语言。

对于新手来说,学习一门新的语言,并同时编码机器学习算法,实在是太难了。

如果我及时发现的话,我会选择 Udacity 的《机器学习介绍》这门课程,因为它更加简单并且采用 Python 和 Scikit 学法。用这种方法,我们可以尽快上手,获得自信,同时也更加有趣。

习得:从简单和实际的东西开始学,而不是困难和理论性的。

为期一周的机器学习

我在 FAC 最后进行的努力就是每周的机器学习汇演。我的目标是在此次训练周即将结束的时候,能够运用机器学习来解决一些实际问题。最终我成功了。

在这一周时间内我做了下列这些事情:

  • 逐步了解 Scikit 学习
  • 在真实的全球数据集上尝试了机器学习
  • 从头编码了一个线性回归算法(用 Python )
  • 做了一点点自然语言处理

这是到目前为止我所经历过的最曲折的机器学习的学习曲线了。如果你想了解更多详细情况的话,就请继续读这篇文章吧。

习得:用一周的时间让自己完全沉浸于一个新的项目当中,这是极为有效的。

神经网络?我也挂了

在结束了伦敦的 FAC 训练营地之后,我又回到了挪威。我试图复制之前在机器学习周所取得的成功,将其用于神经网络,结果失败了。

因为有太多的事情来分散我的精力,因此我无法每天花 10 个小时的时间来编码和学习。我这才发现环境的重要性,因为之前在 FAC 训练营地的时候,周围都是机器学习的爱好者。

习得:在做这类学习的时候,让自己处在一个积极向上的环境之中。

但是,至少我开始着手从事了神经网络的研究,并且也慢慢掌握了要领。终于到了 7 月 1 日,我成功编写了我的第一条网络。它可能没有什么价值,并且于我而言也没什么可炫耀的,但这至少证明我了解了反向传播和梯度下降的概念。

在后半年,由于我找了新的工作,因此项目进展开始缓慢下来。这一时期最重要的收获就是从神经网络非向量化到向量化实施的重大飞跃,这其中包括从大学就一直重复的线性代数。

在年底的时候,我写了一篇文章来对我的学习进行总结。

测验 Kaggle 竞赛

在 2015 年圣诞假期的时候,我再一次鼓起勇气,决定试验 Kaggle 。因此我花了相当一段时间来试验各种算法,用于测试 Kaggle 的住宅报价转换,奥托集团产品分类,以及自行车共享需求竞赛。

通过试验各种算法和数据,使结果得到不断改善,这是我在这次尝试中最大的收获。

我学会了要在做机器学习时相信自己的逻辑。此外,倘若调整一个参数或者设计一个新的特征在逻辑上看来行得通的话,那么它在实际应用当中也可能会有所帮助。

在工作中安排日常学习

2016 年 1 月,假期结束之后我又重新回归工作,我想要继续圣诞假期的研究,因此我就问我的经理是否可以让我在上班时间花一些时间来学习。他欣然同意了。在对神经网络有了一个基本的了解之后,我想继续进行深入学习。

Udacity 的深度学习

我首先尝试的是 Udacity 的深度学习课程,但结果令我十分失望。课程的内容很好,但是对我来说太短太浅显了。

除此之外, IPython Notebook 任务的结果也十分令人沮丧。我花了大多数的时间来调试代码缺陷,结果在连续工作数周之后,当初的热情逐渐退却,到最后我基本上就放弃了。

对于我来说,谈到 IPython Notebooks ,我完全是个新手。所以比起我,你们的结果或许并不会像我一样这么坏。可能是我还没有准备听这个课程吧。

斯坦福的深度学习自然语言处理

幸运的是,我后来又发现了斯坦福的 CS224D ,然后就决定试一试。这个课程很棒。尽管很难,但是在做问题设置的时候,我从没放弃过调试。

其次,它们也确实给了你解决方案的代码。我在遇到困难时常常会看一下这些代码,以便能让自己的工作倒回去,重新去搞清楚达成解决方案所需的步骤。

尽管我还没有完成,但这已经大大提升了我在自然语言处理和神经网络方面的知识。

然而这一过程真的十分艰辛。我一度认为自己需要一个比我好的人来帮助我,于是我找到了一个博士在读学生,给他每小时 40 美元的报酬,他欣然接受。他帮助我解决问题设置和整体认识上的问题,而他的帮助对我来说是至关重要的,因为他发现了我很多知识上的黑洞。

习得:以每小时 50 美元的报酬就有可能找到一个很好的机器学习领域的老师。如果你付得起的话,这绝对值得。

提升 Xeneta 的销售额

在做了以上所有工作之后,我觉得自己已经准备好在工作中做一项机器学习项目了。该项目旨在训练出一套算法,利用该算法,通过阅读企业描述来使 Xeneta 的潜在客户达到合格标准。这对于销售部门的员工来说,将节省大量的时间。

走到这一步确实是一个漫长的旅程。但其实也很快。在我开始第一周的项目时,我完全没想过自己能在一年的时间内熟练使用机器学习。

但是这是完全有可能的。如果我能做,那么其他人也一定可以。

via medium

后记:看完了 Per Harald Borgen 一年来的学习历程,有没有觉得机器学习离我们并非那么遥不可及了呢?然而,与方法同样重要的是恒心,如果你对机器学习真的感兴趣,不妨就从现在开始吧。

推荐阅读:

Machine Learning: 一部气势恢宏的人工智能发展史

智能手机 + 机器学习 = 个人终端的未来

本文作者:Jasper.T

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-12-30 16:45:28

从0到1:我是如何在一年内无师自通机器学习的?的相关文章

这个报错怎么解决啊 iOS集成3.0环信 我是没有导入什么吗?求助~

问题描述 Implicit declaration of function 'NSEaseLocalizedString' is invalid in C99Implicit conversion of 'int' to 'NSString * _Nullable' is disallowed with ARC都是这种,我是没有导入什么吗? 解决方案 在.pch文件里加这个就好了~#define NSEaseLocalizedString(key, comment) [[NSBundle bun

干货分享 | 深度学习零基础进阶大法!

pixabay 编者按:新手上路都会有一个疑问,如果自己没有相关基础,如何学习晦涩的专业知识?此前雷锋网编译了<从0到1:我是如何在一年内无师自通机器学习的?>,这篇文章讲述了 Per Harald Borgen 的自学历程.而关于深度学习,GitHub的 songrotek 同样有话要说.原文名为<Deep Learning Papers Reading Roadmap>,雷锋网奕欣及老吕IO整理编译,未经许可不得转载. 0. 深度学习的"圣经" 提到入门级的

视频分享网站是标准的1.0模式

视频分享网站土豆在前一阵子进行了一次改版.单个视频文件播放的时候,它的底色是黑的.我向来很喜欢黑色底版的网页(仅仅从视觉上,我知道黑底白字不适合阅读),黑色页面会让人感觉很cool也很shock.土豆看来明白这一点.在保持首页的白底风格的同时,它的storypage变黑了. 有一阵子,土豆弄来了一点广告赞助,它将这个广告赞助衬在视频文件背后.用户在欣赏那些视频的同时,会看到后面大大的广告.这是一个不错的创新.估计是从那些电视连续剧下方一直出现的赞助商logo上得到的启发.网络视频都是些几分钟的小

揭秘招商银行App6.0:当一个银行App开始谈智能

招商银行在京举行发布会,推出最新版招商银行App6.0.据介绍,时隔近一年,相较于招商银行App5.0,App6.0从"摩羯智投"单个功能的智能进化为全平台智能,构建起基于数据.计算.算法的智能数据闭环,以驱动App产品模型.发展策略乃至商业模式的进化.迭代. 曾有业内人士指出,金融业已进入深度人工智能阶段.而招商银行App6.0要实现全平台智能化.自动化运营并能快速迭代,背后是极其复杂而细长的技术链条和网络. 何为招商银行App6.0全平台智能化? 1 在招商银行App5.0上,我们

NetBSD安装日记

我以前是玩儿linux的,但现在爱上了bsd,因为bsd更简洁明快,比较干净,现在的linux发行版显得非常的杂乱,相比起来我更喜欢bsd的整洁!说真的,我觉得现在中国玩儿linux的人大都是为了赶时髦,而不是喜欢它的opensource(其实netbsd的代码是公认最规范,最工整,很多书上或者很多人都推荐从netbsd开始学习操作系统).netbsd一向以支持的平台多著称,其实它还有很多优点,可是中国人玩儿netbsd好像很少,网上netbsd的中文资料也相当难找,尤其是针对初学者的.今天我把

sql-SQL按月统计没有数据的月份如何显示

问题描述 SQL按月统计没有数据的月份如何显示 这是表. SELECT MONTH(CREATE_TIME) AS m,COUNT(*),REMARK FROM dept AS d WHERE YEAR(CREATE_TIME)=2016 AND REMARK = 2 OR REMARK GROUP BY MONTH(CREATE_TIME) 这是SQL 这是结果.我想要没有数据的月份显示为0 例如上面的结果8,9,12月没有数据.就显示为8 0,9 0, 12 0 解决方案 如果我是你用数据库

HTML 遮罩显示工具栏

需求 想要实现一个照片,鼠标移到照片上,可以显示编辑该照片的工具栏 实现 整体布局 <div id="photo_id" class="photo_contarner" onmouseover="handlerIn( event )" onmouseout="handlerOut( event )"> <a href="javascript:void(0);" onclick="

在32位及64位 Win7 vista及win2008上安装oracle10g问题处理

在32位及64位Win7 vista及win2008上安装oracle10g安装问题处理 很多人在win7 vista win2008上安装oracle 10g的时候都会报如下版本不支持错误,实际上原因是因为oracle 10g出来的比如上系统要早,但是我们还是有办法处理的.详细过程参考下面步骤: 解决问题有三个办法 方法一: 1. 修改安装配置文件 安装介质解压后,进入如下路径database\install,找到oraparam.ini文件,编辑 如下部分: [Certified Versi

VS2010编写网站,用iis发布网站时出错

问题描述 VS2010编写网站,用iis发布网站时出错 自己用vs2010编写的程序,用IIS发布,出现的问题是"未能从程序集"System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"中加载类型"System.ServiceModel.Activation.HttpModule"."上网找的解决方式是在cmd中输入Microsof