科学网

 找回密码
  注册

tag 标签: 贝叶斯

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

[转载]CNN科普-帮助搜索失联航班的贝叶斯理论
josh 2014-3-19 23:43
http://video.sina.com.cn/p/news/w/v/2014-03-19/123863636657.html 祈福。
个人分类: 科普|2409 次阅读|0 个评论
我的二胎会生儿子吗?
热度 6 andydong 2014-3-7 17:39
如果我们有了一个女儿,再生一个的话,生男孩的概率有多少? 你肯定会说,很无聊的问题,因为生男生女的概率是根据男性的性染色体 (XY) 决定的,如果与女性( XX )结合后,是 XX 就是女孩,是 YX 就是男孩,所以我们的二胎生男或生女的概率应该相同,也就是各占 50% 。 事实果真如此吗? 说一个 1959 年被一个美国人提出来的生男生女著名悖论:假设我们有了两个孩子,总共有四种组合(男孩 B ,女孩 G ): BB , GG , BG , GB 假设我们知道了有一个是女孩,所以第一种情况 BB 可以淘汰,剩下的三种概率相同,所以另一个是男孩的概率应该是 1/3+1/3=2/3 ,即 66.7% ,而不是上面说的 50% 。 意思就是说,如果我们生了一个女儿,第二个是男孩的概率将高达 66.7% 。 到底哪一个是正确的呢?看似简单,其实有很多逻辑性问题。 事实上,上一个悖论用传统的概率论(即用频率代表概率)是很难算出来的,如果用贝叶斯的思路,就非常简单。 今年是贝叶斯提出 250 年,国际贝叶斯学会有专门的庆祝活动,因为频率论和贝叶斯论争执了足足一百年,还没有休止。 下面说说贝叶斯是怎么解决这一问题的: 因为 GG, BB, GB, BG 的概率都是 1/4=0.25 ,我们记为: P ( GG ) =P ( BB ) =P ( GB ) =P ( BG ) =0.25 另外,其中一个是男孩的概率和一个是女孩的概率,也就是说两个孩子肯定不同性别,这时概率是 0.50 ,记为: P ( G.B ) =P(GB)+P(BG) = 0.50 (以上这些在贝叶斯理论里被称为先验概率,就是说根据专家意见或者积累经验形成的认识,这一点是被频率论极为指责的,看不懂,可以忽略这些) 现在的难题是,至少一个是男孩的概率是多少?(基于我们想要个男孩的愿望) 我们把一个已知是男孩,另一个也是男孩的概率记为: P ( BB|B ) —— 意为在 B 的条件下, BB 的概率。 根据贝叶斯经典公式(推论过程你不需懂了,这个有 N 多专著在证明下式是成立的): P(BB|B) = P(B|BB) · P(BB) / P(B) = 1 · 1/4 / (3/4) = 1/3 上式中, P(B|BB) 表示在两个都是男孩( BB )的条件下,其中一个是男孩( B )的概率(这是显而易见是肯定存在的,所以此值等于 1 );而 P ( BB )是两个都是男孩,如前面定义的等于 1/4 ;比较特殊的至少一个是男孩的概率 P ( B )为什么等于 3/4? 因为至少一个是男孩的概率 P ( B )应该等于两个都是男孩的概率 P ( BB )加上两个孩子不同性别的概率 P ( G.B ),所以: P ( B ) = P ( BB ) +P ( G.B ) =1/4 + 1/2 = 3/4 现在我们可以放心的说,如果一个已知是男孩,另一个也是男孩的概率是比较低的,只有 1/3 ,即只有 33% ;换言之,我们有了一个女儿,再生一个还是女儿的概率只有 33% ,所以再生一个男孩的概率会非常高。 这么说你肯定高兴了,生二胎,生儿子! 先别高兴太早,我们接着分析,我们的结果还是和常识不一致啊,生男生女就应该是各有 50% 才对啊? 我们仔细来说这个问题,有两种表述: ( 1 )董先生和吴小姐的第一个孩子是女孩, 生第二个孩子 ,也是女孩的概率是多少? ( 2 )董先生和吴小姐可以生两个孩子, 至少一个是女孩 ,两个都是女孩的概率是多少? 你仔细想想上面两个表述一样吗? 这是 1959 年美国人的原始问题改述。 其实前面的分析是偷换概念了,我们明明分析的是第二个问题,而不是第一个问题! 第一个问题的答案还是 1/2 ,而第二个问题的答案按照分析是 1/3. 看来我们二胎生男孩的概率又回到了 1/2 ,失望了吧! 别急,我们接着分析。 第二个问题的结果肯定是 1/3 吗? 不一定。 首先,我们认识问题是非常模糊的,你说 “ 至少一个是女孩 ” 你有什么依据?基于确切的文字和可能的假设,其实都是模糊的,模糊性已被 2004 年 Nickerson 的专著,中文译为 “ 认知和机会:概率推理的心理学 ” 一书所证明,还有最近更多文献在讨论这个模糊性。在此不论。 再次,第二个问题什么时候和第一个问题是等价的呢?只要我们在第二个问题定义时,说 “ 至少一个是女孩 ” ,我们就指定第一个必须是女孩。此时,两个问题其实是同一个问题。第二个问题的答案应该还是 1/2 ,而不是 1/3. 最后,还有一个随机取样的问题,这又是概率论上另一个大的领域,到底有没有真随机?很多大科学家是倾向于没有真随机(比如牛顿,逝世前用了 10 多年要证明上帝是存在的,没有证明完就去世了,很可惜),他们认为只有伪随机的(我们做风险评估的,都是用的伪随机,比如蒙特卡罗取样,我是坚决认为世界上存在真随机的,毕竟我从事的是实证科学,要否定上帝的存在),他们认为世界是由上帝置骰子决定的,这是科学和哲学(或者更高的神学、玄学之争),在此不展开,我们用两种表述随机性来说明第二个问题: ( 1 )在所有有两个孩子的家庭中,每个家庭中至少一个是女孩, 家庭的选择是随机的 ,那么第二个问题的答案就是 1/3. ( 2 )在所有有两个孩子的家庭中, 孩子的选择是随机的 ,其中一个孩子的性别是指定的(女孩),那么第二个问题的答案就是 1/2. 你仔细想下,上面两个表述是不同的。 但是也有很多学者认为上面两种定义随机性的表述也是模糊的(证明没有找到),他们的理由我来通俗的翻译: 你到有两个孩子的家庭里,看见一个是女孩,另一个躲起来了,你不知道男女。这个时候,这种情况其实就是第二个问题说的 “ 至少一个是女孩 ” 。但是不一定符合第一个问题,因为你看不到第二个孩子,如果你看到第二个孩子是男孩,就不匹配第一个问题了。 所以说,你看到第一个是女孩,其实是命题的充分条件,而非必要条件。 (补充下数学知识,如果 A 成立,导致 B 成立, A 叫做 B 的充分条件, B 叫做A的必要条件;如果 A 成立导致 B 成立,同时 B 成立也导致 A 成立, A 叫做 B 的充分必要条件) 争议的来源其实主要来源于我们表达的 “ 至少 ” ,人类语言受限,什么叫 “ 至少 ” ?你到别人家里看见一个女孩,确定她是个女孩,这叫 “ 至少 ” 一个女孩吗?如果从取样的角度说:是以下哪种情况:是从一个群体中,发现一个女孩,而后把她 “ 取 ” 走,再替换一个新人,这叫 “ 至少 ” ;还是从群体中发现一个女孩,不 “ 取走 ” 她,继续再在这个整体中寻找发现(有可能还发现是同一个女孩),这叫 “ 至少 ” 。 以上两种情况,以我做风险评估的理解,所谓取样应该是第一个解释是对的。 下面我们再用贝叶斯理论来解释刚才这个说明,你就会知道贝叶斯是多么伟大了,为什么被 SCIENCE 期刊称为 “ 永不会灭亡的理论 ” 。 按照前一封邮件的贝叶斯方法,我们把表述 “ 这个孩子是男孩 ” 记为 b ,那么仍然根据贝叶斯经典公式,下式是必然成立的: P(BB|b) = P(b|BB) · P(BB) / P(b) = 1 · 1/4 / 1/2 = 1/2 . 意义同前。唯一不同的是 P(b) 是何意?我们把它看做是从所有可能的情形中取样,发现是男孩的概率(注意这里没有说 “ 至少 ” ),此时肯定的是 P(b) = 1/2 贝叶斯巧妙的绕过了人类语言中 “ 至少 ” 这一模糊性,利用先验概率(还记得前面提到的这个概念吗?),我们来个预先可以肯定的共识(或者是公理吧),即两个孩子都是男孩、都是女孩、或者一男一女的概率各为 1/3 ,用数学式表达就是: P(GG) = P(BB) = P(G.B) = 1/3. 那么在这种情况下, “ 至少 ” 这一假设产生的结果就是 P(BB|B) = 1/2 (差不多可以对应上面说的第二个问题的第二种表述 “ 孩子的选择是随机的 ” ) 同时,在这一情况下,取样假设后的结果是 P(BB|b)=2/3. 我们把刚才的问题扩展一下,假设你来投资下赌注。 你投资 1 块钱,假设别人家生了两个孩子,如果两个都是男孩,你就会赢 4 块钱来。 下面两种情况,哪一种你会更开心: ( 1 )知道其中一个是男孩。 ( 2 )知道其中至少是一个男孩(呵呵,又是 “ 至少 ” )。 毋庸置疑,按照常识,第二种的概率更低。其实上面两种情况正好对应着前面的两个问题,结果当然是不同的。 下面换为数字,如果我们赌其中一个孩子是男孩,并且赢了,投资就会翻倍(即赢 2 块钱来);再赌第二个孩子是男孩,如果能赢,投资再翻倍,就会赢 4 块钱了,所以赢的概率,应该叫赔率 1:2. 第二种情况,如果我们知道其中至少是一个男孩,我们的投资会追加,因为我们有一定把握了,我们目前的 1 块钱,实际 “ 身价 ” 已经是 4/3 块钱了,要真正赢回 4 块钱,我们必须增加财富的 3 倍(即 4/3 乘以多少等于 4 块钱?),所以,赔率是 1:3. 以上分析,不是我原创的,它叫 Martingale 分析法。 来继续挑战下思维吧。 我们把问题再变化下: 假设我们有了两个孩子,有一天我带女儿路上遇见我大学同学,这时我自豪的对他说,这是我的女儿,问题:我的另一个孩子也是女孩的概率是多少? 这个问题的答案当然和前面是一样的,概率是 1/2. 但是,这和前面的问题是不同的,在我带女儿路上遇见大学同学前,同学是知道我有两个孩子的,但并不知道是两个男孩( BB )、两个女孩( GG ),还是一男一女( BG 或 GB )。所以我大学同学知道我有两个女儿的概率是 1/4 ,这时经我介绍我的女儿后,他知道我有一个女儿了,会把两个男孩( BB )的可能给直接排除掉了,我只可能在剩余的三种情况里选择:两个女孩( GG ),或者老大男孩、老二是女孩( BG ),或者老大女孩、老二是男孩( GB )。那么,我有两个女孩的概率只能是上述三种情况的一种,即 1/3. 为什么又出现了上面说到的两个答案不一样? 首先我们要做个假设,我们有两个孩子,带谁出门是随机的。那么如果我带出来的孩子是女儿,此时我有两个女孩( GG )的概率应该是一男一女( GB 或 BG )的两倍,此时因为我已经带出来是女孩了,我有两个男孩的概率降为 0 ,可以排除这种情况。我带出来女儿,另一个是男孩,或者另一个是女孩,这两种可能性相等,各占 1/2. 再次,我们来做个假设,我当爸爸的就愿带女儿出门(女儿是爸爸上辈子情人吗,呵呵),因此带女儿出门的概率提高,在这种情况下,我不管是有两个女孩( GG ),还是一男一女( BG 或 GB ),都会倾向于带女儿出门遇见大学同学,这时我另一个孩子是女儿的概率也是 1/3. 看吧,上面两种情况是不是正好对应前面说的两个问题? 当然以上的问题也不是我首先想到的,是两个人 Bar-Hillel 和 Falk 在 1982 年提出来的。 再来看另外一个经典问题,是 Vos Savant 在 1996 年首先想到的: 有一个女人和一个男人(两人不认识,生活也没有交叉),他们各有两个孩子,我们已知女人至少有一个是男孩,而男人家老大是个男孩。问题是:女人家有两个男孩,和男人家有两个男孩的的概率相等吗? 如果你理解了上面的各种情况,你会立刻知道答案应该是女人家 1/3 ,男人家 1/2. 为了验证, Vos Savant 居然真的调研了 17946 个有两个孩子的女人,发现至少有一个是男孩,另一个也是男孩的比例是 35.9% ,非常惊人的接近 1/3 !(其实按照数学极限理论,这和抛硬币是一样的道理,样品越多,越接近总体,即越接近理论极限值)。 但是,我们必须明白,我们以上的计算都是基于男女性别是独立的,即男女出现的概率相同(和贝叶斯的先验一样),但是实际上,按照中国传统,男孩比女孩更受欢迎,导致男女性并不独立,或者说二胎的性别并不独立于一胎的性别。如果调研来验证,会出现极大的偏差。 根据前面的分析,我们发现数学都是 “ 冷冰冰 ” 的,一点都不温情。似乎是没有正确答案。 这个生男生女的悖论问题还引起很多心理学专业的思考,比如 Fox 和 Levav 在 2004 年用两种表述来测试看人们怎么 “ 估计 ” 概率: ( 1 )我有两个孩子,其中至少一个是女孩。另一个也是女孩的概率是多少? ( 2 )我有两个孩子,但是不会是两个都是男孩。我两个孩子都是女孩的概率是多少? 那么,这两种表述其实是给人有心理暗示的,第一个表述似乎是暗示读者只有两种可能结果(要么男孩、要么女孩),因为我问的是 “ 另一个 ” ,只能二选一,这是一种误导;第二种给人的印象是一下子就跳到了四种可能性,一种已经排除了(都是男孩),剩下有三种,所以只能三选一。 Fox 和 Levav 实际调研后发现 85% 的读者会认为第一个问题答案是 1/2 ,而仅有 39% 的读者会认为第二个问题答案也是 1/2. 所以心理学解释是这属于先入为主的诱导式问题,让你自然向目标答案靠近。 以上我主要根据英文维基、概率论教材等材料写成,以及自己的一些思考认识,因为非数学、统计学专业,理解不对的地方请专业人士指正。
5806 次阅读|15 个评论
贝叶斯定理:关于隐藏博文的歉意和说明
热度 4 lix 2014-3-4 23:00
贝叶斯定理哲学上的意义之一,就是除了和我们关心的集合 A 和 B 之外,还有一些事件,它们与集合 A 和 B 之间,可能没有关系,也可能有关系但尚未发现或者尚未想到,我们先把他们归类为( -A + -B ),留待抽丝剥茧。 上一篇博文,讲应急反应的,没有得罪安哥拉、也没有踩科学网红线。但是毕竟有了没有想到的负面响应。所以主动隐藏了。这样有点对不起发表评论的网友们。抱歉!冷一段时间,修理修理,争取修复吧。这个负面响应真的属于( -A + -B )。 再举一个例子: 刘杜鹏 博主 · 在转基因问题上我为什么给方舟子站台 文章不错。但他的博客名: pengduliu 是怎么回事?从他的博文看起来,他不知道姓名中译英习惯的可能性很小;闹不清楚他自己究竟该姓什么的可能性更小。运用贝叶斯定理,老邪算出他双亲分别姓刘和杜的可能性大于其它可能。其中,父亲姓刘的可能性大于母亲姓刘的可能性。 没有冒犯的意思,只希望 刘杜鹏 博主证实一下老邪的贝叶斯定理用错了没有。
个人分类: 怪哉虫儿|6350 次阅读|5 个评论
[转载]【转载】数学之美番外篇:平凡而又神奇的贝叶斯方法
guisongtao 2013-11-11 20:39
无意中发现了一篇好文章,浅显易懂,生动有趣, 来自刘未鹏先生的博客,转载请注明原博客地址: http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ —————————————————————————————————————————————————————— 概率论只不过是把常识用数学公式表达了出来。 ——拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计。我心想,一个方法能够专门写出一本书来,肯定很牛逼。后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法。 ——题记 目录 0. 前言 1. 历史 1.1 一个例子:自然语言的二义性 1.2 贝叶斯公式 2. 拼写纠正 3. 模型比较与贝叶斯奥卡姆剃刀 3.1 再访拼写纠正 3.2 模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor) 3.3 最小描述长度原则 3.4 最优贝叶斯推理 4. 无处不在的贝叶斯 4.1 中文分词 4.2 统计机器翻译 4.3 贝叶斯图像识别,Analysis by Synthesis 4.4 EM 算法与基于模型的聚类 4.5 最大似然与最小二乘 5. 朴素贝叶斯方法(又名“愚蠢者的贝叶斯(idiot’s bayes)”) 5.1 垃圾邮件过滤器 5.2 为什么朴素贝叶斯方法令人诧异地好——一个理论解释 6. 层级贝叶斯模型 6.1 隐马可夫模型(HMM) 7. 贝叶斯网络 0. 前言 这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子。更严格的公式和计算我会在相应的地方注明参考资料。贝叶斯方法被证明是非常 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% 的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。有了这些信息之后我们可以容易地计算“随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大”,这个就是前面说的“正向概率”的计算。然而,假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗? 一些认知科学的研究表明(《决策与判断》以及《 Rationality for Mortals 》第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) / 。容易发现这里校园内人的总数是无关的,可以消去。于是得到 P(Girl|Pants) = 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(B|A) = P(AB) / P(A) 其实这个就等于: P(B|A) * P(A) = P(AB) 难怪拉普拉斯说 概率论只是把常识用数学公式表达了出来 。 然而,后面我们会逐渐发现,看似这么平凡的贝叶斯公式,背后却隐含着非常深刻的原理。 2. 拼写纠正 经典著作《人工智能:现代方法》的作者之一 Peter Norvig 曾经写过一篇介绍如何写一个拼写检查/纠正器的文章(原文在 这里 ,徐宥的翻译版在 这里 ,这篇文章很深入浅出,强烈建议读一读),里面用到的就是贝叶斯方法,这里我们不打算复述他写的文章,而是简要地将其核心思想介绍一下。 首先,我们需要询问的是:“ 问题是什么? ” 问题是我们看到用户输入了一个不在字典中的单词,我们需要去猜测:“这个家伙到底真正想输入的单词是什么呢?”用刚才我们形式化的语言来叙述就是,我们需要求: 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 经过你一不留神,手一抖就是一个误差出现了),所以如果过分去寻求能够完美解释观测数据的模型,就会落入所谓的数据 过配(overfitting) 的境地,一个过配的模型试图连误差(噪音)都去解释(而实际上噪音又是不需要解释的),显然就过犹不及了。所以 P(D | h) 大不代表你的 h (猜测)就是更好的 h。还要看 P(h) 是怎样的。所谓 奥卡姆剃刀 精神就是说:如果两个理论具有相似的解释力度,那么优先选择那个更简单的(往往也正是更平凡的,更少繁复的,更常见的)。 过分匹配的另一个原因在于当观测的结果并不是因为误差而显得“不精确”而是因为真实世界中对数据的结果产生贡献的因素太多太多,跟噪音不同,这些偏差是一些另外的因素集体贡献的结果,不是你的模型所能解释的——噪音那是不需要解释——一个现实的模型往往只提取出几个与结果相关度很高,很重要的因素(cause)。这个时候观察数据会倾向于围绕你的有限模型的预测结果呈 正态分布 ,于是你实际观察到的结果就是这个正态分布的 随机取样 ,这个取样很可能受到其余因素的影响偏离你的模型所预测的中心,这个时候便不能贪心不足地试图通过改变模型来“完美”匹配数据,因为那些使结果偏离你的预测的贡献因素不是你这个有限模型里面含有的因素所能概括的,硬要打肿脸充胖子只能导致不实际的模型,举个教科书例子:身高和体重的实际关系近似于一个二阶多项式的关系,但大家都知道并不是只有身高才会对体重产生影响,物理世界影响体重的因素太多太多了,有人身材高大却瘦得跟稻草,有人却是横长竖不长。但不可否认的是总体上来说,那些特殊情况越是特殊就越是稀少,呈围绕最普遍情况(胖瘦适中)的正态分布,这个分布就保证了我们的身高——体重相关模型能够在大多数情况下做出靠谱的预测。但是——刚才说了,特例是存在的,就算不是特例,人有胖瘦,密度也有大小,所以完美符合身高——体重的某个假想的二阶多项式关系的人是不存在的,我们又不是欧几里德几何世界当中的理想多面体,所以,当我们对人群随机抽取了 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) 的那个猜测。然而每个人都会大摇其头——很显然,你随机摸出一枚硬币这枚硬币居然没有反面的概率是“不存在的”,我们对一枚随机硬币是否一枚有偏硬币,偏了多少,是有着一个先验的认识的,这个认识就是绝大多数硬币都是基本公平的,偏得越多的硬币越少见(可以用一个 beta 分布 来表达这一先验概率)。将这个先验正态分布 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 的话,就跟数据完美吻合了——既然那个女孩是用某个东西去看这个男孩的,那么这个东西是一个望远镜就完全可以解释了(不再是小概率事件了)。 自然语言二义性很常见,譬如上文中的一句话: 参见《决策与判断》以及《 Rationality for Mortals 》第12章:小孩也可以解决贝叶斯问题 就有二义性:到底是参见这两本书的第 12 章,还是仅仅是第二本书的第 12 章呢?如果是这两本书的第 12 章那就是咄咄怪事了,怎么恰好两本书都有第 12 章,都是讲同一个问题,更诡异的是,标题还相同呢? 注意,以上做的是似然估计(即只看 P(D | h) 的大小),不含先验概率。通过这两个例子,尤其是那个树后面的箱子的例子我们可以看到,似然估计里面也蕴含着奥卡姆剃刀:树后面的箱子数目越多,这个模型就越复杂。单个箱子的模型是最简单的。似然估计选择了更简单的模型。 这个就是所谓的 贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor) ,因为这个剃刀工作在贝叶斯公式的似然(P(D | h) )上,而不是模型本身( P(h) )的先验概率上,后者是传统的奥卡姆剃刀。关于贝叶斯奥卡姆剃刀我们再来看一个前面说到的曲线拟合的例子:如果平面上有 N 个点,近似构成一条直线,但绝不精确地位于一条直线上。这时我们既可以用直线来拟合(模型1),也可以用二阶多项式(模型2)拟合,也可以用三阶多项式(模型3),.. ,特别地,用 N-1 阶多项式便能够保证肯定能完美通过 N 个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?前面提到,一个衡量的依据是奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。然而,我们其实并不需要依赖于这个先验的奥卡姆剃刀,因为有人可能会争辩说:你怎么就能说越高阶的多项式越不常见呢?我偏偏觉得所有阶多项式都是等可能的。好吧,既然如此那我们不妨就扔掉 P(h) 项,看看 P(D | h) 能告诉我们什么。我们注意到越是高阶的多项式,它的轨迹弯曲程度越是大,到了八九阶简直就是直上直下,于是我们不仅要问:一个比如说八阶多项式在平面上随机生成的一堆 N 个点偏偏恰好近似构成一条直线的概率(即 P(D | h) )有多大?太小太小了。反之,如果背后的模型是一条直线,那么根据该模型生成一堆近似构成直线的点的概率就大得多了。这就是贝叶斯奥卡姆剃刀。 这里只是提供一个关于贝叶斯奥卡姆剃刀的科普,强调直观解释,更多理论公式请参考 MacKay 的著作 《Information Theory : Inference and Learning Algorithms》第 28 章。 3.3 最小描述长度原则 贝叶斯模型比较理论与信息论有一个有趣的关联: P(h | D) ∝ P(h) * P(D | h) 两边求对数,将右式的乘积变成相加: ln P(h | D) ∝ ln P(h) + ln P(D | h) 显然,最大化 P(h | D) 也就是最大化 ln P(h | D)。而 ln P(h) + ln P(D | h) 则可以解释为模型(或者称“假设”、“猜测”)h 的编码长度加上在该模型下数据 D 的编码长度。使这个和最小的模型就是最佳模型。 而究竟如何定义一个模型的编码长度,以及数据在模型下的编码长度则是一个问题。更多可参考 Mitchell 的 《Machine Learning》的 6.6 节,或 Mackay 的 28.3 节) 3.4 最优贝叶斯推理 所谓的推理,分为两个过程,第一步是对观测数据建立一个模型。第二步则是使用这个模型来推测未知现象发生的概率。我们前面都是讲的对于观测数据给出最靠谱的那个模型。然而很多时候,虽然某个模型是所有模型里面最靠谱的,但是别的模型也并不是一点机会都没有。譬如第一个模型在观测数据下的概率是 0.5 。第二个模型是 0.4 ,第三个是 0.1 。如果我们只想知道对于观测数据哪个模型最可能,那么只要取第一个就行了,故事到此结束。然而很多时候我们建立模型是为了推测未知的事情的发生概率,这个时候,三个模型对未知的事情发生的概率都会有自己的预测,仅仅因为某一个模型概率稍大一点就只听他一个人的就太不民主了。所谓的最优贝叶斯推理就是将三个模型对于未知数据的预测结论加权平均起来(权值就是模型相应的概率)。显然,这个推理是理论上的制高点,无法再优了,因为它已经把所有可能性都考虑进去了。 只不过实际上我们是基本不会使用这个框架的,因为计算模型可能非常费时间,二来模型空间可能是连续的,即有无穷多个模型(这个时候需要计算模型的概率分布)。结果还是非常费时间。所以这个被看作是一个理论基准。 4. 无处不在的贝叶斯 以下我们再举一些实际例子来说明贝叶斯方法被运用的普遍性,这里主要集中在机器学习方面,因为我不是学经济的,否则还可以找到一堆经济学的例子。 4.1 中文分词 贝叶斯是机器学习的核心方法之一。比如中文分词领域就用到了贝叶斯。Google 研究员吴军在《数学之美》系列中就有一篇是介绍中文分词的,这里只介绍一下核心的思想,不做赘述,详细请参考吴军的文章( 这里 )。 分词问题的描述为:给定一个句子(字串),如: 南京市长江大桥 如何对这个句子进行分词(词串)才是最靠谱的。例如: 1. 南京市/长江大桥 2. 南京/市长/江大桥 这两个分词,到底哪个更靠谱呢? 我们用贝叶斯公式来形式化地描述这个问题,令 X 为字串(句子),Y 为词串(一种特定的分词假设)。我们就是需要寻找使得 P(Y|X) 最大的 Y ,使用一次贝叶斯可得: P(Y|X) ∝ P(Y)*P(X|Y) 用自然语言来说就是 这种分词方式(词串)的可能性 乘以 这个词串生成我们的句子的可能性。我们进一步容易看到:可以近似地将 P(X|Y) 看作是恒等于 1 的,因为任意假想的一种分词方式之下生成我们的句子总是精准地生成的(只需把分词之间的分界符号扔掉即可)。于是,我们就变成了去最大化 P(Y) ,也就是寻找一种分词使得这个词串(句子)的概率最大化。而如何计算一个词串: W1, W2, W3, W4 .. 的可能性呢?我们知道,根据 联合概率 的公式展开:P(W1, W2, W3, W4 ..) = P(W1) * P(W2|W1) * P(W3|W2, W1) * P(W4|W1,W2,W3) * .. 于是我们可以通过一系列的条件概率(右式)的乘积来求整个联合概率。然而不幸的是随着条件数目的增加(P(Wn|Wn-1,Wn-2,..,W1) 的条件有 n-1 个), 数据稀疏问题 也会越来越严重,即便语料库再大也无法统计出一个靠谱的 P(Wn|Wn-1,Wn-2,..,W1) 来。为了缓解这个问题,计算机科学家们一如既往地使用了“天真”假设:我们假设句子中一个词的出现概率只依赖于它前面的有限的 k 个词(k 一般不超过 3,如果只依赖于前面的一个词,就是2元 语言模型 (2-gram),同理有 3-gram 、 4-gram 等),这个就是所谓的“有限地平线”假设。虽然这个假设很傻很天真,但结果却表明它的结果往往是很好很强大的,后面要提到的朴素贝叶斯方法使用的假设跟这个精神上是完全一致的,我们会解释为什么像这样一个天真的假设能够得到强大的结果。目前我们只要知道,有了这个假设,刚才那个乘积就可以改写成: P(W1) * P(W2|W1) * P(W3|W2) * P(W4|W3) .. (假设每个词只依赖于它前面的一个词)。而统计 P(W2|W1) 就不再受到数据稀疏问题的困扰了。对于我们上面提到的例子“南京市长江大桥”,如果按照自左到右的贪婪方法分词的话,结果就成了“南京市长/江大桥”。但如果按照贝叶斯分词的话(假设使用 3-gram),由于“南京市长”和“江大桥”在语料库中一起出现的频率为 0 ,这个整句的概率便会被判定为 0 。 从而使得“南京市/长江大桥”这一分词方式胜出。 一点注记 :有人可能会疑惑,难道我们人类也是基于这些天真的假设来进行推理的?不是的。事实上,统计机器学习方法所统计的东西往往处于相当表层(shallow)的层面,在这个层面机器学习只能看到一些非常表面的现象,有一点科学研究的理念的人都知道:越是往表层去,世界就越是繁复多变。从机器学习的角度来说,特征(feature)就越多,成百上千维度都是可能的。特征一多,好了, 高维诅咒 就产生了,数据就稀疏得要命,不够用了。而我们人类的观察水平显然比机器学习的观察水平要更深入一些,为了避免数据稀疏我们不断地发明各种装置(最典型就是显微镜),来帮助我们直接深入到更深层的事物层面去观察更本质的联系,而不是在浅层对表面现象作统计归纳。举一个简单的例子,通过对大规模语料库的统计,机器学习可能会发现这样一个规律:所有的“他”都是不会穿 bra 的,所有的“她”则都是穿的。然而,作为一个男人,却完全无需进行任何统计学习,因为深层的规律就决定了我们根本不会去穿 bra 。至于机器学习能不能完成后者(像人类那样的)这个推理,则是人工智能领域的经典问题。至少在那之前, 声称统计学习方法能够终结科学研究 ( 原文 )的说法 是纯粹外行人说的话 。 4.2 统计机器翻译 统计机器翻译因为其简单,自动(无需手动添加规则),迅速成为了机器翻译的事实标准。而统计机器翻译的核心算法也是使用的贝叶斯方法。 问题是什么?统计机器翻译的问题可以描述为:给定一个句子 e ,它的可能的外文翻译 f 中哪个是最靠谱的。即我们需要计算:P(f|e) 。一旦出现条件概率贝叶斯总是挺身而出: P(f|e) ∝ P(f) * P(e|f) 这个式子的右端很容易解释:那些先验概率较高,并且更可能生成句子 e 的外文句子 f 将会胜出。我们只需简单统计(结合上面提到的 N-Gram 语言模型)就可以统计任意一个外文句子 f 的出现概率。然而 P(e|f) 却不是那么好求的,给定一个候选的外文局子 f ,它生成(或对应)句子 e 的概率是多大呢?我们需要定义什么叫 “对应”,这里需要用到一个分词对齐的平行语料库,有兴趣的可以参考 《Foundations of Statistical Natural Language Processing》第 13 章,这里摘选其中的一个例子:假设 e 为:John loves Mary 。我们需要考察的首选 f 是:Jean aime Marie (法文)。我们需要求出 P(e|f) 是多大,为此我们考虑 e 和 f 有多少种对齐的可能性,如: John (Jean) loves (aime) Marie (Mary) 就是其中的一种(最靠谱的)对齐,为什么要对齐,是因为一旦对齐了之后,就可以容易地计算在这个对齐之下的 P(e|f) 是多大,只需计算: P(John|Jean) * P(loves|aime) * P(Marie|Mary) 即可。 然后我们遍历所有的对齐方式,并将每种对齐方式之下的翻译概率 ∑ 求和。便可以获得整个的 P(e|f) 是多大。 一点注记 :还是那个问题:难道我们人类真的是用这种方式进行翻译的?highly unlikely 。这种计算复杂性非常高的东西连三位数乘法都搞不定的我们才不会笨到去使用呢。根据认知神经科学的认识,很可能我们是先从句子到语义(一个逐层往上(bottom-up)抽象的 folding 过程),然后从语义根据另一门语言的语法展开为另一门语言(一个逐层往下(top-down)的具体化 unfolding 过程)。如何可计算地实现这个过程,目前仍然是个难题。(我们看到很多地方都有 bottom-up/top-down 这样一个对称的过程,实际上有人猜测这正是生物神经网络原则上的运作方式,对视觉神经系统的研究尤其证明了这一点,Hawkins 在 《On Intelligence》 里面提出了一种 HTM (Hierarchical Temporal Memory)模型正是使用了这个原则。) 4.3 贝叶斯图像识别,Analysis by Synthesis 贝叶斯方法是一个非常 general 的推理框架。其核心理念可以描述成:Analysis by Synthesis (通过合成来分析)。06 年的认知科学新进展上有一篇 paper 就是讲用贝叶斯推理来解释视觉识别的,一图胜千言,下图就是摘自这篇 paper : 首先是视觉系统提取图形的边角特征,然后使用这些特征自底向上地激活高层的抽象概念(比如是 E 还是 F 还是等号),然后使用一个自顶向下的验证来比较到底哪个概念最佳地解释了观察到的图像。 4.4 EM 算法与基于模型的聚类 聚类 是一种 无指导的机器学习 问题,问题描述:给你一堆数据点,让你将它们最靠谱地分成一堆一堆的。聚类算法很多,不同的算法适应于不同的问题,这里仅介绍一个基于模型的聚类,该聚类算法对数据点的假设是,这些数据点分别是围绕 K 个核心的 K 个正态分布源所随机生成的,使用 Han JiaWei 的《Data Ming: Concepts and Techniques》中的图: 图中有两个正态分布核心,生成了大致两堆点。我们的聚类算法就是需要根据给出来的那些点,算出这两个正态分布的核心在什么位置,以及分布的参数是多少。这很明显又是一个贝叶斯问题,但这次不同的是,答案是连续的且有无穷多种可能性,更糟的是,只有当我们知道了哪些点属于同一个正态分布圈的时候才能够对这个分布的参数作出靠谱的预测,现在两堆点混在一块我们又不知道哪些点属于第一个正态分布,哪些属于第二个。反过来,只有当我们对分布的参数作出了靠谱的预测时候,才能知道到底哪些点属于第一个分布,那些点属于第二个分布。这就成了一个先有鸡还是先有蛋的问题了。为了解决这个循环依赖,总有一方要先打破僵局,说,不管了,我先随便整一个值出来,看你怎么变,然后我再根据你的变化调整我的变化,然后如此迭代着不断互相推导,最终收敛到一个解。这就是 EM 算法。 EM 的意思是“Expectation-Maximazation”,在这个聚类问题里面,我们是先随便猜一下这两个正态分布的参数:如核心在什么地方,方差是多少。然后计算出每个数据点更可能属于第一个还是第二个正态分布圈,这个是属于 Expectation 一步。有了每个数据点的归属,我们就可以根据属于第一个分布的数据点来重新评估第一个分布的参数(从蛋再回到鸡),这个是 Maximazation 。如此往复,直到参数基本不再发生变化为止。这个迭代收敛过程中的贝叶斯方法在第二步,根据数据点求分布的参数上面。 4.5 最大似然与最小二乘 学过线性代数的大概都知道经典的最小二乘方法来做线性回归。问题描述是:给定平面上 N 个点,(这里不妨假设我们想用一条直线来拟合这些点—— 回归 可以看作是 拟合 的特例,即允许误差的拟合),找出一条最佳描述了这些点的直线。 一个接踵而来的问题就是,我们如何定义最佳?我们设每个点的坐标为 (Xi, Yi) 。如果直线为 y = f(x) 。那么 (Xi, Yi) 跟直线对这个点的“预测”:(Xi, f(Xi)) 就相差了一个 ΔYi = |Yi – f(Xi)| 。最小二乘就是说寻找直线使得 (ΔY1)^2 + (ΔY2)^2 + .. (即误差的平方和)最小,至于为什么是误差的平方和而不是误差的绝对值和,统计学上也没有什么好的解释。然而贝叶斯方法却能对此提供一个完美的解释。 我们假设直线对于坐标 Xi 给出的预测 f(Xi) 是最靠谱的预测,所有纵坐标偏离 f(Xi) 的那些数据点都含有噪音,是噪音使得它们偏离了完美的一条直线,一个合理的假设就是偏离路线越远的概率越小,具体小多少,可以用一个正态分布曲线来模拟,这个分布曲线以直线对 Xi 给出的预测 f(Xi) 为中心,实际纵坐标为 Yi 的点 (Xi, Yi) 发生的概率就正比于 EXP 。(EXP(..) 代表以常数 e 为底的多少次方)。 现在我们回到问题的贝叶斯方面,我们要想最大化的后验概率是: P(h|D) ∝ P(h) * P(D|h) 又见贝叶斯!这里 h 就是指一条特定的直线,D 就是指这 N 个数据点。我们需要寻找一条直线 h 使得 P(h) * P(D|h) 最大。很显然,P(h) 这个先验概率是均匀的,因为哪条直线也不比另一条更优越。所以我们只需要看 P(D|h) 这一项,这一项是指这条直线生成这些数据点的概率,刚才说过了,生成数据点 (Xi, Yi) 的概率为 EXP 乘以一个常数。而 P(D|h) = P(d1|h) * P(d2|h) * .. 即假设各个数据点是独立生成的,所以可以把每个概率乘起来。于是生成 N 个数据点的概率为 EXP * EXP * EXP * .. = EXP {- } 最大化这个概率就是要最小化 (ΔY1)^2 + (ΔY2)^2 + (ΔY3)^2 + .. 。 熟悉这个式子吗? 5. 朴素贝叶斯方法 朴素贝叶斯方法是一个很特别的方法,所以值得介绍一下。我们用朴素贝叶斯在垃圾邮件过滤中的应用来举例说明。 5.1 贝叶斯垃圾邮件过滤器 问题是什么?问题是,给定一封邮件,判定它是否属于垃圾邮件。按照先例,我们还是用 D 来表示这封邮件,注意 D 由 N 个单词组成。我们用 h+ 来表示垃圾邮件,h- 表示正常邮件。问题可以形式化地描述为求: P(h+|D) = P(h+) * P(D|h+) / P(D) P(h-|D) = P(h-) * P(D|h-) / P(D) 其中 P(h+) 和 P(h-) 这两个先验概率都是很容易求出来的,只需要计算一个邮件库里面垃圾邮件和正常邮件的比例就行了。然而 P(D|h+) 却不容易求,因为 D 里面含有 N 个单词 d1, d2, d3, .. ,所以P(D|h+) = P(d1,d2,..,dn|h+) 。我们又一次遇到了数据稀疏性,为什么这么说呢?P(d1,d2,..,dn|h+) 就是说在垃圾邮件当中出现跟我们目前这封邮件一模一样的一封邮件的概率是多大!开玩笑,每封邮件都是不同的,世界上有无穷多封邮件。瞧,这就是数据稀疏性,因为可以肯定地说,你收集的训练数据库不管里面含了多少封邮件,也不可能找出一封跟目前这封一模一样的。结果呢?我们又该如何来计算 P(d1,d2,..,dn|h+) 呢? 我们将 P(d1,d2,..,dn|h+) 扩展为: P(d1|h+) * P(d2|d1, h+) * P(d3|d2,d1, h+) * .. 。熟悉这个式子吗?这里我们会使用一个更激进的假设,我们假设 di 与 di-1 是完全条件无关的,于是式子就简化为 P(d1|h+) * P(d2|h+) * P(d3|h+) * .. 。这个就是所谓的 条件独立假设 ,也正是朴素贝叶斯方法的朴素之处。而计算 P(d1|h+) * P(d2|h+) * P(d3|h+) * .. 就太简单了,只要统计 di 这个单词在垃圾邮件中出现的频率即可。关于贝叶斯垃圾邮件过滤更多的内容可以参考 这个条目 ,注意其中提到的其他资料。 一点注记 :这里,为什么有这个数据稀疏问题,还是因为统计学习方法工作在浅层面,世界上的单词就算不再变多也是非常之多的,单词之间组成的句子也是变化多端,更不用说一篇文章了,文章数目则是无穷的,所以在这个层面作统计,肯定要被数据稀疏性困扰。我们要注意,虽然句子和文章的数目是无限的,然而就拿邮件来说,如果我们只关心邮件中句子的语义(进而更高抽象层面的“意图”(语义,意图如何可计算地定义出来是一个人工智能问题),在这个层面上可能性便大大缩减了,我们关心的抽象层面越高,可能性越小。单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。神经科学的发现也表明大脑的皮层大致有一种层级结构,对应着越来越抽象的各个层面,至于如何具体实现一个可放在计算机内的大脑皮层,仍然是一个未解决问题,以上只是一个原则(principle)上的认识,只有当 computational 的 cortex 模型被建立起来了之后才可能将其放入电脑。 5.2 为什么朴素贝叶斯方法令人诧异地好——一个理论解释 朴素贝叶斯方法的条件独立假设看上去很傻很天真,为什么结果却很好很强大呢?就拿一个句子来说,我们怎么能鲁莽地声称其中任意一个单词出现的概率只受到它前面的 3 个或 4 个单词的影响呢?别说 3 个,有时候一个单词的概率受到上一句话的影响都是绝对可能的。那么为什么这个假设在实际中的表现却不比决策树差呢?有人对此提出了一个理论解释,并且建立了什么时候朴素贝叶斯的效果能够等价于非朴素贝叶斯的充要条件,这个解释的核心就是:有些独立假设在各个分类之间的分布都是均匀的所以对于似然的相对大小不产生影响;即便不是如此,也有很大的可能性各个独立假设所产生的消极影响或积极影响互相抵消,最终导致结果受到的影响不大。具体的数学公式请参考 这篇 paper 。 6. 层级贝叶斯模型 层级贝叶斯模型 是现代贝叶斯方法的标志性建筑之一。前面讲的贝叶斯,都是在同一个事物层次上的各个因素之间进行统计推理,然而层次贝叶斯模型在哲学上更深入了一层,将这些因素背后的因素(原因的原因,原因的原因,以此类推)囊括进来。一个教科书例子是:如果你手头有 N 枚硬币,它们是同一个工厂铸出来的,你把每一枚硬币掷出一个结果,然后基于这 N 个结果对这 N 个硬币的 θ (出现正面的比例)进行推理。如果根据最大似然,每个硬币的 θ 不是 1 就是 0 (这个前面提到过的),然而我们又知道每个硬币的 p(θ) 是有一个先验概率的,也许是一个 beta 分布。也就是说,每个硬币的实际投掷结果 Xi 服从以 θ 为中心的正态分布,而 θ 又服从另一个以 Ψ 为中心的 beta 分布。层层因果关系就体现出来了。进而 Ψ 还可能依赖于因果链上更上层的因素,以此类推。 6.1 隐马可夫模型(HMM) 吴军在数学之美系列里面介绍的 隐马可夫模型 (HMM)就是一个简单的层级贝叶斯模型: 那么怎么根据接收到的信息来推测说话者想表达的意思呢?我们可以利用叫做“隐含马尔可夫模型”(Hidden Markov Model)来解决这些问题。以语音识别为例,当我们观测到语音信号 o1,o2,o3 时,我们要根据这组信号推测出发送的句子 s1,s2,s3。显然,我们应该在所有可能的句子中找最有可能性的一个。用数学语言来描述,就是在已知 o1,o2,o3,…的情况下,求使得条件概率 P (s1,s2,s3,…|o1,o2,o3….) 达到最大值的那个句子 s1,s2,s3,… 吴军的文章中这里省掉没说的是,s1, s2, s3, .. 这个句子的生成概率同时又取决于一组参数,这组参数决定了 s1, s2, s3, .. 这个马可夫链的先验生成概率。如果我们将这组参数记为 λ ,我们实际上要求的是:P(S|O, λ) (其中 O 表示 o1,o2,o3,.. ,S表示 s1,s2,s3,..) 当然,上面的概率不容易直接求出,于是我们可以间接地计算它。利用贝叶斯公式并且省掉一个常数项,可以把上述公式等价变换成 P(o1,o2,o3,…|s1,s2,s3….) * P(s1,s2,s3,…) 其中 P(o1,o2,o3,…|s1,s2,s3….) 表示某句话 s1,s2,s3…被读成 o1,o2,o3,…的可能性, 而 P(s1,s2,s3,…) 表示字串 s1,s2,s3,…本身能够成为一个合乎情理的句子的可能性,所以这个公式的意义是用发送信号为 s1,s2,s3…这个数列的可能性乘以 s1,s2,s3.. 本身可以一个句子的可能性,得出概率。 这里,s1,s2,s3…本身可以一个句子的可能性其实就取决于参数 λ ,也就是语言模型。所以简而言之就是发出的语音信号取决于背后实际想发出的句子,而背后实际想发出的句子本身的独立先验概率又取决于语言模型。 7. 贝叶斯网络 吴军已经对贝叶斯网络作了科普,请直接跳转到 这里 。更详细的理论参考所有机器学习的书上都有。 参考资料 一堆机器学习,一堆概率统计,一堆 Google ,和一堆 Wikipedia 条目,一堆 paper 。 部分书籍参考 《机器学习与人工智能资源导引》 。
1477 次阅读|0 个评论
泡妞概率论及其他
热度 5 andydong 2013-11-5 01:23
最近崇拜的一个人是贝叶斯,此君是 18 世纪的英国数学家,非常 NB ,不要想歪,我说的 Networks of Bayes (NB) ,可以尊称贝爷,呵呵,满清正黄旗。 他的思想是概率论的精髓之一,简单的说就是“逆概”,举个例子,我的同室小夏是个高富帅,据统计追中国女孩子十之八九都能成功,追英国女孩子十之七八都能成功,如果我们知道了小夏身边分别有多少中国和英国的女孩子,下次碰见女孩子,只要知道她的国籍,大约就能算出来小夏追求成功的概率;而反之就是“逆概”了,比如这个周末小夏去夜店彻夜狂欢万圣节,同时随机“把妹”成功了 N 个人(中英通吃),问这 N 个人中可能有多少中国人,多少英国人? 我们来用贝叶斯的思想来算一算:假设小夏身边女孩子的中英比例为 2:8 ,简记为 P(China)=0.2 , P(UK)=1-P(China)=0.8 ,小夏追求中国和英国女孩的成功率分别简记为 P(Success|China)= 0.85 和 P(Success|UK)= 0.75 (都取中值),那么小夏成功的总的概率为 P(Success)=P(China)* P(Success|China)+ P(UK)* P(Success|UK)=0.2*0.85+0.8*0.75=0.77 ,夜店中的小夏成功追到的中国女孩概率应为 P(China)* P(Success|China) 除以上面总的概率,即 P(Success|China)= P(China)* P(Success|China)/P(Success)=0.2*0.85/(0.2*0.85+0.8*0.75)=0.22 ,这就是 N 个女孩中中国妹的比例。 我们再把上面的写法简化下, A=Success, B=China ,那么 P(B|A)= P(A|B) * P(B) / P(A) 大学学过概率论的朋友熟悉上式吗?这就是经典的贝叶斯公式。事实上,这个公式太强大了,除了泡妞用,只要是理工科的领域,基本上都能用到这个简单而深刻的理论。 下面举个与食品安全有关的简单例子,通常情况下,致病菌( A )可以导致食物中毒( B ),假设某菌在 4 个对数菌落单位以下导致食物中毒的概率为 0.2 ,而在超过 4 个对数菌落单位导致食物中毒的概率为 0.89 ,那么根据贝叶斯理论,有如下结论成立(具体计算略去,有很多软件可以自动计算理论值): 当检测 100 个样品中有 1 个样品都高于 4 个对数菌落单位时,导致食物中毒的概率为 0 ; 当检测 100 个样品中有 5 个样品都高于 4 个对数菌落单位时,导致食物中毒的概率为 0.23 ; 当检测 100 个样品中有 95 个样品都高于 4 个对数菌落单位时,导致食物中毒的概率为 0.86 ; 当检测 100 个样品中有 99 个样品都高于 4 个对数菌落单位时,导致食物中毒的概率为 1 ; 以上是最简单的形式,实际的节点变量更多,影响因素更复杂,可采用网络的形式进行风险控制。小伙伴们是不是很有趣? (以上参考了很多经典教材和网站内容,经过了适当改写,恕不一一标注,在此致谢)
2590 次阅读|5 个评论
贝叶斯法重建系统发育关系
raindyok 2013-9-19 15:20
不多言,直接上图和附件,分享给有需要的科学网战友。 相关软件及教程,可以访问我的网盘下载:http://raindy.ys168.com 本文首发于本人QQ空间(http://user.qzone.qq.com/58001704),转载烦请保留作者信息,谢谢! 建树过程中,如果任何问题,欢迎加入生物软件群(群号:323809849)交流! 祝大家中秋快乐! 系统发育分析之BI篇(By Raindy).pdf
个人分类: 软件教程|10065 次阅读|0 个评论
等邮件的数学模型
热度 12 xying 2013-8-30 08:01
董明提出一个很有意思的数学模型问题 ,说网购了几本书,收到发货通知后,儿子天天问“今天书会不会到”。刚开始他回答:“可能,机会比昨天大一点。”心中想的是每一天到货的概率分布,这概率密度是类似于正态分布的曲线。按照这个模型,前几天没收到书,今天收到书的概率会越来越大,最后儿子问:“要是一直不来,那十年后,可能性是不是就大得不得了?”他回答:“那书可能就再也来不了,寄丢了。” 问题是:什么样的数学模型可以用来描述这个现象? 这显然可以用一个概率的模型来回答,但它的挑战不在于如何得出准确的曲线,这不难通过统计实验来得到。真正的问题应该是:怎样通过分析,用已有的知识来构造这个数学模型?它首先能定性地解答心中的疑惑,需要时可以细化,定量地给出预测。这功力在于对数学概念的理解和演绎推理的应用,而不是把整个问题不加分析地推给实验来解答。 问题的核心是怎样把正常邮递和丢失情况综合起来,用数学模型反映出,还没收到邮件等待时,对当天收到邮件的预测。 这可以由两个概率子模型组成,一个是在正常邮递时(事件 A ),从得到通知之日起,至今 n 天没有收到邮件(事件 n ),但今天(第 n+1 天)收到了邮件(事件 $D_n$ )的概率 $P(D_n|A,n)$ ;另一个是,前 n 天没有收到邮件,还是正常邮递的可能性 $P(A|n)$ ;因为寄丢了情况(事件 B )是不可能收到邮件的, $P(D_n|B)=0$ ,那么前 n 天没有收到邮件,今天收到的概率则是: $P(D_n|n)=P(D_n|A,n)P(A|n)$ 。它就是这个问题模型的公式了。 对于正常邮递情况下,哪一天收到邮件的概率,是以通知中的预测到达日期为峰值,类似于正态分布离散的钟形曲线 $f(D_n)$ 。由此不难得知 $P(D_n|A,n)$ 是随着 n 增大趋近于 1 的曲线。 $P(A|n)$ 的含义是前 n 天没有收到邮件,不是寄丢了的概率,凭经验就可以知道这是个随 n 增加而趋近于 0 的曲线。综合这两者,不需要进一步的研究,就可以定性地解答等待邮件的问题了。 有人说,这只不过把常识藏在数学式子里,没什么意义! 这是没学好数学的人,对于数学应用的理解。数学模型首先是平凡的,必须符合实践中的事实,它把实践中的问题分解成数学上已知的问题,需要时可以进一步细化求解。 比如说这不是个人邮购等书了,而是重大事件或者是商业运行环节,值得细化研究其定量结果。我们来看怎么用这个数学模型进行细化计算。 对于正常邮递,邮件到达的概率分布已经有很多的研究,这不是关注的重点。函数 $f(D_n)$ 是可以从其他地方可以抄来,或自己推算的先验概率 ,按定义有 $P(D_n|A)=f(D_n)$ ,从已知的事件从这个先验的概率算出后验的概率,用贝叶斯公式来计算,注意到事件 $D_n$ 和 n 的含义,有 $ P(n|D_i)=0$ if $in$ otherwise $ P(n|D_i)=1$ ,得到公式 : $P(D_n|A,n)=P(D_n|A)P(n|D_n)/\sum_{i=0}^{\infty}P(D_i|A)P(n|D_i)=f(D_n)/\sum_{i=n}^{\infty}f(D_i)$ 从估计会正常邮递到丢失了的认知过程,是由概率$P(A|n)$ 来反映,我们知道 $P(A|n)$ 的含义是:前 n 天没有收到邮件,还是正常邮递情况的可能性。从贝叶斯公式: $P(A|n)= P(n|A)P(A)/ (P(n|A)P(A)+ P(n|B)P(B))$ $P(A)$ 是正常邮递的先验概率,比如说0.99, $P(B)=1-P(A)$ 和 $P(n|B)=1$ ,我们有: $ P(A|n)= P(n|A)P(A)/(P(n|A))P(A)+1-P(A))$ 这里 $P(n|A)=\prod_{i=0}^{n-1}(1-f(D_i))$ (注:这个等式不精确,见【后记】) 可以看出正常邮递的概率是随着没收到邮件的日子增加趋近于 0 的曲线。 这样得出了公式。前 n 天没有收到邮件,今天收到的概率是: (注:纠错后这公式可以化简,见【后记】) $P(D_n|n)=(f(D_n)/\sum_{i=n}^{\infty}f(D_i))\prod_{i=0}^{n-1}(1-f(D_i))P(A)/(\prod_{i=0}^{n-1}(1-f(D_i))P(A)+1-P(A))$ 这是随着时间先上升,过了通知中的预测到达日期后不久下滑趋近于 0 的曲线。你在等待的过程中,可以用它来估算当天收到包裹的概率。 你也许会问:这个概率的密度曲线是什么?这能有吗?想不通的,查一下定义。 【后记】贴于评论 12 ,点击 2284 后 写这篇博文意在于例示建立数学模型的思路、细化和用途。贴出后,徐晓指出计算 $P(n|A)=\prod_{i=0}^{n-1}(1-f(D_i))$ 有问题,这里 $(1-f(D_i))$ 不是独立的,不能用在连乘,正确的计算应该是 $P(n|A)=1-\sum_{i=0}^{n-1}f(D_i)$ ,也即是博文在计算 $P(D_n|A,n)$ 的式子中的 $\sum_{i=n}^{\infty}f(D_i)$ ,这也可以从 $P(D_n|A,n)=P(D_n|A)/P(n|A)$ 中看到 。将这个纠错后的式子代入综合的公式后,约减后的结果与徐晓的结果一样,它是: $P(D_n|n)=f(D_n)P(A)/(1- P(A)(\sum_{i=0}^{n-1}f(D_i))$ 徐晓推算这个式子时,直接应用形式推理,非常简洁漂亮,建议对这问题有兴趣的读者,看他的博文 《与应行仁老师探讨:邮件问题》 。 对于正确建立数学模型,合理的抽象是个关键,在这里是事件 A , n 和 $D_n$ 的定义,有了它们后 $P(D_n|n)$ 便是描述问题的数学模型,后面的只是数学计算。把它分解成 $P(D_n|A,n)P(A|n)$能 让这模型的结构更直观,也针对董明的疑惑,借用常规的概率问题的结果,不需要深入研究它们的细节就可以定性地解答。如果不加分解直接对这个数学模型计算,注意到事件 $D_n$ 蕴含着事件 A 和 n ,就有: $P(D_n|n)=P(D_n,n)/P(n)=P(D_n)/P(n)=P(D_nA)/P(n)=P(D_n|A)P(A)/P(n)$ 这个思路和徐晓的一样,代入 $P(D_n|A)=f(D_n)$ 和 $P(n)=P(A)P(n|A)+1-P(A)$ 的表达式就能得出上述的结果。 为什么分解式 $P(D_n|n)=P(D_n|A,n)P(A|n)$ 也会得出一样的结果呢? 这分解式是直接从概率的概念出发在 n 约束环境下的条件概率式子,在形式推理里: $P(D_n|n)=P(D_n,n)/P(n)=P(D_n,A,n)/P(n)=P(D_n|A,n)P(A,n)/P(n)=P(D_n|A,n)P(A|n)$ 学习数学时,掌握概念和推理是同等的重要,当你数学概念的想象和形式推理一致时,才算正确地掌握了概念,能够同时应用概念的想象和形式推理就是到达了自由王国。 谢谢徐晓纠正 $P(n|A)$ 式子的错误!
个人分类: 科普|9977 次阅读|26 个评论
贝叶斯资料汇总
xcfcn 2013-5-20 20:56
数学之美番外篇:平凡而又神奇的贝叶斯方法 http://blog.sciencenet.cn/home.php?mod=spaceuid=397960do=blogid=669638 Bayesian公式:破解思想的钥匙 贝叶斯统计与转化医学 临震预报的贝叶斯框架 临震预报的贝叶斯框架--宁效管鲍分金,莫学孙庞斗智 贝叶斯网络“解去”(explaining away) 临震预报的贝叶斯框架(2)
个人分类: 杂论|3 次阅读|0 个评论
机器学习 --- 3. 贝叶斯怎么想
热度 14 ppn029012 2013-5-13 08:37
“ 贝叶斯公式是可以支配一切知识,一切信息的法则 ”. --- Christoph Fuchs 1. 我们是怎么推测未知事物的 贝叶斯公式我们都学过(如果没学过,请了解一下条件概率”),就是一个条件概率的转换公式,如下 这么的一个简单的公式为什么能引起科学上的革命? 这是一个统计学上的公式,但是却被证明是人类唯一能够运用自如的东西。伯克利大学心理学家Alison Copnik早在2004年就证明”Bayesian统计法是儿童运用的唯一思考方法,其他方法他们似乎完全不会”。 贝叶斯式的思考是什么样的? 举个例子, 你在北京798艺术区远远地看到一个人在地上爬,你很奇怪那到底是什么。于是你的大脑 可能联想产生了3种假想 ( 大脑真的就是那么工作的) , h1 = 那是疯子 h2 = 那是狗 h3 = 那是艺术家 那么这三种假想哪个更有可能? 更准确地说就是,在 给出了 事实(Evidence) {某人在798上爬}的情况下,哪种假想更有可能? P(h1|E), P(h2|E), P(h3|E).哪个更大些? 于是你的脑子开始启动贝叶斯程序, 计算比较这三个的概率到底哪个更大. 因为P(E)对于三个式子来说都是一样的,所以贝叶斯公式可以看成 先看看P(h)是什么? P(h)在这个公式里被叫做 先验概率 ,描述的是你对某个假想h的致信程度.(不用考虑当前的事实是什么) P(h1) = 出现疯子的可能性,(根据你的经历, 你很少在北京街头看到疯子) 可能性: 较 小 P(h2) = 在798艺术区出现一条狗的概率,(老看到有人溜狗) 可能性: 高 P(h3) = 在798出现艺术家的概率,(798里应该总能看到) 可能性: 高 P(E|h)是什么呢?它表达的是,你的 假想 产生 这个 事实 的可能性有多大? P(E|h1) = 人疯了( 假设假想h1成立 )可能会在798爬来爬去的概率. 可能性: 高 P(E|h2) = 假如那就是一条狗, 你却能看成一个人在地上爬的景象 可能性: 0 (极低) P(E|h3) = 假如那个人就是艺术家, 他在地上爬进行行为艺术的可能 可能性: 高 最后把两个概率相乘就能得到三个假想在当前事实面前发生的概率。 P(h1 | E ) = 小 (你的设想(出现疯子)发生的概率太 小 了,虽然疯子很有可能在这爬来爬去,所以最后总的概率还是很小) P(h2 | E ) = 小 (你的假想(出现狗)发生的概率还挺大,但是你没法否认眼前看到的是人这个事实, 所以概率又变得很小) P(h3 | E ) = 高 (你的假想(出现艺术家)的概率挺大,而且艺术家干这种事还是能干得出来的,所以总的概率并不小) 所以人在利用贝叶斯公式进行推测一件事情的时候,其实就是在权衡你脑中 产生假设本身的可能性 和这种假设可能产生眼前的事实可能性之间的关系,如果两种可能都很大,那么这件事才会让自己信服。 这些P(h), P(h | E)都是我们从平时经历的事情中总结得到的结果( 经验) ,而且甚至非常因人而异,比如P(h1) 在疯人院的职工看来,他们对出现疯子这件事情见怪不怪,所以P(h1)在他们的脑里可以是个很大的值。 而P(E | h3) 在某些老人的眼里,艺术家都是那种很正常,每天唱红歌的那种人,所以艺术家很少可能会在街上爬啊爬,所以这些时候,他们更相信眼前出现的人是个疯子。 总而言之 ,贝叶斯做为一种统计法,善于统计和利用 历史的 经验,来对 未遇到 过的情况做出推测。你可以使用你历史的记忆的碎片 组合 成新的情况。就像你未必见过艺术家在798里匍匐前进,但是你却在798见过艺术家,而且从别的地方(电视上)看到过艺术家一些匪夷所思的艺术行为,所以你真的遇到这种场景的时候,就能够利用联想,并用经验去验证联想的结果,推断出这是一个艺术家的行为。 2. 什么是违反你直觉的? 上一部分介绍的是人们怎么利用一些经验和贝叶斯去解决一些生活中的问题。但是有些问题会使你产生直觉上的错误, 这时候,贝叶斯更能去帮助你 纠正 这些直觉上的错误。 问题: http://yudkowsky.net/rational/bayes 里的一个问题,某地区有一台 乳腺癌检测仪 : 一个地区的女性乳腺癌发病率为1%. 已经患乳腺癌的人里面会有80%会被仪器正确地检测出”某指数”呈 阳性 . 但有9.6%的正常人也被检测出”某指数”成 阳性 . 此地区一妇女去体检,很不幸被检测出了”某指数”呈 阳性 。你做为一个医生,你觉得这名女性患乳腺癌的概率是多少? 很多人会 第一时间 地认为,既然80%的患者能被正确的检测出来,那么这台机器的准确率也就是80%. 那么既然已经被检测出患病,那么她患病的概率应该为80%左右。即使有9.6%的正常人的误检率,那么患病率的也应该不低于 70%. (其实有85%的医生也是这么认为的,如果我去看病我肯定自杀了...) 事实真的是这样吗? 让我们用贝叶斯计算一下, 天呐,才7.76% ,为什么这么低?我们的直觉为什么出错了? 如果我 换一种说法 ,这个问题就不容易产生错觉。 有1000人去体检,有10人真的患病, 这10个人里有8个能被检测出 阳性 . 还有剩下的990个正常人里, 有95个人也被误检测呈 阳性 。 现在再问你,有一妇女被检测出了 阳性 , 那么你觉得这个结果准确的概率是多少? 这时候,你做出判断时就会更加谨慎。你会觉得103个被检测出阳性的人里面,只有8个人真正地得了病,那么这位妇女患病的几率其实并不是太高的。 我们直觉出错的原因在于,我们把 先验概率 忽略了。虽然只有9.7%的正常人被误检成阳性了,但是正常人的数量是患者数量的90倍有余,那么误检的人就有很多很多。其数量远远大于80%的患者。 所以这件事情再次告诉我们,如果你在制造一台检测仪的话,不仅要提高 对患者的检测率 ,而且也需要提高对正常人的 排查率 ,这样才能使得这台机子的结果让人信服。 再次总而言之,这个部分又告诉了我们一个重要的事实,我们不能对一件事情 因果倒置,两件事不能混为一谈 。原因产生结果,但是结果往往是不能对原因起直接作用的。表现在这里,就是因果倒置的概率发生了剧烈的变化。 3. 贝叶斯与因果 假如两件事之间存在因果关系,我们能不能用贝叶斯来分析这两件事情之间相互影响的程度呢?当然可以, 条件概率 就能说明他们之间的 影响程度 。 例如,患病会引起某项指数呈阳性。通过条件概率,就可以知道患病的人,有多少会造成某指数阳性. 那么可以求 P(阳性 | 患病) 相反,引起阳性的众多原因中,想知道患病占多少,于是我们就可以通过求  P(患病 | 阳性) 下图就是分析在产生阳性的原因中,患病产生阳性的比重是多少。 3.1 能不能从概率中推导出因果关系? 有时候因为因果互换以后的条件概率变化非常大,那么是不是能从统计的概率中就得到这两件事情之间的关系? 很遗憾,概率只能间接地表现因果关系,但是很难从概率中得到准确的关系图表。
12250 次阅读|25 个评论
蒙提霍尔问题(3)——主观和客观
热度 11 xying 2013-3-16 06:16
上篇考察 vos Savant 标准问题中举例说的具体的场景【 1 】【 2 】 在三扇分别藏有一辆车两只羊门的猜测中,参赛人选了 1 号门,主持人打开 3 号门里面是羊,问:改选 2 号是不是有更大机会选到车?【场景 1 】 用贝叶斯公式计算出这个场景下的条件概率 P (车在 2 号门 | 选 1 号门,打开 3 号门) = 1/ ( P (打开 3 号门 | 选 1 号门,车在 1 号门) + 1 ) 发现这时 2 号门有车的概率是在 1/2 到 1 之间,依主持人的心念而定。【 2 】【 3 】当然主持人是仍然要遵照 vos Savant 标准问题的规定,即主持人必须在参赛人选择的门之外,打开一扇有羊的门,然后让参赛人做第二次选择。 那么已经折服了大众的实验统计及 vos Savant 的样本空间证明【说法 3 】,和这贝叶斯公式的计算相异,到底哪个对? 让我们细考一下这个 vos Savant 的样本空间证明 1 号门 2 号门 3 号门 不换的结果 换的结果 赛局 1 车 羊 羊 赢 输 赛局 2 羊 车 羊 输 赢 赛局 3 羊 羊 车 输 赢 这个样本空间是针对 vos Savant 标准问题的总体而言,即不加区分主持人打开是哪个门,只要必须打开有羊的门的情况。 Vos Savant 从中计算出她 2/3 概率的结论。实验不外乎按照这个理解,将这些样本随机产生出来,再加以统计。这相当于主持人在还没确定打开哪个门之前问这问题,这打开的门可能是 3 号,也可能是 2 号。这时你可以算出主持人没有打开的另一扇门的概率是 2/3 。而上述的条件概率计算则是说:当主持人打开了 3 号门,让你看到了并不意外的事实后,你就不能确定另一扇门的概率了! 让我们验证一下这个情况。这个具体的例子【场景 1 】中主持人打开有羊的 3 号门,这只能包含赛局 1 和 2 这两种样本。按照规定,主持人在赛局 2 他是没有选择地打开有羊的 3 号门;在赛局 1 时,他可以按照自己的心中的任何规则来选择 2 或 3 号门,而不违反规定。如果主持人自己的规则是,总打开 3 号门,那赛局 1 和 2 样本有均等机会出现在 3 号门被打开的场景中,其 2 号门有车的概率是 1/2 ;反之,如果这时他的规则是,总是打开 2 号门,而这里打开的却是 3 号门,那赛局 1 就不可能出现在这场景中,只有赛局 2 才有可能,其 2 号门有车的概率是 1 ;如果这时他是平均在 2 和 3 号门中选,赛局 1 样本在 3 号门被打开时出现的概率是赛局 2 的一半,这时 2 号门有车的概率是 2/3 。主持人在赛局 1 的情况,按不同的频率的规则打开 3 号门, 2 号门有车的概率从 1/2 到 1 之间都有可能。这验证了按贝叶斯公式导出的条件概率的公式。 人人以为实验的结果是最客观的,其实实验的数据该怎么统计,却是决定它的结果。如果我们用统计实验来验证这个具体的场景,统计只能计算符合这场景的样本,而不是全部的数据,这时候实验中主持人开门的不同规则,就显示出不同的结果。 在这个之前,样本空间的证明和实验的统计是不加区分地对所有可能的场景而言,主持人在赛局 1 不同的开门偏好造成了每个场景中另一个门有车的不同概率,但是所有场景的总体,或者说对于所有场景计算出来的另一个门有车概率的平均值却是 2/3 ,如同 vos Savant 的直观证明、样本空间的证明和实验的统计出来的结论一样。所以 vos Savant 对于不只是针对 3 号门被打开的具体场景,而是一般的情况,并不是没有道理的。 至此,我们似乎可以得出结论: vos Savant 的 2/3 概率结论适合于不加区分主持人打开哪扇门的总体情况。在主持人打开门后,在这个具体的场景中,另一扇门的概率是 1/2 到 1 之间的一个数,依主持人的开门规则而定。在 1991 年后的近二十年中, Wiki 和大部分介绍文章都认同这个结论。这也是对简单地认为 vos Savant 的 2/3 概率是正确答案的否定。 面对着一个具体的场景,同样是主持人打开一扇有羊的门,仅仅是主持人的动机不同,同样的事件造成另一扇门有车的概率不同。也就是说主持人只是自己心里想的,将来的事还没做,这就影响到了另一扇现在的概率。原来有比较确定概率的总体,被事实揭露后进入一个场景反而更不能确定它的概率。这让很多人感到困惑和哲学上的深思。人们很快会联想到量子的不确定,坍缩和量子纠缠等等。 这似乎很玄妙。到底这个概率是多少,我们可以通过事后观察统计来得到。这个概率叫“客观概率(频率概率)”由频率方法来定义。我们在事后的观察统计中,已经包含了主持人在他的规则下的具体行动的后果。 读者和参赛人事先能够推算出这个概率吗?能,只要我们知道这个观察统计实验中所有的选择规则。这样推算出来的概率叫“主观概率(贝叶斯概率)”由推算者掌握的信息来计算。如果我们知道主持人是按照什么规则来开门,那么得出的就是上述贝叶斯公式计算出来的条件概率。它一定符合用相同规则实验统计出来的客观概率。如果不知道这个潜规则,那么对于主持人打开 3 号没有羊门的事件就无法用来修正先验的信息。 从这个观点来回顾蒙提霍尔问题的争论就豁然开朗,问题中概率用贝叶斯公式来推算。最初,只知道车子的放置和参赛人的选择都是完全随机的,这确定各个门有车的先验概率是 1/3 。当我们知道主持人打开一扇有羊的门时,这个排除一扇门和一只羊的信息,将这先验概率修正为 1/2 。这就是大众的推测。当我们知道主持人必须打开一扇有羊的门时,这更丰富的信息,保持了 1 号门后验的概率不变,仍然关着那扇门后验概率则变为 2/3 。如果我们知道具体主持人打开了哪扇门并知道他的开门规则,我们就能算出仍然关着那扇门的后验概率。所有这些推算都是主观概率,具体数值依所知多少开门规则的知识而定。各方所推测的概率数值,依照他们所理解的开门信息,得出的结果都是对的。争论在于不了解对方所根据的信息,缺乏对概率概念的深刻理解,把自己的主观概率当作客观概率。实际上,不是基于实验的数据,能够被推理论推算的概率,都是主观概率,这个问题问的也是主观概率。所不同的是你能在这故事中挖掘出来多少有用的信息得出最准确的后验概率。 在这个具体的【场景 1 】中,如果不知道主持人在赛局 1 的开门规则,我们能够得出与客观概率相同的主观概率吗?不能。我们还是只能推算出 2/3 的结果,这已经是最大限度地利用已知的信息。这这个观点来看, Morgan 等四位教授论文【 3 】中反对 vos Savant 的结论是错的。这个错误一直等到 20 年后才被人指出【 4 】。 如果我们就像在实际的蒙提霍尔游戏节目中面对着这样的场景:初选 1 号门,主持人打开有羊的 3 号门,并不知道他按照什么规则来选择的,甚至不知道会不会打开有车的门,这时问:是不是换 2 号门更有利?我们能够用概率来确定改换的好处吗?不能。用贝叶斯公式不难推算出,这时 2 号门有车的概率从 0 到 1 任何一种皆有可能。最后的结果不是由概率计算就能确定的,它是由主持人和参赛者各自的决策所共同决定的。这不是一个概率的问题,是博弈的问题【 4 】。我们应该用博弈的模型来解决。 许多人应用数学解决实际问题时,发现事实与计算的不一样,就把它归结为数学的局限,其实更应该检查的是:自己有没有用对了数学的模型。 如果你在读这三篇连载时,你的结果与这最后的答案是相同或者相异,这都不重要。重要的是,这辩驳的理由和推理有没有在你心中想过,这决定了你对概率的理解有没有新的收获。 同一个故事,同一个问题,可以从不同方面来解读,也就有不同的体会。有人觉得无聊,有人急于知道答案,有的从争执方的动机来猜测对错。但如果想有最大的收获,读这个故事时,就要把其中人物的动机和胜负得失,以及自己答案的对错撇开,集中于概率问题的思考。真实世界上的人行事都有其动机,不管动机是否纯洁,只要他们的解答是符合逻辑的,就值得思考,客观地思考是一个学习的过程。数学的对错无关动机,只凭逻辑。这个问题和各方的答案,能有这么多人长时间地在学术刊物上争论,就说明不是个很简单的问题。如果把它看简单了,那就说明自己的思考还不全面,也没有深入到细节,还不能够清晰地分辨各种理由逻辑中的误区。如果你跟了故事里不同观点来思考,那便是一个很好学习概率概念的过程。 【参考资料】 【1】 科学网博文“蒙提霍尔问题——直觉与计算” http://blog.sciencenet.cn/home.php?mod=spaceuid=826653do=blogid=669134 【2】 科学网博文“蒙提霍尔问题——折服和逆袭” http://blog.sciencenet.cn/home.php?mod=spaceuid=826653do=blogid=670132 【3】 Morgan, J. P., Chaganty, N. R., Dahiya, R. C., Doviak, M. J. (1991). "Let's make a deal: The player's dilemma," American Statistician 45: 284–287. http://www.its.caltech.edu/~ilian/ma2a/monty1.pdf 【4】 Gill, Richard (2011) The Monty Hall Problem is not a probability puzzle (it's a challenge in mathematical modelling). Statistica Neerlandica 65(1) 58–71, February 2011. http://arxiv.org/pdf/1002.0651v3.pdf
个人分类: 科普|9864 次阅读|18 个评论
蒙提霍尔问题(2)——折服和逆袭
热度 8 xying 2013-3-14 06:33
早在 1975 年, UC Berkeley 生物统计学教授 Steve Selvin 寄给 American Statistician 期刊在题为“ A Problem in Probability ”上就提出了这个蒙提霍尔问题( Monty Hall problem )【 1 】,他借用美国电视比赛主持人蒙提霍尔的节目《 Let ’ s Make a Deal 》说这故事。在后续的文章中他用条件概率给出一个简单的证明【 2 】,但这两篇通讯都没有说服反对的学者。 1987 年 Nalebuff 在“ The Journal of Economic Perspectives ”难题的栏目, 1989 年 Phillip Martin 在“ Bridge Today ”的文章把这问题也归结为概率的计算。 1990 年 Marilyn vos Savant 【 3 】在“ Ask Marilyn ”专栏将这问题略加规范来讨论,引起了广泛的注意。自此以后,有很多的论文以此为题,并在概率和统计课堂和教科书上介绍。 Vos Savant 在专栏解释之中澄清了一些含糊之处,规定:主持人必须在你选择的门之外,打开一扇有羊的门,然后让你做第二次选择。当然,车子的放置和参赛人的选择都是完全随机的。大家对这个澄清少有异议,人们关心的是真正有意义的问题,而不是其他无争议的变种。 这个 vos Savant 标准化的问题重述如下。 让你在三扇关着门中自由选择,知道一扇后面是车,其他俩都是羊。当你选择后告诉他,比如说 1 号,主持人知道车在什么地方, 他必须在你选的门之外打开一扇有羊的门 ,比如说 3 号。然后问你,要不要改主意选 2 号。问:改选是否对选到车更有利?【问题 1 】 面对着上万个无法说服的读者, vos Savant 在全国学校的数学课里组织一个统计实验,所有学校的实验结果都吻合她的结论,接着有几百个人以不同的方法,用计算机做仿真实验,有 97% 的结果同意改选是更有利的。至此,绝大多数人都被说服,同意了她的观点。决策研究学者 Andrew Vazsonyi 报道说:著名的数学家 Paul Erdős 直到这时才被说服了。 Vos Savant 大获全胜,对于不符合她结论和实验结果的论断,都归结为不符合她标准问题的变种。那是另外一个问题的答案。但是对于喜欢思考的人,这还不够。我们要明白,反对的说法错在什么地方?结论对的,论证的逻辑也对吗?先看反对 1 号门概率不变,基于贝叶斯公式的推导。 【说法 2 】 假如事件 $A$ 表示车子在 1 号门,车子可能在任意一扇门后,所以它的概率 $P(A)=1/3$;$H$ 表示主持人打开有山羊的门的事件,三扇门中两扇门后有山羊,概率 $P(H)=2/3$ ; $P(AH)$ 是车子在 1 号门后而且主持人打开了有羊的门的概率;已知车子在 1 号门打开有羊门的条件概率 $P(H|A)=1$ ,不难看出 $P(AH)=P(H|A)P(A)=1/3$ ;那么主持人打开有羊的门后, 1 号门后面有车子是条件概率 $P(A|H)=P(AH)/P(H)=(1/3)/(2/3)=1/2$ ,这和大家的直观一样,那没打开的那扇门( 2 号)有车的概率也是 1/2 ,所以换不换都一样。 这说法错误在于,式子 $P(H)=2/3$ 是主持人随机打开 2 号或 3 号门的概率。这就不能保证打开的门后面总是羊。这不符合标准问题的题意。按规定主持人必须打开有羊的门,这时应该是 $P(H)=1$ ,条件概率 $P(A|H)= P(AH)/P(H)=1/3$ ,也就是说,在这规定下 1 号门的概率不变,那剩下那个门有车的概率就是 1 - 1/3 = 2/3 。这证实了 vos Savant 的说法。反过来,如果主持人不是有意打开有羊的门,而是随意打开一扇,这个场景碰巧里面是羊,那大家的直觉对, vos Savant 就错了。但这不符合标准问题的规定,是变种的问题了。 我们现在来看维基百科上的逆向思维解释【 4 】: 【说法 4 】无论参赛者开始的选择如何,在被主持人问到是否更换时都选择更换。如果参赛者先选中山羊,换之后百分之百赢;如果参赛者先选中汽车,换之后百分之百输。而选中山羊的概率是 2/3 ,选中汽车的概率是 1/3 。所以不管怎样都换,相对最初的赢得汽车仅为 1/3 的机率来说,转换选择可以增加赢的机会。 这结论符合实验和 vos Savant 的结果,但这推断中没有包含主持人是怎样的选择。从【说法 2 】分析中知道,主持人是有意还是随意打开恰巧是有羊门的情况,这两者的结论是不同的。所以这个说法是糊里糊涂地蒙事了。 那 vos Savant 最初的说法也是非常简洁和直观的,这回答有问题吗?她这说法可以改写得更明确一点: 【说法 1 】 1 号门有车的可能性是 1/3 ,其他两个一共有 2/3 。主持人打开没有车的那扇门,给你机会改选另一扇门,等价于给你机会改选 2 号和 3 号联合在一起的两扇门,他实际上帮助你拿掉了没有车子的那扇门,让大家觉得只是选另一扇。 在这个说法里,确实必须有“主持人必须打开没车的门”这个规定才能成立。因为 2 号和 3 号之中至少有个是羊,是已知的事实,主持人揭示这事实的事件,并没有为它们之外的 1 号门提供新的信息。所以不改变了原来 1 号门的概率。它只改变 2 号和 3 号之间的概率分配。反之,如果主持人是随机的选择,他有打开是车的门的可能性,所以它并不单纯地揭露了这个事实。如果他是在 3 扇门之间的随机选择,这事件也给他选择范围中的 1 号门,提供了新的信息,改变了它的概率。这就能解释随机选择的结论。 主持人即使必须只在 2 号和 3 号之中打开一扇有羊的门,也改变了 2 号和 3 号之间的概率分配。这个认知,让我们觉得这和具体的场景有关系,有必要重新审视一遍这个问题。考虑【问题 1 】举例说明的这个具体场景: 参赛人选择了 1 号门,主持人打开 3 号门里面是羊,问:要不要改选 2 号? 不难用贝叶斯公式计算这个条件概率。记事件 S 为参赛人选择 1 号门, Z 为主持人打开有羊的 3 号门, A 、 B 、 C 分别为车子在 1 、 2 、 3 号门,在这个场景下 2 号门有车的条件概率可以写成: P( 车子在 2 号门 | 主持人打开了有羊的 3 号门,参赛人选择 1 号门 ) ,即 $P(B|ZS)=P(BZ|S)/P(Z|S)$ $=P(Z|BS)P(B|S)/(P(Z|AS)P(A|S)+P(Z|BS)P(B|S)+P(Z|CS)P(C|S))$ 因为车子所在及参赛人选择都是完全随机的,条件概率 $P(A|S)=P(B|S)=P(C|S)=1/3$ ;主持人必须在 1 号门之外打开一扇有羊的门,意味着条件概率 $P(Z|BS)=1,P(Z|CS)=0$ ;这时候我们有: $P(B|ZS)=1/(P(Z|AS)+1)$ ,这里 $P(Z|AS)$ 是参赛人选择 1 号门车子也在 1 号门时,主持人打开 3 号门的概率。 在这种情况 2 和 3 号门后都是山羊,主持人任何选择都符合题意,他如果完全随机在它们间选择, $P(Z|AS)=1/2$ , 2 号门有车的概率是 2/3 ,同于 vos Savant 的答案;如果这时他总是选 3 号, $P(Z|AS)=1$ ,则 2 号门概率为 1/2 ,相同于大众的答案;如果这情况不选 3 号, $P(Z|AS)=0$ ,则概率为 1 ,这是因为主持人只有车子在 2 号门才不得不打开 3 号门的情况。 这是 Morgan 等四位美国数学和统计系的教授在《 American Statistician 》 1991 年论文【 7 】中基本逻辑的简述。用贝叶斯推断来考察这个具体例子,说明了即使是 vos Savant 的标准问题,大家的答案也都有道理,到底是哪一个答案对,取决于主持人选择时的一念之间。这是学术界形式逻辑派的绝地反攻,对 Vos Savant 的逆袭! 那么实验统计和 Vos Savant 的样本空间证明【说法 3 】又错在哪里? (待续) 【参考资料】 【1】 Selvin, Steve (February 1975), "A problem in probability (letter to the editor)", American Statistician 29 (1): 67 http://www.jstor.org/discover/10.2307/2683689?uid=3737864uid=2uid=4sid=21101099694733 【2】 Selvin, Steve (August 1975), "On the Monty Hall problem (letter to the editor)", American Statistician 29 (3): 134 http://montyhallproblem.com/as.html 【3】 Wikipedia , Marilyn vos Savant http://en.wikipedia.org/wiki/Marilyn_vos_Savant 【4】 维基百科,蒙提霍尔问题 http://zh.wikipedia.org/wiki/%E8%92%99%E6%8F%90%E9%9C%8D%E7%88%BE%E5%95%8F%E9%A1%8C 【5】 Wikipedia , Monty Hall problem http://en.wikipedia.org/wiki/Monty_Hall_problem 【6】 vos Savant, Marilyn (1991a). "Ask Marilyn" column, Parade Magazine p. 12 (17 February 1991). http://marilynvossavant.com/game-show-problem/ 【7】 Morgan, J. P., Chaganty, N. R., Dahiya, R. C., Doviak, M. J. (1991). "Let's make a deal: The player's dilemma," American Statistician 45: 284–287. http://www.its.caltech.edu/~ilian/ma2a/monty1.pdf
个人分类: 科普|10768 次阅读|26 个评论
蒙提霍尔问题(1)——直觉与计算
热度 29 xying 2013-3-11 07:00
概率的概念就像信念一样,存在于人们朦胧的直觉中,经过学校教育,表面上以为了解了,常常又与不同角度出发的直觉冲突矛盾,必须经过更深入的考察思索才能够理解。 蒙提霍尔问题的热议,便是一个例子。还没有一个简单的概率问题,长时间地迷惑着这么多的民众和学者,越是深入思考越发现问题。自 1990 , 1991 年纷起热议之后到了 2000 年,有超过 75 篇关于这个问题的论文发表在 40 多种学术和公众刊物上。两种结论反复交锋,不同观点一直纠缠,英文 Wiki 被双方不断更新资料的编辑之战折腾着。有的错误一直到了现在才发现。二十多年过去了,至今还偶尔在论文、书刊和电视上讨论。在公众书刊和百科中混杂着许多简单化似是而非的介绍。 我不想重述争议的细节和对错的结论,只是通过剖析典型的说法和认知的反复,来促进对概率概念和数学模型的理解。 蒙提霍尔问题( MontyHallproblem )【 1 】是一个概率猜谜游戏。 1990 年 9 月 CraigF.Whitaker 给《 Parade 》杂志“ AskMarilyn ”专栏提了一个问题: 在蒙提霍尔游戏节目中,让你在三扇关着的门中选择,知道一扇门后面是跑车,其他俩都是山羊,当然希望选中赢的是跑车。当你选择后告诉他,比如说 1 号,主持人知道车在什么地方,他打开另外一扇门,比如说 3 号,是羊在那儿。然后问你,要不要改主意选 2 号。问:改选是不是更有利? 大多数人认为改不改都一样,因为没打开的两扇门后面,有车子的可能性都是 1/2 。 MarilynvosSavant 认为 1 号门的可能性是 1/3 , 2 号现在有 2/3 。她给人们一个直观的想象:假如有辆车在一百万扇门中,你选了 1 号门,主持人知道车子在哪里,所以打开门时总是避免它,结果他打开了其余,除 777777 号之外所有的门,这时,你是不是很快改主意,选它了?【说法 1 】 这个专栏写手 MarilynvosSavant 是吉利斯记录中拥有最高智商的女人, IQ228 。她在 WashingtonUniversityinSt.Louis 哲学系上了两年大学后,就退学挣钱,以便有自由来写作。 她的答案打击了大多数人们的直觉,当即收到几千封读者的反驳, 11 月著名问题专栏作家的 CecilAdams 也在他“ TheStraightDope ”专栏里讨论这个问题,持相反看法。第二年《纽约时报》在头版登出这个问题,并且访谈了这问题中的节目主持人蒙提霍尔。他也不认可。 vosSavant 仍然坚持原来的答案。她摊上大事了,报社收到了一万多人来信, 92% 认为她错了, 65% 来自大学的信,多数是来自数学和科学的院系,都反对她的答案,认为这只是女人的直觉,劝她修了概率课后再谈这问题。其中有一千多个署名上有博士学位。即使她重申主持人必须打开有羊门的假设,提供了进一步证明后,仍被大多数有学问的人怀疑。没有被她说服的名人包括 PaulErdős 【 2 】,他是最多产的数学家,研究的问题包括组合数学、图论、数论、经典分析、逼近理论、集合论和概率论。 反对者的直觉是:主持人打开了一扇门,里面是羊,这将三个选择去掉一个,一辆车子和一只羊分别在剩下两扇没打开的门中,它们各有 1/2 的概率是车。 vosSavant 反驳说,如果一个 UFO 在主持人打开门后降临,看到两扇关着的门,外星人会同意这个概率 1/2 的结论,因为她缺乏这两扇门是怎么被留下来过程的信息。 有人用贝叶斯公式推出条件概率:假如 A 表示车子在 1 号门的事件,车子可能在任意一扇门后,所以它的概率 P(A)=1/3 ; H 表示主持人打开有羊门的事件,三扇门中两扇门后是羊,概率 P(H)=2/3 ;记 P(AH) 为车子在 1 号门后而且主持人打开了有羊门的概率;如果车子是在 1 号门,打开是羊门的条件概率 P(H|A)=1 ,则有 P(AH)=P(H|A)P(A)=1/3 ;那么主持人打开有羊的门后, 1 号门后面有车子的条件概率 P(A|H)=P(AH)/P(H)= ( 1/3 ) / ( 2/3 ) =1/2 ,这和大家的直观看法一样,这时没打开的那扇门( 2 号)有车的概率也就是 1/2 ,所以换不换都一样。人们推论:主持人打开了有羊门的事件,减少了对 1 号门是羊的猜测,提高了 1 号门有车的概率, vosSavant 的论断中坚持 1 号门的概率不变是错误的。【说法 2 】 看到不能说服读者, VosSavant 在专栏中画一个表,继续为她概率 2/3 的结论辩护。这里假设:客人先选 1 号门,主持人在 2 和 3 号中打开有羊的门。【 3 】这个表包含了所有的可能,不难看出换门赢的机会是不换的两倍。【说法 3 】 1 号门 2 号门 3 号门 不换的结果 换的结果 赛局 1 车 羊 羊 赢 输 赛局 2 羊 车 羊 输 赢 赛局 3 羊 羊 车 输 赢 维基百科上论证说【 1 】:“可以用逆向思维的方式来理解这个选择。无论参赛者开始的选择如何,在被主持人问到是否更换时都选择更换。如果参赛者先选中山羊,换之后百分之百赢;如果参赛者先选中汽车,换之后百分之百输。而选中山羊的概率是 2/3 ,选中汽车的概率是 1/3 。所以不管怎样都换,相对最初的赢得汽车仅为 1/3 的机率来说,转换选择可以增加赢的机会。”【说法 4 】 这个说法看起来犀利无比,但总是让人不放心,觉得过于简单化,给人感觉像是“两个信封的问题( Twoenvelopesproblem )”【 4 】里的逻辑 让你选择两个装钱的信封,已经知道一个比另一个多了一倍的钱。当你拿了一个还没打开时,有人劝你:另一个可能多一倍,也可能少了一半的钱,两种情况机会均等,平均起来另一个是手里那个 1.25 倍,所以换了还是合算。 问题是,你要拿了另一个也可以作同样的推理,这显然是个悖论。 这里有两个观点:大多数人认为,打开一扇有羊的门,这事件改变了其他门的概率,现在 2 号门有车的概率是 1/2 ; vosSavant 这边少数人认为,这不改变 1 号门的概率,所以 2 号门现在概率是 2/3 。 这两个观点,四种说法,到底哪些错了?为什么? (待续) 【参考资料】 【1】 维基百科,蒙提霍尔问题 http://zh.wikipedia.org/wiki/%E8%92%99%E6%8F%90%E9%9C%8D%E7%88%BE%E5%95%8F%E9%A1%8C 【2】 Wikipedia , PaulErdős http://en.wikipedia.org/wiki/Paul_Erd%C5%91s 【3】 vosSavant,Marilyn(1991a).AskMarilyncolumn,ParadeMagazinep.12(17February1991). http://marilynvossavant.com/game-show-problem/ 【4】 Wikipedia , Twoenvelopesproblem http://en.wikipedia.org/wiki/Two-envelope_paradox
个人分类: 科普|26324 次阅读|56 个评论
Monte Carlo的一些发展方向
热度 1 yangyuancn 2012-12-22 11:48
前阵子 墨尔本大学的Guoqi Qian老师来厦大做报告,借此机会和他探讨了一些Monte Carlo (MC)方面的问题,尤其是MC的未来发展等,再结合自己平日所学,现总结如下。 1.MC算法在理论上已经比较完备,很难再提出更加有效率的一般性的算法,所以现在的研究都致力于解决一些具体问题中的计算问题,比如贝叶斯推断等。自Jun S. Liu和Rong Chen之后,美国学者也不太热衷于研究MC,这个领域的研究重心,现在则在欧洲。大牛包括: Nicolas Chopin , Arnaud Doucet, Paul Fearnhead, Peter Green, Omiros Papaspiliopoulos, Christian. Robert, Gareth Roberts等等。 2.将信息论和微分几何的一些概念引入到MC当中。我自己看到的文章中,Girolami andCalderhead (2011, JRSS,B)是这个方向的一篇重要的文章,是在RSS会上宣读过的,文章里用到黎曼流形、汉密尔顿力学等一些概念。至于信息论方面,自己不太清楚,猜测是用到entropy等概念吧。 3.近似贝叶斯计算(ABC)。这也是进几年来的一个热点话题,Rue and Martino (2009, JRSS,B)的文章详细介绍了INLA这一ABC当中的利器。记得之前Xiaofeng Wang来厦大做个这方面的报告,大意是说用INLA取代MC积分,从而降低计算成本,提高计算精度。 Fearnhead and Prangle (2011, JRSS,B)则是介绍了在ABC中构造summary statistics的方法。 4.平行计算下的MCMC。近年来平行计算、云计算等概念方兴未艾,计算资源大大丰富。而MCMC由于其生成的是一条单行链条,没有很好的使用平行计算系统的功效,因此如何解决这个问题也是未来的研究热点。之前看过的一篇工作论文, Durham and Geweke (2011)研究了这个问题,不过是针对SMC,而不是MCMC。自己猜想,这个问题的解决可能和现有文献中的interactive parallel chain技术有关吧。 5.其他还有一些比较热的课题,比如Ornstein-Uhlenbeck Stochastic Volatility, Population MC, Particle filter for diffusion, reversible jump MCMC等等。 国外的学术交流很频繁,能够经常在会议、讲座上见到一些经常在top journals上见到的名字。比如A. Doucet就在墨尔本大学做过博士后,而前段时间C. Robert也在墨尔本大学搞过一个系列讲座。院系间、学术界和业界之间的合作就更加频繁了,通常是一个研究团队,包含了数学、统计、计算机、以及具体学科的研究者。
个人分类: 学术之路|5177 次阅读|5 个评论
贝叶斯统计和正规化
Austindglx 2012-11-11 08:32
贝叶斯统计和正规化.docx (注:博文中信息不全,见附件) 正规化可以用来防止过拟合,并且保留所有的参数。 1 、极大似然估计( ML )如下图,其哲学思想是在数据之后有一组参数θ来生成 x 和 y ,注意θ是真实存在的,并不是变量,也可以说θ就是关于变量 x 的一个函数参数,只不过到底是什么需要我们自己去估计,这是我们要做的。 ML 算法的目的就是找到这样的θ使得用其作为参数来估计的准确性达到最大。以上的分析是频率学家的观点,属于统计学派。 2 、另外一种观点就是贝叶斯学派的观点。他们事先不知道θ的值是多少,但是他们会假设θ服从一个先验分布来标示θ的不确定性。比如θ可能服从一个高斯先验分布或者一个β先验分布。 若给定一个训练集 ,则我们会计算θ的后验分布,即加入了训练集中的后验知识之后的θ的分布 p( θ |S) 。有: , 事实上可以看到分母是对θ的积分,只要先验分布确定了,其值就是一个定值,也可以说不会影响估计θ的结果。因此可以看成: ,即后验分布只和分母的部分有关系。 这样的话,假设训练集中的 x 标示是房子的属性信息, y 标示的是价格,我们要找到一组参数 来利用 x 估计 y 。则对于一个新房子的价格进行预测时就用上式估计出来的后验分布 p( θ |S) 进行预测,如下: , 进一步的,在给定训练集 S 和输入 x 的情况下估计 y 的期望值的时候需要计算 。 θ的维度可能非常高,计算积分非常困难,因此一般不会计算完整的后验 p( θ |S) ,而是进行近似的计算,然后用得到的确定的一个点θ来代替其积分,比如最常用的一个方法就是 MAP ( maximum a posteriori )了,其得到的形式如下所示: 然后进行预测时,只需要用函数: 。 使用贝叶斯方法能够有效的避免极大似然估计中的过拟合现象,这是因为贝叶斯方法在加入了训练样本信息(先验知识)后会平滑数据。用数学的观点来看,极大似然估计(比如 logistic 线性回归)的目标函数为 ,而贝叶斯方法在加入了先验知识后其目标函数实际上变成了 。
7 次阅读|0 个评论
如何使用PhyloBayes快速构建系统发育树
热度 7 Bearjazz 2012-5-6 10:43
如何使用 PhyloBayes 快速构建系统发育树 熊荣川 六盘水师范学院生物信息学实验室 xiongrongchuan@126.com http://blog.sciencenet.cn/u/Bearjazz PhyloBayes 算是贝叶斯方法软件的后起之秀,替代模型更为丰富,主要用于基于氨基酸序列的系统发育树构建。 下载地址 www.phylobayes.org 下载之后,解压即可,不需安装,里面有适合各种系统平台的程序包,如 windows 平台的程序包在文件夹… \phylobayes3.3b\exe_win 中。程序包中有11不同的程序,功能有所不同,其中pb.exe是主要的马尔科夫蒙地卡罗(MCMC)抽样程序。 输入格式为 .phy 格式 如何开始建树 将下面的代码复制到纯文本文件中保存为 bat 文件“ bear.bat ” pb -d sequence.phy -nchain 2 100 0.3 50 rnapo4 其中, sequence.phy 为比对好的氨基酸序列, rnapo4 为输出文件名 sequence.phy 、 bear.bat 和 pb.exe 放同一文件夹,双击 bear.bat 及开始运算。结果中“ rnapo4.con.tre ”就是最终树文件,带有支持率。
个人分类: 我的研究|17418 次阅读|14 个评论
[转载]数学之美番外篇:平凡而又神奇的贝叶斯方法
zhenliangli 2012-3-24 14:26
概率论只不过是把常识用数学公式表达了出来。 ——拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计。我心想,一个方法能够专门写出一本书来,肯定很牛逼。后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法。 ——题记 目录 0. 前言 1. 历史 1.1 一个例子:自然语言的二义性 1.2 贝叶斯公式 2. 拼写纠正 3. 模型比较与贝叶斯奥卡姆剃刀 3.1 再访拼写纠正 3.2 模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor) 3.3 最小描述长度原则 3.4 最优贝叶斯推理 4. 无处不在的贝叶斯 4.1 中文分词 4.2 统计机器翻译 4.3 贝叶斯图像识别,Analysis by Synthesis 4.4 EM 算法与基于模型的聚类 4.5 最大似然与最小二乘 5. 朴素贝叶斯方法(又名“愚蠢者的贝叶斯(idiot’s bayes)”) 5.1 垃圾邮件过滤器 5.2 为什么朴素贝叶斯方法令人诧异地好——一个理论解释 6. 层级贝叶斯模型 6.1 隐马可夫模型(HMM) 7. 贝叶斯网络 0. 前言 这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子。更严格的公式和计算我会在相应的地方注明参考资料。贝叶斯方法被证明是非常 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% 的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。有了这些信息之后我们可以容易地计算“随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大”,这个就是前面说的“正向概率”的计算。然而,假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗? 一些认知科学的研究表明(《决策与判断》以及《 Rationality for Mortals 》第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) / 。容易发现这里校园内人的总数是无关的,可以消去。于是得到 P(Girl|Pants) = 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(B|A) = P(AB) / P(A) 其实这个就等于: P(B|A) * P(A) = P(AB) 难怪拉普拉斯说 概率论只是把常识用数学公式表达了出来 。 然而,后面我们会逐渐发现,看似这么平凡的贝叶斯公式,背后却隐含着非常深刻的原理。 2. 拼写纠正 经典著作《人工智能:现代方法》的作者之一 Peter Norvig 曾经写过一篇介绍如何写一个拼写检查/纠正器的文章(原文在 这里 ,徐宥的翻译版在 这里 ,这篇文章很深入浅出,强烈建议读一读),里面用到的就是贝叶斯方法,这里我们不打算复述他写的文章,而是简要地将其核心思想介绍一下。 首先,我们需要询问的是:“ 问题是什么? ” 问题是我们看到用户输入了一个不在字典中的单词,我们需要去猜测:“这个家伙到底真正想输入的单词是什么呢?”用刚才我们形式化的语言来叙述就是,我们需要求: 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 经过你一不留神,手一抖就是一个误差出现了),所以如果过分去寻求能够完美解释观测数据的模型,就会落入所谓的数据 过配(overfitting) 的境地,一个过配的模型试图连误差(噪音)都去解释(而实际上噪音又是不需要解释的),显然就过犹不及了。所以 P(D | h) 大不代表你的 h (猜测)就是更好的 h。还要看 P(h) 是怎样的。所谓 奥卡姆剃刀 精神就是说:如果两个理论具有相似的解释力度,那么优先选择那个更简单的(往往也正是更平凡的,更少繁复的,更常见的)。 过分匹配的另一个原因在于当观测的结果并不是因为误差而显得“不精确”而是因为真实世界中对数据的结果产生贡献的因素太多太多,跟噪音不同,这些偏差是一些另外的因素集体贡献的结果,不是你的模型所能解释的——噪音那是不需要解释——一个现实的模型往往只提取出几个与结果相关度很高,很重要的因素(cause)。这个时候观察数据会倾向于围绕你的有限模型的预测结果呈 正态分布 ,于是你实际观察到的结果就是这个正态分布的 随机取样 ,这个取样很可能受到其余因素的影响偏离你的模型所预测的中心,这个时候便不能贪心不足地试图通过改变模型来“完美”匹配数据,因为那些使结果偏离你的预测的贡献因素不是你这个有限模型里面含有的因素所能概括的,硬要打肿脸充胖子只能导致不实际的模型,举个教科书例子:身高和体重的实际关系近似于一个二阶多项式的关系,但大家都知道并不是只有身高才会对体重产生影响,物理世界影响体重的因素太多太多了,有人身材高大却瘦得跟稻草,有人却是横长竖不长。但不可否认的是总体上来说,那些特殊情况越是特殊就越是稀少,呈围绕最普遍情况(胖瘦适中)的正态分布,这个分布就保证了我们的身高——体重相关模型能够在大多数情况下做出靠谱的预测。但是——刚才说了,特例是存在的,就算不是特例,人有胖瘦,密度也有大小,所以完美符合身高——体重的某个假想的二阶多项式关系的人是不存在的,我们又不是欧几里德几何世界当中的理想多面体,所以,当我们对人群随机抽取了 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) 的那个猜测。然而每个人都会大摇其头——很显然,你随机摸出一枚硬币这枚硬币居然没有反面的概率是“不存在的”,我们对一枚随机硬币是否一枚有偏硬币,偏了多少,是有着一个先验的认识的,这个认识就是绝大多数硬币都是基本公平的,偏得越多的硬币越少见(可以用一个 beta 分布 来表达这一先验概率)。将这个先验正态分布 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 的话,就跟数据完美吻合了——既然那个女孩是用某个东西去看这个男孩的,那么这个东西是一个望远镜就完全可以解释了(不再是小概率事件了)。 自然语言二义性很常见,譬如上文中的一句话: 参见《决策与判断》以及《 Rationality for Mortals 》第12章:小孩也可以解决贝叶斯问题 就有二义性:到底是参见这两本书的第 12 章,还是仅仅是第二本书的第 12 章呢?如果是这两本书的第 12 章那就是咄咄怪事了,怎么恰好两本书都有第 12 章,都是讲同一个问题,更诡异的是,标题还相同呢? 注意,以上做的是似然估计(即只看 P(D | h) 的大小),不含先验概率。通过这两个例子,尤其是那个树后面的箱子的例子我们可以看到,似然估计里面也蕴含着奥卡姆剃刀:树后面的箱子数目越多,这个模型就越复杂。单个箱子的模型是最简单的。似然估计选择了更简单的模型。 这个就是所谓的 贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor) ,因为这个剃刀工作在贝叶斯公式的似然(P(D | h) )上,而不是模型本身( P(h) )的先验概率上,后者是传统的奥卡姆剃刀。关于贝叶斯奥卡姆剃刀我们再来看一个前面说到的曲线拟合的例子:如果平面上有 N 个点,近似构成一条直线,但绝不精确地位于一条直线上。这时我们既可以用直线来拟合(模型1),也可以用二阶多项式(模型2)拟合,也可以用三阶多项式(模型3),.. ,特别地,用 N-1 阶多项式便能够保证肯定能完美通过 N 个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?前面提到,一个衡量的依据是奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。然而,我们其实并不需要依赖于这个先验的奥卡姆剃刀,因为有人可能会争辩说:你怎么就能说越高阶的多项式越不常见呢?我偏偏觉得所有阶多项式都是等可能的。好吧,既然如此那我们不妨就扔掉 P(h) 项,看看 P(D | h) 能告诉我们什么。我们注意到越是高阶的多项式,它的轨迹弯曲程度越是大,到了八九阶简直就是直上直下,于是我们不仅要问:一个比如说八阶多项式在平面上随机生成的一堆 N 个点偏偏恰好近似构成一条直线的概率(即 P(D | h) )有多大?太小太小了。反之,如果背后的模型是一条直线,那么根据该模型生成一堆近似构成直线的点的概率就大得多了。这就是贝叶斯奥卡姆剃刀。 这里只是提供一个关于贝叶斯奥卡姆剃刀的科普,强调直观解释,更多理论公式请参考 MacKay 的著作 《Information Theory : Inference and Learning Algorithms》第 28 章。 3.3 最小描述长度原则 贝叶斯模型比较理论与信息论有一个有趣的关联: P(h | D) ∝ P(h) * P(D | h) 两边求对数,将右式的乘积变成相加: ln P(h | D) ∝ ln P(h) + ln P(D | h) 显然,最大化 P(h | D) 也就是最大化 ln P(h | D)。而 ln P(h) + ln P(D | h) 则可以解释为模型(或者称“假设”、“猜测”)h 的编码长度加上在该模型下数据 D 的编码长度。使这个和最小的模型就是最佳模型。 而究竟如何定义一个模型的编码长度,以及数据在模型下的编码长度则是一个问题。更多可参考 Mitchell 的 《Machine Learning》的 6.6 节,或 Mackay 的 28.3 节) 3.4 最优贝叶斯推理 所谓的推理,分为两个过程,第一步是对观测数据建立一个模型。第二步则是使用这个模型来推测未知现象发生的概率。我们前面都是讲的对于观测数据给出最靠谱的那个模型。然而很多时候,虽然某个模型是所有模型里面最靠谱的,但是别的模型也并不是一点机会都没有。譬如第一个模型在观测数据下的概率是 0.5 。第二个模型是 0.4 ,第三个是 0.1 。如果我们只想知道对于观测数据哪个模型最可能,那么只要取第一个就行了,故事到此结束。然而很多时候我们建立模型是为了推测未知的事情的发生概率,这个时候,三个模型对未知的事情发生的概率都会有自己的预测,仅仅因为某一个模型概率稍大一点就只听他一个人的就太不民主了。所谓的最优贝叶斯推理就是将三个模型对于未知数据的预测结论加权平均起来(权值就是模型相应的概率)。显然,这个推理是理论上的制高点,无法再优了,因为它已经把所有可能性都考虑进去了。 只不过实际上我们是基本不会使用这个框架的,因为计算模型可能非常费时间,二来模型空间可能是连续的,即有无穷多个模型(这个时候需要计算模型的概率分布)。结果还是非常费时间。所以这个被看作是一个理论基准。 4. 无处不在的贝叶斯 以下我们再举一些实际例子来说明贝叶斯方法被运用的普遍性,这里主要集中在机器学习方面,因为我不是学经济的,否则还可以找到一堆经济学的例子。 4.1 中文分词 贝叶斯是机器学习的核心方法之一。比如中文分词领域就用到了贝叶斯。Google 研究员吴军在《数学之美》系列中就有一篇是介绍中文分词的,这里只介绍一下核心的思想,不做赘述,详细请参考吴军的文章( 这里 )。 分词问题的描述为:给定一个句子(字串),如: 南京市长江大桥 如何对这个句子进行分词(词串)才是最靠谱的。例如: 1. 南京市/长江大桥 2. 南京/市长/江大桥 这两个分词,到底哪个更靠谱呢? 我们用贝叶斯公式来形式化地描述这个问题,令 X 为字串(句子),Y 为词串(一种特定的分词假设)。我们就是需要寻找使得 P(Y|X) 最大的 Y ,使用一次贝叶斯可得: P(Y|X) ∝ P(Y)*P(X|Y) 用自然语言来说就是 这种分词方式(词串)的可能性 乘以 这个词串生成我们的句子的可能性。我们进一步容易看到:可以近似地将 P(X|Y) 看作是恒等于 1 的,因为任意假想的一种分词方式之下生成我们的句子总是精准地生成的(只需把分词之间的分界符号扔掉即可)。于是,我们就变成了去最大化 P(Y) ,也就是寻找一种分词使得这个词串(句子)的概率最大化。而如何计算一个词串: W1, W2, W3, W4 .. 的可能性呢?我们知道,根据 联合概率 的公式展开:P(W1, W2, W3, W4 ..) = P(W1) * P(W2|W1) * P(W3|W2, W1) * P(W4|W1,W2,W3) * .. 于是我们可以通过一系列的条件概率(右式)的乘积来求整个联合概率。然而不幸的是随着条件数目的增加(P(Wn|Wn-1,Wn-2,..,W1) 的条件有 n-1 个), 数据稀疏问题 也会越来越严重,即便语料库再大也无法统计出一个靠谱的 P(Wn|Wn-1,Wn-2,..,W1) 来。为了缓解这个问题,计算机科学家们一如既往地使用了“天真”假设:我们假设句子中一个词的出现概率只依赖于它前面的有限的 k 个词(k 一般不超过 3,如果只依赖于前面的一个词,就是2元 语言模型 (2-gram),同理有 3-gram 、 4-gram 等),这个就是所谓的“有限地平线”假设。虽然这个假设很傻很天真,但结果却表明它的结果往往是很好很强大的,后面要提到的朴素贝叶斯方法使用的假设跟这个精神上是完全一致的,我们会解释为什么像这样一个天真的假设能够得到强大的结果。目前我们只要知道,有了这个假设,刚才那个乘积就可以改写成: P(W1) * P(W2|W1) * P(W3|W2) * P(W4|W3) .. (假设每个词只依赖于它前面的一个词)。而统计 P(W2|W1) 就不再受到数据稀疏问题的困扰了。对于我们上面提到的例子“南京市长江大桥”,如果按照自左到右的贪婪方法分词的话,结果就成了“南京市长/江大桥”。但如果按照贝叶斯分词的话(假设使用 3-gram),由于“南京市长”和“江大桥”在语料库中一起出现的频率为 0 ,这个整句的概率便会被判定为 0 。 从而使得“南京市/长江大桥”这一分词方式胜出。 一点注记 :有人可能会疑惑,难道我们人类也是基于这些天真的假设来进行推理的?不是的。事实上,统计机器学习方法所统计的东西往往处于相当表层(shallow)的层面,在这个层面机器学习只能看到一些非常表面的现象,有一点科学研究的理念的人都知道:越是往表层去,世界就越是繁复多变。从机器学习的角度来说,特征(feature)就越多,成百上千维度都是可能的。特征一多,好了, 高维诅咒 就产生了,数据就稀疏得要命,不够用了。而我们人类的观察水平显然比机器学习的观察水平要更深入一些,为了避免数据稀疏我们不断地发明各种装置(最典型就是显微镜),来帮助我们直接深入到更深层的事物层面去观察更本质的联系,而不是在浅层对表面现象作统计归纳。举一个简单的例子,通过对大规模语料库的统计,机器学习可能会发现这样一个规律:所有的“他”都是不会穿 bra 的,所有的“她”则都是穿的。然而,作为一个男人,却完全无需进行任何统计学习,因为深层的规律就决定了我们根本不会去穿 bra 。至于机器学习能不能完成后者(像人类那样的)这个推理,则是人工智能领域的经典问题。至少在那之前, 声称统计学习方法能够终结科学研究 ( 原文 )的说法 是纯粹外行人说的话 。 4.2 统计机器翻译 统计机器翻译因为其简单,自动(无需手动添加规则),迅速成为了机器翻译的事实标准。而统计机器翻译的核心算法也是使用的贝叶斯方法。 问题是什么?统计机器翻译的问题可以描述为:给定一个句子 e ,它的可能的外文翻译 f 中哪个是最靠谱的。即我们需要计算:P(f|e) 。一旦出现条件概率贝叶斯总是挺身而出: P(f|e) ∝ P(f) * P(e|f) 这个式子的右端很容易解释:那些先验概率较高,并且更可能生成句子 e 的外文句子 f 将会胜出。我们只需简单统计(结合上面提到的 N-Gram 语言模型)就可以统计任意一个外文句子 f 的出现概率。然而 P(e|f) 却不是那么好求的,给定一个候选的外文局子 f ,它生成(或对应)句子 e 的概率是多大呢?我们需要定义什么叫 “对应”,这里需要用到一个分词对齐的平行语料库,有兴趣的可以参考 《Foundations of Statistical Natural Language Processing》第 13 章,这里摘选其中的一个例子:假设 e 为:John loves Mary 。我们需要考察的首选 f 是:Jean aime Marie (法文)。我们需要求出 P(e|f) 是多大,为此我们考虑 e 和 f 有多少种对齐的可能性,如: John (Jean) loves (aime) Marie (Mary) 就是其中的一种(最靠谱的)对齐,为什么要对齐,是因为一旦对齐了之后,就可以容易地计算在这个对齐之下的 P(e|f) 是多大,只需计算: P(John|Jean) * P(loves|aime) * P(Marie|Mary) 即可。 然后我们遍历所有的对齐方式,并将每种对齐方式之下的翻译概率 ∑ 求和。便可以获得整个的 P(e|f) 是多大。 一点注记 :还是那个问题:难道我们人类真的是用这种方式进行翻译的?highly unlikely 。这种计算复杂性非常高的东西连三位数乘法都搞不定的我们才不会笨到去使用呢。根据认知神经科学的认识,很可能我们是先从句子到语义(一个逐层往上(bottom-up)抽象的 folding 过程),然后从语义根据另一门语言的语法展开为另一门语言(一个逐层往下(top-down)的具体化 unfolding 过程)。如何可计算地实现这个过程,目前仍然是个难题。(我们看到很多地方都有 bottom-up/top-down 这样一个对称的过程,实际上有人猜测这正是生物神经网络原则上的运作方式,对视觉神经系统的研究尤其证明了这一点,Hawkins 在 《On Intelligence》 里面提出了一种 HTM (Hierarchical Temporal Memory)模型正是使用了这个原则。) 4.3 贝叶斯图像识别,Analysis by Synthesis 贝叶斯方法是一个非常 general 的推理框架。其核心理念可以描述成:Analysis by Synthesis (通过合成来分析)。06 年的认知科学新进展上有一篇 paper 就是讲用贝叶斯推理来解释视觉识别的,一图胜千言,下图就是摘自这篇 paper : 首先是视觉系统提取图形的边角特征,然后使用这些特征自底向上地激活高层的抽象概念(比如是 E 还是 F 还是等号),然后使用一个自顶向下的验证来比较到底哪个概念最佳地解释了观察到的图像。 4.4 EM 算法与基于模型的聚类 聚类 是一种 无指导的机器学习 问题,问题描述:给你一堆数据点,让你将它们最靠谱地分成一堆一堆的。聚类算法很多,不同的算法适应于不同的问题,这里仅介绍一个基于模型的聚类,该聚类算法对数据点的假设是,这些数据点分别是围绕 K 个核心的 K 个正态分布源所随机生成的,使用 Han JiaWei 的《Data Ming: Concepts and Techniques》中的图: 图中有两个正态分布核心,生成了大致两堆点。我们的聚类算法就是需要根据给出来的那些点,算出这两个正态分布的核心在什么位置,以及分布的参数是多少。这很明显又是一个贝叶斯问题,但这次不同的是,答案是连续的且有无穷多种可能性,更糟的是,只有当我们知道了哪些点属于同一个正态分布圈的时候才能够对这个分布的参数作出靠谱的预测,现在两堆点混在一块我们又不知道哪些点属于第一个正态分布,哪些属于第二个。反过来,只有当我们对分布的参数作出了靠谱的预测时候,才能知道到底哪些点属于第一个分布,那些点属于第二个分布。这就成了一个先有鸡还是先有蛋的问题了。为了解决这个循环依赖,总有一方要先打破僵局,说,不管了,我先随便整一个值出来,看你怎么变,然后我再根据你的变化调整我的变化,然后如此迭代着不断互相推导,最终收敛到一个解。这就是 EM 算法。 EM 的意思是“Expectation-Maximazation”,在这个聚类问题里面,我们是先随便猜一下这两个正态分布的参数:如核心在什么地方,方差是多少。然后计算出每个数据点更可能属于第一个还是第二个正态分布圈,这个是属于 Expectation 一步。有了每个数据点的归属,我们就可以根据属于第一个分布的数据点来重新评估第一个分布的参数(从蛋再回到鸡),这个是 Maximazation 。如此往复,直到参数基本不再发生变化为止。这个迭代收敛过程中的贝叶斯方法在第二步,根据数据点求分布的参数上面。 4.5 最大似然与最小二乘 学过线性代数的大概都知道经典的最小二乘方法来做线性回归。问题描述是:给定平面上 N 个点,(这里不妨假设我们想用一条直线来拟合这些点—— 回归 可以看作是 拟合 的特例,即允许误差的拟合),找出一条最佳描述了这些点的直线。 一个接踵而来的问题就是,我们如何定义最佳?我们设每个点的坐标为 (Xi, Yi) 。如果直线为 y = f(x) 。那么 (Xi, Yi) 跟直线对这个点的“预测”:(Xi, f(Xi)) 就相差了一个 ΔYi = |Yi – f(Xi)| 。最小二乘就是说寻找直线使得 (ΔY1)^2 + (ΔY2)^2 + .. (即误差的平方和)最小,至于为什么是误差的平方和而不是误差的绝对值和,统计学上也没有什么好的解释。然而贝叶斯方法却能对此提供一个完美的解释。 我们假设直线对于坐标 Xi 给出的预测 f(Xi) 是最靠谱的预测,所有纵坐标偏离 f(Xi) 的那些数据点都含有噪音,是噪音使得它们偏离了完美的一条直线,一个合理的假设就是偏离路线越远的概率越小,具体小多少,可以用一个正态分布曲线来模拟,这个分布曲线以直线对 Xi 给出的预测 f(Xi) 为中心,实际纵坐标为 Yi 的点 (Xi, Yi) 发生的概率就正比于 EXP 。(EXP(..) 代表以常数 e 为底的多少次方)。 现在我们回到问题的贝叶斯方面,我们要想最大化的后验概率是: P(h|D) ∝ P(h) * P(D|h) 又见贝叶斯!这里 h 就是指一条特定的直线,D 就是指这 N 个数据点。我们需要寻找一条直线 h 使得 P(h) * P(D|h) 最大。很显然,P(h) 这个先验概率是均匀的,因为哪条直线也不比另一条更优越。所以我们只需要看 P(D|h) 这一项,这一项是指这条直线生成这些数据点的概率,刚才说过了,生成数据点 (Xi, Yi) 的概率为 EXP 乘以一个常数。而 P(D|h) = P(d1|h) * P(d2|h) * .. 即假设各个数据点是独立生成的,所以可以把每个概率乘起来。于是生成 N 个数据点的概率为 EXP * EXP * EXP * .. = EXP {- } 最大化这个概率就是要最小化 (ΔY1)^2 + (ΔY2)^2 + (ΔY3)^2 + .. 。 熟悉这个式子吗? 5. 朴素贝叶斯方法 朴素贝叶斯方法是一个很特别的方法,所以值得介绍一下。我们用朴素贝叶斯在垃圾邮件过滤中的应用来举例说明。 5.1 贝叶斯垃圾邮件过滤器 问题是什么?问题是,给定一封邮件,判定它是否属于垃圾邮件。按照先例,我们还是用 D 来表示这封邮件,注意 D 由 N 个单词组成。我们用 h+ 来表示垃圾邮件,h- 表示正常邮件。问题可以形式化地描述为求: P(h+|D) = P(h+) * P(D|h+) / P(D) P(h-|D) = P(h-) * P(D|h-) / P(D) 其中 P(h+) 和 P(h-) 这两个先验概率都是很容易求出来的,只需要计算一个邮件库里面垃圾邮件和正常邮件的比例就行了。然而 P(D|h+) 却不容易求,因为 D 里面含有 N 个单词 d1, d2, d3, .. ,所以P(D|h+) = P(d1,d2,..,dn|h+) 。我们又一次遇到了数据稀疏性,为什么这么说呢?P(d1,d2,..,dn|h+) 就是说在垃圾邮件当中出现跟我们目前这封邮件一模一样的一封邮件的概率是多大!开玩笑,每封邮件都是不同的,世界上有无穷多封邮件。瞧,这就是数据稀疏性,因为可以肯定地说,你收集的训练数据库不管里面含了多少封邮件,也不可能找出一封跟目前这封一模一样的。结果呢?我们又该如何来计算 P(d1,d2,..,dn|h+) 呢? 我们将 P(d1,d2,..,dn|h+) 扩展为: P(d1|h+) * P(d2|d1, h+) * P(d3|d2,d1, h+) * .. 。熟悉这个式子吗?这里我们会使用一个更激进的假设,我们假设 di 与 di-1 是完全条件无关的,于是式子就简化为 P(d1|h+) * P(d2|h+) * P(d3|h+) * .. 。这个就是所谓的 条件独立假设 ,也正是朴素贝叶斯方法的朴素之处。而计算 P(d1|h+) * P(d2|h+) * P(d3|h+) * .. 就太简单了,只要统计 di 这个单词在垃圾邮件中出现的频率即可。关于贝叶斯垃圾邮件过滤更多的内容可以参考 这个条目 ,注意其中提到的其他资料。 一点注记 :这里,为什么有这个数据稀疏问题,还是因为统计学习方法工作在浅层面, 世界上的单词就算不再变多也是非常之多的,单词之间组成的句子也是变化多端,更不用说一篇文章了,文章数目则是无穷的,所以在这个层面作统计,肯定要被数据稀疏性困扰。我们要注意,虽然句子和文章的数目是无限的,然而就拿邮件来说,如果我们只关心邮件中句子的语义(进而更高抽象层面的“意图”(语义,意图如何可计算地定义出来是一个人工智能问题),在这个层面上可能性便大大缩减了,我们关心的抽象层面越高,可能性越小。单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。神经科学的发现也表明大脑的皮层大致有一种层级结构,对应着越来越抽象的各个层面,至于如何具体实现一个可放在计算机内的大脑皮层,仍然是一个未解决问题,以上只是一个原则(principle)上的认识,只有当 computational 的 cortex 模型被建立起来了之后才可能将其放入电脑。 5.2 为什么朴素贝叶斯方法令人诧异地好——一个理论解释 朴素贝叶斯方法的条件独立假设看上去很傻很天真,为什么结果却很好很强大呢?就拿一个句子来说,我们怎么能鲁莽地声称其中任意一个单词出现的概率只受到它前面的 3 个或 4 个单词的影响呢?别说 3 个,有时候一个单词的概率受到上一句话的影响都是绝对可能的。那么为什么这个假设在实际中的表现却不比决策树差呢?有人对此提出了一个理论解释,并且建立了什么时候朴素贝叶斯的效果能够等价于非朴素贝叶斯的充要条件,这个解释的核心就是:有些独立假设在各个分类之间的分布都是均匀的所以对于似然的相对大小不产生影响;即便不是如此,也有很大的可能性各个独立假设所产生的消极影响或积极影响互相抵消,最终导致结果受到的影响不大。具体的数学公式请参考 这篇 paper 。 6. 层级贝叶斯模型 层级贝叶斯模型 是现代贝叶斯方法的标志性建筑之一。前面讲的贝叶斯,都是在同一个事物层次上的各个因素之间进行统计推理,然而层次贝叶斯模型在哲学上更深入了一层,将这些因素背后的因素(原因的原因,原因的原因,以此类推)囊括进来。一个教科书例子是:如果你手头有 N 枚硬币,它们是同一个工厂铸出来的,你把每一枚硬币掷出一个结果,然后基于这 N 个结果对这 N 个硬币的 θ (出现正面的比例)进行推理。如果根据最大似然,每个硬币的 θ 不是 1 就是 0 (这个前面提到过的),然而我们又知道每个硬币的 p(θ) 是有一个先验概率的,也许是一个 beta 分布。也就是说,每个硬币的实际投掷结果 Xi 服从以 θ 为中心的正态分布,而 θ 又服从另一个以 Ψ 为中心的 beta 分布。层层因果关系就体现出来了。进而 Ψ 还可能依赖于因果链上更上层的因素,以此类推。 6.1 隐马可夫模型(HMM) 吴军在数学之美系列里面介绍的 隐马可夫模型 (HMM)就是一个简单的层级贝叶斯模型: 那么怎么根据接收到的信息来推测说话者想表达的意思呢?我们可以利用叫做“隐含马尔可夫模型”(Hidden Markov Model)来解决这些问题。以语音识别为例,当我们观测到语音信号 o1,o2,o3 时,我们要根据这组信号推测出发送的句子 s1,s2,s3。显然,我们应该在所有可能的句子中找最有可能性的一个。用数学语言来描述,就是在已知 o1,o2,o3,...的情况下,求使得条件概率 P (s1,s2,s3,...|o1,o2,o3....) 达到最大值的那个句子 s1,s2,s3,... 吴军的文章中这里省掉没说的是,s1, s2, s3, .. 这个句子的生成概率同时又取决于一组参数,这组参数决定了 s1, s2, s3, .. 这个马可夫链的先验生成概率。如果我们将这组参数记为 λ ,我们实际上要求的是:P(S|O, λ) (其中 O 表示 o1,o2,o3,.. ,S表示 s1,s2,s3,..) 当然,上面的概率不容易直接求出,于是我们可以间接地计算它。利用贝叶斯公式并且省掉一个常数项,可以把上述公式等价变换成 P(o1,o2,o3,...|s1,s2,s3....) * P(s1,s2,s3,...) 其中 P(o1,o2,o3,...|s1,s2,s3....) 表示某句话 s1,s2,s3...被读成 o1,o2,o3,...的可能性, 而 P(s1,s2,s3,...) 表示字串 s1,s2,s3,...本身能够成为一个合乎情理的句子的可能性,所以这个公式的意义是用发送信号为 s1,s2,s3...这个数列的可能性乘以 s1,s2,s3.. 本身可以一个句子的可能性,得出概率。 这里,s1,s2,s3...本身可以一个句子的可能性其实就取决于参数 λ ,也就是语言模型。所以简而言之就是发出的语音信号取决于背后实际想发出的句子,而背后实际想发出的句子本身的独立先验概率又取决于语言模型。 7. 贝叶斯网络 吴军已经对贝叶斯网络作了科普,请直接跳转到 这里 。更详细的理论参考所有机器学习的书上都有。 参考资料: 一堆机器学习,一堆概率统计,一堆 Google ,和一堆 Wikipedia 条目,一堆 paper 。 本文转载自: http://blog.csdn.net/pongba/article/details/2958094
个人分类: MachineLearning|2051 次阅读|0 个评论
再说 贝叶斯网、马尔科夫随机场
热度 2 justinzhao 2011-8-11 15:20
概述 贝叶斯网(directed acyclic graph), MRF( undirected graph)是两种重要的概率图模型,在日益网络化的世界里,它们能对众多事物、现象合理建模,包括:社交网络(facebook, twitter)、交通网络(transportation,travel,network design)、医疗诊断等等,Russell还用它建立全球的crust vibration network, 用以分析预测 核武器生产地、地震。从马克思哲学的角度讲,运 动着的物质世界是普遍联系和永恒发展的,这种联系正是可以用图模型来模拟,而发展便是图模型的inference,看来Bayesian Network, MRF确实是广泛、客观存在的规律。从计算机视觉、机器学习专业领域来看,它更有着广泛的应用、很大的research community。 Equivalence of Joint Distribution and Graph 本质上来讲,用graphical model解决一个问题,首先是要知道变量间的独立关系(independency among variables),这样才便于建立图(I-Map)。需要说明的是,无论是bayesian network,还是MRF,他们的定义是(P,G),也就是同时定义概率和图,在joint distribution 严格 positive的情况下,联合分布和图是等价的:图是联合分布的I-Map,联合分布也能factorize over the graph。另外,对于贝叶斯图,概率分布在图上的factorization的定义很简单,而对于MRF,factoriztion的定义是:Joint distribution中每个factor都是图H的complete subgraph。注意了: complete subgraph并不是 maximal clique,也就是,如果我们建立的图模型中,每三个变量组成一个clique,这时,与这个图结构compatible的joint distribution完全可以是pairwise的clique potentials相乘而得到的。不过如果我们建立的图结构是每3个variable组成一个clique,我们会随之而建立 tri-order clique potentials相乘的gibbs distribution, 而不是 pairwise Markov models. Drawback 从机器学习的角度来讲,MRF和bayesian network都是parametric methods,他们最大的弊病是对模型要假设,然后训练模型参数;to one extreme, 模型完全符合实际,这样当然很好的解决了问题;to another extreme,先验模型is problematic,now we actually deviate from original problems. 所以William Freeman(MIT)写了一篇文章,用MRF求立体视差,能量低并不代表disparity map is closer to ground truth.换言之,MRF model contructed is not compabible with truth.这个问题怎么解决? introduction of kernal will work? 下面推荐三篇paper: 1. Comparison of graph cuts with belief propagation for stereo, using identical MRF parameters , 2003, Tappen 2. Robust higher order potentials for enforcing label consistency , 2009, P. Kohli 3. An application of markov random fields to range sensing , 2006, J. Diebel
个人分类: 读书日记|11878 次阅读|2 个评论
贝叶斯概率(摘)
uncertworld 2010-11-24 16:33
概率也可以更广义地用来描述未涉及随机变量的命题的置信度。...如果置信度满足一组称作Cox公理(Cox,1946)的简单的一致性规则,它们就可以被映射为概率。因此,概率可以用来描述假设,也可以描述这些假设后所能做的推理。概率的法则保证:如果两个人做同样的假设,得到相同的数据,那么他们就会得到同样的结论。更广义地使用概率来量化置信则被称为贝叶斯观点。它也称作概率的主观解释,因为概率取决于假设。支持采用贝叶斯方法进行数据建模和模式识别的人不认为这种主观性是一种缺陷,因为在他们看来, 不做假设就无法进行推理。 摘自:MackayD.Informationtheory,inference,andlearningalgorithms .CambridgeUniversityPress,2003,信息论、推理与学习算法,肖明波 译,2006.
个人分类: 科研笔记|2050 次阅读|0 个评论
[转载]数学之美番外篇:平凡而又神奇的贝叶斯方法[ZZ]
timy 2010-1-28 12:45
From: http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ 概率论只不过是把常识用数学公式表达了出来。 拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计。我心想,一个方法能够专门写出一本书来,肯定很牛逼。后来,我发现当初的那个朴素归纳推理成立了这果然是个牛逼的方法。 题记 目录 0.前言 1.历史 1.1一个例子:自然语言的二义性 1.2贝叶斯公式 2.拼写纠正 3.模型比较与贝叶斯奥卡姆剃刀 3.1再访拼写纠正 3.2模型比较理论(ModelComparasion)与贝叶斯奥卡姆剃刀(BayesianOccamsRazor) 3.3最小描述长度原则 3.4最优贝叶斯推理 4.无处不在的贝叶斯 4.1中文分词 4.2统计机器翻译 4.3贝叶斯图像识别,AnalysisbySynthesis 4.4EM算法与基于模型的聚类 4.5最大似然与最小二乘 5.朴素贝叶斯方法(又名愚蠢者的贝叶斯(idiotsbayes)) 5.1垃圾邮件过滤器 5.2为什么朴素贝叶斯方法令人诧异地好一个理论解释 6.层级贝叶斯模型 6.1隐马可夫模型(HMM) 7.贝叶斯网络 0. 前言 这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子。更严格的公式和计算我会在相应的地方注明参考资料。贝叶斯方法被证明是非常general且强大的推理框架,文中你会看到很多有趣的应用。 1. 历史 托马斯贝叶斯(ThomasBayes)同学的详细生平在这里。以下摘一段wikipedia上的简介: 所谓的贝叶斯方法源于他生前为解决一个逆概问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算正向概率,如假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大。而一个自然而然的问题是反过来:如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测。这个问题,就是所谓的逆概问题。 实际上,贝叶斯当时的论文只是对这个问题的一个直接的求解尝试,并不清楚他当时是不是已经意识到这里面包含着的深刻的思想。然而后来,贝叶斯方法席卷了概率论,并将应用延伸到各个问题领域,所有需要作出概率预测的地方都可以见到贝叶斯方法的影子,特别地,贝叶斯是机器学习的核心方法之一。这背后的深刻原因在于,现实世界本身就是不确定的,人类的观察能力是有局限性的(否则有很大一部分科学就没有必要做了设想我们能够直接观察到电子的运行,还需要对原子模型争吵不休吗?),我们日常所观察到的只是事物表面上的结果,沿用刚才那个袋子里面取球的比方,我们往往只能知道从里面取出来的球是什么颜色,而并不能直接看到袋子里面实际的情况。这个时候,我们就需要提供一个猜测(hypothesis,更为严格的说法是假设,这里用猜测更通俗易懂一点),所谓猜测,当然就是不确定的(很可能有好多种乃至无数种猜测都能满足目前的观测), 但也绝对不是两眼一抹黑瞎蒙具体地说,我们需要做两件事情:1.算出各种不同猜测的可能性大小。2.算出最靠谱的猜测是什么。第一个就是计算特定猜测的后验概率,对于连续的猜测空间则是计算猜测的概率密度函数。第二个则是所谓的模型比较,模型比较如果不考虑先验概率的话就是最大似然方法。 1.1 一个例子:自然语言的二义性 下面举一个自然语言的不确定性的例子。当你看到这句话: Thegirlsawtheboywithatelescope. 你对这句话的含义有什么猜测?平常人肯定会说:那个女孩拿望远镜看见了那个男孩(即你对这个句子背后的实际语法结构的猜测是:Thegirlsaw-with-a-telescopetheboy)。然而,仔细一想,你会发现这个句子完全可以解释成:那个女孩看见了那个拿着望远镜的男孩(即:Thegirlsawthe-boy-with-a-telescope)。那为什么平常生活中我们每个人都能够迅速地对这种二义性进行消解呢?这背后到底隐藏着什么样的思维法则?我们留到后面解释。 1.2 贝叶斯公式 贝叶斯公式是怎么来的? 我们还是使用wikipedia上的一个例子: 一所学校里面有60%的男生,40%的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。有了这些信息之后我们可以容易地计算随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大,这个就是前面说的正向概率的计算。然而,假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗? 一些认知科学的研究表明(《决策与判断》以及《RationalityforMortals》第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)/ 。容易发现这里校园内人的总数是无关的,可以消去。于是得到 P(Girl|Pants)=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(B|A)=P(AB)/P(A) 其实这个就等于: P(B|A)*P(A)=P(AB) 难怪拉普拉斯说 概率论只是把常识用数学公式表达了出来 。 然而,后面我们会逐渐发现,看似这么平凡的贝叶斯公式,背后却隐含着非常深刻的原理。 2. 拼写纠正 经典著作《人工智能:现代方法》的作者之一PeterNorvig曾经写过一篇介绍如何写一个拼写检查/纠正器的文章(原文在这里,徐宥的翻译版在这里,这篇文章很深入浅出,强烈建议读一读),里面用到的就是贝叶斯方法,这里我们不打算复述他写的文章,而是简要地将其核心思想介绍一下。 首先,我们需要询问的是: 问题是什么? 问题是我们看到用户输入了一个不在字典中的单词,我们需要去猜测:这个家伙到底真正想输入的单词是什么呢?用刚才我们形式化的语言来叙述就是,我们需要求: P( 我们猜测他想输入的单词|他实际输入的单词) 这个概率。并找出那个使得这个概率最大的猜测单词。显然,我们的猜测未必是唯一的,就像前面举的那个自然语言的歧义性的例子一样;这里,比如用户输入:thew,那么他到底是想输入the,还是想输入thaw?到底哪个猜测可能性更大呢?幸运的是我们可以用贝叶斯公式来直接出它们各自的概率,我们不妨将我们的多个猜测记为h1h2..(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) 对于不同的具体猜测h1h2h3..,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,单词里面就有充分的信息使得我们的大脑在常数时间内把可能性narrowdown到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在《InformationTheory:InferenceandLearningAlgorithms》里面就举了一个很好的例子:-13711你说是等差数列更有可能呢?还是-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经过你一不留神,手一抖就是一个误差出现了),所以如果过分去寻求能够完美解释观测数据的模型,就会落入所谓的数据过配(overfitting)的境地,一个过配的模型试图连误差(噪音)都去解释(而实际上噪音又是不需要解释的),显然就过犹不及了。所以P(D|h)大不代表你的h(猜测)就是更好的h。还要看P(h)是怎样的。所谓奥卡姆剃刀精神就是说:如果两个理论具有相似的解释力度,那么优先选择那个更简单的(往往也正是更平凡的,更少繁复的,更常见的)。 过分匹配的另一个原因在于当观测的结果并不是因为误差而显得不精确而是因为真实世界中对数据的结果产生贡献的因素太多太多,跟噪音不同,这些偏差是一些另外的因素集体贡献的结果,不是你的模型所能解释的噪音那是不需要解释一个现实的模型往往只提取出几个与结果相关度很高,很重要的因素(cause)。这个时候观察数据会倾向于围绕你的有限模型的预测结果呈正态分布,于是你实际观察到的结果就是这个正态分布的随机取样,这个取样很可能受到其余因素的影响偏离你的模型所预测的中心,这个时候便不能贪心不足地试图通过改变模型来完美匹配数据,因为那些使结果偏离你的预测的贡献因素不是你这个有限模型里面含有的因素所能概括的,硬要打肿脸充胖子只能导致不实际的模型,举个教科书例子:身高和体重的实际关系近似于一个二阶多项式的关系,但大家都知道并不是只有身高才会对体重产生影响,物理世界影响体重的因素太多太多了,有人身材高大却瘦得跟稻草,有人却是横长竖不长。但不可否认的是总体上来说,那些特殊情况越是特殊就越是稀少,呈围绕最普遍情况(胖瘦适中)的正态分布,这个分布就保证了我们的身高体重相关模型能够在大多数情况下做出靠谱的预测。但是刚才说了,特例是存在的,就算不是特例,人有胖瘦,密度也有大小,所以完美符合身高体重的某个假想的二阶多项式关系的人是不存在的,我们又不是欧几里德几何世界当中的理想多面体,所以,当我们对人群随机抽取了N个样本(数据点)试图对这N个数据点拟合出一个多项式的话就得注意,它肯定得是二阶多项式,我们要做的只是去根据数据点计算出多项式各项的参数(一个典型的方法就是最小二乘);它肯定不是直线(我们又不是稻草),也不是三阶多项式四阶多项式..如果硬要完美拟合N个点,你可能会整出一个N-1阶多项式来设想身高和体重的关系是5阶多项式看看? 3.2 模型比较理论(ModelComparasion)与贝叶斯奥卡姆剃刀(BayesianOccamsRazor) 实际上,模型比较就是去比较哪个模型(猜测)更可能隐藏在观察数据的背后。其基本思想前面已经用拼写纠正的例子来说明了。我们对用户实际想输入的单词的猜测就是模型,用户输错的单词就是观测数据。我们通过: P(h|D)P(h)*P(D|h) 来比较哪个模型最为靠谱。前面提到,光靠P(D|h)(即似然)是不够的,有时候还需要引入P(h)这个先验概率。奥卡姆剃刀就是说P(h)较大的模型有较大的优势,而最大似然则是说最符合观测数据的(即P(D|h)最大的)最有优势。整个模型比较就是这两方力量的拉锯。我们不妨再举一个简单的例子来说明这一精神:你随便找枚硬币,掷一下,观察一下结果。好,你观察到的结果要么是正,要么是反(不,不是少林足球那枚硬币:P),不妨假设你观察到的是正。现在你要去根据这个观测数据推断这枚硬币掷出正的概率是多大。根据最大似然估计的精神,我们应该猜测这枚硬币掷出正的概率是1,因为这个才是能最大化P(D|h)的那个猜测。然而每个人都会大摇其头很显然,你随机摸出一枚硬币这枚硬币居然没有反面的概率是不存在的,我们对一枚随机硬币是否一枚有偏硬币,偏了多少,是有着一个先验的认识的,这个认识就是绝大多数硬币都是基本公平的,偏得越多的硬币越少见(可以用一个beta分布来表达这一先验概率)。将这个先验正态分布p()(其中表示硬币掷出正面的比例,小写的p代表这是概率密度函数)结合到我们的问题中,我们便不是去最大化P(D|h),而是去最大化P(D|)*p(),显然=1是不行的,因为P(=1)为0,导致整个乘积也为0。实际上,只要对这个式子求一个导数就可以得到最值点。 以上说的是当我们知道先验概率P(h)的时候,光用最大似然是不靠谱的,因为最大似然的猜测可能先验概率非常小。然而,有些时候,我们对于先验概率一无所知,只能假设每种猜测的先验概率是均等的,这个时候就只有用最大似然了。实际上,统计学家和贝叶斯学家有一个有趣的争论,统计学家说:我们让数据自己说话。言下之意就是要摒弃先验概率。而贝叶斯支持者则说:数据会有各种各样的偏差,而一个靠谱的先验概率则可以对这些随机噪音做到健壮。事实证明贝叶斯派胜利了,胜利的关键在于所谓先验概率其实也是经验统计的结果,譬如为什么我们会认为绝大多数硬币是基本公平的?为什么我们认为大多数人的肥胖适中?为什么我们认为肤色是种族相关的,而体重则与种族无关?先验概率里面的先验并不是指先于一切经验,而是仅指先于我们当前给出的观测数据而已,在硬币的例子中先验指的只是先于我们知道投掷的结果这个经验,而并非先天。 然而,话说回来,有时候我们必须得承认,就算是基于以往的经验,我们手头的先验概率还是均匀分布,这个时候就必须依赖用最大似然,我们用前面留下的一个自然语言二义性问题来说明这一点: Thegirlsawtheboywithatelescope. 到底是Thegirlsaw-with-a-telescopetheboy这一语法结构,还是Thegirlsawthe-boy-with-a-telescope呢?两种语法结构的常见程度都差不多(你可能会觉得后一种语法结构的常见程度较低,这是事后偏见,你只需想想Thegirlsawtheboywithabook就知道了。当然,实际上从大规模语料统计结果来看后一种语法结构的确稍稍不常见一丁点,但是绝对不足以解释我们对第一种结构的强烈倾向)。那么到底为什么呢? 我们不妨先来看看MacKay在书中举的一个漂亮的例子: 图中有多少个箱子?特别地,那棵书后面是一个箱子?还是两个箱子?还是三个箱子?还是..你可能会觉得树后面肯定是一个箱子,但为什么不是两个呢?如下图: 很简单,你会说:要是真的有两个箱子那才怪了,怎么就那么巧这两个箱子刚刚好颜色相同,高度相同呢? 用概率论的语言来说,你刚才的话就翻译为:猜测h不成立,因为P(D|h)太小(太巧合)了。我们的直觉是:巧合(小概率)事件不会发生。所以当一个猜测(假设)使得我们的观测结果成为小概率事件的时候,我们就说才怪呢,哪能那么巧捏?! 现在我们可以回到那个自然语言二义性的例子,并给出一个完美的解释了:如果语法结构是Thegirlsawthe-boy-with-a-telecope的话,怎么那个男孩偏偏手里拿的就是望远镜一个可以被用来saw-with的东东捏?这也忒小概率了吧。他咋就不会拿本书呢?拿什么都好。怎么偏偏就拿了望远镜?所以唯一的解释是,这个巧合背后肯定有它的必然性,这个必然性就是,如果我们将语法结构解释为Thegirlsaw-with-a-telescopetheboy的话,就跟数据完美吻合了既然那个女孩是用某个东西去看这个男孩的,那么这个东西是一个望远镜就完全可以解释了(不再是小概率事件了)。 自然语言二义性很常见,譬如上文中的一句话: 参见《决策与判断》以及《RationalityforMortals》第12章:小孩也可以解决贝叶斯问题 就有二义性:到底是参见这两本书的第12章,还是仅仅是第二本书的第12章呢?如果是这两本书的第12章那就是咄咄怪事了,怎么恰好两本书都有第12章,都是讲同一个问题,更诡异的是,标题还相同呢? 注意,以上做的是似然估计(即只看P(D|h)的大小),不含先验概率。通过这两个例子,尤其是那个树后面的箱子的例子我们可以看到,似然估计里面也蕴含着奥卡姆剃刀:树后面的箱子数目越多,这个模型就越复杂。单个箱子的模型是最简单的。似然估计选择了更简单的模型。 这个就是所谓的 贝叶斯奥卡姆剃刀(BayesianOccamsRazor) ,因为这个剃刀工作在贝叶斯公式的似然(P(D|h))上,而不是模型本身(P(h))的先验概率上,后者是传统的奥卡姆剃刀。关于贝叶斯奥卡姆剃刀我们再来看一个前面说到的曲线拟合的例子:如果平面上有N个点,近似构成一条直线,但绝不精确地位于一条直线上。这时我们既可以用直线来拟合(模型1),也可以用二阶多项式(模型2)拟合,也可以用三阶多项式(模型3),..,特别地,用N-1阶多项式便能够保证肯定能完美通过N个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?前面提到,一个衡量的依据是奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。然而,我们其实并不需要依赖于这个先验的奥卡姆剃刀,因为有人可能会争辩说:你怎么就能说越高阶的多项式越不常见呢?我偏偏觉得所有阶多项式都是等可能的。好吧,既然如此那我们不妨就扔掉P(h)项,看看P(D|h)能告诉我们什么。我们注意到越是高阶的多项式,它的轨迹弯曲程度越是大,到了八九阶简直就是直上直下,于是我们不仅要问:一个比如说八阶多项式在平面上随机生成的一堆N个点偏偏恰好近似构成一条直线的概率(即P(D|h))有多大?太小太小了。反之,如果背后的模型是一条直线,那么根据该模型生成一堆近似构成直线的点的概率就大得多了。这就是贝叶斯奥卡姆剃刀。 这里只是提供一个关于贝叶斯奥卡姆剃刀的科普,强调直观解释,更多理论公式请参考MacKay的著作《InformationTheory:InferenceandLearningAlgorithms》第28章。 3.3 最小描述长度原则 贝叶斯模型比较理论与信息论有一个有趣的关联: P(h|D)P(h)*P(D|h) 两边求对数,将右式的乘积变成相加: lnP(h|D)lnP(h)+lnP(D|h) 显然,最大化P(h|D)也就是最大化lnP(h|D)。而lnP(h)+lnP(D|h)则可以解释为模型(或者称假设、猜测)h的编码长度加上在该模型下数据D的编码长度。使这个和最小的模型就是最佳模型。 而究竟如何定义一个模型的编码长度,以及数据在模型下的编码长度则是一个问题。更多可参考Mitchell的《MachineLearning》的6.6节,或Mackay的28.3节) 3.4 最优贝叶斯推理 所谓的推理,分为两个过程,第一步是对观测数据建立一个模型。第二步则是使用这个模型来推测未知现象发生的概率。我们前面都是讲的对于观测数据给出最靠谱的那个模型。然而很多时候,虽然某个模型是所有模型里面最靠谱的,但是别的模型也并不是一点机会都没有。譬如第一个模型在观测数据下的概率是0.5。第二个模型是0.4,第三个是0.1。如果我们只想知道对于观测数据哪个模型最可能,那么只要取第一个就行了,故事到此结束。然而很多时候我们建立模型是为了推测未知的事情的发生概率,这个时候,三个模型对未知的事情发生的概率都会有自己的预测,仅仅因为某一个模型概率稍大一点就只听他一个人的就太不民主了。所谓的最优贝叶斯推理就是将三个模型对于未知数据的预测结论加权平均起来(权值就是模型相应的概率)。显然,这个推理是理论上的制高点,无法再优了,因为它已经把所有可能性都考虑进去了。 只不过实际上我们是基本不会使用这个框架的,因为计算模型可能非常费时间,二来模型空间可能是连续的,即有无穷多个模型(这个时候需要计算模型的概率分布)。结果还是非常费时间。所以这个被看作是一个理论基准。 4. 无处不在的贝叶斯 以下我们再举一些实际例子来说明贝叶斯方法被运用的普遍性,这里主要集中在机器学习方面,因为我不是学经济的,否则还可以找到一堆经济学的例子。 4.1 中文分词 贝叶斯是机器学习的核心方法之一。比如中文分词领域就用到了贝叶斯。Google研究员吴军在《数学之美》系列中就有一篇是介绍中文分词的,这里只介绍一下核心的思想,不做赘述,详细请参考吴军的文章(这里)。 分词问题的描述为:给定一个句子(字串),如: 南京市长江大桥 如何对这个句子进行分词(词串)才是最靠谱的。例如: 1.南京市/长江大桥 2.南京/市长/江大桥 这两个分词,到底哪个更靠谱呢? 我们用贝叶斯公式来形式化地描述这个问题,令X为字串(句子),Y为词串(一种特定的分词假设)。我们就是需要寻找使得P(Y|X)最大的Y,使用一次贝叶斯可得: P(Y|X)P(Y)*P(X|Y) 用自然语言来说就是这种分词方式(词串)的可能性乘以这个词串生成我们的句子的可能性。我们进一步容易看到:可以近似地将P(X|Y)看作是恒等于1的,因为任意假想的一种分词方式之下生成我们的句子总是精准地生成的(只需把分词之间的分界符号扔掉即可)。于是,我们就变成了去最大化P(Y),也就是寻找一种分词使得这个词串(句子)的概率最大化。而如何计算一个词串: W1,W2,W3,W4.. 的可能性呢?我们知道,根据联合概率的公式展开:P(W1,W2,W3,W4..)=P(W1)*P(W2|W1)*P(W3|W2,W1)*P(W4|W1,W2,W3)*..于是我们可以通过一系列的条件概率(右式)的乘积来求整个联合概率。然而不幸的是随着条件数目的增加(P(Wn|Wn-1,Wn-2,..,W1)的条件有n-1个),数据稀疏问题也会越来越严重,即便语料库再大也无法统计出一个靠谱的P(Wn|Wn-1,Wn-2,..,W1)来。为了缓解这个问题,计算机科学家们一如既往地使用了天真假设:我们假设句子中一个词的出现概率只依赖于它前面的有限的k个词(k一般不超过3,如果只依赖于前面的一个词,就是2元语言模型(2-gram),同理有3-gram、4-gram等),这个就是所谓的有限地平线假设。虽然这个假设很傻很天真,但结果却表明它的结果往往是很好很强大的,后面要提到的朴素贝叶斯方法使用的假设跟这个精神上是完全一致的,我们会解释为什么像这样一个天真的假设能够得到强大的结果。目前我们只要知道,有了这个假设,刚才那个乘积就可以改写成:P(W1)*P(W2|W1)*P(W3|W2)*P(W4|W3)..(假设每个词只依赖于它前面的一个词)。而统计P(W2|W1)就不再受到数据稀疏问题的困扰了。对于我们上面提到的例子南京市长江大桥,如果按照自左到右的贪婪方法分词的话,结果就成了南京市长/江大桥。但如果按照贝叶斯分词的话(假设使用3-gram),由于南京市长和江大桥在语料库中一起出现的频率为0,这个整句的概率便会被判定为0。从而使得南京市/长江大桥这一分词方式胜出。 一点注记 :有人可能会疑惑,难道我们人类也是基于这些天真的假设来进行推理的?不是的。事实上,统计机器学习方法所统计的东西往往处于相当表层(shallow)的层面,在这个层面机器学习只能看到一些非常表面的现象,有一点科学研究的理念的人都知道:越是往表层去,世界就越是繁复多变。从机器学习的角度来说,特征(feature)就越多,成百上千维度都是可能的。特征一多,好了,高维诅咒就产生了,数据就稀疏得要命,不够用了。而我们人类的观察水平显然比机器学习的观察水平要更深入一些,为了避免数据稀疏我们不断地发明各种装置(最典型就是显微镜),来帮助我们直接深入到更深层的事物层面去观察更本质的联系,而不是在浅层对表面现象作统计归纳。举一个简单的例子,通过对大规模语料库的统计,机器学习可能会发现这样一个规律:所有的他都是不会穿bra的,所有的她则都是穿的。然而,作为一个男人,却完全无需进行任何统计学习,因为深层的规律就决定了我们根本不会去穿bra。至于机器学习能不能完成后者(像人类那样的)这个推理,则是人工智能领域的经典问题。至少在那之前,声称统计学习方法能够终结科学研究(原文)的说法是纯粹外行人说的话。 4.2 统计机器翻译 统计机器翻译因为其简单,自动(无需手动添加规则),迅速成为了机器翻译的事实标准。而统计机器翻译的核心算法也是使用的贝叶斯方法。 问题是什么?统计机器翻译的问题可以描述为:给定一个句子e,它的可能的外文翻译f中哪个是最靠谱的。即我们需要计算:P(f|e)。一旦出现条件概率贝叶斯总是挺身而出: P(f|e)P(f)*P(e|f) 这个式子的右端很容易解释:那些先验概率较高,并且更可能生成句子e的外文句子f将会胜出。我们只需简单统计(结合上面提到的N-Gram语言模型)就可以统计任意一个外文句子f的出现概率。然而P(e|f)却不是那么好求的,给定一个候选的外文局子f,它生成(或对应)句子e的概率是多大呢?我们需要定义什么叫对应,这里需要用到一个分词对齐的平行语料库,有兴趣的可以参考《FoundationsofStatisticalNaturalLanguageProcessing》第13章,这里摘选其中的一个例子:假设e为:JohnlovesMary。我们需要考察的首选f是:JeanaimeMarie(法文)。我们需要求出P(e|f)是多大,为此我们考虑e和f有多少种对齐的可能性,如: John(Jean)loves(aime)Marie(Mary) 就是其中的一种(最靠谱的)对齐,为什么要对齐,是因为一旦对齐了之后,就可以容易地计算在这个对齐之下的P(e|f)是多大,只需计算: P(John|Jean)*P(loves|aime)*P(Marie|Mary) 即可。 然后我们遍历所有的对齐方式,并将每种对齐方式之下的翻译概率求和。便可以获得整个的P(e|f)是多大。 一点注记 :还是那个问题:难道我们人类真的是用这种方式进行翻译的?highlyunlikely。这种计算复杂性非常高的东西连三位数乘法都搞不定的我们才不会笨到去使用呢。根据认知神经科学的认识,很可能我们是先从句子到语义(一个逐层往上(bottom-up)抽象的folding过程),然后从语义根据另一门语言的语法展开为另一门语言(一个逐层往下(top-down)的具体化unfolding过程)。如何可计算地实现这个过程,目前仍然是个难题。(我们看到很多地方都有bottom-up/top-down这样一个对称的过程,实际上有人猜测这正是生物神经网络原则上的运作方式,对视觉神经系统的研究尤其证明了这一点,Hawkins在《OnIntelligence》里面提出了一种HTM(HierarchicalTemporalMemory)模型正是使用了这个原则。) 4.3 贝叶斯图像识别,AnalysisbySynthesis 贝叶斯方法是一个非常general的推理框架。其核心理念可以描述成:AnalysisbySynthesis(通过合成来分析)。06年的认知科学新进展上有一篇paper就是讲用贝叶斯推理来解释视觉识别的,一图胜千言,下图就是摘自这篇paper: 首先是视觉系统提取图形的边角特征,然后使用这些特征自底向上地激活高层的抽象概念(比如是E还是F还是等号),然后使用一个自顶向下的验证来比较到底哪个概念最佳地解释了观察到的图像。 4.4EM 算法与基于模型的聚类 聚类是一种无指导的机器学习问题,问题描述:给你一堆数据点,让你将它们最靠谱地分成一堆一堆的。聚类算法很多,不同的算法适应于不同的问题,这里仅介绍一个基于模型的聚类,该聚类算法对数据点的假设是,这些数据点分别是围绕K个核心的K个正态分布源所随机生成的,使用HanJiaWei的《DataMing:ConceptsandTechniques》中的图: 图中有两个正态分布核心,生成了大致两堆点。我们的聚类算法就是需要根据给出来的那些点,算出这两个正态分布的核心在什么位置,以及分布的参数是多少。这很明显又是一个贝叶斯问题,但这次不同的是,答案是连续的且有无穷多种可能性,更糟的是,只有当我们知道了哪些点属于同一个正态分布圈的时候才能够对这个分布的参数作出靠谱的预测,现在两堆点混在一块我们又不知道哪些点属于第一个正态分布,哪些属于第二个。反过来,只有当我们对分布的参数作出了靠谱的预测时候,才能知道到底哪些点属于第一个分布,那些点属于第二个分布。这就成了一个先有鸡还是先有蛋的问题了。为了解决这个循环依赖,总有一方要先打破僵局,说,不管了,我先随便整一个值出来,看你怎么变,然后我再根据你的变化调整我的变化,然后如此迭代着不断互相推导,最终收敛到一个解。这就是EM算法。 EM的意思是Expectation-Maximazation,在这个聚类问题里面,我们是先随便猜一下这两个正态分布的参数:如核心在什么地方,方差是多少。然后计算出每个数据点更可能属于第一个还是第二个正态分布圈,这个是属于Expectation一步。有了每个数据点的归属,我们就可以根据属于第一个分布的数据点来重新评估第一个分布的参数(从蛋再回到鸡),这个是Maximazation。如此往复,直到参数基本不再发生变化为止。这个迭代收敛过程中的贝叶斯方法在第二步,根据数据点求分布的参数上面。 4.5 最大似然与最小二乘 学过线性代数的大概都知道经典的最小二乘方法来做线性回归。问题描述是:给定平面上N个点,(这里不妨假设我们想用一条直线来拟合这些点回归可以看作是拟合的特例,即允许误差的拟合),找出一条最佳描述了这些点的直线。 一个接踵而来的问题就是,我们如何定义最佳?我们设每个点的坐标为(Xi,Yi)。如果直线为y=f(x)。那么(Xi,Yi)跟直线对这个点的预测:(Xi,f(Xi))就相差了一个Yi=|Yif(Xi)|。最小二乘就是说寻找直线使得(Y1)^2+(Y2)^2+..(即误差的平方和)最小,至于为什么是误差的平方和而不是误差的绝对值和,统计学上也没有什么好的解释。然而贝叶斯方法却能对此提供一个完美的解释。 我们假设直线对于坐标Xi给出的预测f(Xi)是最靠谱的预测,所有纵坐标偏离f(Xi)的那些数据点都含有噪音,是噪音使得它们偏离了完美的一条直线,一个合理的假设就是偏离路线越远的概率越小,具体小多少,可以用一个正态分布曲线来模拟,这个分布曲线以直线对Xi给出的预测f(Xi)为中心,实际纵坐标为Yi的点(Xi,Yi)发生的概率就正比于EXP 。(EXP(..)代表以常数e为底的多少次方)。 现在我们回到问题的贝叶斯方面,我们要想最大化的后验概率是: P(h|D)P(h)*P(D|h) 又见贝叶斯!这里h就是指一条特定的直线,D就是指这N个数据点。我们需要寻找一条直线h使得P(h)*P(D|h)最大。很显然,P(h)这个先验概率是均匀的,因为哪条直线也不比另一条更优越。所以我们只需要看P(D|h)这一项,这一项是指这条直线生成这些数据点的概率,刚才说过了,生成数据点(Xi,Yi)的概率为EXP 乘以一个常数。而P(D|h)=P(d1|h)*P(d2|h)*..即假设各个数据点是独立生成的,所以可以把每个概率乘起来。于是生成N个数据点的概率为EXP *EXP *EXP *..=EXP {- }最大化这个概率就是要最小化(Y1)^2+(Y2)^2+(Y3)^2+..。熟悉这个式子吗? 5. 朴素贝叶斯方法 朴素贝叶斯方法是一个很特别的方法,所以值得介绍一下。我们用朴素贝叶斯在垃圾邮件过滤中的应用来举例说明。 5.1 贝叶斯垃圾邮件过滤器 问题是什么?问题是,给定一封邮件,判定它是否属于垃圾邮件。按照先例,我们还是用D来表示这封邮件,注意D由N个单词组成。我们用h+来表示垃圾邮件,h-表示正常邮件。问题可以形式化地描述为求: P(h+|D)=P(h+)*P(D|h+)/P(D) P(h-|D)=P(h-)*P(D|h-)/P(D) 其中P(h+)和P(h-)这两个先验概率都是很容易求出来的,只需要计算一个邮件库里面垃圾邮件和正常邮件的比例就行了。然而P(D|h+)却不容易求,因为D里面含有N个单词d1,d2,d3,..,所以P(D|h+)=P(d1,d2,..,dn|h+)。我们又一次遇到了数据稀疏性,为什么这么说呢?P(d1,d2,..,dn|h+)就是说在垃圾邮件当中出现跟我们目前这封邮件一模一样的一封邮件的概率是多大!开玩笑,每封邮件都是不同的,世界上有无穷多封邮件。瞧,这就是数据稀疏性,因为可以肯定地说,你收集的训练数据库不管里面含了多少封邮件,也不可能找出一封跟目前这封一模一样的。结果呢?我们又该如何来计算P(d1,d2,..,dn|h+)呢? 我们将P(d1,d2,..,dn|h+)扩展为:P(d1|h+)*P(d2|d1,h+)*P(d3|d2,d1,h+)*..。熟悉这个式子吗?这里我们会使用一个更激进的假设,我们假设di与di-1是完全条件无关的,于是式子就简化为P(d1|h+)*P(d2|h+)*P(d3|h+)*..。这个就是所谓的条件独立假设,也正是朴素贝叶斯方法的朴素之处。而计算P(d1|h+)*P(d2|h+)*P(d3|h+)*..就太简单了,只要统计di这个单词在垃圾邮件中出现的频率即可。关于贝叶斯垃圾邮件过滤更多的内容可以参考这个条目,注意其中提到的其他资料。 一点注记 :这里,为什么有这个数据稀疏问题,还是因为统计学习方法工作在浅层面,世界上的单词就算不再变多也是非常之多的,单词之间组成的句子也是变化多端,更不用说一篇文章了,文章数目则是无穷的,所以在这个层面作统计,肯定要被数据稀疏性困扰。我们要注意,虽然句子和文章的数目是无限的,然而就拿邮件来说,如果我们只关心邮件中句子的语义(进而更高抽象层面的意图(语义,意图如何可计算地定义出来是一个人工智能问题),在这个层面上可能性便大大缩减了,我们关心的抽象层面越高,可能性越小。单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。神经科学的发现也表明大脑的皮层大致有一种层级结构,对应着越来越抽象的各个层面,至于如何具体实现一个可放在计算机内的大脑皮层,仍然是一个未解决问题,以上只是一个原则(principle)上的认识,只有当computational的cortex模型被建立起来了之后才可能将其放入电脑。 5.2 为什么朴素贝叶斯方法令人诧异地好一个理论解释 朴素贝叶斯方法的条件独立假设看上去很傻很天真,为什么结果却很好很强大呢?就拿一个句子来说,我们怎么能鲁莽地声称其中任意一个单词出现的概率只受到它前面的3个或4个单词的影响呢?别说3个,有时候一个单词的概率受到上一句话的影响都是绝对可能的。那么为什么这个假设在实际中的表现却不比决策树差呢?有人对此提出了一个理论解释,并且建立了什么时候朴素贝叶斯的效果能够等价于非朴素贝叶斯的充要条件,这个解释的核心就是:有些独立假设在各个分类之间的分布都是均匀的所以对于似然的相对大小不产生影响;即便不是如此,也有很大的可能性各个独立假设所产生的消极影响或积极影响互相抵消,最终导致结果受到的影响不大。具体的数学公式请参考这篇paper。 6. 层级贝叶斯模型 层级贝叶斯模型是现代贝叶斯方法的标志性建筑之一。前面讲的贝叶斯,都是在同一个事物层次上的各个因素之间进行统计推理,然而层次贝叶斯模型在哲学上更深入了一层,将这些因素背后的因素(原因的原因,原因的原因,以此类推)囊括进来。一个教科书例子是:如果你手头有N枚硬币,它们是同一个工厂铸出来的,你把每一枚硬币掷出一个结果,然后基于这N个结果对这N个硬币的(出现正面的比例)进行推理。如果根据最大似然,每个硬币的不是1就是0(这个前面提到过的),然而我们又知道每个硬币的p()是有一个先验概率的,也许是一个beta分布。也就是说,每个硬币的实际投掷结果Xi服从以为中心的正态分布,而又服从另一个以为中心的beta分布。层层因果关系就体现出来了。进而还可能依赖于因果链上更上层的因素,以此类推。 6.1 隐马可夫模型(HMM) 吴军在数学之美系列里面介绍的隐马可夫模型(HMM)就是一个简单的层级贝叶斯模型: 那么怎么根据接收到的信息来推测说话者想表达的意思呢?我们可以利用叫做隐含马尔可夫模型(HiddenMarkovModel)来解决这些问题。以语音识别为例,当我们观测到语音信号o1,o2,o3时,我们要根据这组信号推测出发送的句子s1,s2,s3。显然,我们应该在所有可能的句子中找最有可能性的一个。用数学语言来描述,就是在已知o1,o2,o3,的情况下,求使得条件概率P(s1,s2,s3,|o1,o2,o3.)达到最大值的那个句子s1,s2,s3, 吴军的文章中这里省掉没说的是,s1,s2,s3,..这个句子的生成概率同时又取决于一组参数,这组参数决定了s1,s2,s3,..这个马可夫链的先验生成概率。如果我们将这组参数记为,我们实际上要求的是:P(S|O,)(其中O表示o1,o2,o3,..,S表示s1,s2,s3,..) 当然,上面的概率不容易直接求出,于是我们可以间接地计算它。利用贝叶斯公式并且省掉一个常数项,可以把上述公式等价变换成 P(o1,o2,o3,|s1,s2,s3.)*P(s1,s2,s3,) 其中 P(o1,o2,o3,|s1,s2,s3.)表示某句话s1,s2,s3被读成o1,o2,o3,的可能性,而P(s1,s2,s3,)表示字串s1,s2,s3,本身能够成为一个合乎情理的句子的可能性,所以这个公式的意义是用发送信号为s1,s2,s3这个数列的可能性乘以s1,s2,s3..本身可以一个句子的可能性,得出概率。 这里,s1,s2,s3本身可以一个句子的可能性其实就取决于参数,也就是语言模型。所以简而言之就是发出的语音信号取决于背后实际想发出的句子,而背后实际想发出的句子本身的独立先验概率又取决于语言模型。 7. 贝叶斯网络 吴军已经对贝叶斯网络作了科普,请直接跳转到这里。更详细的理论参考所有机器学习的书上都有。 参考资料 一堆机器学习,一堆概率统计,一堆Google,和一堆Wikipedia条目,一堆paper。 部分书籍参考《机器学习与人工智能资源导引》。
个人分类: 机器学习|3543 次阅读|0 个评论
频度与贝叶斯――白猫黑猫?(修正版)
热度 1 chuchj 2009-5-1 21:57
频度与贝叶斯――白猫黑猫?(修正版) 储诚进 兰州大学 以下所记,只是自己在学习贝叶斯期间的灵光闪现的心得与感受,混杂了频度统计与贝叶斯统计,或对或错,故放亮你的眼睛,呵呵。侧重于粗略的线条,具体细节未述。 主要从下面几个方面,大概的介绍相关的东东:一般认识;点估计;区间估计;模型选择;等级(层次)贝叶斯模型;MCMC。 1. 一般认识 贝叶斯理论的基础是什么?据传18世纪英国一个名为Bayes的家伙在摆弄条件概率公式时发现,该公式具有完美的对称性。大家还记得那个公式吗?不记得没关系,它就在下面 P(C and D)=P(C|D)P(D) (1) 也可以写成 P(C and D)=P(D|C)P(C) (2) 对称不?对称!把公式(1)和(2)放到一起 P(D|C)=P(C|D)P(D)/P(C)(3) 把D 想象成参数或者模型,C 想象成你所得的实验数据,发现什么了没?P(C|D)就成了似然函数,即在 D 这个模型为真或者说在 D 参数的情况下,能得到数据 C 的可能性。同样,P(D|C)就可以说成:在当前的数据条件下,得到模型为真的概率,或者说取得参数数值为D 的概率。好了,我们现在把公式(3)抽象以下,转化为贝叶斯术语 posterior-prior + data 当前的实验数据(data)更新了你现有的对某方面的认识(prior),从而达到一个更高的水平(posterior);如此循环往复,不断接近事实(但你永远都不知道你是否真的就到达事实了)。 这就是基础知识,简单不?简单! 另外,贝叶斯对先验和后验都是以概率分布的形式给出。 2. 点估计 点估计实际上应该是频度统计里的概念,但无所谓了,知道是怎么回事就成,呵呵。等等,继续之前,我先申明一句:统计到底是干什么的?大部分的情况是从样本来对总体进行估计!因为绝大部分情况下,你是不可能得到总体的,我们所能做的,只是从总体中抽样。既然是估计,就存在着估计的准确性的问题,就会存在着误差。点估计是怎么回事呢?比如从样本中(实验)估计平均出平均水平:某种树木的平均高度、世界上男人的平均寿命、女人的平均寿命等等(注意了,我们不可能对所有的某种树木比如油松都进行测量,我们也不可能汇总世界上所有男人女人的年龄来计算平均寿命,我们只是在取样)。除了平均值,另外一个常见的点估计就是方差估计。平均值说的是平均状态,而方差表明的是与平均状态的偏离程度。 正如我们之前说到的,估计是存在着不确定性的,所以单纯的点估计毫无意义(纯粹的)。必须把与其挥之不去的不确定性给出来,这就是区间估计,下一节的内容。那么贝叶斯的点估计和频度的点估计有什么区别呢?记住一点就可以了:频度估计给出的是最可能的值,而贝叶斯给出的是平均值。为什么说频度的是最可能的值呢?转下节。 3. 区间估计 在频度统计里,有不同的方法可以得到区间估计。但意义是一样的:因为是对总体的估计,所以要给出一个范围,以免太绝对,太自信。在频度统计中,最基本也是最核心的就是似然函数(其实贝叶斯也是),最常用就是最大似然估计(MLE)和似然比例检验(LRT)。仔细读最大似然估计,看出来了没,是最大似然,说明是使取得当前数据的可能性最大的参数值。这也是上面我们说频度统计的点估计得到的是最可能的值。 贝叶斯统计同样用到似然函数,但没有MLE和LRT,贝叶斯里的似然函数的作用是抽提你的实验数据里的信息,可以说用其校正你当前对某方面的认识;这也是数据进入的唯一的途径。得到的结果是参数的一个概率分布,能从中得到平均值与区间估计。 在无先验信息的情况下,频度与贝叶斯方法得到的点估计和区间估计在数值上没有什么本质的区别,大家都差不多。所以用谁也无所谓。有人可能要说了,我频度得到的平均值是5,贝叶斯得到的是4.5,那哪个对?都对都不对!真值我们永远都不知道,所以说5可以,说4.5也可以;但二者毕竟又都不是真值,所以又都不对。 4. 假说检验与模型选择 在这之前,先闲话两句我们大家熟悉的不能再熟悉的神奇的 p 值。 p 貌似是统计泰斗Fisher造出来的,也是随意而为之,Fisher本身可能也没想到其即兴之 p 却有如此大的影响力。这也反应了统计的一个无奈的地方:总得找个标准来衡量我们的实验吧。频度统计在一定程度上是在攻击纸老虎:先竖一个无效假说,通过实验来验证在这个无效假说的情况下能否得到当前数据(这一点肯定有异议,对此我保留意见)。但凡有处理的(比如施肥),一般都会有效果,一般都能够拒绝无效假说而接受备择假说。也就是说,频度统计的力不是直接作用在处理上,而是转了个弯,打在了这个纸老虎上面,通过否定纸老虎来肯定备择假说。 频度的假说检验就是通过 p 来实现的,这里用到了之前提到的LRT。详细的就不说了。(贝叶斯实质上应该说没有假说检验,有的只是模型选择)。频度的模型选择一般用的是AIC指标,而贝叶斯的是DIC(BIC)。贝叶斯另外一个选择标准是通过预测分布来实现的:结合后验分布和数据。关于模型选择,贝叶斯理论还没有一个大家都能接受的指标来衡量,不同的指标各有优缺点。换句话说,还在发展之中。 频度假说检验的不足的地方在于不好处理多于两个选择的情况下,而贝叶斯则无所谓,多少个假说,其都能给出一个概率值,而且其不限于嵌套假说。 除了模型选择之外(选择),另外一个就模型的平均化(不是非此即彼,而是大家都来,中和一下)。 5. 等级贝叶斯 终于说到贝叶斯方法的强项了。等级、多层次的模型是贝叶斯为我所喜爱的最大的原因(实际上,等级或者说层次模型不限于贝叶斯统计,频度统计里的等级模型的历史更加悠久,相关的文献更加丰富,比如重复测量的方差分析、时间序列分析等;只是贝叶斯的框架更加直观,更加流畅)。在同一个模型中,你可以考虑群落水平、种群水平和个体水平,这不,层次不就出来了吗?能包含多种不同的不确定性,能包含测量误差(这家伙非常重要,特别是在种群观察方面,比如鸟类,鱼类,你是数不明白到底有多少的),包含个体的异质性。同时,它能综合不同来源的数据。能够包容差不多一切。 等级贝叶斯的经典结构:三部曲――数据模型、过程模型与参数模型(超参数模型)。这差不多是所有贝叶斯等级模型的基础。所有这三部分都可以以概率的形式给出,即三部分都可以包含进不确定性。 举几个生态学上的应用:1) 如何估计一棵树的种子数目?难住你了吧。你总不能把所有的树都砍倒,一粒一粒的数吧。Clark(duke的环境学院的教授)结合种子雨数据与观察到的树的成熟状态可以估计; 2) 测度物种分布,记得是Gelfand(duke统计系的头头)做的;3) 种群的时间序列分析,采用state space model;4) 生态群落的高维度共存,Clark做的。 6. MCMC 贝叶斯分析如何得到后验概率分布?这是最核心的内容。怎么得到?对于简单的贝叶斯分析,一般都能直接得到后验分布的(通过设置似然和先验共轭)。对于等级模型就有一些复杂。等级模型里面会涉及到很到的参数(绝大部分参数都是没有实际用处的,估计它们是为了得到你所感兴趣的参数),参数与参数之间是彼此相关的,无法直接得到某个参数的概率分布。怎么办?MCMC!马尔科夫链蒙特卡罗。参数之间彼此相关也可说成是彼此条件独立,这一点很重要,通过条件独立,可以为一些参数写出条件后验分布(共轭的),通过Gibbs取样得到链;对于不能写出条件后验的,就通过Metropolis-Hastings(或Metropolis,或其他的)得到链。总之,我们总是可以得到我们想要的。 以上大概的对贝叶斯和频度作了个比较。说了好多贝叶斯的好处,下面搜罗搜罗它的缺点: 1. 先验 这是贝叶斯受到诟病最多的。把主观的东西考虑进统计模型,合理吗?不合理吗? 2. 收敛性 MCMC常常要经过很长的时间很多的步骤才能收敛,如何判断收敛了是一个很大的问题。你能信任和想象比如说模拟了200万步得到的结果吗? 3. 软件 用贝叶斯的人比频度的人相对来说要少很多,所以相应的软件也比较少。BUGS系列在推广贝叶斯的使用方面功不可没。建议使用BUGS与R结合,BUGS对于构建贝叶斯模型是很方便的,而R可以很好的把你的结果呈现出来。当然了,牛人一般都是用R自己写,一个模型几百几千行。用BUGS的另外一个好处是:软件相对成熟,出错误的可能性要小一些。自己写的往往有bug存在其中(之前在一个大牛的code里就找出了一个bug)。此外,R里现在有越来越多的包都实现了贝叶斯方法,但总体感觉不太好用,做一个东西有时要找很多个不同的包。 4. 通用性 由于熟悉贝叶斯的人不多,故在写文章、作报告时需要详细的解释很多东西,比如说什么是先验,什么是后验,后验是怎么得到的,先验的分布,初始值是如何选择的,取样器是如何构建的。。。所以,你会发现,用贝叶斯写得的文章一般都比较长。没办法,因为要发表,总得让人看懂吧。而频度统计的就简单多了,你只要说我采用的是方差分析,别人就知道是怎么回事了,用不着解释。 最后一句,不,是两句: 1. 实用就好,不管是频度还是贝叶斯,不管是用BUGS还是自己写程序,能解决你的问题的就是好家伙; 2. 想法第一,软件第二。没有想法,把软件学得顶呱呱、呱呱叫也没有用。软件是用来解决问题的,不要本末倒置。 备注: 非常感谢许多认识和不认识的朋友提出的很多很有建设性的建议,让我学到了很多,也再一次证实了知识无止境这句话。自己学到的还仅是皮毛。
个人分类: 生活点滴|12362 次阅读|4 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-1 18:04

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部