⾮常全⾯的贝叶斯⽹络介绍⾮常多的例⼦说明
这是⼀篇关于贝叶斯⽅法的科普⽂,我会尽量少⽤公式,多⽤平⽩的语⾔叙述,多举实际例⼦。更严格的公式和计算我会在相应的地⽅注明参考资料。贝叶斯⽅法被证明是⾮常 general 且强⼤的推理框架,⽂中你会看到很多有趣的应⽤。
1. 历史
托马斯·贝叶斯(Thomas Bayes)同学的详细⽣平在。以下摘⼀段 wikipedia 上的简介:
所谓的贝叶斯⽅法源于他⽣前为解决⼀个“逆概”问题写的⼀篇⽂章,⽽这篇⽂章是在他死后才由他的⼀位朋友发表出来的。在贝叶斯写这篇⽂章之前,⼈们已经能够计算“正向概率”,如“假设袋⼦⾥⾯有N个⽩球,M个⿊球,你伸⼿进去摸⼀把,摸出⿊球的概率是多⼤”。⽽⼀个⾃然⽽然的问题是反过来:“如果我们事先并不知道袋⼦⾥⾯⿊⽩球的⽐例,⽽是闭着眼睛摸出⼀个(或好⼏个)球,观察这些取出来的球的颜⾊之后,那么我们可以就此对袋⼦⾥⾯的⿊⽩球的⽐例作出什么样的推测”。这个问题,就是所谓的逆概问题。
实际上,贝叶斯当时的论⽂只是对这个问题的⼀个直接的求解尝试,并不清楚他当时是不是已经意识到这⾥⾯包含着的深刻的思想。然⽽后来,贝叶斯⽅法席卷了概率论,并将应⽤延伸到各个问题领域,所
有需要作出概率预测的地⽅都可以见到贝叶斯⽅法的影⼦,特别地,贝叶斯是机器学习的核⼼⽅法之⼀。这背后的深刻原因在于,现实世界本⾝就是不确定的,⼈类的观察能⼒是有局限性的(否则有很⼤⼀部分科学就没有必要做了——设想我们能够直接观察到电⼦的运⾏,还需要对原⼦模型争吵不休吗?),我们⽇常所观察到的只是事物表⾯上的结果,沿⽤刚才那个袋⼦⾥⾯取球的⽐⽅,我们往往只能知道从⾥⾯取出来的球是什么颜⾊,⽽并不能直接看到袋⼦⾥⾯实际的情况。这个时候,我们就需要提供⼀个猜测(hypothesis,更为严格的说法是“假设”,这⾥⽤“猜测”更通俗易懂⼀点),所谓猜测,当然就是不确定的(很可能有好多种乃⾄⽆数种猜测都能满⾜⽬前的观测),但也绝对不是两眼⼀抹⿊瞎蒙——具体地说,我们需要做两件事情:1. 算出各种不同猜测的可能性⼤⼩。2. 算出最靠谱的猜测是什么。第⼀个就是计算特定猜测的后验概率,对于连续的猜测空间则是计算猜测的概率密度函数。第⼆个则是所谓的模型⽐较,模型⽐较如果不考虑先验概率的话就是最⼤似然⽅法。
1.1 ⼀个例⼦:⾃然语⾔的⼆义性
下⾯举⼀个⾃然语⾔的不确定性的例⼦。当你看到这句话:
The girl saw the boy with a telescope.
你对这句话的含义有什么猜测?平常⼈肯定会说:那个⼥孩拿望远镜看见了那个男孩(即你对这个句⼦背后的实际语法结构的猜测是:The girl saw-with-a-telescope the boy )。然⽽,仔细⼀想,你会
发现这个句⼦完全可以解释成:那个⼥孩看见了那个拿着望远镜的男孩(即:The girl saw the-boy-with-a-telescope )。那为什么平常⽣活中我们每个⼈都能够迅速地对这种⼆义性进⾏消解呢?这背后到底隐藏着什么样的思维法则?我们留到后⾯解释。
1.2 贝叶斯公式
贝叶斯公式是怎么来的?
我们还是使⽤ wikipedia 上的⼀个例⼦:
⼀所学校⾥⾯有 60% 的男⽣,40% 的⼥⽣。男⽣总是穿长裤,⼥⽣则⼀半穿长裤⼀半穿裙⼦。有了这些信息之后我们可以容易地计算“随机选取⼀个学⽣,他(她)穿长裤的概率和穿裙⼦的概率是多⼤”,这个就是前⾯说的“正向概率”的计算。然⽽,假设你⾛在校园中,迎⾯⾛来⼀个穿长裤的学⽣(很不幸的是你⾼度近似,你只看得见他(她)穿的是否长裤,⽽⽆法确定他(她)的性别),你能够推断出他(她)是男⽣的概率是多⼤吗?
⼀些认知科学的研究表明(《决策与判断》以及《》第12章:⼩孩也可以解决贝叶斯问题),我们对形式化的贝叶斯问题不擅长,但对于以频率形式呈现的等价问题却很擅长。在这⾥,我们不妨把问题重新叙述成:你在校园⾥⾯,遇到了 N 个穿长裤的⼈(仍然假设你⽆法直接观察到他们的性别),问这 N 个⼈⾥⾯有多少个⼥⽣多少个男⽣。
绩效考核的意义
你说,这还不简单:算出学校⾥⾯有多少穿长裤的,然后在这些⼈⾥⾯再算出有多少⼥⽣,不就⾏了?
我们来算⼀算:假设学校⾥⾯⼈的总数是 U 个。60% 的男⽣都穿长裤,于是我们得到了 U * P(Boy) * P(Pants|Boy) 个穿长裤的(男⽣)(其中 P(Boy) 是男⽣的概率 = 60%,这⾥可以简单的理解为男⽣的⽐例;P(Pants|Boy) 是条件概率,即在 Boy 这个条件下穿长裤的概率是多⼤,这⾥是 100% ,因为所有男⽣都穿长裤)。40% 的⼥⽣⾥⾯⼜有⼀半(50%)是穿长裤的,于是我们⼜得到了 U * P(Girl) * P(Pants|Girl) 个穿长裤的(⼥⽣)。加起来⼀共是 U * P(Boy) * P(Pants|Boy) + U * P(Girl) *
P(Pants|Girl) 个穿长裤的,其中有 U * P(Girl) * P(Pants|Girl) 个⼥⽣。两者⼀⽐就是你要求的答案。
下⾯我们把这个答案形式化⼀下:我们要求的是 P(Girl|Pants) (穿长裤的⼈⾥⾯有多少⼥⽣),我们计算的结果是 U * P(Girl) * P(Pants|Girl) / [U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)] 。容易发现这⾥校园内⼈的总数是⽆关的,可以消去。于是得到
P(Girl|Pants) = P(Girl) * P(Pants|Girl) / [P(Boy) * P(Pants|Boy) + P(Girl) * P(Pants|Girl)]
注意,如果把上式收缩起来,分母其实就是 P(Pants) ,分⼦其实就是 P(Pants, Girl) 。⽽这个⽐例很⾃然地就读作:在穿长裤的⼈( P(Pants) )⾥⾯有多少(穿长裤)的⼥孩( P(Pants, Girl) )。
上式中的 Pants 和 Boy/Girl 可以指代⼀切东西,所以其⼀般形式就是:
P(B|A) = P(A|B) * P(B) / [P(A|B) * P(B) + P(A|~B) * P(~B) ]
收缩起来就是:
P(B|A) = P(AB) / P(A)
其实这个就等于:
P(B|A) * P(A) = P(AB)
难怪拉普拉斯说概率论只是把常识⽤数学公式表达了出来。
然⽽,后⾯我们会逐渐发现,看似这么平凡的贝叶斯公式,背后却隐含着⾮常深刻的原理。
举个简单的例⼦,让⼤家对这个算法的原理有个快速的认识。(注:这个⽰例摘抄⾃《机器学习》这本书的第三章的表3-2.)
假设给定了如下训练样本数据,我们学习的⽬标是根据给定的天⽓状况判断你对PlayTennis这个请求的回答是Yes还是No。
Day Outlook Temperature Humidity Wind PlayTennis
D1Sunny Hot High Weak No
D2Sunny Hot High Strong No
D3Overcast Hot High Weak Yes
D4Rain Mild High Weak Yes
D5Rain Cool Normal Weak Yes
D6Rain Cool Normal Strong No
D7Overcast Cool Normal Strong Yes
D8Sunny Mild High Weak No
D9Sunny Cool Normal Weak Yes
D10Rain Mild Normal Weak Yes
D11Sunny Mild Normal Strong Yes
D12Overcast Mild High Strong Yes
D13Overcast Hot Normal Weak Yes
D14Rain Mild High Strong No
可以看到这⾥样本数据集提供了14个训练样本,我们将使⽤此表的数据,并结合朴素贝叶斯分类器来分类下⾯的新实例:
(Outlook = sunny,Temprature = cool,Humidity = high,Wind = strong)
我们的任务就是对此新实例预测⽬标概念PlayTennis的⽬标值(yes或no).
由上⾯的公式可以得到:
军政部
可以得到:
P(PlayTennis =yes) = 9/14 = 0.64,P(PlayTennis=no)=5/14 = 0.36
P(Wind=Stong| PlayTennis =yes)=3/9=0.33,p(Wind=Stong| PlayTennis =no)=3/5 = 0.6
其他数据类似可得,代⼊后得到:
P(yes)P(Sunny|yes)P(Cool|yes)P(high|yes)P(Strong|yes) = 0.0053
P(no)P(Sunny|no)P(Cool|no)P(high|no)P(Strong|no)=0.0206
因此应该分类到no这⼀类中。
1.3贝叶斯推断
贝叶斯推断()是⼀种统计学⽅法,⽤来估计统计量的某种性质。
它是贝叶斯定理()的应⽤。英国数学家托马斯·贝叶斯(Thomas Bayes)在1763年发表的⼀篇论⽂中,⾸先提出了这个定理。
贝叶斯推断与其他统计学推断⽅法截然不同。它建⽴在主观判断的基础上,也就是说,你可以不需要客观证据,先估计⼀个值,然后根据实际结果不断修正。正是因为它的主观性太强,曾经遭到许多统计学家的诟病。(这句话不太理解?主观性主要体现在什么地⽅呢?先验概率的计算,是通过样本求出来的,何处存在主观性呢?)
贝叶斯推断需要⼤量的计算,因此历史上很长⼀段时间,⽆法得到⼴泛应⽤。只有计算机诞⽣以后,它才获得真正的重视。⼈们发现,许多统计量是⽆法事先进⾏客观判断的,⽽互联⽹时代出现的⼤型数据集,再加上⾼速运算能⼒,为验证这些统计量提供了⽅便,也为应⽤贝叶斯推断创造了条件,它的威⼒正在⽇益显现。
贝叶斯定理推论
要理解贝叶斯推断,必须先理解贝叶斯定理。后者实际上就是计算"条件概率"的公式。
所谓"条件概率"(Conditional probability),就是指在事件B发⽣的情况下,事件A发⽣的概率,⽤P(A|B)来表⽰。
根据⽂⽒图,可以很清楚地看到在事件B发⽣的情况下,事件A发⽣的概率就是P(A∩B)除以P(B)。
因此,
同理可得,
所以,
即
这就是条件概率的计算公式。
全概率公式
由于后⾯要⽤到,所以除了条件概率以外,这⾥还要推导全概率公式。
假定样本空间S,是两个事件A与A'的和。
上图中,红⾊部分是事件A,绿⾊部分是事件A',它们共同构成了样本空间S。
在这种情况下,事件B可以划分成两个部分。
即
在上⼀节的推导当中,我们已知
所以,
这就是全概率公式。它的含义是,如果A和A'构成样本空间的⼀个划分,那么事件B的概率,就等于A和A'的概率分别乘以B对这两个事件的条件概率之和。
将这个公式代⼊上⼀节的条件概率公式,就得到了条件概率的另⼀种写法:
贝叶斯推断的含义
对条件概率公式进⾏变形,可以得到如下形式:
我们把P(A)称为"先验概率"(Prior probability),即在B事件发⽣之前,我们对A事件概率的⼀个判断。P(A|B)称为"后验概率"(Posterior probability),即在B事件发⽣之后,我们对A事件概率的重新评估。P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是⼀个调整因⼦,使得预估概率更接近真实概率。
所以,条件概率可以理解成下⾯的式⼦:
后验概率 = 先验概率x调整因⼦
这就是贝叶斯推断的含义。我们先预估⼀个"先验概率",然后加⼊实验结果,看这个实验到底是增强还是削弱了"先验概率",由此得到更接近事实的"后验概率"。
在这⾥,如果"可能性函数"P(B|A)/P(B)>1,意味着"先验概率"被增强,事件A的发⽣的可能性变⼤;如果"可能性函数"=1,意味着B事件⽆助于判断事件A的可能性;如果"可能性函数"<1,意味着"先验概率"被削弱,事件A的可能性变⼩。
【例⼦】⽔果糖问题
为了加深对贝叶斯推断的理解,我们看两个例⼦。
第⼀个例⼦。两个⼀模⼀样的碗,⼀号碗有30颗⽔果糖和10颗巧克⼒糖,⼆号碗有⽔果糖和巧克⼒糖各20颗。现在随机选择⼀个碗,从中摸出⼀颗糖,发现是⽔果糖。请问这颗⽔果糖来⾃⼀号碗的概率有多⼤?
我们假定,H1表⽰⼀号碗,H2表⽰⼆号碗。由于这两个碗是⼀样的,所以P(H1)=P(H2),也就是说,在取出⽔果糖之前,这两个碗被选中的概率相同。因此,P(H1)=0.5,我们把这个概率就叫做"先验概率",即没有做实验之前,来⾃⼀号碗的概率是0.5。
再假定,E表⽰⽔果糖,所以问题就变成了在已知E的情况下,来⾃⼀号碗的概率有多⼤,即求P(H1|E)
。我们把这个概率叫做"后验概率",即在E事件发⽣之后,对P(H1)的修正。
根据条件概率公式,得到
已知,P(H1)等于0.5,P(E|H1)为⼀号碗中取出⽔果糖的概率,等于0.75,那么求出P(E)就可以得到答案。根据全概率公式,
所以,
将数字代⼊原⽅程,得到
这表明,来⾃⼀号碗的概率是0.6。也就是说,取出⽔果糖之后,H1事件的可能性得到了增强。
【例⼦】假阳性问题
第⼆个例⼦是⼀个医学的常见问题,与现实⽣活关系紧密。
已知某种疾病的发病率是0.001,即1000⼈中会有1个⼈得病。现有⼀种试剂可以检验患者是否得病,它的准确率是0.99,即在患者确实得病的情况下,它有99%的可能呈现阳性。它的误报率是5%,即在患者没有得病的情况下,它有5%的可能呈现阳性。现有⼀个病⼈的检验结果为阳性,请问他确实得病的可能性有多⼤?
假定A事件表⽰得病,那么P(A)为0.001。这就是"先验概率",即没有做试验之前,我们预计的发病率。再假定B事件表⽰阳性,那么要计算的就是P(A|B)。这就是"后验概率",即做了试验以后,对发病率的估计。
根据条件概率公式,
⽤全概率公式改写分母,
将数字代⼊,
头晕怎么办快速缓解我们得到了⼀个惊⼈的结果,P(A|B)约等于0.019。也就是说,即使检验呈现阳性,病⼈得病的概率,也只是从0.1%增加到了2%左右。这就是所谓的"假阳性",即阳性结果完全不⾜以说明病⼈得病。
为什么会这样?为什么这种检验的准确率⾼达99%,但是可信度却不到2%?答案是与它的误报率太⾼有关。(【习题】如果误报率从5%降为1%,请问病⼈得病的概率会变成多少?)
有兴趣的朋友,还可以算⼀下"假阴性"问题,即检验结果为阴性,但是病⼈确实得病的概率有多⼤。然后问⾃⼰,"假阳性"和"假阴性",哪⼀个才是医学检验的主要风险?
2. 拼写纠正
经典著作《⼈⼯智能:现代⽅法》的作者之⼀ Peter Norvig 曾经写过⼀篇介绍如何写⼀个拼写检查/纠正器的⽂章(原⽂在,徐宥的翻译版在,这篇⽂章很深⼊浅出,强烈建议读⼀读),⾥⾯⽤到的就是贝叶斯⽅法,这⾥我们不打算复述他写的⽂章,⽽是简要地将其核⼼思想介绍⼀下。
苹果平板开不了机了怎么办
⾸先,我们需要询问的是:“问题是什么?”
欧乐b牙刷问题是我们看到⽤户输⼊了⼀个不在字典中的单词,我们需要去猜测:“这个家伙到底真正想输⼊的单词是什么呢?”⽤刚才我们形式化的语⾔来叙述就是,我们需要求:
P(我们猜测他想输⼊的单词 | 他实际输⼊的单词)
这个概率。并找出那个使得这个概率最⼤的猜测单词。显然,我们的猜测未必是唯⼀的,就像前⾯举的那个⾃然语⾔的歧义性的例⼦⼀样;这⾥,⽐如⽤户输⼊: thew ,那么他到底是想输⼊ the ,还是想输⼊ thaw ?到底哪个猜测可能性更⼤呢?幸运的是我们可以⽤贝叶斯公式来直接出它们各⾃的概率,我们不妨将我们的多个猜测记为 h1 h2 .. ( h 代表 hypothesis),它们都属于⼀个有限且离散的猜测空间 H (单词总共就那么多⽽已),将⽤户实际输⼊的单词记为 D ( D 代表 Data ,即观测数据),于是P(我们的猜测1 | 他实际输⼊的单词)
可以抽象地记为:
五个热门故事P(h1 | D)
类似地,对于我们的猜测2,则是 P(h2 | D)。不妨统⼀记为:
P(h | D)
运⽤⼀次贝叶斯公式,我们得到:
P(h | D) = P(h) * P(D | h) / P(D)
对于不同的具体猜测 h1 h2 h3 .. ,P(D) 都是⼀样的,所以在⽐较 P(h1 | D) 和 P(h2 | D) 的时候我们可以忽略这个常数。即我们只需要知道:
P(h | D) ∝ P(h) * P(D | h) (注:那个符号的意思是“正⽐例于”,不是⽆穷⼤,注意符号右端是有⼀个⼩缺⼝的。)
这个式⼦的抽象含义是:对于给定观测数据,⼀个猜测是好是坏,取决于“这个猜测本⾝独⽴的可能性⼤⼩(先验概率,Prior )”和“这个猜测⽣成我们观测到的数据的可能性⼤⼩”(似然,Likelihood )的乘积。具体到我们的那个 thew 例⼦上,含义就是,⽤户实际是想输⼊ the 的可能性⼤⼩取决于 the 本⾝在词汇表中被使⽤的可能性(频繁程度)⼤⼩(先验概率)和想打 the 却打成 thew 的可能性⼤⼩(似然)的乘积。
下⾯的事情就很简单了,对于我们猜测为可能的每个单词计算⼀下 P(h) * P(D | h) 这个值,然后取最⼤的,得到的就是最靠谱的猜测。
⼀点注记:Norvig 的拼写纠正器⾥⾯只提取了编辑距离为 2 以内的所有已知单词。这是为了避免去遍历字典中每个单词计算它们的 P(h) * P(D | h) ,但这种做法为了节省时间带来了⼀些误差。但话说回来难道我们⼈类真的回去遍历每个可能的单词来计算他们的后验概率吗?不可能。实际上,根据认知神经科学的观点,我们⾸先根据错误的单词做⼀个 bottom-up 的关联提取,提取出有可能是实际单词的那些候选单词,这个提取过程就是所谓的基于内容的提取,可以根据错误单词的⼀些模式⽚段提取出有限的⼀组候选,⾮常快地缩⼩的搜索空间(⽐如我输⼊ explaination ,单词⾥⾯就有充分的信息使得我们的⼤脑在常数时间内把可能性 narrow down 到 explanation 这个单词上,⾄于具体是根据哪些线索——如⾳节——来提取,⼜是如何在⽣物神经⽹络中实现这个提取机制的,⽬前还是⼀个没有弄清的领域)。然后,我们对这有限的⼏个猜测做⼀个 top-down 的预测,看看到底哪个对于观测数据(即错误单词)的预测效⼒最好,⽽如何衡量预测效率则就是⽤贝叶斯公式⾥⾯的那个 P(h) * P(D | h) 了——虽然我们很可能使⽤了。后⾯我们还会提到这样的 bottom-up 的关联提取。
3. 模型⽐较与奥卡姆剃⼑
3.1 再访拼写纠正
介绍了贝叶斯拼写纠正之后,接下来的⼀个⾃然⽽然的问题就来了:“为什么?”为什么要⽤贝叶斯公式?为什么贝叶斯公式在这⾥可以⽤?我们可以很容易地领会为什么贝叶斯公式⽤在前⾯介绍的那个男⽣⼥⽣长裤裙⼦的问题⾥是正确的。但为什么这⾥?
为了回答这个问题,⼀个常见的思路就是想想:⾮得这样吗?因为如果你想到了另⼀种做法并且证明了它也是靠谱的,那么将它与现在这个⼀⽐较,也许就能得出很有价值的信息。那么对于拼写纠错问题你能想到其他⽅案吗?
不管怎样,⼀个最常见的替代⽅案就是,选择离 thew 的最近的。然⽽ the 和 thaw 离 thew 的编辑距离都是 1 。这可咋办捏?你说,不慌,那还是好办。我们就看到底哪个更可能被错打为 thew 就是了。我们注意到字母 e 和字母 w 在键盘上离得很紧,⽆名指⼀抽筋就不⼩⼼多打出⼀个 w 来,the 就变成 thew 了。⽽另⼀⽅⾯ thaw 被错打成thew 的可能性就相对⼩⼀点,因为 e 和 a 离得较远⽽且使⽤的指头相差⼀个指头(⼀个是中指⼀个是⼩指,不像 e 和 w 使⽤的指头靠在⼀块——神经科学的证据表明紧邻的⾝体设施之间容易串位)。OK,很好,因为你现在已经是在⽤最⼤似然⽅法了,或者直⽩⼀点,你就是在计算那个使得 P(D | h) 最⼤的 h 。
⽽贝叶斯⽅法计算的是什么?是 P(h) * P(D | h) 。多出来了⼀个 P(h) 。我们刚才说了,这个多出来的 P(h) 是特定猜测的先验概率。为什么要掺和进⼀个先验概率?刚才说的那个最⼤似然不是挺好么?很
雄辩地指出了 the 是更靠谱的猜测。有什么问题呢?既然这样,我们就从给最⼤似然找茬开始吧——我们假设两者的似然程度是⼀样或⾮常相近,这样不就难以区分哪个猜测更靠谱了吗?⽐如⽤户输⼊tlp ,那到底是 top 还是 tip ?(这个例⼦不怎么好,因为 top 和 tip 的词频可能仍然是接近的,但⼀时想不到好的英⽂单词的例⼦,我们不妨就假设 top ⽐ tip 常见许多吧,这个假设并不影响问题的本质。)这个时候,当最⼤似然不能作出决定性的判断时,先验概率就可以插⼿进来给出指⽰——“既然你⽆法决定,那么我告诉你,⼀般来说 top 出现的程度要⾼许多,所以更可能他想打的是 top ”)。
以上只是最⼤似然的⼀个问题,即并不能提供决策的全部信息。
最⼤似然还有另⼀个问题:即便⼀个猜测与数据⾮常符合,也并不代表这个猜测就是更好的猜测,因为这个猜测本⾝的可能性也许就⾮常低。⽐如 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 个点的原因。
以上分析当中隐含的哲学是,观测数据总是会有各种各样的误差,⽐如观测误差(⽐如你观测的时候⼀个 MM 经过你⼀不留神,⼿⼀抖就是⼀个误差出现了),所以如果过分去寻求能够完美解释观测数据的模型,就会落⼊所谓的数据的境地,⼀个过配的模型试图连误差(噪⾳)都去解释(⽽实际上噪⾳⼜是不需要解释的),显然就过犹不及了。所以 P(D | h) ⼤不代表你的 h (猜测)就是更好的 h。还要看 P(h) 是怎样的。所谓精神就是说:如果两个理论具有相似的解释⼒度,那么优先选择那个更简单的(往往也正是更平凡的,更少繁复的,更常见的)。
超出流量怎么补救
过分匹配的另⼀个原因在于当观测的结果并不是因为误差⽽显得“不精确”⽽是因为真实世界中对数据的结果产⽣贡献的因素太多太多,跟噪⾳不同,这些偏差是⼀些另外的因素集体贡献的结果,不是你的模型所能解释的——噪⾳那是不需要解释——⼀个现实的模型往往只提取出⼏个与结果相关度很⾼,很重要的因素(cau)。这个时候观察数据会倾向于围绕你的有限模型的预测结果呈,于是你实际观察到的结果就是这个正态分布的,这个取样很可能受到其余因素的影响偏离你的模型所预测的中⼼,这个时候便不能贪⼼不⾜地试图通过改变模型来“完美”匹配数据,因为那些使结果偏离你的预测的贡献因素不是你这个有限模型⾥⾯含有的因素所能概括的,硬要打肿脸充胖⼦只能导致不实际的模型,举个教科书例⼦:⾝⾼和体重的实际关系近似于⼀个⼆阶多项式的关系,但⼤家都知道并不是
只有⾝⾼才会对体重产⽣影响,物理世界影响体重的因素太多太多了,有⼈⾝材⾼⼤却瘦得跟稻草,有⼈却是横长竖不长。但不可否认的是总体上来说,那些特殊情况越是特殊就越是稀少,呈围绕最普遍情况(胖瘦适中)的正态分布,这个分布就保证了我们的⾝⾼——体重相关模型能够在⼤多数情况下做出靠谱的预测。但是——刚才说了,特例是存在的,就算不是特例,⼈有胖瘦,密度也有⼤⼩,所以完美符合⾝⾼——体重的某个假想的⼆阶多项式关系的⼈是不存在的,我们⼜不是欧⼏⾥德⼏何世界当中的理想多⾯体,所以,当我们对⼈群随机抽取了 N 个样本(数据点)试图对这 N 个数据点拟合出⼀个多项式的话就得注意,它肯定得是⼆阶多项式,我们要做的只是去根据数据点计算出多项式各项的参数(⼀个典型的⽅法就是最⼩⼆乘);它肯定不是直线(我们⼜不是稻草),也不是三阶多项式四阶多项式.. 如果硬要完美拟合 N 个点,你可能会整出⼀个 N-1 阶多项式来——设想⾝⾼和体重的关系是 5 阶多项式看看?
3.2 模型⽐较理论(Model Comparasion)与贝叶斯奥卡姆剃⼑(Bayesian Occam’s Razor)
实际上,模型⽐较就是去⽐较哪个模型(猜测)更可能隐藏在观察数据的背后。其基本思想前⾯已经⽤拼写纠正的例⼦来说明了。我们对⽤户实际想输⼊的单词的猜测就是模型,⽤户输错的单词就是观测数据。我们通过:
P(h | D) ∝ P(h) * P(D | h)
来⽐较哪个模型最为靠谱。前⾯提到,光靠 P(D | h) (即“似然”)是不够的,有时候还需要引⼊ P(h) 这个先验概率。奥卡姆剃⼑就是说 P(h) 较⼤的模型有较⼤的优势,⽽最⼤似然则是说最符合观测数据的(即 P(D | h) 最⼤的)最有优势。整个模型⽐较就是这两⽅⼒量的拉锯。我们不妨再举⼀个简单的例⼦来说明这⼀精神:你随便找枚硬币,掷⼀下,观察⼀下结果。好,你观察到的结果要么是“正”,要么是“反”(不,不是少林⾜球那枚硬币:P ),不妨假设你观察到的是“正”。现在你要去根据这个观测数据推断这枚硬币掷出“正”的概率是多⼤。根据最⼤似然估计的精神,我们应该猜测这枚硬币掷出“正”的概率是 1 ,因为这个才是能最⼤化 P(D | h) 的那个猜测。然⽽每个⼈都会⼤摇其头——很显然,你随机摸出⼀枚硬币这枚硬币居然没有反⾯的概率是“不存在的”,我们对⼀枚随机硬币是否⼀枚有偏硬币,偏了多少,是有着⼀个先验的认识的,这个认识就是绝⼤多数硬币都是基本公平的,偏得越多的硬币越少见(可以⽤⼀个来表达这⼀先验概率)。将这个先验正态分布 p(θ) (其中θ表⽰硬币掷出正⾯的⽐例,⼩写的 p 代表这是)结合到我们的问题中,我们便不是去最⼤化 P(D | h) ,⽽是去最⼤化 P(D | θ) * p(θ) ,显然θ = 1 是不⾏的,因为 P(θ=1) 为 0 ,导致整个乘积也为 0 。实际上,只要对这个式⼦求⼀个导数就可以得到最值点。
以上说的是当我们知道先验概率 P(h) 的时候,光⽤最⼤似然是不靠谱的,因为最⼤似然的猜测可能先验概率⾮常⼩。然⽽,有些时候,我们对于先验概率⼀⽆所知,只能假设每种猜测的先验概率是均等的,这个时候就只有⽤最⼤似然了。实际上,统计学家和贝叶斯学家有⼀个有趣的争论,统计学家说:
我们让数据⾃⼰说话。⾔下之意就是要摒弃先验概率。⽽贝叶斯⽀持者则说:数据会有各种各样的偏差,⽽⼀个靠谱的先验概率则可以对这些随机噪⾳做到健壮。事实证明贝叶斯派胜利了,胜利的关键在于所谓先验概率其实也是经验统计的结果,譬如为什么我们会认为绝⼤多数硬币是基本公平的?为什么我们认为⼤多数⼈的肥胖适中?为什么我们认为肤⾊是种族相关的,⽽体重则与种族⽆关?先验概率⾥⾯的“先验”并不是指先于⼀切经验,⽽是仅指先于我们“当前”给出的观测数据⽽已,在硬币的例⼦中先验指的只是先于我们知道投掷的结果这个经验,⽽并⾮“先天”。
然⽽,话说回来,有时候我们必须得承认,就算是基于以往的经验,我们⼿头的“先验”概率还是均匀分布,这个时候就必须依赖⽤最⼤似然,我们⽤前⾯留下的⼀个⾃然语⾔⼆义性问题来说明这⼀点:
The girl saw the boy with a telescope.
到底是 The girl saw-with-a-telescope the boy 这⼀语法结构,还是 The girl saw the-boy-with-a-telescope 呢?两种语法结构的常见程度都差不多(你可能会觉得后⼀种语法结构的常见程度较低,这是事后偏见,你只需想想 The girl saw the boy with a book 就知道了。当然,实际上从⼤规模语料统计结果来看后⼀种语法结构的确稍稍不常见⼀丁点,但是绝对不⾜以解释我们对第⼀种结构的强烈倾向)。那么到底为什么呢?
我们不妨先来看看 MacKay 在书中举的⼀个漂亮的例⼦:
图中有多少个箱⼦?特别地,那棵书后⾯是⼀个箱⼦?还是两个箱⼦?还是三个箱⼦?还是.. 你可能会觉得树后⾯肯定是⼀个箱⼦,但为什么不是两个呢?如下图:
很简单,你会说:要是真的有两个箱⼦那才怪了,怎么就那么巧这两个箱⼦刚刚好颜⾊相同,⾼度相同呢?
⽤概率论的语⾔来说,你刚才的话就翻译为:猜测 h 不成⽴,因为 P(D | h) 太⼩(太巧合)了。我们的直觉是:巧合(⼩概率)事件不会发⽣。所以当⼀个猜测(假设)使得我们的观测结果成为⼩概率事件的时候,我们就说“才怪呢,哪能那么巧捏?!”
现在我们可以回到那个⾃然语⾔⼆义性的例⼦,并给出⼀个完美的解释了:如果语法结构是 The girl saw the-boy-with-a-telecope 的话,怎么那个男孩偏偏⼿⾥拿的就是望远镜——⼀个可以被⽤来 saw-with 的东东捏?这也忒⼩概率了吧。他咋就不会拿本书呢?拿什么都好。怎么偏偏就拿了望远镜?所以唯⼀的解释是,这个“巧合”背后肯定有它的必然性,这个必然性就是,如果我们将语法结构解释为 The girl saw-with-a-telescope the boy 的话,就跟数据完美吻合了——既然那个⼥孩是⽤某个东西去看这个男孩的,那么这个东西是⼀个望远镜就完全可以解释了(不再是⼩概率事件了)。
⾃然语⾔⼆义性很常见,譬如上⽂中的⼀句话:
参见《决策与判断》以及《》第12章:⼩孩也可以解决贝叶斯问题
找对象的句子