天天看點

PRML讀書筆記(2)——Probability Distribution

2 Probability Distributions

本章主要介紹了機器學習中常用的一些分布,以及分布的性質,包括:二進制變量分布、多元變量分布、高斯分布、指數族以及非參方法(核密度方法以及最近鄰方法)。

2.1 伯努利分布

設二進制變量 x∈0,1 服從伯努利分布,則有伯努利分布:

Bern[x|u]=ux(1−u)1−x

該分布的期望和方差分别為:

E[x]=u

var[x]=u(1−u)

多次伯努利分布叫二項分布,即:

Bin[m|N,u]=(Nm)um(1−u)N−m

其期望和方差分别為:

E[m]=Nu

var[m]=Nu(1−u)

根據貝葉斯公式, P(Y|X)∝P(X|Y)P(Y) ,其中 P(Y) 是先驗機率, P(X|Y) 是似然函數, P(Y|X) 是後驗機率。為了計算友善或者其他需要,我們有時會希望先驗機率和後驗機率在形式上相同,是以對于一個給定的後驗機率和似然函數,我們希望找出一個先驗機率形式和後驗機率相同,這樣的先驗機率叫共轭先驗。這裡Y一般是控制分布的參數 u ,而X代表資料。

二項分布的共轭先驗叫beta分布,形式如下:

Beta(u│a,b)=Γ(a+b)Γ(a)Γ(b)ua−1(1−u)b−1

其中, Γ(a) 是gamma函數,即 Γ(a)=∫∞0ux−1e−udu 。Beta分布的期望和方差如下:

E[x]=aa+b

var[x]=ab(a+b)2(a+b+1)

其中, a 和b被稱為超參數,即控制參數的參數,這裡 a 和b控制了 u 。這樣,如果将beta分布作為二項分布的先驗機率,變量x的分布會始終保持包含um(1−u)N−m的形式。我們可以根據貝葉斯公式更新經過似然計算之後的分布參數,具體結果不贅述。當觀察到越來越多的資料後,變量的方差會下降。

2.2 多項分布

将伯努利分布中的随機變量 x 擴充為多個離散值,則可以有如下機率:

P(x│u)=∏Kk=1uxkk

其中, u1+u2+⋯+uK=1 且 uk>0 。其期望為:

E[x│u]=u

重複多次該實驗,則稱為多項分布,其分布如下:

Mult(m1,m2,…mK│N,u)=(Nm1m2…mK)∏Kk=1umkk

其中, m1+m2+⋯+mK=N 。

同二項分布一樣,我們也希望為多項分布找到一個共轭先驗分布,這個分布是狄利克雷分布。狄利克雷分布如下:

Beta(u│a,b)=Γ(a0)Γ(a1)…Γ(ak)∏Kk=1uak−1k

我們同樣可以根據貝葉斯公式計算給定先驗和似然函數的後驗分布,具體公式略過。

2.3 高斯分布

這本書中高斯分布講的比較多,主要介紹了高斯分布的性質、統計量、條件分布、邊緣分布,并從貝葉斯的角度進行了一些介紹。高斯分布的形式為:

N(x│u,σ)=12π−−√σe−(x−u)22σ2

在多元下的形式為:

N(x│u,Σ)=1(2π)2D1|Σ|1/2exp{−12(x-u)TΣ−1(x-u)}

其中, u 是均值,σ和 Σ 分别是方差和協方差矩陣。可以注意到的是,如果令yi=uTi(x-u)其中 uTi是Σ−1 的特征向量,則該分布可以寫成關于 y 的正态分布,且該正态分布各分量獨立,即:

p(y)=∏Dj=112πλj1/2exp{−y2j2λj}

另外,高斯分布的期望和方差為:

E[x]=u

cov[x]=σ2

高斯分布常用來作為密度模型來拟合資料,但它也存在很多不足,例如這個分布是單峰的等,有很多其他方法來解決這一問題,例如混合高斯分布等,這将在之後提到。

2.3.1 條件分布

給定一個多元高斯分布 N(x│u,Σ) ,将該高斯分布的分量劃分為 a 、b兩個部分:

x=(xaxb)

它們的均值和方差為:

u=(uaub)

Σ=(ΣaaΣbaΣabΣbb)

則有:

ua|b=ua+ΣabΣ−1bb(xb−ub)

Σa|b=Σaa−ΣabΣ−1bbΣba

推導過程略。

2.3.2 邊緣分布

同樣按照2.3.1的劃分方式,可以推導出高斯分布的邊緣分布:

p(xa)=N(xa|ua,Σaa)

2.3.3 貝葉斯理論在高斯分布中的應用

這一小節主要解決了如下問題:給定

p(x)=N(x|u,Λ−1)

p(y|x)=N(x│Ax+b,L−1)

求 p(y) 和 p(x|y) 的分布。推導過程省略,結果是:

p(y)=N(y|Au+b,L−1+AΛ−1AT)

p(x│y)=N(x|Σ{ATL(y−b)+Λu},Σ)

其中,

Σ=(Λ+ATLA)−1

2.3.4 最大似然估計

對于高斯分布的參數,從頻率學派的角度出發,可以使用最大似然估計分布的參數,即先對分布求對數,再對目标參數求導,使求導結果為0,得到解析解:

uML=1N∑Nn=1xn

ΣML=1N∑Nn=1(uML−xn)(uML−xn)T

2.3.5 序貫估計

在線上的情況下,資料不是一次到達的,而是連續地不停地到達,這需要我們在原來參數的基礎上根據新來的資料連續不斷地更新參數,這叫序貫估計。這裡以均值為例,将最後一個資料和之前的資料分開,可以得到以下結果:

