平凡又神奇的贝叶斯方法
来源: | 作者:k君 | 发布时间: 2016-08-02 | 2796 次浏览 | 分享到:
3.模型比较与奥卡姆剃刀n n3.1 再访拼写纠正n n介绍了贝叶斯拼写纠正之后,接下来的一个自然而然的问题就来了:“为什么?”为什么要用贝叶斯公式?为什么贝叶斯公式在这里可以用?我们可以很容易地领会为什么贝叶斯公式用在前面介绍的那个男生女生长裤裙子的问题里是正确的。但为什么这里?n n为了回答这个问题,一个常见的思路就是想想:非得这样吗?因为如果你想到了另一种做法并且证明了它也是靠谱的,那么将它与现在这个一比较,也许就能得出很有价值的信息。那么对于拼写纠错问题你能想到其他方案吗?n n不管怎样,一个最常见的替代方案就是,选择离 thew 的编辑距离最近的。然而 the 和 thaw 离 thew 的编辑距离都是 1 。这可咋办捏?你说,不慌,那还是好办。我们就看到底哪个更可能被错打为 thew 就是了。我们注意到字母 e 和字母 w 在键盘上离得很紧,无名指一抽筋就不小心多打出一个 w 来,the 就变成 thew 了。而另一方面 thaw 被错打成 thew 的可能性就相对小一点,因为 e 和 a 离得较远而且使用的指头相差一个指头(一个是中指一个是小指,不像 e 和 w 使用的指头靠在一块——神经科学的证据表明紧邻的身体设施之间容易串位)。OK,很好,因为你现在已经是在用最大似然方法了,或者直白一点,你就是在计算那个使得 P(D | h) 最大的 h 。n n而贝叶斯方法计算的是什么?是 P(h) * P(D | h) 。多出来了一个 P(h) 。我们刚才说了,这个多出来的 P(h) 是特定猜测的先验概率。为什么要掺和进一个先验概率?刚才说的那个最大似然不是挺好么?很雄辩地指出了 the 是更靠谱的猜测。有什么问题呢?既然这样,我们就从给最大似然找茬开始吧——我们假设两者的似然程度是一样或非常相近,这样不就难以区分哪个猜测更靠谱了吗?比如用户输入tlp ,那到底是 top 还是 tip ?(这个例子不怎么好,因为 top 和 tip 的词频可能仍然是接近的,但一时想不到好的英文单词的例子,我们不妨就假设 top 比 tip 常见许多吧,这个假设并不影响问题的本质。)这个时候,当最大似然不能作出决定性的判断时,先验概率就可以插手进来给出指示——“既然你无法决定,那么我告诉你,一般来说 top 出现的程度要高许多,所以更可能他想打的是 top ”)。n n以上只是最大似然的一个问题,即并不能提供决策的全部信息。n n最大似然还有另一个问题:即便一个猜测与数据非常符合,也并不代表这个猜测就是更好的猜测,因为这个猜测本身的可能性也许就非常低。比如 MacKay 在《Information Theory : Inference and Learning Algorithms》里面就举了一个很好的例子:-1 3 7 11 你说是等差数列更有可能呢?还是 -X^3 / 11 + 9/11*X^2 + 23/11 每项把前项作为 X 带入后计算得到的数列?此外曲线拟合也是,平面上 N 个点总是可以用 N-1 阶多项式来完全拟合,当 N 个点近似但不精确共线的时候,用 N-1 阶多项式来拟合能够精确通过每一个点,然而用直线来做拟合/线性回归的时候却会使得某些点不能位于直线上。你说到底哪个好呢?多项式?还是直线?一般地说肯定是越低阶的多项式越靠谱(当然前提是也不能忽视“似然”P(D | h) ,明摆着一个多项式分布您愣是去拿直线拟合也是不靠谱的,这就是为什么要把它们两者乘起来考虑。),原因之一就是低阶多项式更常见,先验概率( P(h))较大(原因之二则隐藏在 P(D | h) 里面),这就是为什么我们要用样条来插值,而不是直接搞一个 N-1 阶多项式来通过任意 N 个点的原因。n n以上分析当中隐含的哲学是,观测数据总是会有各种各样的误差,比如观测误差(比如你观测的时候一个 MM 经过你一不留神,手一抖就是一个误差出现了),所以如果过分去寻求能够完美解释观测数据的模型,就会落入所谓的数据过配(overfitting)的境地,一个过配的模型试图连误差(噪音)都去解释(而实际上噪音又是不需要解释的),显然就过犹不及了。所以 P(D | h) 大不代表你的 h (猜测)就是更好的 h。还要看 P(h) 是怎样的。所谓奥卡姆剃刀精神就是说:如果两个理论具有相似的解释力度,那么优先选择那个更简单的(往往也正是更平凡的,更少繁复的,更常见的)。n n过分匹配的另一个原因在于当观测的结果并不是因为误差而显得“不精确”而是因为真实世界中对数据的结果产生贡献的因素太多太多,跟噪音不同,这些偏差是一些另外的因素集体贡献的结果,不是你的模型所能解释的——噪音那是不需要解释——一个现实的模型往往只提取出几个与结果相关度很高,很重要的因素(cause)。这个时候观察数据会倾向于围绕你的有限模型的预测结果呈正态分布,于是你实际观察到的结果就是这个正态分布的随机取样,这个取样很可能受到其余因素的影响偏离你的模型所预测的中心,这个时候便不能贪心不足地试图通过改变模型来“完美”匹配数据,因为那些使结果偏离你的预测的贡献因素不是你这个有限模型里面含有的因素所能概括的,硬要打肿脸充胖子只能导致不实际的模型,举个教科书例子:身高和体重的实际关系近似于一个二阶多项式的关系,但大家都知道并不是只有身高才会对体重产生影响,物理世界影响体重的因素太多太多了,有人身材高大却瘦得跟稻草,有人却是横长竖不长。但不可否认的是总体上来说,那些特殊情况越是特殊就越是稀少,呈围绕最普遍情况(胖瘦适中)的正态分布,这个分布就保证了我们的身高——体重相关模型能够在大多数情况下做出靠谱的预测。但是——刚才说了,特例是存在的,就算不是特例,人有胖瘦,密度也有大小,所以完美符合身高——体重的某个假想的二阶多项式关系的人是不存在的,我们又不是欧几里德几何世界当中的理想多面体,所以,当我们对人群随机抽取了 N 个样本(数据点)试图对这 N 个数据点拟合出一个多项式的话就得注意,它肯定得是二阶多项式,我们要做的只是去根据数据点计算出多项式各项的参数(一个典型的方法就是最小二乘);它肯定不是直线(我们又不是稻草),也不是三阶多项式四阶多项式.. 如果硬要完美拟合 N 个点,你可能会整出一个 N-1 阶多项式来——设想身高和体重的关系是 5 阶多项式看看?n n