IA3 - 再看n維球上的點,淺談均勻性與不對稱性

哈伯深空圖像 (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,然後利用 ϕ=tan1(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) η 便是超球的體積和超立方體體積之比,即 η=VV1. 而數學家已經幫我們計算出在任意維度的球體積 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>1x2+y2+z3>1這種方式,那麼最終有很大一部分生成的點都會被reject掉。以二維和三維為例,η分別是0.70.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),它是用來描述不同軸之間的關聯性。由於不同軸 (例如xy之間) 是無關聯的,所以Σ是對角化的且其行列式 (determinant) 滿足 det(Σ)=n1. 至於為什麼是這個值是由於將rand(1,1)轉換到高斯分佈時所作的測度變換,不過這裡不在這裡深究背後的數學,記得協方差矩陣的行列式即維度n的倒數。為了得到均勻分佈在n維球面上的點,我們必須將原來任意維度上的座標rand(1,1)改成均值為0的高斯分佈gauss(σ),而標準差σ=det(Σ)=1/n,I&A2的算法2可以改寫如下:
  1. gauss生成任意維度上的座標
    σ=1/n
    xi=gauss(σ), i=1,2,,n
  2. 計算歸一化常數r=ni=1x2i
  3. 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.
    """
    
    # Step 1
    X = np.random.normal(0,1/np.sqrt(dim),size=(dim,N))
    # Step 2: Normalization constant
    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 githubI&A3_homogeneity.ipynb

留言

這個網誌中的熱門文章

IA9a - K-means分群與EM算法: 理論

IA9b - K-means分群與EM算法: 實作

物理雜記3 - Ising模型與模擬退火