一、 生成式模型
这个系列将讨论人工智能领域非常重要、也十分被看好的一类模型:生成式模型(generative model)。因为这类模型不但能根据特征预测结果,还能“理解”数据是如何产生的,并以此为基础“创造”数据,这才是“真正意义上”的人工智能。而且正如费曼1所说的“What I cannot create, I do not understand(我不能创造的东西,我就不了解)”,生成式模型在某种意义上是真正理解了数据。
生成式模型的理论基础是贝叶斯定理2。这是一个简单而又深刻的数学定理:一方面,它只涉及乘法、除法以及条件概率,推导过程只需要用到高中数学;另一方面,它引出了很多极具哲学思辨色彩的学术概念,比如先验概率、后验概率等,甚至在统计学里也派生出相应的贝叶斯学派。(这篇文章将大量使用条件概率这个数学概率,对此不是特别熟悉的同学,可以参考这篇文章《生成式模型(零):条件概率》)
贝叶斯定理是深入理解生成式模型的关键,因此这篇文章将深入讨论这个数学定理,以及如何基于它搭建模型。
二、 蒙提霍尔问题
在讨论严谨的数学公式之前,先看一个有趣又引人深思的游戏—蒙提霍尔问题(Monty Hall problem)。参加这个游戏的选手面对3扇关闭的门,其中一扇门的背后是汽车,另外两扇的背后是山羊,但从选手的角度来看,这3扇门是完全一样的。选手需要按如下的步骤选中一扇门,如果选中的门背后是汽车,则他会免费得到汽车,否则什么都得不到。
- 选手做出最初的决定,选择其中一扇门,如图1中标记1所示。
- 主持人会从剩下的两扇门中,打开一扇后面是山羊的门,如图1中标记2所示。
- 这时选手需要再做一次决定,坚持最初的选择或者更改选择。
如果是读者参加这个游戏会怎么选择呢?从直觉上来讲,似乎对于剩下的两扇门,它们背后是汽车的概率是相等的,都为0.5,那么没必要修改自己的最初决定。
但遗憾的是,直觉是错误的:更改选择后的获奖概率远高于坚持最初决定的。事实上,借助Python针对蒙提霍尔问题做一个简单的统计模拟3,可以得到如图14中标记4所示的结果(模拟的代码可在Github上下载)。根据模拟结果,更改后的获奖概率接近70%,而坚持最初选择的获奖概率只有30%左右。
为什么会出现如此奇怪的结果呢?直觉上哪里出了错呢?下面将从数学角度给出这个疑问的解释。
三、 条件概率
为了表述清楚,不妨假设选手最初选择的是1号门,而剩下的2号门和3号门对主持人是没有任何差别的。用随机事件 A A A表示汽车所在的位置,比如 A = 1 A=1 A=1表示汽车在1号门的背后。那么在选手做最初选择的时候,汽车在每扇门背后的概率都是一样的,为 1 / 3 1/3 1/3。
(1) P ( A = 1 ) = P ( A = 2 ) = P ( A = 3 ) = 1 / 3 P(A = 1) = P(A = 2) = P(A = 3) = 1/3\tag{1} P(A=1)=P(A=2)=P(A=3)=1/3(1)
用随机事件 B B B表示主持人打开的门号,比如 B = 3 B = 3 B=3表示主持人打开了3号门。由于2号门和3号门没有差别,那么只需讨论在已知主持人打开3号门的情况下,汽车在1号门以及汽车在2号门的概率。用条件概率来翻译上面这句话就是需要计算 P ( A = 1 ∣ B = 3 ) P(A = 1 | B = 3) P(A=1∣B=3)以及 P ( A = 2 ∣ B = 3 ) P(A = 2 | B = 3) P(A=2∣B=3),其中 P ( A = 1 ∣ B = 3 ) P(A = 1 | B = 3) P(A=1∣B=3)表示坚持最初选择的获奖概率,而 P ( A = 2 ∣ B