↓ Skip to main content
  1. Posts/

从条件概率到贝叶斯定理:再理解全概率与全期望

·6128 words·13 mins
Note: This article is available in Chinese only. 本文暂无英文版本。 View original

起因
#

上一篇讨论了 Markov Property,提到 Bellman Equation 需要它作为前提。

准备看 Bellman Equation 的推导时,我卡在了一个叫 Law of Total Expectation(全期望公式)的地方。它的核心思想是:计算整体期望时,可以先按某个变量的不同取值分组,分别算各组的条件期望,再按组别的概率加权平均。之前那篇定义的 State Value \(V^\pi(s) = \mathbb{E}_\pi[G_t \mid S_t = s]\),在 Bellman Equation 里正是用这个思路按"下一个 State"分组来展开。

推导过程中用到了一个恒等关系:

$$ P(X=x, Y=A) = P(Y=A) \, P(X=x \mid Y=A) $$

我盯着这行公式看了很久,觉得哪里不对。等号左边有 \(P(X=x, Y=A)\),右边有 \(P(X=x \mid Y=A)\)——它们不是同一个东西吗?

后来终于发现问题出在哪里。

我把逗号和竖线看成了一样的东西。

\(P(X=10, Y=A)\) 中间是逗号。\(P(X=10 \mid Y=A)\) 中间是竖线。两个符号在屏幕上看起来很像,但它们回答的是完全不同的问题。

一个逗号和一条竖线,到底差在哪里?

一张 100 人的统计表
#

先设一个最简单的场景。

100 个人参加一个活动,分成 A、B 两组。活动结束后每人得到一份奖金,要么是 10 元,要么是 0 元。

定义两个随机变量:

  • \(Y\):一个人所属的组别,取值为 A 或 B。
  • \(X\):一个人得到的奖金金额,取值为 0 或 10。

大写 \(X\)、\(Y\) 是随机变量,表示"结果还没有揭晓"。小写 \(x\)、\(y\) 代表具体的取值——比如 \(x = 10\) 表示"获得了 10 元"。这和之前伯努利那篇里 \(Y\) 与 \(y\) 的区分一样。

这里 \(X\) 和 \(Y\) 都是离散随机变量——取值只有有限个。之前关于 PDF 的文章讨论了连续随机变量的情况,但这篇只涉及离散情形,不需要概率密度。

这 100 人的统计结果如下:

组别获得 10 元获得 0 元合计
A 组301040
B 组154560
合计4555100

整篇文章的所有概念都会反复回到这张表。

现在随机抽取一个人,分别回答三个问题。

问题一:这个人来自 A 组的概率是多少?

100 人中 40 人属于 A 组:

$$ P(Y=A) = \frac{40}{100} = 0.4 $$

问题二:这个人同时来自 A 组并且获得 10 元的概率是多少?

100 人中,同时满足两个条件——属于 A 组且获得 10 元——的有 30 人:

$$ P(X=10, Y=A) = \frac{30}{100} = 0.3 $$

这里的逗号表示 AND。\(P(X=10, Y=A)\) 叫 Joint Probability(联合概率),描述两个条件同时成立的概率。分母是全部 100 人。

问题三:已经知道这个人来自 A 组,他获得 10 元的概率是多少?

既然已经知道他来自 A 组,统计范围就缩小到了 A 组的 40 人。其中 30 人获得了 10 元:

$$ P(X=10 \mid Y=A) = \frac{30}{40} = 0.75 $$

竖线可以读作 GIVEN(已知)。\(P(X=10 \mid Y=A)\) 叫 Conditional Probability(条件概率),描述在某个条件已知的前提下,另一个事件发生的概率。

把三个结果放在一起看:

表达式含义值分母
\(P(Y=A)\)来自 A 组0.4100 人
\(P(X=10, Y=A)\)A 组且获 10 元0.3100 人
\(P(X=10 \mid Y=A)\)已知 A 组,获 10 元0.7540 人

前两个的分母都是 100 人——它们都在问"从全体中随机抽一个人"。第三个的分母变成了 40 人——因为"已知来自 A 组"把考虑范围限定到了 A 组内部。

