 |
哈伯深空圖像 (NASA/ESA/S. Beckwith(STScI) and The HUDF Team) |
根據宇宙學原理 (cosmological principle),一般相信宇宙在大尺度底下 (>Mpc) 是均勻 (homogeneous) 且各向同性 (isotropic) 的,亦即宇宙不存在中心,就像在球的表面上行走一樣,我們不會找到哪個地方在球面上有特別突出的重要性一樣,另外在宇宙各處的物質密度也應該是均等的。這樣均勻、公正且不偏頗的特性,同樣的也在統計取樣中,特別是沒有任何先驗資訊底下扮演了重要的角色。這裡我們回顧上個專題I&A2中生成任意維度單位球面上點的例子,我們以為生成的點是均勻地散布在球面上,但實際上這是一個錯覺,為什麼我們生成(x,y)的座標明明就是均勻的分佈,但最後會導致不均勻,或不對稱性的發生呢?
一、均勻性
讓我們回想一下上一個專題談到的均勻性,我們用二維單位圓上的點的例子來舉例比較容易想像。見下圖1,為了產生在單位圓上的點,我們可以隨機生成(x,y)分別在(−1,1)之間的點並正歸化它們,以形成單位圓上的點,而向量(x,y)則用於決定在極座標上的角度ϕ。可是從圖1會很明顯的發現紫色的點它們都是對應到相同的ϕ角,而綠色的則是角度為π/2,但由於ϕ的位置的點可以超出單位圓,所以產生在ϕ這個角度的單位圓上的點,實際上是比角π/2上的綠點來得多。亦即I&A2的算法2其實生成的並不是均勻分布的點,比如說在ϕ=(π4,3π4,5π4,7π4)處的點 (二維的例子剛好在這裡的點是最多的) 會多於ϕ=(0,π2,π,3π2)的點 (這裡的點是最少的)。
 |
圖1. 藉由平均分佈生成單位原上的點,以及各個角度ϕ所對應點出現的機率 |
我們可以重新run一次I&A2的算法2,取
dim=2,然後利用
ϕ=tan−1(xy)
得到在單位圓上的點所對應的角度。圖2即是生成
10000個點後對每個點的
ϕ作直方圖 (histogram),不難發現在
ϕ=(π4,3π4,5π4,7π4)處的點的數量最多,而
ϕ=(0,π2,π,3π2)最少,完全不是均勻分佈的狀態!
 |
圖2. 生成10000個二維單位圓上的點,將每個點所對應的ϕ作直方圖 |
那麼要如何避免這種不均勻呢,從圖1的概念上,也許讀者會想說,那我可以像布豐投針裡的那個例子,我丟掉任何
x2+y2>1的點,我只保留那些在粉紅圓內所生成的點。是的,沒錯,這樣的話的確會保證在各個
ϕ上的點的數量是均勻的。
但是這樣會衍生出一個問題,以圖1的狀況,假設我一開始生成
10000個隨機分佈在正方形內的點,不過為了保持均勻性,我必須reject掉藍色區域的點,所以不是每個生成的點都能有做有效率的利用。那麼如果以三維的例子,則是立方體和單位球,由於生成的點是佈滿立方體的,但僅有那些分佈在單位球內的點會被拿來做計算,不在球內的點會被reject掉。推到任意維度的情況,我們便可以推論生成
N個佈滿
n維超立方體 (hyper-cube) 的點,僅有那些屬於超球 (hyper-sphere) 內的點是有用的,故接受率 (acceptance rate)
η 便是超球的體積和超立方體體積之比,即
η=V超球V超立方體≤1.
而數學家已經幫我們計算出在任意維度的球體積
V超球(R)=πn/2RnΓ(n2+1) 其中
R是球半徑而
n是維度,另外立方體的體積
V超立方體(r)=rn.
不過這裡立方體的邊長
r是兩倍於球的半徑
R,可以從圖1看得出來,對單位圓而言是內切一個邊長為
2的正方形。所以我們可以寫下
η=πn/22nΓ(n2+1), 而隨著維度
n的增加,接受率
η會愈來愈小,當
n→∞時
η→0,見圖3。
 |
圖3. 接受率η隨著維度n的增加而迅速減少,注意n是整數 |
這張圖告訴我們,為了均勻性的產生在單位圓或單位球上的點,如果採用拋棄
x2+y2>1或
x2+y2+z3>1這種方式,那麼最終有很大一部分生成的點都會被reject掉。以二維和三維為例,
η分別是
0.7和
0.5,即在這兩個維度上有3和5成的點會被拋棄。如果我們想產生一個
10維球面上的點,其對應的
η=0.0024,即每生成
1000個隨機的點,僅僅有
2顆是成功分佈在
10維球的球面上,所以為了完整的覆蓋住
10維球面,我們可能得要生成非常非常多的點,這不僅僅沒有效率,而且非常浪費硬體的資源,所以我們要來看一個更好的做法,不但要保持均勻性,更要減少reject的數量,最好每個點都不會被reject!
二、從高斯分佈生成各向均勻數量的點
所以從上面的例子 (特別是圖1的示意圖) 可以看出,我們之所以會得到單位圓上的點在不同
ϕ角上的分佈不均勻是由於一開始生成隨機向量
(x,y)在某些角方向的點多於其它角的方向,為了避免這樣的不均勻性,又不想要上面提到
η在高維空間急速減少的情況,如果我們可以在各個方向灑點的數量都是均勻的那就太好了!比如說,生成的點像圖4這樣。
 |
