一个自然语言处理炼丹师的自白
往期:
因为各种媒体宣传,最近问问学校新入学计算机科学的学生们,想搞什么研究,结果十个里有九个要研究机器学习,中间还一些弄不清深度学习和机器学习的关系,实际上是想搞深度学习。
原本深度学习(深度神经网络)只是机器学习领域一个分支,但因为其最近大火,导致对整个领域出现了这样的划分:深度的和非深度,或者说深度的和传统的。虽然现在自然语言处理研究主要用深度学习,但因为很多概念来自机器学习,还是有必要了解传统机器学习的。而且如最近周志华提出的深度森林,将其他传统机器学习方法和深度学习的理念结合起来,就可以提出一些很有意思的模型。
下面大概根据难度将学习资料列出来。
入门
最开始想简单了解一下,那么第一步,可以只将 Goodfellow 的 Deep Learning 前面介绍小节读一下,第四小节的 Numerical Computations 以及第五小节的 Machine Learning Basics. 主要会介绍简单的数值运算,梯度更新,还有机器学习基本概念,但没怎么提太详细。
之后就是鼎鼎有名吴教授在 Cousera 上的 Machine Learning。这门课没太多说的,太有名了。一如吴教授的风格,简单易懂,练习也不难,相信网上也都能找到答案。有点麻烦的是,作业是用 Octave 来完成,当然因为 Octave 和 MATLAB的关系,用MATLAB 也是可以的。里面有些东西挺老的,但核心概念都很有用,特别是模型训练策略,错误分析。
基础
接着,可以读读我挺喜欢的 NLP 大佬 Kyunghyun Cho 的 ML w/o DL Lecture Notes (没有深度学习的机器学习课堂笔记)。介绍了机器学习中经典的一些问题,比如分类,回归,还有聚类,还提到各自的一些算法以及与深度学习的一些联系。值得一提的是,该资料带有 Jupyter Notebook 的习题作业,所以很推荐把这些作业也做了,可以打下很好的基础。但这个资料介绍不太全面,而且没有课程视频。
还有一个额外的资源是,加州理工 Yaser Abu-Mostafa 的 Learning From Data,这个没上过,也不好评价。但是根据其他评价是门很棒的课。
中文资料,可以读李航的《统计学习方法》还有周志华的《机器学习》,两本都不是太难读。
进阶
了解了基础,如果还想挑战自己,可以试试卡内基梅隆大学,Tom Mitchell 教授的 Machine Learning 课程。相比之前的资料,这门课涉及到很多更深入的话题,概率图模型,Boosting,SVM的核方法,强化学习...
还可以去啃两本大部头,Bishop 的《Pattern Recognition and Machine Learning》还有 Murphy 的 《Machine Learning A Probabilistic Perspective》。
或者按照周教授说的,把西瓜书读一遍之后,每一章从推荐书籍和推荐论文里面找资料细读。