条件概率改变了计算概率时所考虑的范围,分母因此发生了变化。

这就是逗号和竖线的根本区别。\(P(X=10, Y=A) = 0.3\) 是在全体 100 人中有 30% 同时满足两个条件;\(P(X=10 \mid Y=A) = 0.75\) 是在 A 组 40 人中有 75% 获得了 10 元。分子都是那 30 个人,分母完全不同。

联合概率与条件概率的分母对比

条件概率为什么要除以已知条件的概率
#

上一节从人数直接算出了 \(P(X=10 \mid Y=A) = 30/40\)。但这个 30/40 和其他概率之间有什么关系?

把 30/40 的分子分母同时除以 100:

$$ \frac{30}{40} = \frac{30/100}{40/100} = \frac{P(X=10, Y=A)}{P(Y=A)} = \frac{0.3}{0.4} = 0.75 $$

条件概率等于联合概率除以已知条件的概率。这不是巧合。

推广到一般情况(这里的 \(A\)、\(B\) 代表任意事件,和例子中的 A 组、B 组无关):

$$ P(A \mid B) = \frac{P(A \cap B)}{P(B)}, \quad P(B) \gt 0 $$

\(P(B) \gt 0\) 这个条件不能漏。如果已知条件本身发生的概率为零,条件概率没有定义。

回到奖金的例子。把分母乘过去,就得到了乘法规则:

$$ P(X=10, Y=A) = P(Y=A) \cdot P(X=10 \mid Y=A) $$

代入数字:\(0.4 \times 0.75 = 0.3\)。

这就是文章开头让我困惑的那个等式。现在它的含义很清楚了:一个人同时属于 A 组且获得 10 元的概率,等于先属于 A 组的概率,乘以在 A 组中获得 10 元的概率。

这不只是代数上把分母移到另一边。它对应一种两步筛选:先看这个人有多大概率落在 A 组,再看在 A 组内有多大概率获得 10 元。两步的概率相乘,就是两个条件同时满足的概率。

概率树:乘法规则与联合概率

概率树把这个两步筛选画了出来。每一个叶节点的联合概率,等于沿路径各段的概率相乘。四个叶节点的联合概率加起来正好是 1。

把已知条件反过来
#

前面问的是"已知属于 A 组,获得 10 元的概率"。现在换一个方向:

已知一个人获得了 10 元,他来自 A 组的概率是多少?

统计范围变了。获得 10 元的总共有 45 人(A 组 30 人 + B 组 15 人),其中 30 人来自 A 组:

$$ P(Y=A \mid X=10) = \frac{30}{45} \approx 0.6667 $$

和之前那个条件概率放在一起比较:

$$ P(X=10 \mid Y=A) = \frac{30}{40} = 75\% $$$$ P(Y=A \mid X=10) = \frac{30}{45} \approx 66.7\% $$

两个值不一样。

分子都是那 30 个人——A 组中获得 10 元的人。但分母不同。\(P(X=10 \mid Y=A)\) 的分母是 A 组全部 40 人,\(P(Y=A \mid X=10)\) 的分母是获奖全部 45 人。已知组别看奖金,和已知奖金看组别,是两个不同的问题,各自有不同的统计范围。

条件概率一般不具有交换性。

交换条件方向:不同的统计范围

那如果我只知道其中一个方向的条件概率——比如知道 \(P(X=10 \mid Y=A) = 0.75\)——有没有办法算出反方向的 \(P(Y=A \mid X=10)\)?

贝叶斯定理只是消去了联合概率
#

有办法。推导也不复杂。

从条件概率的定义出发,联合概率可以用两种方式展开。

先用组别作为已知条件:

$$ P(X=10, Y=A) = P(Y=A) \cdot P(X=10 \mid Y=A) $$

再用奖金作为已知条件:

$$ P(X=10, Y=A) = P(X=10) \cdot P(Y=A \mid X=10) $$

两个式子左边相同,联立右边:

$$ P(X=10) \cdot P(Y=A \mid X=10) = P(Y=A) \cdot P(X=10 \mid Y=A) $$

