神奇的概率世界:从人们的生活到人工智能

       自己写的一篇老文章了,移到CSDN,打算以CSDN博客为主了。

        在大学学习概率论的时候,总感觉有些枯燥和无趣,而且没有什么实际的用途,最近由于课题需要,研究了一下概率方面的书籍,才发现概率实际上用途广泛而富有魅力。

        其实人类是非常善于使用概率的,只是我们没有意识到罢了。
        在我们生活的这个世界,充满了太多的未知,如果每一件事情人们都使用精确的数学来描述或解释,计算量大得令人发狂。
        比如:小张根据当时的时间买了一张彩票,结果中了500万。为什么他会中500万呢确数学来解释的话,就要分析小张的背景、买彩票的动机,还要分析摇号机当时的状态,为什么会摇中小张买的号码,甚至还要分析小张曾经遇到的危险、小张父母的结合、小张的祖先等等(为什么要分析这些,是因为任何一个因素出现变动的话,都会导致小张不会选中这个号,或者导致小张没有机会买到这次彩票,或者导致小张根本不存在,也就无法中奖了)。。。。。。如此多的条件综合在一起,一件简单的事情就变得复杂起来,甚至使用巨型计算机也无法完全分析,何况还存在着很多未被发现的未知因素,根本无法被精确描述,比如:如果小张买的号码早一分钟或者晚一分钟去彩票点,都不会中奖,因为他根据时间买的彩票,因此交通拥挤情况,甚至是空气的阻力等等,都应该被纳入到考虑范围中来。如此下去,小张中奖这件事情就根本无法讲清楚。
        但是看看人们是怎样描述这件事情原因的:“小张运气好!”简简单单五个字,就把原来说不清的事情说清楚了。
        “运气好”,是在概率领域才会存在的描述,在精确数学里,要么对,要么错,不会有又对又不对的事情;而在概率领域,任何事情都有可能发生有可能不发生,只是发生的可能性有大有小而已,如果一件好的事情发生概率极低,却发生了,就是“运气好”,而一件坏的事情发生概率极低,却发生了,就是“邪门了”,但无论如何,都没有说一件事情绝对只会怎样,不会怎样(当然,一些概率小到微乎其微的事情,人们也会说“绝对、一定”,这是因为描述的需要,一旦真的“邪门了”,人们也会解释的说“邪门了”)。
        在日常生活中,人们都存在着大量的常识,这些常识往往都是一种概率估计。比如:今天天气不错,应该不会下雨;小张学习很勤奋,应该能考上好大学;小郑穿的衣服都是名牌,她老公一定很有钱。。。。诸如此类。
        到这里,有人就会问:“说了半天,概率究竟是什么?为什么可以这样用?”
        在人们生活中,往往会出现一些现象,这些现象,单从单个现象来看,会存在多种结果,比如买彩票,会出现中奖不中奖两种情况,但如果从大量已发生的现象去观察,会发现有的结果出现得多,有的出现得少,比如100万人同时买彩票(或者也可以1个人重复买100万次彩票),我们会发现不中奖的远远高于中奖的,为了描述这种现象,我们用中奖的人比上总人数,来描述中奖事件的稀有程度,并把这种稀有程度描述成买彩票中奖这个现象的一种属性,由此产生了概率。
        为什么会产生概率,为什么要使用概率呢,一件事情明明白白真真切切不是更好么,干嘛使用一个模糊的数字呢?
        严格来讲,一件事情的发生的确不会是偶然的,现象的背后一定存在着精确的原因。但难就难在现实中许多事情原因太多,多得难以统计,且原因之间相互抵消,或者相互增强,没法搞清楚,如同上面讲到的小张买彩票的例子一样;另外,这些条件存在不可复制性,小张身上发生的事情,背后影响他的条件永远不会再次存在(这个和哲学中说的:人永远无法两次跨过同一条河流是一个意思),研究清楚了也无法复制;另外,现实中一定还存在着一些难以精确了解、难以精确描述的因素,比如:未知的定理、未探索的宇宙、难以考证的历史等等。
        所以精确描述一件事情是非常困难的,但难以描述不等于就不管了,因为人要继续生活,彩票也要继续买,如果能够从历史中获得一些信息,产生一定的帮助,也是好事情。由于这些难以精确描述的事情总还是存在着一些相似的原因,因此总还是存在着一些关联一些相似性,于是人们就不断总结经验,从非常表面的层次去总结事件之间的相关性,于是常识,经验,或者称为先验概率之类的东西就产生了。
        那么人们如何使用概率来解决实际问题呢?一个就是指导自己的行动:买彩票中奖概率太低,干脆别买了;另一种就是推导事件之间的联系:小张努力学习,通常努力学习都能考上好大学(概率高),读了好大学就能找到好工作(高概率),所以小张以后有出息!
        因此概率并不是帕斯卡、费马、惠更斯、詹姆斯、伯努利、棣莫弗、拉普拉斯等大牛创造的,概率一直都存在于人们的生活当中,这些大牛只不过将概率用数学的方法精确的描述出来而已。      
        本来概率就这么用着,也没怎么引起人们的注意。偏偏有个叫贝叶斯的神父,天天想着用概率来证明上帝的存在,他这一捣鼓不要紧,结果给捣鼓出了一个贝叶斯公式并被发扬光大,甚至对现在最为前沿的人工智能领域都有着深远的影响。
        为了搞清楚是怎么一回事,我们先来看看究竟什么是贝叶斯公式。
        举个例子:一所学校里面有 60% 的男生,40%的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗?
        有童鞋就笑了,这不简单么:穿裤子男孩的总数除以穿裤子人的总数,不就是答案了么。是的,我们将结果形式化一下:
           

 

 

        其中P(boy|pants)表示穿裤子人中男孩所占的比例,P(pants|boy)表示男孩中穿裤子的比例,以此类推。
        最终结果:    = 60%*100%/(60%*100%+40%*50%)=75%;求穿裤子人中女孩比例的方法与此类似。
        抽象出所有特定名词后,贝叶斯的公式表达式如下:

        怎么样,很简单吧?

        可能有些童鞋可能就不明白了,这个公式能和人工智能扯上什么关系呢?

        现在我们把刚才的问题改改,不让你求具体概率是多少,而是问你他(她)是男生的可能性更高,还是女生的可能性高?这貌似和原来的问题没有区别,但仔细观察你会发现,由于我们只要求判断谁的可能性更高,因此不用计算精确值,判断概率谁大谁小就可以了;而且男生概率也好,女生概率也好,贝叶斯公式的分母都没有发生变化,因此只需要比较分子的大小就可以了。

        于是原来的问题变成了求argmax (P(Bi)*P(A|Bi)),这个怎么理解呢?这样理解比较容易:一个穿裤子的人更可能是男生还是女生,根据两个条件进行比较:男生(女生)在学生总人数中的比例,以及男生(女生)穿裤子的概率,比较这两个值即可。很明显:男生占人数的60%,女生占40%;男生总是穿裤子(100%),而女生只有50%概率穿裤子,因此,这个人更可能是男生。

        看出端倪了么,什么没有,那么我们举一个和计算机技术相关一点的例子,这个也是一个非常经典的例子。

        当用户输入一个英语单词时,如果不是一个正确单词,那么计算机推算出用户最可能想输入的单词是哪一个,并显示到屏幕上。这其实是一个拼写检查器,目前goolge和baidu等搜索引擎都有的基本功能。那么我们该如何解决呢?

        我们首先要解决的是如何判断一个单词是否拼写正确。这个不难实现,将所有单词录入一个单词库,再逐个比较即可。

        其次,要判断当前写错的单词更可能是哪一个单词,就要比较单词谁的出现频率更高(男生所占比重和这个其实是一个意思,占的比重越大,出现的频率也就越高),以及谁更容易被误写成当前这个错误单词(和穿裤子的概率相似)。

        但是这里有难题:因为英文单词太多,常用的少说也有万把个,逐个比较费时费力。这时让我们联想一下人是怎么解决这个问题的,当人猜测一个错写的单词时,通常会排除那些差异很大的单词,例如:看到worls这个词,会把hello、java等等不相干的词汇排除,只保留相似的如:word、world等等词汇,再从候选单词中选出出最合理的单词。因为常识(注意:常识出现了,先验概率出现了!)告诉我们,通常人们会写错单词,但不会错得面目全非。

        好的,按照这个思想,我们只保留几个比较相似的单词作为候选单词,然后去比较它们的两个概率。

        单词出现频率比较好办,我们建立一个文本库,录入大量的英文书刊杂志,然后去统计每个单词在文本库中出现的频率。

        单词误写的概率就比较难办了,因为导致将单词错写成当前这个错误单词的原因有很多,比如:单词比较相似,键盘按键太小等等。为了简化解决方案,我们根据一个常识(又是常识,又是先验概率):导致一个单词误写成另一个词语的主要原因是这两个词汇的相似度。相似度越高,误写率越高,因此设定备选单词与错写单词的相似度越高,P(A|Bi)值越高。

        为了更简化过程,我们又做一个近似,干脆连P(Bi)*P(A|Bi)都懒得算了,而是这样设定:当有多个单词时,P(A|Bi)最高的单词直接胜出,例如:当前错误单词是happu,而备选单词有hap和happy,由于hap与happu差了2个字母,而happy只差了1个,因此直接选择happy,而不再计算hap和happy谁的出现的频率更高(这种假设肯定会导致判断精度下降,好处就是实现很容易);当有多个单词的P(A|Bi)相同且P(A|Bi)同为最高时,再去计算P(Bi)谁大谁小。

        于是一个单词拼写检查器就完成了。

        我写了一个,下载地址: http://iask.sina.com.cn/u/ish?uid=1171839324

        感兴趣的话大家可以下载试试。

        现在我们再来考虑单词翻译:用户输入一个中文单词,将其翻译成英文单词。这个其实有其他方法实现,但是使用概率也可以完成。

        和刚才一样,我们首先对候选词进行一次narrow,排除那些完全不沾边的英文词汇,只保留那些和这个中文单词有点沾边的英文词汇。

        其次,计算每个英文候选词被理解为该中文词语的可能性,通常核心词义高于次要词义,次要词义高于引申词义,我们首先选择理解可能性最高的英文候选词作为答案,只有当多个候选词P(A|Bi)相同且P(A|Bi)同为最高时,再去计算P(Bi),即出现频率谁大谁小。

        于是,一个简单的中译英的词汇翻译工具就完成了。由于时间问题,没有去实现,但原理和刚才的拼写检查器是一样的。

        好了,我们已经越来越接近人工智能的领域了,现在我们举一个人工智能领域的例子:用户输入一段英文,让计算机翻译成中文。

        晃眼一看,似乎和刚才第二个例子没有太大区别,其实这里有着很大的难题。

        根据贝叶斯公式,要判断P(S1,S2,S3,。。。,Sn)*P(O1,O2,O3,。。。,On| S1,S2,S3,。。。,Sn),其中S1,S2,S3,。。。,Sn表示由若干的中文词语构成的一段话,O1,O2,O3,。。。,On表示由若干英文词语构成的一段话。

        根据联合概率公式:P(S1,S2,S3,。。。,Sn) = P(S1)*P(S2|S1)*P(S3|S1,S2,S3)。。。。。这是一个非常令人头痛的问题,按照人类语言的理解,要探讨S1,S2,S3,。。。,Sn这段话构成中文语句的可能性,就要分析词语S1出现的概率,以及在S1出现的条件下,S2出现的概率,以及S1,S2出现的条件下,S3出现的概率,以及S1,S2,S3出现的情况下,S4出现的概率。。。如此下去,求解过程变得异常复杂。从人类理解的角度来讲,这要求计算机从概率的角度来解释清楚人类说一句话的语义是什么,这也是为什么计算机难以准确翻译长篇文章的原因。

        由于贝叶斯没能解决上述问题,因此不得不引入其他的方法。目前最为流行,也是比较有效的方法,是引入隐马尔科夫模型,该模型给出了两个关键假设:即马尔科夫性与独立输出假设,使得上述问题得到解决,但这样做是有代价的,代价就是准确度的降低。即便如此,采用隐马尔科夫模型的概率翻译系统也比从前的系统进步得多。据统计:基于隐马尔科夫模型的翻译系统已将错误率由传统模式识别系统的30%降低到10%,不得不说是一大进步。

        对于人工智能的其他领域:机器视觉、语音识别等等,我们不妨认为是将图画、语音翻译成文字的翻译系统,在根本上与上述系统是一样的,因此也能使用概率方法进行解决。

        小小的概率却隐藏着如此多的神奇,不得不感叹数学的神奇!

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值