【ML经典书籍系列1】解读PRML

转自知乎:http://www.zhihu.com/question/20970802,作者杨超
本书是经典中的经典我完整看了3遍以上要算上没看完的几次得有快10遍 (剖析自己,没有一本是认真看完的)是的前几次我都是看的半途而废
另外我也看过数本相关领域的大而全的书:如统计学习基础啊,kevin最新的那本啊,还有koller的以及jordan的图模型,以及以kernel为线索的、涉及更多计算理论性的pattern analysis。而这一本是本人认为最好的。
对于这本书,我在实验室里做过一个讲座,从第一章讲到了第十一章 --也就是到采样方法。里面跳过了5 6 7(第五章我用深度学习相关的几次报告替代,第六章高斯过程没有讲因为自己理解的也一般第七章用SVM的报告替代了一部分因为主要想讲贝叶斯和概率图建模的方法所以此三章就没专门讲)
上学期我又带着新学弟们学此书,不过主要是监督他们做题目,完成度一般。

我的建议是:学生们如果真的想入门此领域,尤其是一些想在这方面有建树的博士,请先读此书入门(如果只是想了解吹吹牛的不必深入看此书),读时注意下面几点:

1.无论通读过几遍,一定要有一遍是做完所有的课后习题的(看完算法之后,一定要拿数据自己实现下,否则白看体会不深)。不然不算看完一遍哦,实在不会做网上有答案可参考!

2.本书是self-contained的。这是真的!不要觉得看不下去了,就去补习其他知识(尤其是不需要去看测度论和泛函,看此书也不需要太多最优化的知识),那样最后就回不来,两年的工或理科的学生,都可以通过反复看搞懂里面的数学。但是这个需要踏踏实实的去学习,每天保证3到4个小时,一年足矣做完一遍。之后根据自己的研究需要,结合论文再看上几遍,不需两年就可以贯通起来。注意书的附录啊,里面关于矩阵的、概率分布的、优化方法的,不要不把这个当回事。(概率论,统计学,矩阵论,牛顿莱布尼茨积分,这些工科数学即可,国内教材即可。如果非要额外看一些数学书,推荐看一本讲线性空间的书,线性代数应该这样学)

3.这本书的线索是贝叶斯方法。介绍模型的章节,行文思路都是:基本模型建模--最大似然估计-贝叶斯参数估计(或者叫推断,inference即得到参数的后验概率)--贝叶斯预测(predication,即根据上一步得到的后验概率把参数积分掉进行推断)。一开始看不懂这些,会感觉讲的云里雾里,按这个思路去看,就非常清楚了。我们身边很多新接触这些的同学看概率模型的论文,搞不懂,像LDA,HDP这些模型,看建模部分还觉得有点头绪,一到推断就不知道论文是在干什么了,就是因为对这套贝叶斯方法不熟悉,一旦熟悉了,就都很容易看懂了。不少同学都倒在了这第一道门槛上。
本书第8章之前的生成模型都是很简单的,就是一个基本概率分布加一个先验。第8章之后,讲了对基本模型的混合和时序扩展,其实各种概率生成模型就是这两个东西拼起来的,无非就是时序扩展一般就是用马尔科夫性,共享成分一般就用混合,更进一步用更多层次的混合。

4.本书重点和图模型的相关算法
1) 参数的似然估计(除了普通的梯度优化、牛顿,还有强大的EM。注意,即使是贝叶斯模型,还是有参数的,就算叫超参数,还是要估计的。就算为它再加先验,但是先验里的参数还是要算。这里不考虑加无信息先验)
这块基本相关的书都讲,PRML讲的也算比较清晰的。 EM是单独拿了一章讲,因为确实太重要了,理解了EM,很多论文的训练算法就能看懂了。个人在ML领域觉得最漂亮的算法就是EM,纯个人喜好。
2)求变量的后验概率这个算是重点之一,每一章都有涉及,但是如果情况较简单,一个贝叶斯条件概率公式就能求出来,那就没这么多理论了,可是因为条件概率里面那个分母,需要把变量积分掉,这导致分布没法算了。所以有一些估计的算法。第11、 12章都是讲这个的。前面某章还介绍了拉普拉斯估计,也是干这个得。第十章的消息传播其实也是给出了树状模型求变量的联合后验分布的一种动态规划的方法。这里解释下什么是常说的后验分布,即在观察到样本时模型中隐变量的条件概率,这往往是很多任务建模后的最终任务,就是推断这些隐变量的后验概率。不懂没事,以后随着学的越来越多,看上几篇nips之类会议的论文,就明白了。
从上面这也可以看出,prml很多内容是分散在各章节的。
XXX待补充