两边除以 \(P(X=10)\):

$$ P(Y=A \mid X=10) = \frac{P(X=10 \mid Y=A) \cdot P(Y=A)}{P(X=10)} $$

写成一般形式就是 Bayes’ Theorem(贝叶斯定理):

$$ P(A \mid B) = \frac{P(B \mid A) \, P(A)}{P(B)} $$

代入数字验证:

$$ P(Y=A \mid X=10) = \frac{0.75 \times 0.4}{0.45} = \frac{0.3}{0.45} \approx 0.6667 $$

和直接数人头的结果一致。

推导完了。有几个我觉得需要想清楚的地方。

这个公式为什么有用? 在很多场景中,一个方向的条件概率比另一个方向容易得到。比如知道"如果属于 A 组,获奖概率是 75%",但想知道的是"已经获奖了,来自 A 组的概率有多大"。有了贝叶斯定理,就可以从已知方向算出另一个方向。

它不是简单地交换两边。 \(P(A \mid B)\) 和 \(P(B \mid A)\) 之间差了一个系数 \(P(A)/P(B)\)。只有当 \(P(A) = P(B)\) 时两者恰好相等。

它不需要假设独立性。 贝叶斯定理的推导只用到了条件概率的定义,没有任何地方要求 \(A\) 和 \(B\) 相互独立。

“反向推断"不是因果方向反转。 \(P(Y=A \mid X=10)\) 不是在说"获奖导致了属于 A 组”。条件概率描述的是统计关联,不是因果方向。它只是在说"在已知获奖的条件下,来自 A 组的概率是多少"。

Prior、Likelihood 和 Posterior
#

贝叶斯定理有一套专门的术语。继续用奖金的例子:

$$ P(Y=A \mid X=10) = \frac{P(X=10 \mid Y=A) \cdot P(Y=A)}{P(X=10)} $$

各部分对应的名称:

术语公式数值含义
Prior(先验概率)\(P(Y=A)\)40%还没有观察奖金,来自 A 组的概率
Likelihood(似然)\(P(X=10 \mid Y=A)\)75%假设属于 A 组,获得 10 元的概率
Evidence(证据)\(P(X=10)\)45%不论组别,获得 10 元的整体概率
Posterior(后验概率)\(P(Y=A \mid X=10)\)≈66.7%已知获得 10 元,来自 A 组的概率

Prior 是观察到数据之前的判断。Posterior 是看到数据之后的更新。

从先验到后验的更新过程

这里有一个很容易混淆的东西。

在之前那篇关于伯努利分布的文章里,我写过一句话:

左边是似然——给定参数 p,数据出现的概率。右边是后验概率——在看到数据之后,参数 p 为真的概率。这是完全不同的两件事。后者属于贝叶斯统计的范畴,这里不展开。

当时没有展开。现在理解了条件概率之后,这个区别就很清楚了。

\(P(X=10 \mid Y=A) = 0.75\) 是 Likelihood——假设某个前提成立(属于 A 组),数据(获得 10 元)出现的概率有多大。

\(P(Y=A \mid X=10) \approx 0.667\) 是 Posterior——已经看到了数据(获得 10 元),前提成立(属于 A 组)的概率有多大。

两者的数学形式都是条件概率,但条件和结果的角色互换了。固定已观察到的数据,把 Likelihood 看作不同假设的函数时,它比较的是各个假设对已观察数据的解释程度——哪个假设下这份数据更容易出现。那篇伯努利文章讨论的就是这件事:不同的参数 \(p\) 给同一份数据不同的似然评分。

Likelihood 不等于 Posterior。 直觉上很容易搞混——“A 组获奖率高"并不意味着"获奖的人大概率来自 A 组”。后者还取决于 A 组在总体中的占比,也就是 Prior。

先验概率不能忽略
#

上面的例子中 A 组占了 40%,Posterior 从 40% 上升到约 66.7%——观察到获奖之后,来自 A 组的概率提高了不少。

但如果改一下 A 组的比例呢?

保持每组内部的获奖概率不变:\(P(X=10 \mid Y=A) = 0.75\),\(P(X=10 \mid Y=B) = 0.25\)。

