题目:给定一个包含6个变量的贝叶斯网络,计算联合概率密度公式,并比较完全概率表和贝叶斯网络的存储效率。
根据贝叶斯网络的条件独立性假设,6个变量的联合概率密度可以分解为:
这个公式表示了变量之间的依赖关系:
根据公式可以推断出网络结构:
x₁ (根节点)
/ | \
/ | \
x₂ x₅ (x₃依赖x₁和x₅)
/ \ | /
/ \ | /
x₄ x₆←x₃
↑
x₂,x₄
箭头表示依赖关系,指向的节点依赖于箭头起点的节点
假设每个变量都是二值变量(取值为0或1),则完全概率表需要存储所有可能的变量组合。
6个二值变量的所有可能组合数为:
| x₁ | x₂ | x₃ | x₄ | x₅ | x₆ | P(x₁,x₂,x₃,x₄,x₅,x₆) |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | p₁ |
| 0 | 0 | 0 | 0 | 0 | 1 | p₂ |
| 0 | 0 | 0 | 0 | 1 | 0 | p₃ |
| ... | ||||||
| 1 | 1 | 1 | 1 | 1 | 1 | p₆₄ |
完全概率表需要存储 64个概率值(实际上是63个,因为最后一个可以通过归一化计算得出)。
随着变量数量增加,存储需求呈指数增长:
贝叶斯网络利用条件独立性,只需要存储每个节点的条件概率表。
无父节点,需要存储:
(\(x_1=0\) 和 \(x_1=1\) 的概率)
1个父节点,需要存储:
(对于 \(x_1\) 的每个取值,\(x_2\) 有2个可能的取值)
2个父节点,需要存储:
(\(x_1\) 和 \(x_5\) 的4种组合,每种组合下 \(x_3\) 有2个取值)
1个父节点,需要存储:
1个父节点,需要存储:
3个父节点,需要存储:
(\(x_2\)、\(x_3\) 和 \(x_4\) 的8种组合,每种组合下 \(x_6\) 有2个取值)
64 行
存储所有变量的联合概率
38 行
利用条件独立性压缩存储
贝叶斯网络节省了约 40.6% 的存储空间!
利用条件独立性大幅减少存储需求
推理计算更快,避免了指数级复杂度
图结构直观展示变量间的因果关系
每个节点的CPT可以独立学习和更新
随着变量数量增加,贝叶斯网络的优势更加明显:
| 变量数量 | 完全概率表 | 贝叶斯网络(假设平均2个父节点) | 压缩率 |
|---|---|---|---|
| 6 | 64 | 38 | 59.4% |
| 10 | 1,024 | ~80 | 7.8% |
| 20 | 1,048,576 | ~160 | 0.015% |
| 30 | 1,073,741,824 | ~240 | 0.000022% |
注:贝叶斯网络的实际大小取决于网络结构,这里假设平均每个节点有2个父节点
联合概率可以通过条件独立性分解为多个条件概率的乘积
完全概率表需要 \(2^6 = 64\) 行存储
贝叶斯网络只需要 38 行,节省约 40.6% 的空间
变量越多,贝叶斯网络的优势越明显