gelman的bda是大号经典没错但是出了名的难读难懂。等你从别的地方全学会了回头拿
这当reference可以。没基础的话看看jeff gill的bayesian methods吧
其实找工作刷题才是王道(不只是leetcode),进工业界干活不用懂这么多。多讨论面试
题更有用。统计版不让讨论面试题也是我开此版的主要原因之一。
另外mcmc是从理论物理来的。跟统计一根毛的关系都没有。真想学懂直接看yann lecun
有关energy based models的东东也许能明白的更快一些。我一向认为灌统计水的大谈
特谈bayesian,扯神马frequenists vs. bayesian probability,神马prior,
postorior,就是为了掩盖mcmc根本不是统计创造发明出来的事实。一般人从神马prior,
posteriror啊,bayesian probability啊学起,等你学到mcmc时早迷糊了。也就不会
多问了
mcmc是跟传统的maximum likelihood完全不同的体系。maximum likelihood说简单点就
是做优化。优化的思路就是求个一阶导数。一阶导数等0就是优化点。一个一阶导数的
分布可以形像点比喻成一个山谷。优化就是找到这山谷最深点。这里最大的问题就是山
谷里可能有个点有个深坑,这坑最深处比整个山谷肉眼能看到最低洼处还低,但是你不
下去是量不出来的。为了回避这个问题,传统统计就选一些probability
distributions,它们的一阶导数分布都够光滑柔腻,没有深坑。这样找最低点就容易多
了。而寻找的方法,也就是具体优化的做法是求个二阶导数,然后根据这个二阶导数从
山谷中一点跳向另一点直到跳到最低点。最传统的IRLS是先高瞻远煮一下,看看整个山
谷(大概跳下去就有雾了),定个二阶导数开跳。那位老乡问了,你为啥非要定个二阶
导数涅?因为这是个无重力山谷。定二阶导数相当于加个人为重力场,你了了吗?IRLS
因为是先看整个山谷,定的二阶导数比较“平”。当数据量小,变化不大时还能用。现
在动不动几m到几百m行的数据,那山谷里坑坑洼洼免不了的。用IRLS定的二阶导数太“
轻”,很容宜就卡在哪里下不去了。也就找不到真正的最深点。后来有人引入newton-
raphson,也就是现在用得最多的gradient descent。这路子是每跳到一个点再抬头看
看,重新定个二阶导数(也许有红外镜了,不怕雾了)。一般这样能跳深点。不过那个
山谷某处有深坑的问题还是解决不了。要不是哪次恰好跳那坑里去了,那坑是会被忽略
的。这是为啥大家都用parametric方法因为可以假装深坑不存在。用non-parametric倒
是可以反映深坑,但是这non-parametric的要弄出个山谷来再定个二阶导数啥的现有的
计算能力都是要爆机的。这是为啥传统优化方法要“跳”下去。另外现在最流行
stochastic gradient descent就是拔撮毫毛施展分身法,变出几百几千个测量队一起
去测一下山谷,然后大家通讯一下(发展出电话了(gpu里的hierarchical memory就这
功能)),比一比就行了,也不用制造出重力场让测量队去跳了但是要知道怎么保正测
量队都“着陆”。
mcmc用energy based的方法(也是理论物理最开始用metropolis方法时的设想)就是设
定一个描述整个系统状态的东东。数据(相当于理论物理中的“观察”)或piror啥的
会改变系统的初始能量壮态。uninformative prior就相当于一个0值初始能态。不过只
要你有数据,初始能态就不会是0。然后的算法用改变整个系统来改平衡系统的能量到0
。因为是调节整个系统,就不怎么怕深坑啥的(深坑该有总是有的,不管实际算法求不
求一阶导)。很多过去末名其妙表现良好的方法比如naive bayes就实际上用上了
energy base的方法。这也是gibbs sampling确实是mcmc而不是灌统计水的吹嘘的是“
真正的bayesian思想”的原因。不过现在的mcmc算法有点像pinball。那小球是乱飞乱
跑的。所以最后要thin掉绝大多数的中间结果,非常inefficent。这在原先理论物理方
法中没问题因为物理学家们要的就是这种所谓的hamiltonian motion。在机器学习中我
们没这个要求,相反的是要尽快达到需要的能态。现有的没啥好方法,early-stop就算
是神器了。这个其实在energy base的体系里或者是所谓的bayesian statistics里是没
有解决方案的。至于为什么和怎么改那是我的研究不能告诉你
其实这些无论是面试还是工作都用不着。你扯得太多谁也不懂,不但无利于提升逼格,
反而会被标记成不善交流。事得其反