把 A 组的人口占比从 40% 改成 1%。

先算整体获奖概率:

$$ P(X=10) = 0.01 \times 0.75 + 0.99 \times 0.25 = 0.0075 + 0.2475 = 0.255 $$

再用贝叶斯定理:

$$ P(Y=A \mid X=10) = \frac{0.75 \times 0.01}{0.255} = \frac{0.0075}{0.255} \approx 0.0294 $$

只有大约 2.94%。

A 组的获奖率高达 75%,但即使看到了一个获奖的人,他来自 A 组的概率仍然不到 3%。

原因是 A 组实在太少了。假设 10000 人中只有 100 人属于 A 组。A 组中约 75 人获奖,B 组 9900 人中约 2475 人获奖。获奖总人数约 2550 人,其中来自 A 组的只有 75 人——不到 3%。

这就是 Base Rate(基准率)的作用。Prior 不是一个可以忽略的权重——当基准率极低时,即使 Likelihood 很高,Posterior 仍然可能很低。

A 组占比(Prior)LikelihoodPosterior
40%75%≈66.7%
1%75%≈2.94%

Likelihood 完全相同,但 Prior 从 40% 变成 1% 后,Posterior 从约 66.7% 骤降到不到 3%。

把不同组的概率加起来
#

前面多次用到了 \(P(X=10) = 0.45\) 这个值。它是怎么算出来的?

获得 10 元的人,要么来自 A 组,要么来自 B 组。这两种情况互斥(一个人不可能同时属于两个组)且穷尽(不存在第三个组):

$$ P(X=10) = P(X=10, Y=A) + P(X=10, Y=B) $$

代入联合概率:

$$ P(X=10) = \frac{30}{100} + \frac{15}{100} = \frac{45}{100} = 0.45 $$

用条件概率的乘法规则展开:

$$ P(X=10) = P(Y=A) \, P(X=10 \mid Y=A) + P(Y=B) \, P(X=10 \mid Y=B) $$$$ = 0.4 \times 0.75 + 0.6 \times 0.25 = 0.3 + 0.15 = 0.45 $$

推广到一般情况。如果 \(Y\) 的所有取值构成一个互斥且穷尽的划分:

$$ P(X=x) = \sum_y P(Y=y) \, P(X=x \mid Y=y) $$

这就是 Law of Total Probability(全概率公式)。求和下标 \(y\) 遍历 \(Y\) 的所有可能取值。“互斥"是指不同组别之间没有重叠,“穷尽"是指所有组别加在一起覆盖了全体。

这个公式其实不是突然冒出来的。前面在算贝叶斯定理的分母 \(P(X=10) = 0.45\) 时,已经在做全概率公式的计算了——只是当时没有给它一个名字。

期望也可以分组计算
#

前面所有的讨论都是关于概率的。但回到最初的问题——Bellman Equation 用到的是全期望公式,不是全概率公式。

全期望公式说的是:期望也可以分组计算。

先用最直接的方法算整体期望。100 人中 45 人获得 10 元、55 人获得 0 元:

$$ \mathbb{E}[X] = 0 \times \frac{55}{100} + 10 \times \frac{45}{100} = 0 + 4.5 = 4.5 $$

现在换一种方式。先分别算 A 组和 B 组内部的条件期望。

A 组 40 人中 30 人获 10 元、10 人获 0 元:

$$ \mathbb{E}[X \mid Y=A] = 0 \times \frac{10}{40} + 10 \times \frac{30}{40} = 0 + 7.5 = 7.5 $$

B 组 60 人中 15 人获 10 元、45 人获 0 元:

$$ \mathbb{E}[X \mid Y=B] = 0 \times \frac{45}{60} + 10 \times \frac{15}{60} = 0 + 2.5 = 2.5 $$

然后按各组占比加权:

$$ 0.4 \times 7.5 + 0.6 \times 2.5 = 3.0 + 1.5 = 4.5 $$

结果完全一样。

到这里有一个非常容易混淆的地方。

