均勻分布隨機數
- 偽隨機數
- 通過離散分布來逼近連續分布
- 線性同余法
\(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)\)上的積分(函數期望),即
-
如果是高維空間的隨機向量,拒絕采樣和重要性重采樣經常難以尋找到合適的參考分布,采樣效率低下,此時應考慮馬爾可夫蒙特卡洛采樣法