x(N)ML=u(N−1)ML+1N(xn−u(N−1)ML)

從這個公式可以看出,變量 x 的均值u是第 N−1 輪的值加上該值與新資料的偏差(error signal),并且當 N 逐漸增大,之後的資料對u的貢獻會慢慢變弱。

這可以看做序貫估計的一個例子,對于一般的其他的參數而言,我們需要一種算法架構來實作序貫估計,其中之一叫Robbins-Monro算法。該算法的核心在于,對于聯合分布 p(x,θ) 假設 f(θ) 是 x 的條件期望:

f(θ)=E[x│θ]=∫xp(x|θ)dx

則希望尋找到一個 θ∗ 使得 f(θ∗)=0 ,即求 f(θ) 的根,為此,使用如下的疊代公式疊代:

θ(N)=θ(N−1)+aN−1z(θ(N−1))

例如在高斯分布的均值估計中, f(θ) 即對高斯分布的似然函數求導,并交換計算期望和偏導的次序,由于最大似然估計的目标也是令該式為0,故可使用Robbins-Monro算法架構。需要注意的是 aN 需滿足以下條件:

limN→∞aN=0

∑∞N=1aN=∞

∑∞N=1a2N<∞

其中,第一個條件保證了變化會不斷變小,最終收斂。第二個條件保證了算法不會收斂不到根的值,第三個條件保證了累積的噪聲具有一個有限的方差,不會導緻收斂失敗。

2.3.6 高斯分布中的貝葉斯推理

該小節主要考慮的是如何尋找高斯分布的共轭先驗,如果分布的方差 σ2 是已知的,則選擇高斯分布作為高斯分布的共轭先驗,如果分布的均值 u 是已知的,則高斯分布的共轭先驗是Gamma分布:

Gam(λ│a,b)=1Γ(a)baλa−1e−bλ

Gamma分布的均值和方差為:

E[λ]=ab

var[λ]=ab2

對于指數族而言,把先驗分布看做是有效的資料觀測點是一個非常有用的假設,有效資料點的數量取決于先驗分布的參數。

如果均值和方差都不知道,則高斯分布的共轭先驗分布是Gaussian-gamma分布。在多元的情況下,已知方差的先驗分布依舊是多元高斯分布,已知均值的先驗分布則是Wishart分布,如果兩者都不知道,則其共轭先驗是Gaussian-Wishart分布。

由于t分布和周期分布在現階段幾乎沒有用過,這裡略過不做筆記,之後如果有需要再回來看。

2.3.7 混合高斯分布

高斯分布是單峰的,但資料的分布可能是多峰的,是以可以使用一種叫混合分布的方法去拟合這些資料,混合高斯分布的機率分布函數如下:

p(x)=∑Nn=1πnN(un,Σn)

其中, N(un,Σn) 是成員分布, πn 可以看成是權重,并且 ∑Nn=1πn=1 。由于求導的時候可以發現這些參數互相依賴,是以在給定資料的情況下,需要用EM算法求解。

2.4 指數族

指數族指的是這樣一類函數,它們擁有如下的分布:

p(x│η)=h(x)g(η)exp{ηTu(x)}

一大批分布都可以寫成該形式,包括伯努利分布,多項分布,高斯分布等。在參數估計方面,參數 η 的最大似然估計如下:

η=1N∑Nn=1u(xn)

之後書上介紹了指數族的先驗選取上的一些事,包括共轭先驗、無資訊先驗。一般來說,如果先驗分布的方差比較大,則該先驗對後驗分布的影響比較小。

2.5 非參方法

這裡介紹了兩種非參的機率密度估計方法,一是最鄰近法,而是核方法。首先對機率分布進行離散分箱操作:

pi=niN

對應地,設一個很小的區域(一個區域對應一個箱子)中有 K 個資料點,則對于這個區域内的點而言,其機率分布可以使用期望進行估計:

P=KN

那麼這個區域的密度則為該區域内的所有點的機率分布之和,即區域體積乘以機率分布:

P=p(x)V

帶入之前的式子,則:

p(x)=KNV

從直覺上來看,這可以看成是區域内的總機率為 K/N ,将其細分到區域内的每一個點之後得到了每一個點的機率密度。從這個式子出發,我們可以控制 K ,根據對應V的大小來得到機率密度,這種方法稱為最近鄰方法。也可以控制 V 來看看K有多大,這種方法叫核方法。

2.5.1 核方法

正如上所述,核方法的重點在于在給定的 V 内得到K的大小。舉個例子的話,給了一個大小 V 的空間,我們數這個空間内有幾個資料點,假設一共N個資料點,我們數到了 K 個,則這個V空間内的機率密度就是

p(x)=KNV

形象的來說,我們可以令

K=∑Nn=1k(x−xnh)

其中, h 是控制空間大小V的參數,我們根據 k(x) 來決定空間中 x 這個點附近有多少個資料點,也就是說,我們要數以x為中心的超矩形内有多少個資料點,是以,對于 k(u) 而言,如果 u 的絕對值小于1/2,則記數到了一個資料點,反之沒數到。具體公式不寫了。這個 k(u) 也未必是要非 1 即0,更常用的是以 h 為方差,xn為均值的高斯核。

2.5.2 近鄰方法

根據另一個思路,控制 K ,然後檢視V的大小來決定機率大小。也就是說,對于 x 給定一個近鄰數量K,然後調整以 x 為中心的超球半徑,使得超球恰好包含K個近鄰,最後計算這個超球的體積 V 。但需要注意的是,這樣做不能得到真正的機率,因為空間的大小通常是不收斂的,是以很難将結果正确歸一化。

另外近鄰方法可以用來做分類問題,也就是KNN了。

繼續閱讀