\(\mathbb{E}[X \mid Y=A] = 7.5\) 是 A 组的条件期望——在 A 组内部,平均奖金是 7.5 元。但 A 组对整体期望的贡献不是 7.5 元,而是 3 元。

用联合概率算 A 组的贡献:

$$ \sum_x x \, P(X=x, Y=A) = 0 \times \frac{10}{100} + 10 \times \frac{30}{100} = 0 + 3 = 3 $$

这里每一项的分母都是 100——它衡量的是 A 组在全体期望中贡献了多少。

而条件期望 \(\mathbb{E}[X \mid Y=A] = 7.5\) 的分母是 40——它只看 A 组内部。

两者的关系:

$$ 3 = 0.4 \times 7.5 = P(Y=A) \times \mathbb{E}[X \mid Y=A] $$

同理,B 组的贡献:

$$ 1.5 = 0.6 \times 2.5 = P(Y=B) \times \mathbb{E}[X \mid Y=B] $$

整体期望:

$$ \mathbb{E}[X] = 3 + 1.5 = 4.5 $$

写成一般形式:

$$ \mathbb{E}[X] = \sum_y P(Y=y) \, \mathbb{E}[X \mid Y=y] $$

这就是 Law of Total Expectation(全期望公式)。

两种计算期望的方法

全期望公式有一种更简洁的写法:

$$ \mathbb{E}[X] = \mathbb{E}_Y[\mathbb{E}[X \mid Y]] $$

这个写法需要注意一个细节。

\(\mathbb{E}[X \mid Y=A] = 7.5\) 是一个具体的数值——给定 \(Y\) 取值为 A 时,\(X\) 的条件期望。

但 \(\mathbb{E}[X \mid Y]\) 没有指定 \(Y\) 的具体取值。当 \(Y = A\) 时它等于 7.5,当 \(Y = B\) 时它等于 2.5。\(\mathbb{E}[X \mid Y]\) 本身是一个依赖于 \(Y\) 的随机变量——\(Y\) 取不同的值,它就给出不同的条件期望。

外层的 \(\mathbb{E}_Y[\cdot]\) 再对这个随机变量关于 \(Y\) 的分布取期望,就得到了整体期望。

全概率和全期望为什么长得这么像
#

把两个公式并排看:

$$ P(X=x) = \sum_y P(Y=y) \, P(X=x \mid Y=y) $$$$ \mathbb{E}[X] = \sum_y P(Y=y) \, \mathbb{E}[X \mid Y=y] $$

结构完全一样:都是先按 \(Y\) 的不同取值分组,再用每组的概率 \(P(Y=y)\) 做加权。

不同点在于被加权的对象:

  • 全概率公式加权的是条件概率 \(P(X=x \mid Y=y)\),得到的是一个事件发生的整体概率。
  • 全期望公式加权的是条件期望 \(\mathbb{E}[X \mid Y=y]\),得到的是随机变量的整体期望。

它们长得这么像不是巧合。定义一个指示变量 \(I\):当 \(X = x\) 时 \(I = 1\),否则 \(I = 0\)。那么 \(P(X=x) = \mathbb{E}[I]\)——事件的概率等于其指示变量的期望。所以全概率公式可以看作全期望公式的一个特例。

不过这个关系了解即可。重要的是它们背后共同的思路:把整体的计算拆成分组的局部计算,再加权合并。

回到 Bellman Equation
#

现在回到最初的问题。

之前那篇定义了 State Value Function:

$$ V^\pi(s) = \mathbb{E}_\pi[G_t \mid S_t = s] $$

\(V^\pi(s)\) 是从 State \(s\) 出发、按 Policy \(\pi\) 行动时,未来 Return \(G_t\) 的条件期望。

为什么可以按"下一个 State"分组来计算这个期望?

因为全期望公式。把 \(S_{t+1}\) 作为分组变量:

