ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

条件分布兼容性判定:从联合分布到简洁编码的复杂度分析

条件分布兼容性判定:从联合分布到简洁编码的复杂度分析 做算法、机器学习或因果推断相关开发时有一个容易被忽略但非常关键的基础问题多个“条件分布”放在一起是不是一定存在一个“联合分布”能同时把它们全部解释出来如果不存在我们拿到的条件分布就是不兼容的。最近我在阅读一篇理论性较强的论文题目直译过来是《关于简洁编码条件分布的兼容性问题复杂度研究》On the Complexity of the Compatibility Problem for Succinctly Encoded Conditional Distributions。这篇论文不是工程实现类的文章而是复杂度理论方向的工作但它背后的问题和每个做贝叶斯网络、概率模型、数据融合的人都有关系。这篇文章我不想只贴论文摘要而是把四个关键词拆开讲清楚Compatibility Problem兼容性问题、Conditional Distributions条件分布、Succinct Encoding简洁编码、Complexity复杂度。然后结合一个小实验说明为什么这个问题的判定不能靠“把表全部列出来”解决以及为什么复杂度结论对工程实践有真实影响。本文适合下面几类读者接触过条件概率但没系统了解过“兼容性判定”的算法/开发同学做贝叶斯网络、概率图模型、因果推断方向的研究生或工程师对复杂度理论感兴趣希望用具体概率问题理解 NP 完全性、输入编码方式影响的人。读完本文你能掌握兼容性问题的数学定义、为什么它天然是一个指数规模约束问题、简洁编码如何改变复杂度的度量方式以及如何用线性规划在 Python 中验证一组条件分布是否兼容。1. 兼容性问题条件分布能否来自同一个联合分布1.1 先用一个例子感受问题离散概率里最常见的表达方式是联合分布、边缘分布和条件分布。比如变量 A 和 B 各有 0、1 两个取值一个联合分布可以写成AB概率000.10010.20100.30110.40从这个联合分布我们很容易算出边缘分布P(A0)0.30P(B0)0.40条件分布P(A1|B0)0.75P(B0|A0)1/3 等等。但现实中数据往往是“碎片化”的。比如数据集一给出了 P(B|A) 的完整表格数据集二给出了 P(A|B) 的完整表格或者说论文、文档、模型参数里只给了若干个条件分布。这时我们想知道是否存在一个联合分布 P(A,B)使得从这个联合分布中计算出的 P(B|A)、P(A|B) 恰好等于给定的表格如果存在我们就说这些条件分布是兼容的。上面这种双向条件分布只是最简单的场景。更常见的是多个变量之间的条件约束我们有一堆变量 V又有一堆“给定某些变量时另一个变量的分布”的说明能否找到一个定义在所有变量上的联合分布让每个说明都成立1.2 形式化定义可以把“兼容性问题”形式化地描述为输入一组变量 V每个变量有有限离散取值域一组条件分布说明每个说明形如 P(X | Pa(X))并且给出了每种取值下的概率。问题是否存在一个定义在 V 所有联合取值上的概率分布 Q使得对每一个指定说明都有 Q(Xx | Pa(X)y) 等于给出表格中的概率若存在称这些条件分布兼容否则称不兼容。这里要注意几个容易混淆的点第一“条件分布本身能合法定义”不代表“条件分布之间兼容”。每个条件分布单独看都满足非负、和为 1但它们之间可能存在强烈的全局约束。第二兼容性问题与经典的“边缘分布扩展问题”Marginal Problem不是同一个问题。边缘分布问题是给定若干低维边缘分布问是否存在高维联合分布。我们的问题里给的是条件分布条件概率描述的是“给定一部分变量后另一部分变量的分布”它携带的约束和边缘分布不同也更难处理。第三在概率图模型里一个贝叶斯网络自身就是一组条件分布的组合。如果一个有向无环图 DAG 的每个节点都指定了条件概率表 CPT那么它们的兼容性是天然的因为联合分布可以直接按因子分解构造出来。但是脱离 DAG 结构、任意给出若干条件分布时问题就复杂得多。兼容性问题实际上是“给定一堆条件约束能否找到一个概率模型同时满足它们”的核心数学判定。2. 核心概念速查表在进一步讨论之前先把本文反复用到的几个概念写清楚。术语中文含义Conditional Distribution条件分布在一个或一组变量取值已知时另一个变量的概率分布Joint Distribution联合分布定义在所有变量全部组合上的概率分布Compatibility兼容性是否存在一个联合分布能同时还原给定的一组条件分布Succinct Encoding简洁编码用远小于显式表格长度的方式压缩描述输入例如公式、程序、电路描述Explicit Encoding显式编码把每一行每一列的概率都逐项写出来的输入方式Complexity复杂性 / 复杂度问题求解所需时间、空间随输入规模增长的规律Decision Problem判定问题只需回答“是 / 否”的问题复杂度理论通常研究判定版本把概念边界先界定好后面理解论文的贡献点就顺了。尤其是“显式编码”和“简洁编码”这一对概念是理解整篇论文题目最关键的钥匙。3. 为什么兼容性判定天然是“指数规模约束”问题3.1 变量少联合状态空间却不小假设有 n 个二值变量完整联合分布需要用 2^n 个非负概率值来描述。这里面每一个值都不能单独随意设定因为它们加起来必须等于 1。条件分布额外把其中的许多线性关系固定下来。我们来看一个极小例子。设变量 A、B 均为二值给定条件概率 P(B0|A0)1、P(B1|A1)1。翻译成人话就是每当 A0 时 B 一定等于 0每当 A1 时 B 一定等于 1。用联合概率 x00、x01、x10、x11 表达x00 P(A0,B0)x01 P(A0,B1)x10 P(A1,B0)x11 P(A1,B1)。条件 P(B0|A0)1 意味着x00 x00 x01从而 x01 0。也就是说看到 A0 时 B1 的联合概率一定为 0。条件 P(B1|A1)1 类似地导出 x10 0。这些约束写成线性等式都很简单但它们的数量会随变量组合呈指数增长。当一个条件分布的父变量集合很大时要为每一种父变量取值都写出一条等式多个条件分布叠在一起约束系统会迅速变成一个规模巨大的线性规划。3.2 朴素验证为什么不现实如果直接采用“遍历所有联合状态”的方式验证兼容性最基础的做法是枚举变量所有可能取值组合把未知量设为每个状态的概率写出所有给定条件分布对应的线性约束调用线性规划或单纯形法判断是否存在可行解。这种方法在 3 个二值变量时只有 8 个未知量完全可行但变量到 30 个时状态空间超过 10 亿普通机器根本无法显式枚举。因此兼容性问题的“表格式
返回列表