概率的故事
原文出处:https://www.jianshu.com/p/fff5fea39506
熵、信息,这些都是现代科学中令我十分着迷的概念,而它们都以概率性这一概念为核心。为了避免文章过长,我打算分四部分总结一下相关的概念和个人的思考。
下面开始第一部分:我们来谈谈随机性。

随机现象被认为是不可被精确预测的现象,但是只要你认真思考过,有一天你一定会想到一个问题:随机的事情真的随机吗?比如最经典的抛硬币,如果控制好所有的初始条件,结果是正是反应该是可以控制的。我就在电视上看到过,有玩骰子的艺人,可以做到想要几点就掷出几点。
再来看看其他的随机现象。魔兽世界中,埃新诺斯战刃的掉率是4.51%。这是怎么实现的呢?大概过程(因为不知道具体算法)也许很简单:当你推倒伊利丹时,服务器给你分配一个[0,1]区间内的随记数,如果它小于0.0451,那么你拾取的一瞬间就能看到这件装备啦。
但是,所有的计算机,无论是最早的纸带机还是今天的PC,都做同一件事情:接受输入—>计算—>输出,所以计算机不会“想出”真的随机数来,它只能依靠算法来实现。这里有个视频(可能需要翻墙,如果能看,可以忽略本段以后的部分)能很好的说明。算法有很多种,现在常用的有线性同余法,而视频中的例子是最好理解的1949年Von Neumann发明的”middle squares”算法。流程很简单:第一步,找一个初始值(我们把它称作随机数种子seed,它一般较难预测,例如当前的时间是某一分钟内的第多少毫秒,视频中好像有错误,在09:00:03:03时,应该是9点的第一分钟内的第183毫秒,不过不重要),视频中取了seed=173。第二步,把初始值平方,得到29929,取中间的3个数字992。第三步,把29929平方得到895745041,又取中间三个数字745,然后不断重复。这样就会得到一个序列:992745857……
所以如果你能得到seed,那么就能预测这个序列,所以我们说它是伪随记的。这里的seed是时间,一旦你有办法获取程序运行的事件,这个随机性就彻底破灭了。这也就是为什么今天彩票开奖摇号用的还是古老的摇球机器。
这里比较有趣的是,我们可以用一种随机性派生出其他的随机性。举个例子,刚才说的伪随记序列,其实就是一个随机数表。如果规定一个映射 f:随机数表—>班里同学,这样就可以实现随机点名。
那么如何由随记数表产生我们想要范围内的随机数呢?我们看看c语言的做法。
c语言中与之相关的主要有两个函数:srand(seed)和rand(void)。srand()的功能就如刚才的例子,接受一个seed,生成随机序列。而rand()函数则会做一个派生:随机数表到区间[0, RAND_MAX]的映射(RAND_MAX一般定义为32767),于是就返回了一个1~32767的随记数。接下来一切都好办了。例如你想玩骰子,那就rand()对6求余,因为对几求余,结果就有几种模式,所以刚好可以满射到我们的目标随机整数集。那么如果目标数集是[0,1]的实数呢?也好办,rand()除以RAND_MAX就行啦。这一段就是想说明,随机性是可以相互派生的,在用计算机模拟随机抽样的过程,也是一种派生,而这是做蒙特卡洛计算必不可少的。
上面大多数篇幅都用来扯计算机了,其实我的计划不是这样的(‾▽‾)”......只是想引发大家思考,有多少东西真的是不可预测的呢?实际上,大多数所谓的随机事件不具有本质随机性(NOT intrinsical randomness),就像刚才所说的抛硬币,掷骰子。我们说这些事件是随机的,是因为我们对这些体系信息的却是,或者说是一种“偷懒”。普通人不会花时间练成“骰子艺人”,你也不会创造一个机器(抽真空来避免空气的影响,单片机实现自动化控制等等)来“可预测地”抛硬币。
实际上,在经典统计物理中,所谓的随机性也不是本质的,它来源于我们对系统信息的匮乏(ignorance)。
那么有没有本质随机性呢?在目前的认知框架下,量子力学的叠加原理(Superposion Principle)所导致的随机现象可以被认为是本质随机,该原理是说,一个粒子可以按照某种概率分布同时处于多种微观状态的叠加,当你测量时,它会依概率分布塌缩到某个本征态下,也就是说,物理规律本身就要求这件事情是随机的。所以,很重要的一点是,有了量子力学以后,我们对“预测”的认识要发生变化:**可预测不等于能给出精确答案,而给出概率分布(波函数)也算预测**。不过这只是定义问题,大家尽可能地保持一致,是为了方便交流。
因此在后来的量子统计中,我们就需要同时处理这两种随机性的叠加了。为了方便做这件事情,我们引入了密度矩阵。
还有一种情况--混沌(chaos)。混沌是讲,规律本身是可预测的,但是它对初始条件十分敏感,以致于在现有(也许永远的将来)技术下,我们无法对它作出预测-_-#。这就是所谓的蝴蝶效应(Butterfly Effect)。最典型的人口模型logistic series(逻辑斯蒂克序列):

