小土人 的个人资料土人的自语照片日志列表 工具 帮助

土人的自语

土人独自在山上,忍不住自言自语:要有光
写在前面的话
记录在blog上的观点都是未经考证的,非正式的不成熟的观点。只是对很多事情产生的想法的记录而已,我希望将来能有机会去考证,但目前只能先记录下来。 所以虽然我常常言之凿凿,其实我心里并不特别有底。仔细想想的话,我所关注的命题,其实都是古典时代起就一直被人关注且早有人反复断言的,毫无新意可言。但这并不妨碍我以自己的方式做再一次的诠释。人总是容易忘了自己是如何长大的,如何改变自己的思想的。我现在要做的就是对我年轻时代的世界观和方法论的记录。任何具体的观点,在以后也许都会改变,重要的是我希望能追 踪自己思想发展的轨迹。

12月9日

转载节选:用数学模拟认知过程

我曾经常常这样一个问题:比如上面这幅简笔画,明明只是几根简单的线条,为什么人看到它的时候,都会无一例外地把它理解成一个倒立的卡通人,有五官和四肢,还有欢快的微笑。
为什么没有人把它仅仅朴素地理解成几根黑线条呢?
创作者留下的隐隐线索,加上观察者强大的想象力,最终还原出了创作者的本来意图。这个过程很有趣。
这个过程,实际上就是人类学习和认知世界的过程。当我们出生的时候,我们并不会一个单词,我们的脑子里并没有一个数据库,为“桌子”这个词和四条腿的东西之间建立映射关系。但随着生活经验的积累,我们发现“桌子”这个词和一种四条腿的东西,几乎总是同时出现的。于是我们的大脑就为这两个东西之间创建了联系,于是我们学会了“桌子” = 一种四条腿的东西。
换句话说,是我们脑子里的一种认知机制,通过逐渐修正,最终建立了属于自己的词汇表。这个过程大体上,是这样的:

一部分线索 + 反向推理机制 => 我们对世界的认知

经验表明,线索多一些,认识的结果常更准确一些。所以我猜测,没见过卡通画的原始人,也许无法把上面的简笔画想象成一个倒立的人。

人类的具体认知过程,显然是心理学的范畴。不过由于现阶段心理学还远未到科学阶段,所以暂不深入讨论。但对那些妄图到达上帝高度的异端们来说,用机器模拟这个过程,达到同样的效果,显然更有趣。这个领域通常叫机器学习,下面转载的这篇文章有很好的介绍。
(感谢作者写的足够深入浅出,让我这样数学基础薄弱的人也基本看懂了)


节选:数学之美番外篇:平凡而又神奇的贝叶斯方法

概率论只不过是把常识用数学公式表达了出来。

——拉普拉斯

记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计。我心想,一个方法能够专门写出一本书来,肯定很牛逼。后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法。

——题记

目录

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) / [U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)] 。容易发现这里校园内人的总数是无关的,可以消去。于是得到

P(Girl|Pants) = P(Girl) * P(Pants|Girl) / [P(Boy) * P(Pants|Boy) + P(Girl) * P(Pants|Girl)]

注意,如果把上式收缩起来,分母其实就是 P(Pants) ,分子其实就是 P(Pants, Girl) 。而这个比例很自然地就读作:在穿长裤的人( P(Pants) )里面有多少(穿长裤)的女孩( P(Pants, Girl) )。

上式中的 Pants 和 Boy/Girl 可以指代一切东西,所以其一般形式就是:

P(B|A) = P(A|B) * P(B) / [P(A|B) * P(B) + P(A|~B) * P(~B) ]

收缩起来就是:

P(B|A) = P(AB) / P(A)

其实这个就等于:

P(B|A) * P(A) = P(AB)

难怪拉普拉斯说概率论只是把常识用数学公式表达了出来

然而,后面我们会逐渐发现,看似这么平凡的贝叶斯公式,背后却隐含着非常深刻的原理。

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 的关联提取。

