一年内学习机器学习
这是我之前写过的文章《一周机器学习》的后续,文章讲述了我如何通过五天时间学习机器学习 (ml) 来开启我的机器学习之路。
在这次高效的介绍之后,我继续利用业余时间学习,差不多一年后,我在工作中完成了我的第一个机器学习项目,其中涉及使用各种机器学习和自然语言处理 (nlp) 技术来确定 Xeneta的销售线索。
这感觉像是一种幸福:做一些我通常只是为了好玩的事情却能得到报酬!
它也让我摆脱了只有拥有硕士或博士学位的人才能从事机器学习专业工作的错觉。
事实是,你不需要太多数学知识就可以开始机器学习,而且你不需要学位就可以专业地使用它。
在这篇文章中我想分享我的旅程,因为它可能会激励其他人也这样做。
首次介绍:Hacker News 和 Udacity
我对机器学习的兴趣可以追溯到 2014 年,当时我开始在Hacker News 上阅读相关文章。当时,我感觉通过数据来教机器一些东西的想法很有吸引力。当时我甚至还不是一名专业的开发者,只是一个做过几个小项目的业余程序员。
因此,我开始观看 Udacity 的监督学习课程的前几章,同时阅读我遇到的有关该主题的所有文章。
这让我对概念有了些许理解,但并没有掌握实践技能。我也没有完成课程,因为我很少完成MOOC课程。
Coursera 的机器学习课程失败
2015年1月,我加入了伦敦的创始人与程序员(FAC)训练营,目标是成为一名开发者。几周后,我想学习如何编写机器学习算法,于是和几个同学组建了一个学习小组。每周二晚上,我们都会观看Coursera机器学习课程的讲座。
这门课程太棒了,我学到了很多东西。但对初学者来说,难度有点高。我得一遍又一遍地看讲义才能掌握概念。Octave 的编程任务也很有挑战性,尤其是对那些不懂 Octave 的人来说。由于难度太大,几周过去了,学习小组里的人一个接一个地退出了。最后,我自己也退出了。
回想起来,我应该从一门使用机器学习库进行编码任务的课程开始——而不是从头开始构建算法——或者至少使用我所知道的编程语言。
对于新手来说,学习一门新语言的同时尝试编写机器学习算法太难了。
如果时光倒流,我会选择 Udacity 的机器学习入门课程,因为它更简单,而且用到了 Python 和 Scikit Learn。这样,我们就能尽快上手,建立自信,享受更多乐趣。
获得的经验是:从简单、实用的事情开始,而不是从困难、理论的事情开始。
一周机器学习
我在FAC做的最后一件事就是机器学习周特技。我的目标是在周末能够将机器学习应用于实际问题,而我做到了。
整个一周我做了以下事情:
- 了解Scikit Learn
- 在真实世界的数据集上尝试了机器学习
- 从头编写线性回归算法(使用 Python)
- 做了一点点NLP
这是迄今为止我经历过的最陡峭的机器学习学习曲线。如果你想了解更详细的概述,请继续阅读本文。
经验教训:花一周时间专门沉浸在一个新主题中是非常有效的。
失败的神经网络
在伦敦完成FAC并搬回挪威后,我尝试重复机器学习周的成功,但这次我使用的是神经网络。
这失败了。
每天花10个小时编程和学习实在是太让人分心了。我低估了在FAC与同龄人共事的重要性。
获得的经验是:在进行此类学习技巧时,要找到一个蓬勃发展的环境来陪伴自己。
不过,我至少开始接触神经网络,并慢慢掌握了它的概念。到了7月,我终于写出了我的第一个网络代码。这可能是我写过的最烂的实现,说实话,我都不好意思炫耀它。但它确实成功了;我向自己证明了我理解了反向传播和梯度下降等概念。
下半年,我的进度慢了下来,因为我开始了一份新工作。这段时间最重要的收获是从非矢量化到矢量化神经网络实现的飞跃,这需要我重复大学里学过的线性代数。
到了年底我写了一篇文章,作为我在这篇文章中学到的东西的总结。
测试 Kaggle 竞赛
2015年圣诞假期,我再次燃起动力,决定尝试一下Kaggle。于是我花了不少时间,尝试各种算法,用于他们的“房屋报价转换”、“Otto Group产品分类”和“自行车共享需求”竞赛。
Kaggle 是一种有趣的方式,可以用来试验数据集并获得有关您的表现的反馈。
其中的主要收获是通过试验算法和数据来迭代改进结果的经验。
我学会了在进行机器学习时相信自己的逻辑。
如果从逻辑上来说调整一个参数或设计一个新功能似乎是一个好主意,那么它很可能真的会有所帮助。
在工作中建立学习习惯
2016年1月回到工作岗位后,我想继续保持圣诞节期间的学习节奏。于是我问经理,我是否能在工作时间抽出一些时间学习,他欣然同意了。
在对神经网络有了基本的了解之后,我想继续进行深度学习。
Udacity 的深度学习
我最初尝试的是Udacity的深度学习课程,结果却大失所望。视频课程内容虽然不错,但对我来说太短太浅显了。
而且 IPython Notebook 的作业最终也让我很沮丧,因为我大部分时间都花在了调试代码错误上,这简直是扼杀学习动力的最有效方法。所以,在工作中这样练习了几次之后,我就放弃了。
替他们辩护一下,我对 IPython Notebooks 完全是个菜鸟,所以对你来说可能没我那么糟糕。所以,也可能只是我还没准备好上这门课。
斯坦福——NLP 深度学习
幸运的是,我后来发现了斯坦福的 CS224D,并决定尝试一下。这是一门很棒的课程。虽然很难,但我做习题集的时候从来没遇到过调试的情况。
其次,他们实际上也为您提供了解决方案代码,当我遇到困难时我经常会查看它,以便我可以逆向思考以了解解决问题所需的步骤。
虽然我还没有完成它,但它已经大大提升了我在 nlp 和神经网络方面的知识。
然而,这很艰难。真的非常艰难。有一次,我意识到我需要一个比我更优秀的人的帮助,于是我联系了一位博士生,他愿意以每小时40美元的价格帮助我,不仅帮我解答习题,还帮我进行整体理解。这对我继续前进至关重要,因为他发现了我知识中的很多漏洞。
经验:每小时大约 50 美元就能找到一位优秀的机器学习老师。如果你负担得起,绝对值得。
除此之外,Xeneta最近还聘请了一位数据科学家。他拥有数学硕士学位,所以当我遇到各种线性代数、微积分,或者其他机器学习问题时,我经常会向他寻求帮助。所以,也请务必查看一下公司内部有哪些资源。
提升 Xeneta 的销量
做完这些之后,我终于觉得可以在工作中做一个机器学习项目了。这个项目主要涉及训练一个算法,通过阅读公司描述来筛选销售线索。事实证明,它为使用该工具的销售人员节省了大量时间。
查看我下面写的相关文章或前往 GitHub 直接查看代码。
走到今天这一步无疑是一段漫长的旅程,但同时也是一段快速的旅程;当我开始我的一周机器学习项目时,我当然没想过一年内就能真正专业地使用它。
但这百分之百是可能的。如果我能做到,其他人也能做到。
感谢阅读!我叫 Per,是Scrimba的联合创始人 ——Scrimba 致力于提供更优质的代码教学和学习方式。我们有大量免费的 Web 开发课程,如果你感兴趣的话,可以去看看。
如果您已经读到这里,我建议您查看这个演示!
文章来源:https://dev.to/scrimba/machine-learning-in-a-year-j50