起因#
上一篇讨论了 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 组 | 30 | 10 | 40 |
| B 组 | 15 | 45 | 60 |
| 合计 | 45 | 55 | 100 |
整篇文章的所有概念都会反复回到这张表。
现在随机抽取一个人,分别回答三个问题。
问题一:这个人来自 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.4 | 100 人 |
| \(P(X=10, Y=A)\) | A 组且获 10 元 | 0.3 | 100 人 |
| \(P(X=10 \mid Y=A)\) | 已知 A 组,获 10 元 | 0.75 | 40 人 |
前两个的分母都是 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) | Likelihood | Posterior |
|---|---|---|
| 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(全期望公式) | 已知每组内部的条件期望,整体期望是多少? |
条件概率改变的是考虑问题的范围。贝叶斯定理交换了条件方向。全概率和全期望利用分组,把局部信息组合成整体结果。
参考资料#
- 从 Return 到 Q-Function:强化学习如何评价一个尚未发生的决策 — State Value 和条件期望的定义
- 从马尔可夫性质出发:DP 无后效性、HMM 与 VAE 的知识联想 — Markov Property 与 Bellman Equation
- 从伯努利分布推到二元交叉熵:二分类损失为什么长这样 — 似然与后验的区别
- Sheldon Ross, A First Course in Probability, Pearson — Chapter 3
- MIT 6.S191: Introduction to Deep Learning — https://introtodeeplearning.com/