2014年春天,有一次我给研究生上课,一个学生问我这几天是不是没休息好?我说你算说对了,这些日子过得可不容易啊。
那一段时间,我正在以极为别扭的方式上一门MOOC课程。
课程的名字叫做机器学习。
2012年,大数据火了。于是2013年,机器学习紧跟着火了起来。
2013年夏天,我回母校听讲座。主讲人是一个在美国读书的博士生,讲的就是她们如何利用机器学习方法对大量的文本数据进行情感分析。
如果你是个淘宝店主,你对情感分析应该并不陌生。你会读顾客的评价吧?总得看看有多少人在夸你,有多少人在骂你啊。你说费这劲干嘛?看看评分数不就好了吗?但每一个店主恐怕都想弄明白,商品或服务中哪些因素会让顾客满意,哪些因素是用户最难以接受的。这样,当你拓展新的客户群的时候,你会依据新用户的特性清楚地知道他们的满意度大致是一个什么样子,并且可以不断改进自家的产品和服务。
情感分析是机器学习里面“分类”算法的一种,就是让机器替人一条条看评论,完成上述分析工作。
我前排几个博士生坐在下面听得非常激动,还不住低声交流表示赞同。看得出来,他们之前已经对机器学习有些了解,而且跃跃欲试,希望在自己的研究中有所应用。
我当时不是没动过系统学习机器学习知识的念头。我是个懒人,能让机器替我干活儿,那是我梦寐以求的理想状态啊。
但也正因为我是个懒人,所以懒得询问他们学习机器学习的路径是什么,因此和好的学习资源擦肩而过。教训啊。
作为一个后知后觉者,我直到2014年春天才知道有这么一门讲授机器学习的MOOC课程存在,赶紧报了名。
授课教师是Coursera的两位创始人之一,斯坦福大学的Andrew Ng教授(很久以后,我才知道”Ng”这个单词是中文的“吴”)。后来他担任百度首席科学家,曝光度越来越高,学术成就有多厉害就不必我来介绍了吧。
这门课程怎么样?截两张图给你看看学习者的评价。
这是Coursera平台的:
这是MOOC学院的:
这门课是Coursera的“镇宅之宝”。自从2012年Coursera上线以来,它就一直好评如潮。
上课就上课吧,怎么还说“极为别扭”呢?
我迟到了呗。
当时因为资源(主要是助教团队)限制,Coursera的大部分课程都是分学期开课的。这个学期没赶上,你就只能等下一个了。有的课需要等几个月,有的课等1年,有的课……至今还没见动静。
等我发现这门课的时候,开课时间已经过去了3周。但还可以报名,于是我丝毫没有犹豫就“上了车”。
上了车才发现,补票不是那么容易的事儿。
每一单元都有考核。要是超出截止时间一周,则扣掉该次得分的20%。期末统计得分时,扣掉1次最低分,剩下的成绩求平均,必须高于80%才能获得证书。
你可能会觉得这有什么了?多宽松啊。迟到算什么大不了的事儿?每次考核都刷到满分,让他随便去扣那20%好了,反正最后证书能拿到啊。
你想多了。每次考核,你只有1次答题机会。
你干嘛哆嗦啊?哎,别走啊!……
现在Coursera平台全线升级,这种变态的规定再也没有了。一般规定答题尝试次数为8小时之内最多3次。如果你愿意,把分儿刷得多么变态的高都是有可能的。但在当时,每一个错误都会让你的心灵震颤一下。
修这门课的人是不是都有自虐倾向?没有。因为课程内容太精彩了。
首先,这课会打破你的一个思维误区。
那时候,大多数人都固执地认为人比机器聪明——程序不都是人写的吗?人要不是自己会了,怎么教会机器?
错了。人自己不会(或者讲不清)的东西,也能让机器自己学会。金庸的小说深刻地揭示了这个道理。郭靖的武功厉害不?他的那一帮不算太厉害师父好像叫做江南七怪是吧?……
那毕竟是小说。现实中这架自动驾驶直升机的故事很能说明这个道理。
Dr. Ng坦言,他的研究团队里面根本就没有人知道该怎么编程才能让直升机自己飞行。可打了“机器学习”这一管鸡血后,虽然它摔下来许多次,可是之后突然就自己飞起来了,而且飞得挺好。
其次,这门课把精华高度浓缩。
短短10周的时间里,这门课就要涉及到机器学习里面各项重要内容。从最简单的线性回归到逻辑回归、SVM、深度神经网络、图像识别和推荐系统,种种重要的概念都有涉及。每一个概念并非蜻蜓点水的介绍,而是真正给你讲明白。什么叫做讲明白?就是你学完之后,能自己动手用这些知识做出应用来。
在美国,邮寄信件的费用越来越低,而且近年来有显著的下降,为什么?人工费降低?不是。因为许多工作机器代替了人来完成。
从前分拣邮件都是人工完成的,根据邮政编码把邮件分成不同类别,寄送到不同地区。现在由机器来扫描,成本可以忽略不计,而且效率大大提升。
你可能会有疑问——不对啊,邮政编码不都是手写的吗?每个人的字体都不一样啊。机器能认识各种手写字符?
能。
在这门课程里面,Dr. Ng讲到神经网络模式识别这一模块,就真的让学生自己动手编程,去识别手写的阿拉伯数字。
在我们人类看来,许多数字被写得也是毫无规律可言的,所以我们无法给机器定义识别规则。然而,只要你让机器见识足够多的样例,奇迹就会发生——它识数了!
看着那些潦草的记号被你跌跌撞撞写出来的程序准确无误识别出来的时候,你可能跟我一样,会像个刚获得新玩具的孩子一般兴奋。
第三,这门课的知识深入浅出。
这个世界上掌握机器学习技能的人可能并不少,但是能把这门知识高效传授给别人的人却远没有那么多。许多人把本来很简单的原理搞得很复杂,听不懂的人愈发觉得玄妙,会赞叹不已。而Coursera这门课反其道而行之,把一些被外界吹得神乎其神的概念用三两句话便给初学者讲明白了。后来我就思考,什么叫做大师呢?气定神闲中,把要讲授的内容娓娓道来,让学生的思路清晰如泉水,这便是大师的气质之一吧。也许在Dr. Ng眼中机器学习是一个完整的体系,本来就没有炫酷(fancy)的概念。
你羡慕亚马逊、淘宝或者豆瓣的智能推荐功能吗?学院里面有个研究生当时打算以推荐系统研究作为毕业论文。自己啃相关的大部头书籍数月,依然困惑不已,毫无进展。我把推荐系统这一章节的视频和讲义下载下来发给他,很快他就体会到了“芝麻开门”的感觉。
深入浅出还体现在练习的设计里面。这么短的时间讲授一门课,其实连Matlab/Octave这个编程环境的基础知识都不够介绍完毕。怎么办呢?Dr. Ng用的是“填空”的方式。数据读取、图形绘制这些工作都由教学者替学生完成了,因为这些知识很容易后续自行补充。习题中留出了问题解决过程中最为关键紧要的部分,标记出来让学生自行完成,以考察课程知识掌握的程度。
最有意思的是,因为Cousera平台自上线开始就有机器学习的技术基因,因此至少到目前为止,它对于学习者的数据挖掘和分析做的是最好的。Coursera记录了学习者在练习环节犯错误的过程,机器会不断进行挖掘分析。当有许多学生同时栽倒在一个题目上的时候,就会进行人工干预。如果题目有错或者有歧义,抓紧修改;如果确实是学生概念不清,就在课程中重点强调,加强讲解。作为一个老师,我知道这些都是最为难得的教学参考数据。可惜传统课堂上,教师并不容易获得它们。作为学生,MOOC平台的使用者是幸运的。
我自己的学习历程,就远没有那么幸运了。2014年6月,我的第一次证书获取尝试失败了。底线是80分,我得分已经超过77。好可惜。这给了我一个教训,就是“心急吃不了热豆腐”。
学习是有规律和节奏的,“毕其功于一役”的心态不仅无助于掌握知识,也未必能带来想追逐的其他东西。
幸好,1个月之后,新一轮的机器学习课程便开始了。依靠着之前积累的编程练习资料,这一轮课后习题我完成得无比轻松。证书真的拿到手上的时候,心里五味杂陈。