如何学习机器学习?

记录一下自己的学习过程、期间遇到的一些疑惑和整理的一些学习资源等。

明确学习的动力,好奇、求知欲、不得不学等等,然后督促自己完成。

一、回顾

自己结缘算法纯属巧合,没有很强的功利心,刚好要用到就去学了,学习的过程也比较坎坷、粗暴。在做项目、比赛的时候,需要用到深度学习相关的技术,于是当了掉包侠,之后去公司实习,开始接触大数据、复杂网络和推荐系统等知识,接触到实际业务场景,总结起来整个过程就是现学现卖,赶鸭子上架,以练代学。

之前更多的场景是,遇到 XX 问题,查找解决方案 / 算法 ,巴拉巴拉。很少思考这些算法背后的东西,也就是基础理论。譬如,有一次遇到 NLP 中的大量短文本主题提取需求,做了前期调研(前人分析结果)之后,选择 LDA 算法后就开始项目,至于说这个系列的算法的来龙去脉,算法的原理、推导,不同算法的抉择,有没有必要比较不同的算法结果,都不甚完善,比较粗糙。

原因是多方面的,最根本自然是基础知识缺失,那时候对于这个领域缺少足够多的了解,加上部门的项目较为繁杂,个人之前的背景也比较乱,很多方向都有涉及,但是往往浅尝辄止,没有选定某一个方向深入探究。加上项目紧急,急着要结果,自然也顾不上许多。当然,这些都是项目复盘中意识到的问题。

总的来看,自己是从 CV 开始入手,第一个项目是 OCR,从图片中提取文字,接着是物体检测(Object detection),之后在公司做复杂网络、NLP 相关的东西,再然后是推荐广告相关。这些通常都是以工程实现为目标,不涉及到理论研究,或者换个说法叫,拿来主义。这样说可能会有点 low,但事实是这样。并不清楚别的同学是否会不一样,但是我较为浅显的实习经历中是这样。

二、入门资料

很多人都会推荐资料,我看到的时候也会收藏,但往往也止于收藏。下面的推荐大绝对值得你花时间仔细琢磨。

而且,要注意的是,你在一开始看的时候,要学会”不求甚解”,一开始的时候,有些地方弄不明白,并不是你笨或者老师讲得不好,单纯是知识体系不够完善,所以理解起来有困难。对于初学者,信心和坚持最重要。

还有一点要提前打预防针,有很多很多看起来异常炫酷的算法和 paper,但是往往工作中不会用到,机器学习是为了解决问题,不是为了应用特定算法,所以不要觉得什么都要用机器学习方法,如果传统方式能解决自然更好。

在初始阶段,我们会参考一下博客之类的内容,但一定要加以区分,不要反被有些错误的地方误导。

2.1 在线课程

初期可能觉得书本难啃,可以先从视频教程入手,自己当初走了弯路,光顾着看视频,课后作业没仔细做,建议仔细完成课后作业,收获会更大。下面的课程,后两个没有看过,暂时躺在 to-do list 中。

2.2 书籍

这些书籍,往往都很全面,建议精读 + 略读,初期优先理解概念,然后推导理论。每读一遍,都有不同的收获。看书的时候一定要耐下性子,慢慢精读,多动手多推导,推荐反复阅读。

在读这些书的时候,一定要弄清楚关键公式的含义,储备好相关的数学知识,虽然理论上机器学习并不要求很高的数学水准,但是数学上的良好背景,能够更好的帮助理解某些知识。

2.3 面试准备

  • 《百面机器学习》 hulu 坦白讲这本书很多内容似乎与网上的内容相似度很高,但如果当做是面试合集,也不错
  • 关注牛客网、知乎等用户发布的机器学习相关面经,从功利的角度讲,刷面试题对面试的直接效果最佳

三、进一步提升

待完善