5 PRML没有什么?

1) PRML没有很多算法的进一步扩展。这是正常的,不是bishop不懂,而是已经1000页了啊。5000页的书,谁敢打开呢。
任何这类书都有侧重点,一般是跟作者的研究侧重点相关:如kevin murphy的书,对DBN讲了很多(不是深度学习的东西,是动态贝叶斯网络,即时序上的有向图模型);统计学习基础在模型选择参数规整和boosting tress上讲了很多;而以kernel为线索的书都会侧重将一些计算理论的东西,像误差界分析,这类书硕士读了更加没用,但是博士应该好好研习下。
PRML没有太偏重某一模型或者方法,而是把贝叶斯方法融入到每一章每一种模型中,所以包含的东西就更多,虽然没有展开太多,但是足矣帮助入门。
另外要明确的是,这本书是应用性质的!也就是帮助读者掌握一套基本方法和思路,可以进入到这个圈子,能够对一些问题用这些方法来进行建模。(这个不太适用于大部分对机器学习抱"急功近利"态度的程序员学习,或许对程序员,更需要的是掌握几种具体模型,即logistic regression和nn,最大熵(尤其是一种时序最大熵模型crf),svm,决策树和boosting tree,GMM和LDA)。至于一些非常理论的东西,即使是圈子里的人,也只是非常少的大牛们在搞,大多数人不太需要。
如果想了解更多,对于PML每章都可以扩展去阅读,这里简单说一下。第五章关于神经网络,当年研究很热,书籍很多,但是我没觉得有多少要写的,如今实践证明了,用的时候掌握BP就行了(bishop也写了一本书,不过我一直没找到,难道是还没出版),BP这个算法对程序员比较好理解,就是一种动态规划来减少重复计算嘛。第六章,讲kernel相关的东西,去看pattern analysis,绝对有些启发的。高斯过程,可看Rasmussen的Gaussian processes for machine learning。第七章,最大margin,也就是SVM,想看理论性的同第六章的patternanalysis,想看实践性的,看libsvm代码吧。第八章,图模型可参考jordan那本未出版的(其实是从图模型角度把整个概率模型的基础知识讲了一遍)。koller的写的更长更细,读起来慢。第九章,混合模型和EM,讲的非常不错了,没什么要补充了,混合模型可以进一步扩展成超混合,离散观察的贝叶斯版本模型就是常说的LDA,这个是工程中常用的模型,可看Blei的论文,这块跟DP(狄利克雷过程)有点关系,可以利用其扩展成无线混合模型,可看teh的论文。第十章,主要是变分推断,举例详实,如果不满足,可以去看Wainwright和Jordan写的Graphical Models,Exponential Families,and Variational Inference,此书读起来相比于prml要难很多。第十一章,如果想去钻研mcmc,相关书籍很多,自己去搜吧,有本就叫mcmc。但是其实用的时候很多时候都是gibbs采样就行。第十二章,是离散混合模型的扩展,PCA这块我不太用,就没扩展读过什么。第十三章,序列模型,就是离散状态的HMM和连续状态的LDS,书上讲的蛮不错,可以进一步参考kevin murphy的书。和第十四章,boosting,这块我从没用过,没认真研究过,统计学习基础里讲的多一些,另外PAC是理论基础,对这个我也是只知道名词解释,就不误导同学了。

2) PRML完全没有涉及狄利克雷过程(只是在第二章提了一下teh的论文)毕竟这是06年的书当时狄利克雷过程还不太普及想了解这块东西的同学可以看teh的论文国内的英子同学写的综述也不错,包括后面blei,wangchong,sudderth,eb.fox,之前的neal等各位大牛的论文。本人去年初开始了解相关东西,中间看看停停也算是把相关模型算法搞明白了,最近刚写的毕业论文也是这个相关的。

3) PRML有深度学习么?hinton的那套RBM系列确实没有,不过现在市面上炒作的深度学习,真正用的就是神经网络而已,第五章足矣,剩下的就靠着各位去写并行程序解决了。
【【ML经典书籍系列1】解读PRML】=========================================================
最后,我自己推荐一个中文版PRML解读:
http://blog.csdn.net/nietzsche2015/article/month/2015/02
这个中文版解读写得很不错,非常适合初学者。大家在看PRML这本书的时候可以先看一遍英文原文,自己理解一下;然后再对照这个中文版解读看一下,以深入理解。

    推荐阅读