采样方法小览

460 阅读2分钟

马尔可夫链蒙特卡洛(MCMC)

Metropolis-Hastings (MH)

Metropolis-Hastings (MH) 算法是一种用于从复杂的概率分布中生成样本的马尔可夫链蒙特卡洛(MCMC)方法。MH算法特别适用于贝叶斯推断中的后验分布采样,其核心思想是通过随机采样来构建一个马尔可夫链,使得其稳态分布与目标分布一致。下面详细介绍MH算法的步骤、公式以及为什么采样的主要对象是参数而不是数据。

1. Metropolis-Hastings算法的核心思想

MH算法的主要目标是从目标分布 P(θx)P(\theta | x) 中进行随机采样,其中 θ\theta 是模型参数,xx 是观测数据。在很多情况下,直接从 P(θx)P(\theta | x) 中采样并不容易,因此MH算法使用提议分布来生成样本。

贝叶斯定理的背景 在应用MH算法之前,首先需要了解后验分布是如何通过贝叶斯定理计算的。贝叶斯定理描述了如何根据观察到的数据更新对模型参数的信念。

公式如下:

p(θx)=p(xθ)p(θ)p(x)p(\theta | x) = \frac{p(x | \theta) p(\theta)}{p(x)}
  • p(θx)p(\theta | x):后验分布(即在数据 xx 之下对参数 θ\theta 的分布)。
  • p(xθ)p(x | \theta):似然函数(在参数 θ\theta 下生成观察数据 xx 的可能性)。
  • p(θ)p(\theta):先验分布(对参数 θ\theta 的先验信念)。
  • p(x)p(x):边际似然(对 xx 的总体概率,通常是一个常数,在计算比值时可被忽略)。

2. 算法步骤

步骤 1:初始化
  1. 选择初始参数值 θ(0)\theta^{(0)}
  2. 设定一个样本数量 NN,即所需的样本总量。
步骤 2:迭代采样