....

原文链接:http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/

11月2日

猜火车

我曾经说过:人生就像坐火车,是一个漫长而有点无聊的过程。有时候在黑雨滂沱里逶迤辗转看不到一点风景,但有时候突然转出一个隧道,豁然开朗。
尽管我知道终点大约在哪里,却很难猜出下一站窗外的风景。 
-----
我坐在火车上看风景
看风景的人在窗外看我
明月装饰了我的车窗
我装饰了别人的梦
 
11月1日

读书笔记 --- 名可名,非常名

 
(原创插图,版权所有)
为了一个小老虎零钱袋,大雪纷飞的早晨,我在麦当劳看了路德维希.维特根斯坦的《逻辑哲学论》。
提到路德维希.维特根斯坦的人,都喜欢八卦一下他和希特勒的关系:其实除了同时出现在一张小学毕业照里,真没有什么其它关系。与希特勒命运多舛的愤青式成长历程不同的是,出生于欧洲TOP5豪门维特根斯坦家族的路德维希.维特根斯坦是及其幸运的,甚至简直是注定不凡的。不屑于豪门子弟的传统宿命,以及与生俱来的贵族式的使命感,使得这个幸运儿的人生历程更近于佛陀:
终其一生的迷茫、辗转反侧、涅槃和顿悟,使得其最终成为少数在人类瞎猫抓耗子的思想探索史中点燃一盏灯的人。
-----------------
上帝的管家
自古以来的哲学家,为哲学研究赋予了各种使命,比如通过逻辑推理为某个终极问题寻找确定的答案,或者为了其它学科寻找普适的方法论,或者为了给人类历史做预言。在这些目的下产生的哲学流派,千姿百态地解释着这个世界,并踌躇满志地对社会生活指手画脚。
唯独维特根斯坦慎重地指出:哲学的意义根本不在此,或者说立足于逻辑推理的哲学根本不足以承担这些使命。 哲学的意义仅在于为人类认知的对象划定范围。
打个比方的话,如果上帝是一个地主,整个世界是一个广袤的平原,都是上帝的领土。哲学的任务,就像地主的管家,负责将这个平原划分为一块一块的边界清晰的土地,再交给每个学科(佃户),去自行开垦。管家只负责划分边界和分配,并不应该参与开垦每块土地,更不应该对佃户的耕种方法越庖代俎。
简单地说:传统哲学家们总是自负盲目地以为哲学是万能的,是其它一切学科的总爸爸;但作者冷静地否定了这种观点。
这个观点是哲学史上非常重要的里程碑,我很赞赏这个观点。
 
名可名,非常名
由于我残存的那点可怜的数学知识,尤其是从未入门,早已忘却的离散数学,使得我不能从容地领略这本书里微妙的论证。但庆幸的是,这本书所讨论的主题,是我早已思考过的,正如作者开篇第一句所说: 也许只有那些自己已经思考过书中要表达的思想或者至少相类似思想的人,才能够理解这本书的内容。
《逻辑哲学论》最初的译名叫《名理论》,这是不准确但传神的意译。
这本书的研究内容,其实确实是我们那些2k多年前的老祖宗们讨论过的名理问题,甚至连结论也几乎一致:“ ... 凡是能够说的事情,都能够说清楚,而对于不能谈论的事情,就必须保持沉默 ... ”---维特根斯坦
这个主题,在我曾经的blog《符号语言的局限性》中,也阐述过。所不同的是,我们的老祖宗,以及我,使用的是文人式写意的语言去描绘。这种思维的传递简直只能是低效的和不准确的,所以传统文化只好又去强调得意忘象和顿悟。
而维特根斯坦的语言却是这样的: ...当我们从pvq和~p推出q时,命题形式“pvq”和“~p”之间的关系在这里就被标记法掩盖起来。但是,如果我们比如将“pvq”写成“p|q.|.p|q”,将“~p”写成“p|p”(p|q =  既非p也非q),那么其内部的关联就变得明显了...  ------维特根斯坦
当我第一次读到这样的句式时,我就感觉这简直就是一次从模拟信道到数字信道的升级,不由得为之赞叹。
 
