资讯

原始采样法是什么?按照有向图的顺序从祖先到后代依次采样

2026-11-053 分钟阅读百科
TL;DR原始采样法(Ancestral Sampling),又称祖先采样,是从贝叶斯网络等有向概率图模型中生成样本的方法:按拓扑顺序先对无父节点的变量采样,再依次在已采样父节点取值的条件下对子节点采样,得到联合分布的精确样本;语言模型逐词生成、扩散模型逐步去噪都可视为这种思想,有观测证据时需改用拒绝采样或重要性采样等。

原始采样法(Ancestral Sampling),也叫祖先采样,是一种从有向概率图模型中生成样本的简单方法。它的做法是:按照图中变量的先后依赖顺序,先从“祖先”变量开始采样,再依次在已经确定的父变量取值的条件下,对“后代”变量进行采样,直到所有的变量都得到取值。这样得到的一组取值,就是从整个联合分布中抽出的一个样本。

它适用于什么模型

原始采样法主要用于贝叶斯网络等有向无环图模型。在这类模型中,每个变量都只依赖于它的父变量,并且有一个给定父变量时的条件概率分布;整个联合分布就等于所有变量条件概率的乘积。正因为这种分解,联合分布可以通过一步一步地“按条件抽样”来实现。

具体怎么做

第一步,对图中的变量进行拓扑排序,也就是排一个顺序,保证每个变量都排在它所有父变量的后面。第二步,按照这个顺序依次采样:对于没有父变量的变量,直接从它自身的概率分布中抽取一个值;对于有父变量的变量,由于它的父变量已经采样过了,就从“给定父变量取这些值时”它的条件分布中抽取一个值。所有变量都采样完之后,就得到了一个完整的样本。

举个例子:一个简单的贝叶斯网络中,“是否多云”影响“是否下雨”和“洒水器是否开启”,后两者又共同影响“草地是否湿”。采样时,先按照多云的概率抛一次“硬币”决定今天是否多云;假设抽到了多云,再按照“多云时下雨的概率”决定是否下雨,按照“多云时开洒水器的概率”决定洒水器是否开启;最后根据下雨和洒水器的取值,按照相应的概率决定草地是否湿。重复很多次,就能得到大量的样本,用它们可以估计各种概率,比如草地湿的比例。

它的优点

原始采样法非常简单,计算效率高,每个样本只需要按顺序抽一遍;而且得到的是来自联合分布的精确样本,样本之间相互独立,不需要像马尔可夫链蒙特卡罗方法那样等待收敛、处理样本之间的相关性。

它的局限

原始采样法只能从模型的先验联合分布中采样。如果已经观测到了某些变量的取值,想从“给定这些观测”的条件分布中采样,就不能直接使用了。尤其是当观测的是后代变量时,比如已知草地是湿的,想推断是否下过雨,原始采样无法直接按顺序生成。一种简单的办法是拒绝采样:照常进行原始采样,只保留那些与观测一致的样本,丢弃其余的样本。但如果观测到的事件本身概率很小,绝大部分样本都会被丢弃,效率极低。改进的方法有似然加权,也就是把观测变量固定为观测值,并给每个样本乘以一个权重,以及吉布斯采样等马尔可夫链蒙特卡罗方法。此外,原始采样法也不适用于马尔可夫随机场等无向图模型,因为它们没有明确的先后顺序。

在生成模型中的体现

原始采样的思想在今天的生成模型中随处可见。大语言模型生成文本的过程就是一种原始采样:先生成第一个词,然后在已经生成的词的条件下生成下一个词,依次进行。扩散模型从纯噪声开始,一步一步地在上一步结果的条件下去噪;变分自编码器先从潜在变量的先验中采样,再由解码器在潜在变量的条件下生成数据,也都体现了“按依赖顺序逐步采样”的思想。