IT 行业发展迅速,各种新名词此起彼伏。身处这样一个热点行业,学习是必须的。
大数据、AI(人工智能)相继席卷世界后,作为程序员,真得学点机器学习了。具体为什么大家还是自己思考一下吧——本文的重点不在于讲解Machine Learning到底有什么用,而是讲如何从0开始自学它。
之前我们讲过,有效学习三要点:目标明确、系统性强、足够深入,三者缺一不可。
既然是定制针对自己的学习计划,那么势必要让计划符合这三个要素。
之前的两篇里,我们分别讲述了【1】确定学习目标的重要性及方法,【2】定制学习大纲。本篇我们的重点放在讨论如何选择能够真正起到作用的付费培训课程。
制定「机器学习」学习计划——选择有效的培训课程
NOTE:我们此处说得培训班指需要较长时间(一般以月为计)的付费培训。线上线下都包括,但一定能够和培训教师直接交流,有答疑过程。
一定要上培训班吗?
小白入门,学习机器学习,一定要上培训班吗?当然不是!
笔者反而建议:充分利用免费资源,尽量自学。
AI行业的知识、技术,包括各种工程实践,best practice,都是纯粹的书面知识。
不像乐器、舞蹈之类,文字不足以描述,需要老师面对面指导和反复多角度演示才能掌握到位的技能;书面知识,肯定是可以自学的。
具备本科理工科数学水平的人,从头自学机器学习,并不是一件难事。完全可以把机器学习当作大学时候的一门课(可以类比一下数据结构),你要做的,就是自修这门课。
而且,根据前面两篇,我们已经做出了详细的学习计划,就按照之前的提纲,一章一节的去学好了。每一个章节都能在网络上找到应有尽有的教材、讲解、习题。
自学,是肯定能够做到的!
培训解决不了主动性问题
虽然有着这样丰富的自学资源,仍然有很多同学想要报培训班,为什么呢?
原因很简单:为了省事。
自己学太累了,不如听老师讲。用耳朵听,比用眼睛看书轻松,而且老师讲得,总比书上写的丰富细致吧。
用自己的金钱和时间换取他人的知识和经验当然没问题,甚至有可能是高效的办法。但是,要注意:学习的过程,必须学习者主动吸收理解,才能达到掌握知识的目的。
如果认为,只要自己花了钱,就可以坐在那里,等着老师把知识塞到自己脑子里,可就大错特错了!
培训的用处
当然,并不是说培训班就一定不能上。毕竟,如果找对了培训班,还是能够比纯自学轻松不少的。
真正有效的培训课程的作用,无外乎两点:
I. 讲解细致
相对于力求清晰、简洁、逻辑性强,具有“攻击性”的书面资料,合格的课堂讲解应该是丰富、细腻、包容性强,具有“防守性”的。
特别是和数学相关的内容,那些公式推导过程,往往一步千里,如果有人能够给每一个前进步骤一个解释,理解起来会比自己看轻松好多。
II. 和教师直接交流,获得即时反馈(答疑)
学习复杂的东西时,常有这样的体验:
学习的过程中,疑问是难免的,如果疑问解决不了,则学习很难继续下去。
无论文字还是影音资料,都是只有传达过程,没有针对每个读者个人的答疑解惑。培训课程恰恰可以弥补这个不足。
笔者个人意见:只有在线视频,而没有和教师直接交流的付费培训,效果恐怕未必强于自己看书。
假设我们现在已经想好确实要参加培训班,那么如何选则具体的课程呢?
或者有的朋友觉得,选培训课有什么难的?现在互联网信息这么发达,就把培训课当餐馆电影院一样选又有什么不好?大众点评里有好多培训机构培训班呢,上去看看评价,看看星级,还有优惠券拿,直接选一个不就行啦。
此处笔者想说的是:选择培训课程容易,选择有效的培训课程可就难了。
如果选择了错的培训课程,浪费钱还是小事,浪费自己的时间才可惜。
尤其是像AI这种热点、风口,如果因为总也学不进去东西,错过了发展最迅速阶段的黄金入门期,可能错过的是大好的职场机遇!
选择有效培训班的方法是:对照自己制定的学习提纲,找课程设置与其思路一致,内容近似的培训课程。
自己就算定了个计划,也不太可能找到完全一致的培训班。随便报个班,老师自然有教学大纲,听着就是了,为什么要自己费力气?
此处需要提示这些同学一点:如果你自己都不知道想要学习什么东西,又怎么能够正确判断一门培训课程的质量呢?
毕竟,培训(不止是培训,其实所有教学都是如此)要有效,一定是教师和学生双方配合的结果。
教学双方能够配合好至少有三个前提:
1)教的人有足够的个人积累和授课技巧用以传达知识;
2)学的人主动吸收传授内容并同步思考、理解;
3)教的人教的内容与学的人想学的内容相匹配,且张力适度。
学生在一无所知的情况下,看广告报个班,对于学习本身缺乏动力和认识,自己都不知道想从课程中获得什么;或者教的内容与学生的背景相差太远,学生一句都听不懂——这种情况下,即使有幸碰到了好的老师和课程,能吸收的恐怕也非常有限。
让培训有效
通过制定学习计划,学生不仅能够明确自己的需求,具体到每一节课想学什么,而且能够了解到这些授课内容之间的联系和优先级排序。
拿着自己的学习计划去找培训,能在大概率上保证培训课程的有效性。因为:
1)制定计划的过程,是一个带着问题探索的过程,而“带着问题”很容易产生驱动力。
当自己有疑问要解答的时候,就会有探索、学习下去兴趣和好奇,不至于看见那些东西就想睡觉。
2)对照自己制定的学习计划寻找满足内容需求的课程,有助于独立判断培训课程和培训教师的“斤两”。
3)制定计划也是一个了解自己的过程。
知道自己现在缺什么,缺到何种程度。同时对照培训课程大纲和介绍,也可以辨识自己目前知识背景和培训课程深度是否匹配。
对于课程深度的了解,还可以借助事先咨询授课教师或者培训学校来完成,对自己的了解则无人可以替代。
现在我们已经有了一份自己定制的详细学习计划,而且也明白了按图索骥的重要性。下一步就要寻找具体的培训课程了。
对找寻过程,笔者的建议是:先从免费资源开始。
1)首先,AI领域有少量非常经典的现在培训课程,是完全免费的,而且非常容易找到。
如果你和前面例子一样,已经选定了机器学习作为学习目标,Andrew Ng的Machine Learning是一定要从头到尾学一遍的。每节课后的习题都比较简单,要逼着自己做完。
2)其次,通过书籍、文章、论坛、微信/QQ群、免费讲座和分享等渠道,去搜集大家的学习经验和各种培训班的信息。
和有同样目标的人交流,经常能在不经意间得到优质推荐。
3)然后,在尽量广泛地收集了大量培训信息后,对照课程大纲和自己的学习计划进行选择。
教师声誉、培训机构声誉、网友评价等可以作为参考和背书,但核心是课程大纲与个人计划的匹配度!
裁剪学习计划
当然,想找到和最初版本计划100%匹配的培训课程基本是不可能的(除非的你的计划就是照着某个培训课抄的)。这就不能不涉及到对于个人学习计划的裁剪。
裁剪的原则应该是:按优先级高低,确保核心知识和大体结构,在细节上做出妥协。
比方说,你自我判断数学是必须要补习的部分,那么就不要找完全一点数学基础都不讲,上来就是模型的培训课。你确定了要学每个模型的数学推导过程,就不要找只是描述原理,把绝大多数时间都放在代码实践上的课程。
但是如果大致结构和计划一致,只是有部分细节(例如模型类型)和你自己最初计划不同,则可以再进一步考虑。
比如你希望学习CRF,某个课程不讲,但讲HMM。这两者都是seq2seq模型,不过一个判别模型,另一个是生成模型,有很多共性的地方。如果其他方面都合适,不必为了这一个模型放弃一门课。