均匀分布随机数
- 伪随机数
- 通过离散分布来逼近连续分布
- 线性同余法
\(x_{t+1} = a \cdot x_t + c \ (mod \ m)\)
初始值\(x_0\)称为随机种子,一般会取系统时间 - 好的线性同余随机数生成器,循环周期要尽可能接近\(m\),需要精心挑选合适的\(a\)和\(m\)
常见的采样方法
- 给定随机变量的一个取值,可以根据概率密度函数来计算该值对应的概率密度
- 根据概率密度函数提供的概率分布信息来生成随机变量的一个取值,这就是采样
采样策略
-
函数变换法
如果随机变量\(x\)和\(\mu\)存在变换关系\(\mu = \varphi(x)\),则它们的概率密度函数关系为:\[p(\mu)\cdot|\varphi^{'}(x)| = p(x) \]从目标分布\(p(x)\)中不好采样\(x\),可以构造一个变换\(u = \varphi(x)\),使得从变换后的分布\(p(\mu)\)中采样\(\mu\)比较容易,这样可以通过先对\(\mu\)进行采样,然后通过反函数\(x = \varphi^{-1}(\mu)\)来间接得到\(x\)
前提是\(\varphi\)的逆函数是好求的
特别地,在函数变换法中,如果变换关系\(\varphi(\cdot)\)是\(x\)的累积分布函数,则得到了逆变换采样(Inverse Transform Sampling)。假设待采样的目标分布的概率密度函数为\(p(x)\),它的累积分布函数为
\[\mu = \Phi(x) = \int_{-\infty}^x p(t)dt \]则逆变换采样法需按如下过程进行采样:
- 从均匀分布\(U(0,1)\)中产生一个随机数\(\mu_i\)
- 计算\(x_i = \Phi^{-1}(\mu_i)\),其中\(\Phi(\cdot)\)是累积分布函数的逆函数
-
拒绝采样(Rejection Sampling)
- 又叫接受/拒绝采样(Accept-Reject Sampling)。对于目标分布\(p(x)\),选取一个容易采样的参考分布\(q(x)\),使得对于任意\(x\)都有\(p(x) \leq M \cdot q(x)\),则可以按如下过程采样:
- 从参考分布\(q(x)\)中随机抽取一个样本\(x_i\)
- 从均匀分布\(U(0, 1)\)中产生一个随机数\(\mu_i\)
- 如果\(\mu_i < \frac{p(x_i)}{M q(x_i)}\),则接受样本\(x_i\);否则拒绝,重新采样
- \(M \cdot q(x)\)是\(p(x)\)的包络函数。包络函数越紧,采样效率越高
- 改进:自适应拒绝采样(Adaptive Rejection Sampling),在目标分队是对数凹函数时,用多段线性函数来覆盖目标分布的对数\(\ln p(x)\)
- 又叫接受/拒绝采样(Accept-Reject Sampling)。对于目标分布\(p(x)\),选取一个容易采样的参考分布\(q(x)\),使得对于任意\(x\)都有\(p(x) \leq M \cdot q(x)\),则可以按如下过程采样:
-
重要性采样
- 用于计算函数\(f(x)\)在目标分布\(p(x)\)上的积分(函数期望),即
\[E[f] = \int f(x) p(x)dx \]
- 找到一个容易抽样的参考分布\(q(x)\),并令\(w(x) = \frac{p(x)}{q(x)}\),则有:
\[E[f] = \int f(x)w(x)q(x)dx \]这里\(w(x)\)可以看作样本\(x\)的重要性权重
- 从\(q(x)\)抽取N个样本\(\{x_i\}\),然后按下式估计\(E[f]\):
\[E[f]\approx \hat{E}_N[f] = \sum \limits_{i=1}^N f(x_i) w(x_i) \]
- 重要性重采样(Sampling-Importance Re-samping, SIR)
- 不计算积分,只采样样本
- 先从\(q(x)\)抽取N个样本,然后按照他们的权重\(w(x)\)进行重新采样
- 用于计算函数\(f(x)\)在目标分布\(p(x)\)上的积分(函数期望),即
-
如果是高维空间的随机向量,拒绝采样和重要性重采样经常难以寻找到合适的参考分布,采样效率低下,此时应考虑马尔可夫蒙特卡洛采样法