机器学习入门真的好难,我也经常被问到这个问题,但是我并没有特别好的回答。
对于新手而言,有四座大山:数学基础、算法模型、机器学习应用、常见工具。市面上常见教材都主要关注算法模型,而很难兼顾另外几个方面,所以学习的过程中最常见的问题就是这公式是咋推的?我学这个有啥用?模型懂了咋实现?
一本教材解决不了所有问题,机器学习的学习过程是个螺旋上升的过程。先学习一些算法模型,看不懂了再去学一些数学,同时也要看看常见的应用比如推荐、搜索、NLP、CV中是如何运用的,跑一跑最新的库。再回来学一些模型,看一看数学。螺旋上升,慢慢提高。
分享一下我的学习过程,也是缓慢的。
本科的时候机器学习还没有兴起,大家主要还在讨论数据挖掘。我在实验室里也跟着看了些论文,了解了一些最基本的规则抽取、Topic Model。这个时候学的很不系统,但是激发了兴趣。
去 CMU 研究生阶段主要的选课就以机器学习为主了。机器学习的几个方面:模型、数学、应用、工具我都选了一些课程。
- 10601 Machine Learning:入门课程,系统性地接触了机器学习中的各种模型和算法。感觉学的也有些迷迷糊糊,每天还都想着那些问题,这玩意咋推的?这玩意有啥用?这玩意咋实现?
- 10805 Deep Learning:那个时候深度学习还没有兴起,这个课还是个小课,只有一二十个人上(听说现在已经爆炸了)。以读论文和小组讨论为主,我感觉也学的比较迷糊,只是把一些关键词和直觉留了个印象。
- 11641 Search Engine & Web Mining:这个课程就是以应用为主了,在明确需求的情况下再思考模型和算法都有些什么用,确实打通了一些之前的困惑。感觉学应用还是快乐一些,作业中就有刷 leaderboard,各种黑科技刷的不亦乐乎。
- 15619 Cloud Computing:学校给钱用 AWS,学习了很多如何使用云工具,收获很大。
- 11791 Software Engineering for Information Systems:再学习了一遍软件工程。
第一学期选课太多,有点爆炸, 第二学期就少选了很多。
- 10605 Machine Learning in Large Dataset:主要学习如何用 Hadoop 实现贝叶斯算法,了解了分布式系统中一些不一样的问题,对于当时特别火热的 Large Scale Machine Learning 和 Parameter Server 有了更感性的认知。
- 10708 Probabilistic Graphical Models:当时最火的概率图模型,Eric Xing 教授讲的太快了,看了很多论文,学的也有些一知半解。
- 11792 Software Engineering for Information Systems:第二学期开始跟着实验室做一个 AI for Law 的项目,这个项目暑期和第三学期也在做,最后发表了论文。这个偏应用的项目接触到了一些 NLP,把之前学习的东西又都串了一串增加了感悟。
第三学期主要就是做AI for Law的那个毕业项目了。
- 10705 Intermedia Statistics:统计系开的课,说是中级统计,但其实主要是从统计的角度讲机器学习,数学又巩固了一些,把之前学过的东西又学了一遍。
当然这只是入门,工作之后又有了很多新的理解,要学习的东西感觉更多了。
总体来说我的入门也是常常一脸懵逼,经常卡住,反复从多方面学习,模型不懂了就去看看应用,写写代码跑一跑,再回去看看数学,再去看看模型,这就是个螺旋上升的过程,做打持久战的准备。苟...苟日新,日日新,又日新。