我的机器学习之路

初看门道

       2011年,我有幸接触到网易公开课。TED充满创意的演讲和网易给力的翻译,让我如痴如醉,从此开启了我的公开课求学之路。一次机缘巧合,我在果壳网上看到Udacity,从此更一发不可收拾了,连续不断的学习了《Design of Computer Programs》,《Intro to Statistics》,《Software Testing》,《Intro to Artificial Intelligence》,《Programming Languages》,《Web Development》,《Artificial Intelligence for Robotics》,《Intro to Hadoop and MapReduce》。在这里我见识到几个IT大牛,如Javascript设计者Brendan Erich,Hadoop创始人之一Doug Cutting,Udacity创始人Sebastian Thrun,为他们的创新意识和执着精神所折服。同时,我也捋清了利用计算机编程解决实际问题的一般思路,受益匪浅。Sebastian Thrun的课程《Artificial Intelligence for Robotics短短若干行代码就实现Robotics的定位、导航和控制等,令我大开眼界,引起了我对人工智能的巨大兴趣,但是该课程如果仅仅用作人工智能的推广是相当精彩,而用作人工智能的入门显然是不够的。这时网易公开课翻译的斯坦福大学的机器学习课程跃入我的眼帘。

陷入泥淖

       正如课程介绍所述“人工智能的发展到已经进入了一个瓶颈期。近年来各个研究方向都没有太大的突破。真正意义上人工智能的实现目前还没有任何曙光。但是,机器学习无疑是最有希望实现这个目标的方向之一”。于是机器学习成了我的学习目标。该课程的主讲老师Andrew Ng,看上去像华裔,机器学习方面的造诣很深。在课程中,他视频演示了一架无人直升飞机倒立悬停等高难度飞行技巧,而人类飞行员操纵的直升飞机难以实现的这样的飞行技巧,该无人机项目就是由他主持,该视频也在其他人工智能课程里广泛引用,而无人直升飞机的飞行控制本领就是通过强化学习算法学习获得的,而通过数学建模或者仿真来使得无人机获得如此高超的飞行技巧几乎不可能。

       但是他主讲的这门课程,我在折腾学习了半年后,无奈发现并不适合我,始终入不了门。该课程前11节主要讲监督学习和学习理论,12~15节讲无监督学习,16~20节讲强化学习。对于监督学习这部分,Andrew Ng老师没有明确描述解决学习问题的总体框架,换句话说,没有明确描述解决学习问题时所涉及的学习目标、学习算法、假设集、样本内错误和样本外错误等重要组成成分以及其间关系,而是介绍了不少学习算法,线性回归,logistic回归,贝叶斯推理,RBF以及一些优化技术如牛顿方法。而正是由于缺少框架,让我始终只见树木不见森林,无法对这些学习算法进行比较,在面对新的学习问题时难以选择合适的学习算法。同时学习理论对我来说也是语焉不详,介绍VC Bound理论时没有深入介绍VC维,也就难以理解VC Bound,而过拟合的数学解决方法贝叶斯统计正则化也是浅尝辄止。对于无监督学习这部分,我没有细看。而强化学习部分我是来回看了多遍,愣是摸不着头脑。本来预期一个月可以学完,半年时间过去了,也没有太大进展,非常失落,我得另辟蹊径了。

拨云见日

       于是,我搜索到网易公开课还翻译了加州理工学院的机器学习和数据挖掘,由Yaser Abu-Mostafa主讲,看了前面两节课我觉得讲的非常有条理,引人入胜,尽管我并不是一下子能够明白其中的数学细节,但是我明白他在讲什么,以及讲述的内容在机器学习中的作用和意义,而这些恰恰是我没有从Andrew Ng老师学来的。可惜的是该公开课的翻译并不给力而且没有英文字幕,我不得不爬墙看Caltech的Machine Learning Course。由于Yaser Abu-Mostafa老师在课堂上不证明VC Bound,而他的书《Learning From Data》里面有,于是我花了差不多300元RMB从美国亚马逊购买了该书,这本书写得非常精彩,与视频课程相得益彰。可以认为Yaser Abu-Mostafa老师主讲的机器学习课程,条理清晰,内容恰当,是监督学习的入门或者精通的首选课程。我经过半年时间的来回学习,自己感觉总算是入门了。

脚踏实地

       到了这一步,我感觉自己理论一套套的,但是我心中又升起一个大大的疑问,就是我有没有能力用机器学习来解决实际问题,因为学了半年,做的课后练习都是很理论的,而实际使用学习算法解决问题,例如用支持向量机来解决分类问题,至少要选择合适的输入、合适的核、正确编写实现算法、选择恰当的优化包求解优化解、验证、克服过拟合等等,因此我觉得非常需要一门实践课。恰巧,Yaser Abu-Mostafa老师在他的论坛上也推荐了LIONOSO,利用该软件可以很方便的解决一些Yaser Abu-Mostafa老师布置的家庭作业,于是我阅读了一些样本解决方案,的确,软件用户主要的工作是准备输入、挑选学习算法以及调优,其他重复性劳动都由软件代劳了。我感到很幸福,觉得会运用机器学习指日可待了,但是我不会使用该软件,怎么办?幸运之神似乎再次光临,该软件出了配套的书《The Lion Way:Machine Learning plus Intelligent Optimization》,于是我毫不犹豫的购买一本,这次再次爬墙从美国亚马逊购买Kindle版,60元RMB,便宜多了。不过书我没看完,为什么?因为这本书的理论讲不透彻,而实践又没有,与我的期望相距甚远,我又陷入深深的焦虑中了。

       从哪里来,就回哪里去,于是我又回到Udacity,真是半年不见,该刮目相看了,Udacity开了多个机器学习的课程。其中,这个总能把复杂的事情搞简单的大师Sebastian Thrun开的《Intro to Machine Learning》,当然是我的首选。在他的课上,不要期望学到理论了,学的是动手能力,该课程对我来说最重要的是我知道了sklearn--一个神奇的机器学习函数库。从此脑洞全开,如果自己动手从头到尾去实现一套支持向量机算法,光想想都让人头疼,而sklearn库提供了支持向量机算法实现类,短短几行程序,就可以轻松搞定。当然若要恰当运用这个函数库,还是需要掌握必要的机器学习理论,因此我的理论也没白学。至此,我自己感觉从理论到实践都算是入门了。

结束语

      因此, 如果你想学习机器学习的监督学习部分,我的经验是读一本书,上两门课。一本书是《Learning From Data》,两门课分别是Caltech的Machine Learning Course与Udacity的《Intro to Machine Learning》。

      祝阅读本文的朋友们一切安好!



你可能感兴趣的:(LEARNING,FROM,DATA)