对于 t=1,2,,Nt = 1, 2, \ldots, N

  1. 从提议分布 q(θθ(t1))q(\theta' | \theta^{(t-1)}) 中生成候选参数 θ\theta'。提议分布可以选择为正态分布、均匀分布等,其目标是在当前参数值周围生成提议。

  2. 计算接受概率 α\alpha:

    α=min(1,P(θx)q(θ(t1)θ)P(θ(t1)x)q(θθ(t1)))\alpha = \min\left(1, \frac{P(\theta' | x) \cdot q(\theta^{(t-1)} | \theta')}{P(\theta^{(t-1)} | x) \cdot q(\theta' | \theta^{(t-1)})}\right)

    这里,P(θx)P(\theta | x) 是目标分布,之后的项是用来平衡提议分布的。

  3. 生成一个均匀随机数 uU(0,1)u \sim U(0, 1)

  4. 选择:

    • 如果 u<αu < \alpha,接受候选 θ\theta':设定 θ(t)=θ\theta^{(t)} = \theta'
    • 如果 uαu \geq \alpha,拒绝候选,保持当前状态:设定 θ(t)=θ(t1)\theta^{(t)} = \theta^{(t-1)}
  5. 重复步骤2,直到获取 NN 个样本。

3. 公式解释

  • 接收率公式:接受率 α\alpha 是通过比较当前参数和新提议参数的后验概率,以及提议分布的概率来计算的。这确保了当新提议的参数 θ\theta' 更可能获得更高的后验概率时,它被接受的可能性也较大。

  • 提议分布的选择:提议分布 q(θθ)q(\theta' | \theta) 的选择对采样效率影响深远。理想情况下,提议分布应紧密围绕目标分布,以减少拒绝率和加速收敛。

4. 为什么采样的主要对象是参数而不是数据

  1. 模型设定

    • 在进行参数估计时,数据 xx 是固定的观测值。我们使用现有的数据来推断未知的模型参数 θ\theta。数据反映的是我们对某一现象的观测,而模型参数则是揭示该现象的潜在因素。
  2. 后验分布的作用

    • 后验分布 P(θx)P(\theta | x) 是我们在观测数据 xx 的条件下对参数 θ\theta 的信念更新。我们希望从这个后验分布中生成样本,以便进行进一步的推断,如参数的均值、方差、置信区间等。
    • 采样θ\theta的主要目的在于理解这个模型。无论数据有多大,参数是我们预测和推理的核心。
  3. 数据的不变性

    • 在许多贝叶斯模型中,数据是静态的,而参数是动态的。我们根据数据生成参数的分布,进而通过这些参数对新数据进行预测。这意味着参数在我们的模型中扮演着比观测数据更为主动的角色。

Metropolis-Hastings算法旨在通过构建一个马尔可夫链来实现从复杂目标分布 P(θx)P(\theta | x) 中的参数 θ\theta 的采样。数据 xx 在初始设定中是已知的,而我们主要是对未知参数进行推断。通过该采样,我们能够获得对模型参数分布的深入理解,并为后续的推断提供基础。

吉布斯采样

吉布斯采样(Gibbs Sampling)简介

吉布斯采样是一种马尔可夫链蒙特卡洛(MCMC)方法,特别用于从多变量概率分布中生成样本。它通过依次对每个变量进行条件采样来实现目标分布的采样,适用于条件分布已知的情况。

1. 吉布斯采样的核心思想

吉布斯采样的基本思想是利用每个变量的条件分布。假设我们有一个多维随机变量 X=(X1,X2,,Xn)\mathbf{X} = (X_1, X_2, \ldots, X_n),我们希望从它的联合分布 P(X)P(\mathbf{X}) 中进行采样。

如果我们可以获得每个变量的条件分布 P(XiXi)P(X_i | X_{-i}) (即其他变量固定的情况下,变量 XiX_i 的分布),我们就可以通过以下步骤进行采样。

2. 公式

给定一个多维变量 X\mathbf{X},其联合分布为 P(X)P(\mathbf{X}),我们需要采样的条件分布为:

P(XiXi)P(X_i | X_{-i})

其中 XiX_{-i} 表示除了 XiX_i 以外的所有变量。

3. 吉布斯采样步骤

以下是进行吉布斯采样的具体步骤:

步骤 1:初始化
  1. 选择初始值 Xi(0)X_i^{(0)} 对于所有变量 i=1,2,,ni = 1, 2, \ldots, n
步骤 2:迭代采样(进行 T 次迭代)

对于每一轮迭代 t=1,2,,Tt = 1, 2, \ldots, T

  1. 对每个变量进行条件采样
    • P(X1X1(t1))P(X_1 | X_{-1}^{(t-1)}) 中采样得到 X1(t)X_1^{(t)}
    • 然后,从 P(X2X2(t))P(X_2 | X_{-2}^{(t)}) 中采样得到 X2(t)X_2^{(t)}
    • 重复直到所有变量采样完成:
      X1(t)P(X1X2(t1),X3(t1),,Xn(t1))X2(t)P(X2X1(t),X3(t1),,Xn(t1))Xn(t)P(XnX1(t),X2(t),,Xn1(t))\begin{align*} X_1^{(t)} &\sim P(X_1 | X_2^{(t-1)}, X_3^{(t-1)}, \ldots, X_n^{(t-1)}) \\ X_2^{(t)} &\sim P(X_2 | X_1^{(t)}, X_3^{(t-1)}, \ldots, X_n^{(t-1)}) \\ &\vdots \\ X_n^{(t)} &\sim P(X_n | X_1^{(t)}, X_2^{(t)}, \ldots, X_{n-1}^{(t)}) \end{align*}
步骤 3:收集样本
  • 在经过初步的几个迭代后(通常是由于收敛性失效),开始收集后续的样本 (X1(t),X2(t),,Xn(t))(X_1^{(t)}, X_2^{(t)}, \ldots, X_n^{(t)}),这将为我们提供目标分布的样本。

4. 吉布斯采样的特点

  • 简单性:特别适用于条件分布很容易计算的情况。
  • 高效性:在多个变量之间相互作用强的情况下,吉布斯采样能够有效地探索参数空间。

5. 吉布斯采样与Metropolis-Hastings算法的关系

吉布斯采样可以被视为Metropolis-Hastings算法的一个特例。在MH算法中,我们使用一种提议分布 q(xx)q(x' | x) 来生成候选样本,而在吉布斯采样中,提议分布实际上来自变量的条件分布。

关键区别:
  • 提议分布

    • 在Metropolis-Hastings中,提议分布是任意的,而在吉布斯采样中,提议分布被限制在条件分布 P(XiXi)P(X_i | X_{-i}) 上。
  • 保留方式

    • 在Metropolis-Hastings中,我们通过接受概率来决定是否接受候选样本,而在吉布斯采样中,每个变量都是通过其条件概率直接生成的,接受的概率始终为1。
公式演示:

为了更好地理解,以下将描述如何通过Metropolis-Hastings重新表述吉布斯采样:

当我们从条件分布 P(XiXi)P(X_i | X_{-i}) 中采样时,MH的接受概率中:

α=min(1,P(Xnewx)q(XcurrentXnew)P(Xcurrentx)q(XnewXcurrent))\alpha = \min\left(1, \frac{P(X^{\text{new}} | x) \cdot q(X^{\text{current}} | X^{\text{new}})}{P(X^{\text{current}} | x) \cdot q(X^{\text{new}} | X^{\text{current}})}\right)

其中,由于提议分布是条件分布,接受的概率为1,因此直接采样的结果就是吉布斯采样的最终结果。

总结

吉布斯采样是一种非常有效的MCMC方法,特别适用于高维数据的参数采样。它通过顺次从条件分布中采样,确保了样本的最终分布与目标分布一致。与Metropolis-Hastings算法相比,吉布斯采样在处理多维变量时更为直观和简单,特别是当条件分布易于计算时。


均匀分布随机数

线性同余法(Linear Congruential Generator, LCG)是一种用于生成伪随机数的算法。它是随机数生成器中的一种经典且简单的方法,广泛应用于计算机程序中生成随机数。

1. 算法原理

线性同余法通过以下递推公式生成伪随机数序列:

Xn+1=(aXn+c)modmX_{n+1} = (a X_n + c) \mod m

其中:

  • XX 是生成的随机数序列。
  • nn 是序列的索引。
  • mm 是模数,决定了生成的随机数的范围(通常是一个大整数)。
  • aa 是乘数,影响生成数的周期。
  • cc 是增量。
  • X0X_0 是种子(即初始值),用于启动随机数生成过程。

2. 参数选择

选择合适的参数 mmaaccX0X_0 是确保伪随机性和周期性的重要条件。通常推荐的参数选择方式如下:

  • mm 通常取为 2k2^kkk 是正整数),以确保数的最大范围。
  • aamm 需要互质。
  • cc 通常取为一个较小的正整数。
  • X0X_0 随机选取,通常更改达到不同的随机数序列。
  • 当参数选择良好时,可以生成较长周期的伪随机数序列。
局限性
  • 尽管多严格选择参数可以提高性能,线性同余法仍可能产生周期性和随机性较低的问题,尤其是在参数选择不当的情况下。
  • 对于某些应用(例如,加密等安全性要求高的场景),它的随机性不足以满足要求。需要更复杂的随机数生成算法,例如梅森旋转算法(Mersenne Twister)等。

采样方法

在概率统计和机器学习中,采样是重要的工具,用于从特定的概率分布中生成随机样本。以下将详细介绍逆变换采样、拒绝采样、重要性采样和负采样,包括它们的定义、计算公式和示例。

1. 逆变换采样(Inverse Transform Sampling)

定义: 逆变换采样是一种通过累计分布函数(CDF)生成随机变量的方法。该方法利用均匀分布的随机数通过CDF的逆函数,将其转换为目标分布的样本。

公式

  1. 生成均匀分布的随机数 uU(0,1)u \sim U(0, 1)
  2. 计算目标分布 X=F1(u)X = F^{-1}(u),其中 F1F^{-1} 是目标分布的CDF的逆函数。

示例: 假设我们想从一个指数分布 f(x)=λeλxf(x) = \lambda e^{-\lambda x} 中采样,其CDF为:

F(x)=1eλxF(x) = 1 - e^{-\lambda x}

其逆CDF为:

F1(u)=1λln(1u)(对于 u[0,1])F^{-1}(u) = -\frac{1}{\lambda} \ln(1-u) \quad (\text{对于 } u \in [0, 1])

步骤:

  1. 生成 uU(0,1)u \sim U(0, 1)(比如 u=0.5u = 0.5)。
  2. 计算样本:
X=F1(0.5)=1λln(10.5)=1λln(0.5)X = F^{-1}(0.5) = -\frac{1}{\lambda} \ln(1-0.5) = -\frac{1}{\lambda} \ln(0.5)
👋 证明 Y=FX(X)Y = F_X(X) 服从均匀分布

要理解为什么随机变量 Y=FX(X)Y = F_X(X) 服从区间 [0,1][0, 1] 上的均匀分布,我们首先需要回顾一些基本的统计概念,特别是关于连续随机变量及其累积分布函数 (CDF)。

  1. 累积分布函数 (CDF):对于给定的连续随机变量 XX,其 CDF 定义为:

    FX(x)=P(Xx)F_X(x) = P(X \leq x)

    这表示随机变量 XX 的值小于或等于 xx 的概率。

  2. 随机变量的增值性:由于 CDF 是单调非减的(即随着 xx 的增加,CDF 的值不会减少),并且在整个实数轴上趋向于 0011(即 limxFX(x)=0\lim_{x \to -\infty} F_X(x) = 0limx+FX(x)=1\lim_{x \to +\infty} F_X(x) = 1),这保证了 CDF 的范围是 [0,1][0, 1]

为了证明 ( Y = F_X(X) ) 在区间 ([0, 1]) 上均匀分布,我们需要考虑它的 CDF。

  1. 计算 YY 的 CDF

    P(Yy)=P(FX(X)y)P(Y \leq y) = P(F_X(X) \leq y)

    由于 CDF 的映射性质,对任何 y[0,1]y \in [0, 1]

    • FX(X)yF_X(X) \leq y 时,根据 CDF 的定义,可以转换为:
    P(FX(X)y)=P(XFX1(y))P(F_X(X) \leq y) = P(X \leq F_X^{-1}(y))
  2. 利用 CDF 的定义: 由于 FX1F_X^{-1}FXF_X 的逆函数,所以:

    P(XFX1(y))=FX(FX1(y))=yP(X \leq F_X^{-1}(y)) = F_X(F_X^{-1}(y)) = y

    这表明 XX 小于或等于 FX1(y)F_X^{-1}(y) 的概率等于 yy,而 yy 是在 [0,1][0, 1] 上的任意值。

  3. 得到结果: 综合上述结果,我们可以得出:

    P(Yy)=yfor y[0,1]P(Y \leq y) = y \quad \text{for } y \in [0, 1]
  4. 分布类型: 这个结果说明 Y=FX(X)Y = F_X(X) 的 CDF P(Yy)P(Y \leq y) 在区间 [0,1][0, 1] 上呈线性,故它符合均匀分布的定义,也就是说:

    YU(0,1)Y \sim U(0, 1)

2. 拒绝采样(Rejection Sampling)

定义: 拒绝采样是一种从复杂分布中生成样本的方法。它通过一个易于采样的分布(提议分布)提出候选样本,然后根据一个拒绝概率来决定是否接受这个样本。

公式

  1. 选择一个简单的分布 g(x)g(x)作为提议分布,并确定常数 MM,使得对于所有 xx,有 f(x)Mg(x)f(x) \leq M \cdot g(x)
  2. g(x)g(x) 中采样到 xx^*
  3. 生成均匀分布的随机数 uU(0,1)u \sim U(0, 1)
  4. 如果 uf(x)Mg(x)u \leq \frac{f(x^*)}{M g(x^*)},则接受 x x^* %;否则,拒绝并返回第2步。

示例: 假设我们希望从目标分布 f(x)f(x) 中采样,但现有的提议分布 g(x)g(x) 容易采样。设 f(x)f(x) 是一个特定的分布,g(x)g(x) 是均匀分布,假设 MM 已知。

  1. g(x)g(x) 中采样 xx^*
  2. 生成 uu
  3. 根据条件判断是否接受样本,重复采样直到得到一个样本。

拒绝采样的局限性

  1. 效率低下:如果选择的提议分布与目标分布不匹配,拒绝采样的效率可能会很低,样本生成速度缓慢。
  2. 需要选择合适的常数 MM:若无法找到适当的 MM,可能会导致拒绝率过高。
  3. 高维情况下的“维度诅咒”:在高维空间中,拒绝采样往往会在样本十分稀疏的情况下失败,效果降低。

3. 重要性采样(Importance Sampling)

定义: 重要性采样是一种统计方法,用于通过来自一个简单的分布(提出分布)生成样本,然后用这些样本来估计目标分布的期望。

公式

  1. 从提议分布 g(x)g(x) 中抽取样本 x1,x2,,xnx_1, x_2, \ldots, x_n
  2. 计算权重:
wi=f(xi)g(xi)w_i = \frac{f(x_i)}{g(x_i)}
  1. 通过这些权重估计目标期望:
E[f(X)]1ni=1nwiE[f(X)] \approx \frac{1}{n} \sum_{i=1}^{n} w_i

示例: 假设我们想计算 E[X]E[X] 但不能直接从 f(x)f(x) 中采样,我们可以从 g(x)g(x)(如均匀分布)中采样。

  1. g(x)g(x) 中生成 x1,x2,,xnx_1, x_2, \ldots, x_n
  2. 计算每个样本的权重。
  3. 使用权重计算期望。

4. 负采样(Negative Sampling)

定义: 负采样是一种自我监督学习技术,常用于Word2Vec和推荐系统。它通过随机选择负样本来训练模型,以提高计算效率,尤其在处理大规模数据时。

公式

  1. 对于每个正样本 (wi,wj)(w_i, w_j)
  2. 随机选择 kk 个负样本 (wi,wk)(w_i, w_k)
  3. 训练模型,使得对于正样本生成的预测概率高,而负样本的概率低。

示例: 在训练Word2Vec模型时,假设我们有上下文单词和目标单词(如 "dog" 和 "bark"),我们会将 "dog" 和 "bark" 视为正样本。

  1. 随机选择 k=5k = 5 个负样本,比如从词汇表中随机选择词(如 "cat", "fish", "computer", "tree", "car")。
  2. 通过神经网络将正样本和负样本输入,并计算损失函数,更新模型。

总结

采样方法定义公式和示例
逆变换采样通过CDF的逆函数生成随机变量X=F1(u)X = F^{-1}(u)(示例:指数分布的逆CDF计算)
拒绝采样采用易于采样的分布并根据拒绝概率筛选样本从提议分布 g(x)g(x) 中选择 xx^*,并如果满足条件接受样本,示例:uf(x)Mg(x)u \leq \frac{f(x^*)}{M g(x^*)}
重要性采样通过对样本加权来估计目标分布的期望g(x)g(x) 中采样,计算权重 wi=f(xi)g(xi)w_i = \frac{f(x_i)}{g(x_i)},并用 E[f(X)]1ni=1nwiE[f(X)] \approx \frac{1}{n} \sum_{i=1}^{n} w_i 计算期望
负采样随机选择负样本以平衡正样本,用于模型训练从给定正样本中随机选择负样本,并更新模型生成概率,训练目标是使正样本预测更高,负样本预测更低。