当r大于约3.5699时,发生混沌,不过存在稳定岛,详见Wikipedia。如此一来,混沌到底算可预测还是不可预测呢?这一分支学科作为前沿,目前对此还存在很大的分歧。
总结一下就是:大多数随机现象都不具有本质的随机性,目前只有量子力学中叠加原理所导致随机性被认为是本质的,而混沌现象还有待讨论。
概率一直以来是一个很让我头疼的概念,因为它的含义十分丰富,在不同场合都有区别。大家有空可以认真阅读维基百科上Probability interpretation这一词条。
普遍地讲,概率是一个事件发生可能性大小的度量。那么关键问题是,这个度量是客观的吗?换句话说,这个度量表达的是事物的固有属性,还是人们的主观推测?我们国内的教科书上都没有仔细讨论过这个问题,它们大都直接给出了概率的两个定义:统计定义和公理化定义,然后就让你开始算...算...算,所以我们根本没时间思考。
实际上,正如维基百科上所说,对概率的解释大体上分为两种:频率主义(Frequency probability)和贝叶斯主义(Bayesian probability),频率主义实际上就给出了概率的统计定义,概率=频率在试验次数趋于无穷的极限。而在贝叶斯体系中,概率=你相信某事件发生的程度。
当然还有更细的划分方式,这里给出维基百科中关于各种概率解释的总结:

interpretations of probability.png
可以看到,确实有主观的概率。实际上,在日常生活中我们经常用到主观概率。例如我们常说:“今天90%会堵车”、“我80%能通过考试”。当你在做出这样的推断时,甚至都没有数学计算,它完全基于你的经验和知识。主观性体现在,每个人的经验和知识可能是不同的,因此每个人的推断可能不同。
但是,贝叶斯概率不是一定等于主观概率。如果某种推断是基于一种知识体系,而这种知识非常普遍,普遍到“如果你不了解它你就没法推断,而所有了解它的人都一定会做出一致的推断”,那么我们可以认为这种贝叶斯概率是客观的,我姑且把这种概率称为基于普遍认知的贝叶斯概率。
著名的贝叶斯定理(Bayes' theorem)在这里也不得不提一下,它允许我们用新的认知来更新旧的推断。

Bayes'_Theorem.jpg
正如Wiki上的例子,已经知道一个人患癌症的概率,后来我们又获得了新的信息--这个人65岁,这时,依据已有的几项统计数据,我们就可以对此人患癌症的概率做出更详尽的推断。
前面说了这么多,其实我想引出的一个核心问题是:在量子力学和统计力学中用到的概率应该符合哪种解释呢?
我认为它们是基于普遍认知的贝叶斯概率,如上面所表述的那样。当你求一个量子体系的波函数时,或者求一个热力学系统的Boltzmann分布时,你做的其实都相当于这样一件事情:根据普遍的物理知识和观测到的宏观量(在量子力学中如势能,在统计力学中如总内能、温度、压强等)做一个统计推断(Statistical inference),以求获取系统的信息。这个信息之所以表现为概率分布的形式,在量子力学中是因为物理规律蕴含本质概率性,而在统计力学中是因为我们对系统信息(普遍地)的匮乏,像第一部分说的那样。
(为什么要这么在意客观性?因为在科学中当概念都是客观的时候,我们才感到比较安全。)
因此,如果统计力学中的概率分布是客观的(这很重要,不然热力学熵的概念就很难立足),那就要求这种对系统信息的匮乏是十分普遍的。普遍到不管是地球人还是外星人,是有机生命还是机器人都一样才行。实际上我认为这很勉强。
最后,我们来说一下概率论和统计的关系。粗糙地讲,它们是相反的过程。当你已经知道系统的性质,来预测观测结果时,玩的是概率论。而通过一些观测结果,来推断系统的性质,玩的是统计。这里必须引用这张形象的图:

probability v.s. stat.jpg