这个世界上有太多书,是由不懂数学、不知道经济学为何的文人们写就的(比如培根的那些破烂伦理学)。每当看到这些书的时候,我就有这样的感觉:这些人显然找不到一种合适的表达工具来描述他们希望表达的东西,所以只好用一些似是而非的语言来凑合为之。而这种文字描述,在传播和翻译过程中,又反复走样,最终往往连原作者也不忍相认。接着,不同的只言片语,又衍生出不同的派系,比如改革派和原教旨派,最终陷入旷日持久的口水战。
这就像一个不懂乐理的人,想表达一个绝妙的旋律,但却不会谱曲,只好借由哼哼的方式来表达。而人类的大部分知识,就是以这种哼哼的调调,再经由口口相传般的传播来传承的,大家也习以为常。
而这一回,传统上含混不清的哲学思维,却是用表达式精确地写就的,就像给思想画上了五线谱,这无疑是一个令人赞叹的巨大进步。
当然,他的哲学的使命,本身就是为了给思维打上五线谱。
数字信道才是王道啊。

讲一个笑话,悼念钱师哥

昨天钱师哥去世了,享年98。这算是喜丧,所以讲一个笑话,以示悼念。
------------------
地铁里滚动新闻说钱学森去世了。
旁边站着一对男女,男的说:噢?钱学森死了?
女的说:钱学森啊~ 噢,写围城的那个。围城还可以啊
然后男的欣然地点点头。
囧~
这件事最囧的部分是这样的:
尽管被雷的囧囧有神,但我依然假装面无表情地站在他们面前。不知道那个男的点头赞许,到底是不是违心的呢。
-------------------
PS:感想部分
钱学森的贡献毋庸置疑,平生有争议的主要有两件事:亩产万斤论和系统论。
亩产万斤这件事,严格说来是一个污点。但考虑到当时的历史环境,这只能算是一个普通人在特殊环境下都会做的不体面的事。以普通人的标准要求,这似乎无可厚非。只是令人遗憾的时,人类那些残酷的历史,往往都是集体无意识状态下的普通人,共同写就的。
污秽的时代,没有人的手是干净的。时代过去了,洗洗手,又都一脸的无辜。
我的看法:对人和历史,做道德批判没有意义。
 
关于系统论我想说的是:历史上曾经许多人希望用大一统的终结性理论来解释这整个世界,包括是老子,牛顿,爱因斯坦,以及钱学森。
修巴别塔大约是每一个探索自然的人的梦,只是后来他们都无一例外地失败了,毕竟上帝的高度并不是那么容易达到的。不出意外的话,系统论也不会例外。
我无从推理,仅作一个断言:一切基于辩证法的哲学都是扯淡。 
(系统论没看过,只是凭感觉评一下,希望以后有机会去严格考证)
10月30日

一个古老的传统

对世风不古的抱怨,是一个从孔子起,延续至今的传统。这使得我们常常听到这样一种耳熟的句式:唉,现在的xx啊~~~
使用这个句式的时候,一般需要先摇一摇下巴。
尽管每个人都常这么说,但真正用得最出神入化充满杀伤力的的是我一个高中同学。
他说话时通常是以这样的方式开口的:
“唉,现在的社会啊~~”
“唉,现在的男人啊~~”
“唉,现在的女人啊...”
。。。
而最令人难忘的一次是这样的:
当时他刚看完一本英语书,然后开始不屑地摇下巴:
“唉,现在的英语啊~~”  --------- 囧!连英语也跟着堕落了么?
 
作者 
作者 
作者 
第 1 张,共 452 张