$$ V^\pi(s) = \sum_{s'} P_\pi(S_{t+1}=s' \mid S_t=s) \cdot \mathbb{E}_\pi[G_t \mid S_t=s, S_{t+1}=s'] $$

每一项的含义:

  • \(s\):当前时刻的 State,已经给定。
  • \(s'\):可能的下一 State。
  • \(P_\pi(S_{t+1}=s' \mid S_t=s)\):在 Policy \(\pi\) 下从 \(s\) 转移到 \(s'\) 的概率。
  • \(\mathbb{E}_\pi[G_t \mid S_t=s, S_{t+1}=s']\):给定当前 State 和下一 State 时,\(G_t\) 的条件期望。
  • 对所有可能的 \(s'\) 求和,就得到了整体期望。

这和前面奖金例子的结构完全一样——把"下一 State"看成分组变量(就像把"组别"看成分组变量),各组加权求和。

需要强调一点:这一步分组求和本身不依赖 Markov Property。 全期望公式是概率论的基本性质,不需要系统满足任何特殊假设。

Markov Property 在后续推导中才发挥作用——它让条件期望在给定适当的当前信息后可以进一步简化,从而得到递归表达。这是上一篇关于 Markov Property 的文章讨论的内容。

写在最后
#

回到一开始的困惑。

\(P(X=10, Y=A)\) 和 \(P(X=10 \mid Y=A)\) 只差一个符号——逗号和竖线。前者是联合概率,分母是全体;后者是条件概率,分母缩小到了已知条件所限定的范围。

从这个区别出发,后面的几个公式不再是孤立的知识点:

概念回答的问题
Conditional Probability(条件概率)已知一个条件,另一个事件发生的概率是多少?
Bayes’ Theorem(贝叶斯定理)已知观察结果,如何反过来计算条件概率?
Law of Total Probability(全概率公式)已知每组内部的条件概率,整体概率是多少?
Law of Total Expectation(全期望公式)已知每组内部的条件期望,整体期望是多少?

条件概率改变的是考虑问题的范围。贝叶斯定理交换了条件方向。全概率和全期望利用分组,把局部信息组合成整体结果。

参考资料
#

Related

从马尔可夫性质出发:DP 无后效性、HMM 与 VAE 的知识联想

·4970 words·10 mins
起因 # 继续跟着 MIT 6.S191 Lecture 5 学强化学习。上一篇理解了 Return、State Value Function \(V^\pi(s)\) 和 Action Value Function \(Q^\pi(s,a)\)。 接下来要学的是 Bellman Equation。 我之前隐约知道它能把 \(V^\pi(s)\) 写成递归形式——当前状态的长期价值,等于下一步的期望 Reward 加上折扣后下一状态的期望长期价值。但刚准备细看推导时,发现它有一个前提条件:

从 Return 到 Q-Function:强化学习如何评价一个尚未发生的决策

·10320 words·21 mins
上一篇结尾留了一个问题: 如果一个动作的长期回报要等到几十步甚至更多步之后才能知道,那 Agent 在当前状态下,如何判断不同动作的长期价值? Return 可以衡量一条轨迹的累计收益。但做决策的时候,未来还没有发生——不存在一条可以直接计算的轨迹。那在当前时刻,怎么评价一个 State 甚至一个具体 Action 的长期价值?

从监督学习到强化学习:没有 Label,模型如何学会决策?

·7538 words·16 mins
起因 # 最近开始看 MIT 6.S191 的 Lecture 5——Deep Reinforcement Learning。 过去几个月写了不少笔记,从 RNN 到 Transformer,从 VAE 到 GAN,基本都属于 supervised 或 self-supervised 的范畴。之前梳理训练信号来源的那篇,整理了四种学习范式——supervised、unsupervised、semi-supervised、self-supervised——的核心区别在于训练信号是谁提供的。

GAN 的对抗到底发生在哪里:从 D(G(z)) 到 Distribution Matching

·7620 words·16 mins
上一篇讲完 VAE,走到一条因果链:VAE 通过把 Encoder 的输出从确定点变成概率分布,让 latent space 服从已知 prior,于是可以从 prior 采样、交给 Decoder 生成新样本。 整个过程很精巧,但回头看,它对概率计算的依赖很重:Encoder 参数化 \(q(z|x)\),训练目标里有 KL divergence、有 reconstruction likelihood,每一步都在和 density 打交道。