有向无环图、拓扑序与因子分解
层级:B|建议先修:08-01、05-03、05-08
有向无环图(DAG)既能描述依赖方向,又避免循环定义。Bayesian 网络用 DAG 把高维联合分布分解成一组局部条件概率。
1. DAG 的定义
有向图中,边 表示从 指向 。若不存在沿箭头方向出发又回到原节点的有向环,则称为有向无环图。
对节点 :
- 父节点集合记为 ;
- 子节点集合记为 ;
- 祖先是沿有向路径能到达 的节点;
- 后代是从 出发沿有向路径能到达的节点。
2. 拓扑序
DAG 的拓扑序是节点的一个线性排列,使每条边的起点都出现在终点之前。一个图存在拓扑序,当且仅当它是 DAG。
Kahn 算法:
- 找出所有入度为 0 的节点;
- 取出其中一个加入序列,并删除其所有出边;
- 重复,直到全部节点被取出;
- 若仍有节点却找不到入度为 0 的节点,说明存在环。
拓扑序通常不唯一。它表示一种与依赖方向兼容的计算或生成顺序。
3. 概率链式法则
任意联合分布都可按某个变量顺序分解:
这个恒等式本身不带独立假设,但后面的条件集合会越来越大。
4. Bayesian 网络因子分解
若一个联合分布对 DAG 因子分解,则
每个变量只依赖自己的父节点,而无需依赖拓扑序中全部前驱。这能大幅减少参数数量并暴露条件独立结构。
例如 、、、,则
5. 局部 Markov 性质
在 Bayesian 网络中,每个节点在给定其父节点后,与自己的非后代条件独立。形式上,
其中要排除父节点本身。这个局部性质与因子分解密切相关。
6. 生成模型解释
可按拓扑序采样:
- 先从没有父节点的根变量采样;
- 已知父节点取值后,从每个子变量的条件分布采样;
- 直到生成全部变量。
因此 DAG 不仅是计算图,也可定义数据的联合生成过程。
7. 三种基本结构
三个节点有三种典型连接:
- 链:;
- 分叉:;
- 对撞:。
链和分叉中,给定中间节点 会阻断 的路径;对撞结构中,不观测 时路径阻断,观测 或其后代反而可能让 相关。这是 d-分离的核心。
8. Markov 等价
不同方向的 DAG 可能表达相同的条件独立集合。两个 DAG 若具有相同骨架和相同对撞结构,则 Markov 等价。
因此只从观察数据中的独立关系,通常无法识别所有边方向;因果方向还需要时间顺序、干预数据或额外假设。
9. 参数量示例
若 个二值变量完全联合建模,需要 个自由参数。若某 DAG 中每个节点最多有 个父节点,每个条件概率表的规模约为 ,总参数规模约为 。稀疏图以结构假设换取统计和计算效率。
10. 易错点
- 箭头不自动代表因果,只表示因子分解或依赖方向;因果解释需要额外语义。
- 没有直接边不等于边缘独立,可能通过其他路径相关。
- 拓扑序不是按节点名字排序,也不一定唯一。
- DAG 不能直接表示有向反馈环;动态系统常通过时间展开消除环。
常见问答
Q1:任何联合分布都能用 DAG 表示吗?
可以用完全 DAG 按链式法则表示,但未必得到参数节省。稀疏 DAG 需要真实的条件独立结构。
Q2:删除一条边意味着什么?
意味着加入某种条件独立假设,使子节点的条件分布不再直接依赖该父节点候选。
Q3:为什么 DAG 不能有环?
有环时无法给出父先子后的拓扑生成顺序,局部条件分布也未必能组成合法联合分布。
Q4:神经网络计算图也是 Bayesian 网络吗?
普通确定性计算图描述数值运算,不一定表示随机变量联合分布。若节点具备概率语义并满足相应分解,才是概率图模型。
练习
- 为边 写出一个拓扑序和联合分解。
- 同一图是否可能有多个拓扑序?给出例子。
- 二值链 需要多少个自由参数?
- 解释为什么观察数据通常不能区分 与 。
答案与提示
- 如 ,分解为 ; 可交换。
- 可以。两个互不相连的根节点可任意交换顺序。
- 根节点 1 个参数,其余每个条件表有 2 个自由参数,共 。
- 两节点无对撞结构,两个方向编码相同的独立关系;还需干预或额外假设定向。