圖4. 在xy平面上以原點為中心在各個方向ϕ的點數量都是均勻的 |
如果我們把在圖4幾個特定
ϕ方向的點作PDF,我們會得到圖5,我們會發現不管在哪個
ϕ的方向上,它們的PDF分佈圖都是對稱的,亦即在各個
ϕ上點的數量都是均勻的,不會有像之前一樣不對稱的情況而導致某些特定的
ϕ上產生比較多的點。
 |
圖5. 同圖4,但將不同ϕ方向上的點作PDF |
所以我們現在得到了,如果要各個方向產生點的數量是均勻的,則在任意維度上點的座標是以原點為中心的高斯分佈,對於多維度的高斯分 (multivariate Gaussian distribution) 佈我們有
p(x1,x2,⋯,xn)=1√(2π)n|Σ|exp(−12xTΣ−1x),
而
Σ稱作
協方差矩陣 (covariance matrix),它是用來描述不同軸之間的關聯性。由於不同軸 (例如
x和
y之間) 是無關聯的,所以
Σ是對角化的且其行列式 (determinant) 滿足
det(Σ)=n−1.
至於為什麼是這個值是由於將
rand(−1,1)轉換到高斯分佈時所作的測度變換,不過這裡不在這裡深究背後的數學,記得協方差矩陣的行列式即維度
n的倒數。為了得到均勻分佈在
n維球面上的點,我們必須將原來任意維度上的座標
rand(−1,1)改成均值為
0的高斯分佈
gauss(σ),而標準差
σ=√det(Σ)=1/√n,I&A2的算法2可以改寫如下:
- 用gauss生成任意維度上的座標
σ=1/√n
xi=gauss(σ), i=1,2,⋯,n
- 計算歸一化常數r=√∑ni=1x2i
- return: (x1/r,x2/r,⋯,xn/r)
上述patched過的I&A2算法2可以用
python實現如下
def nsphere_patch(N,dim=2):
"""
Generating points on the unit sphere in arbitrary dimensions.
N: How many points we want to generate?
dim: Dimension of the sphere.
"""
X = np.random.normal(0,1/np.sqrt(dim),size=(dim,N))
r = np.linalg.norm(X,axis=0)
return X/r
一樣以二維的例子為例,我們產生
N=10000個隨機
(x,y),然後看它們在各個
ϕ上的分佈如圖6,圖6與圖2相似只是現在不對稱的情況不再,在各個角度點的數量都是接近一致的。而在這個改進的算法2裡,我們也不存在上一節提到rejection的問題,因為每個點都被利用到了!
 |
圖6. 利用改進的算法得到在單位圓上分佈的點,在各個ϕ方向上點的數量是接近均勻的 |
三、小結
原則上,要生成任意
n維球面上的點,再不考慮各向點的數量是均勻分佈的條件下,可以用任何方式去生成隨機的點,例如I&A2的
rand或任何自訂分佈,因為只要最後我們做了歸一化的動作,這些隨機的
(x,y,⋯)都會回到單位球的球面上,但是由於任意自訂的分佈,也許在不同
ϕ上會產生較多的點,而導致最後在球面上某個方向會聚集較多的點,這就是所謂的不對稱性。
不對稱性或均勻性都有其重要的價值在。例如在Bayesian analysis裡,我們要對後驗機率分佈 (posterior probability distribution) 做取樣,對於高密度的區域,我們應該提高取樣的數量,對於其它低密度的地方,則應該降低取樣的數量。這時候不對稱性就扮演了重要的角色,因為我們不能平等的對待後驗機率分佈的每個地方,對那些不重要的地方應該降低或忽視,以避免硬體花費太多時間在徒勞無功的地方著墨。
而當我們想要測定一種新藥對人體的影響時,在什麼先驗資訊都沒有的狀態,我們不應該偏好特定的種族、性別或年齡,而應該以均勻隨機採樣的方式做投藥,我們才能得出整體性的概念,之後若發現藥效特別對某個項目反應結果高於平均,我們才應該進一步做不對稱的分析以避免在研究初始就產生了偏誤 (bias)。
Source on
github:
I&A3_homogeneity.ipynb
留言
張貼留言