MLaPP Chapter 3: Generative models for distrete data

3.1 Introduction

生成模型(generative model)一般會按照下面的貝葉斯公式構造分類器:

p(y=c|x,θ)p(x|y=c,θ)p(y=c|θ))

中間的 符號表示“正比於”,即忽略了常係數。而概率 p(x|y=c,θ) 名字叫做 class-conditional density,後一項概率 p(y=c|θ) 則叫做 class prior。

3.2 Bayesian concept learning 貝葉斯概念學習

概念學習(Concept learning)其實是一個二分類問題,學習的是一個指示函數(Indicator function),但是和二分類問題不同,我們可以僅僅只從正例中學習。

考慮下面一個數字遊戲。選擇一個簡單的數學概念 C ,如奇數,素數等,給定從概念 C 中提取的樣本集合 D={x1,...,xN} ,求測試樣例,即某數字 x¯ 是否屬於概念 C .

舉個例子,見figure 3.1的第三張圖,給定了集合 D={16,8,2,64} ,對於 x¯=1,...,100 的範圍,x¯ 和數據集 D 中的所有數字符合同一個數學概念 C 的概率 p(x¯) 形成一個經驗分佈(即做實驗讓人們去猜,然後統計)。從分佈中可以看到,人們傾向於把那些 2 的倍數判定爲符合概念 C 的。圖中展示的分佈稱爲後驗預測分佈(posterior predictive distribution)

3.2.1 Likelihood 似然

現在考慮一個問題,給定數據集 D={16,8,2,64} ,假設空間(hypothesis space)H 可以取 htwo “power of two”,或者 heven “even number”,然而一般我們會傾向於前一個假設,因爲其似然概率最大,這也符合奧卡姆剃刀原理(Occam’s razor),即認爲相同表達能力和解釋能力的條件下,簡單的理論會比複雜的理論更好。

假設我們做一個強採樣假設(strong sampling assumption),從概念 C 中抽取一個集合,{1,2,3,...,99,100} ,那麼上述兩種假設的似然概率就是從 100 個數中採樣得到這四個數的概率,有:

p(D|htwo)=(16)4>p(D|heven)=(150)4
結論就很明顯了。

3.2.2 Prior 先驗

同樣對於集合 D={16,8,2,64} ,根據上面的似然概率,假設 h= “powers of two except 32” 的概率應該會更大,但是我們可以從“經驗”上判斷,這個概念有點不自然。這個主觀上的(subjective)信息,稱爲先驗,一般代表了該問題的背景知識。

3.2.3 Posterior 後驗

後驗就是似然乘以先驗,再做一個歸一化,如下:

p(h|D)=p(D|h)p(h)hHp(D,h)=p(h)I(Dh)/|h|NhHp(h)I(Dh)/|h|N
其中 I(Dh) 當且僅當集合中所有的元素都符合假設 h 時才取值爲 1 (iff all the data are in the extension of the hypothesis h)。

當數據量足夠大時,後驗概率 p(h|D) 會趨向最大後驗估計(MAP estimate, maximum a posterior estimation),如

p(h|D)δhˆMAP(h)
其中,右邊的
δx(A)={10if xAif xA
爲 狄拉克測度(Dirac measure),hˆMAP=argmaxhp(h|D) 爲後驗模式(posterior mode)。

後驗概率公式可以繼續寫下去,

hˆMAP=argmaxhp(D|h)p(h)=argmaxh[logp(D|h)+logp(h)]
注意到第一個加法項其實是最大似然估計(MLE, maximum likelihood estimate),
hˆmleargmaxhp(D|h)=argmaxhlogp(D|h)
由於最大似然估計項會隨着數據集的增大而指數增長,而先驗項則爲常數,因此後驗概率是逐漸逼近最大似然估計的。通俗點說,數據壓倒專家(data overwhelms the prior)。

3.2.4 Posterior predictive distribution 後驗預測分佈

再來重新考慮一開始提到的後驗預測分佈,現在我們可以用後驗公式來計算某測試數字 xˆ 是否屬於概念 C 的概率,如下:

p(x˜C|D)=hp(y=1|x˜,h)p(h|D)
其實這個公式是說,把每個假設(hypothesis,如素數集,偶數集等)的後驗加權,得到一個概率。權重也是人爲給出的。這種給出後驗預測分佈的方法稱作是貝葉斯模型平均(Beyes model averaging)。

隨着數據集的增大,後驗爲以最大後驗估計爲中心的 delta 函數(脈衝),因此有:

p(x˜C|D)=hp(x˜|h)δhˆ(h)=p(x˜|hˆ)
即,直接用概率最大的那個假設的結果當做最終結果,而非前面的全部假設都有一個權重參與進來。顯然這樣做會簡單一些,但是容易小樣本過擬合。

3.2.5 A more complex prior 一個更復雜的先驗

在數字遊戲中,作者用了兩種先驗,並用參數 π1π 把兩個先驗串起來。

3.3 The beta-binomial model 貝塔-二項式模型

下面考慮連續隨機變量中的貝葉斯推斷問題,但是這次我們用一個扔硬幣的例子。

3.3.1 Likelihood 似然

似然函數就是某種假設前提下,一系列事件發生的概率。比如連續扔 N 次的硬幣,每次扔硬幣這個事件是獨立同分布的(比如都是伯努利分佈),所以這 N 次扔硬幣發生的概率就是似然概率,如下:

p(D|θ)=θN1(1θ)N0

其中離散隨機變量 XiBer(θ) ,而 Xi=1 表示硬幣正面朝上,Xi=0 則相反;θ 表示硬幣正面朝上的概率。假設投了 N 次硬幣,得到 N1=Ni=1I(Xi=1) 次正面朝上,得到 N0=Ni=1I(Xi=0) 次反面朝上。

此外,這兩個數可以稱作是數據集的充分統計量(sufficient statistics),表示爲 D={N1,N0} 。當然,也可以是 N1N=N1+N2 ,即 D={N1,N}

當然,如果遇到不考慮次序的問題,那麼數據集 D={x1,...,xN} 是由隨機變量從二項分佈中得出的,有 N1Bin(N,θ) ,其概率密度函數(pmf)爲,

Bin(k|n,θ)(nk)θk(1θ)nk

因爲二項分佈的係數和 θ 無關,所以得到的似然和伯努利分佈是一樣的。

3.3.2 Prior 先驗

我們考慮把先驗寫成和似然函數一樣的形式,p(θ)θγ1(1θ)γ2 ,這種先驗和後驗也是一樣的形式,稱爲是共軛先驗(conjugate prior)。即後驗爲:

p(θ|D)p(D|θ)p(θ)=θN1(1θ)N0θγ1(1θ)γ2=θN1+γ1(1θ)N0+γ2

假如考慮伯努利分佈,發現此時的先驗的形式其實就是 Beta 分佈,

Beta(θ|a,b)θa1(1θ)b1

那麼先驗的參數就叫做超參(hyper-parameters),我們可以設置不同的參數來編碼先驗置信(encode our prior beliefs)。超參跟深度學習那些學習率,batchsize等是一樣的,模型訓練前要自己手動設定和選取。

3.3.3 Posterior 後驗

按照上面兩個小節的內容,後驗等於似然乘以先驗,

p(θ|D)Bin(N1|θ,N0+N1)Beta(θ|a,b)Beta(θ|N1+a,N0+b)

且貝葉斯推斷很容易做在線學習(online learning),比如有兩個數據集 Da,Db 在批量學習模式(batch mode):

p(θ|Da,Db)=p(θ|D=DaDb) ...
而在序列模式下(sequential model),
p(θ|Da,Db)p(Db|θ)p(θ|Da)Bin(Nb1|θ,Nb1+Nb0)Beta(θ|Na1+a,Na0+b)Beta(θ|Na1+Nb1+a,Na0+Nb0+b)

3.3.3.1 Posterior mean and mode 後驗的均值和衆數

首先來整理一下衆數的概念。衆數又叫衆位數,英文是 mode,在離散的集合中,表現爲出現次數最多的隨機變量取值。但是在連續的隨機變量中,衆位數指的是使概率密度函數取得最大值的那個取值。

最大後驗估計,通過最大化後驗概率,找出此時參數的取值,即衆數。前面一個小節已經推出後驗概率和 Beta 函數成正比,那麼可以直接代入求 mode 的公式:

θˆMAP=a+N11a+N11+b+N01=a+N11a+b+N2
若取均勻的先驗(uniform prior),那麼 a=b=1,最大後驗估計退化成最大似然估計,有
θˆMLE=N1N
當然可以直接對似然概率直接求最大似然估計,即求 log ,導數爲零,求出對應的 θ ,發現結果是一樣的。

後驗均值爲

θ¯=a+N1a+b+N

上面的公式可以繼續轉換,

θ¯=E(θ|D)=λm1+(1λ)θˆMLE
其中 λ=a+ba+b+N,m1=aa+b,θˆMLE=N1N ,可以發現後驗均值是先驗均值和最大似然估計(MLE)的凸組合(convex combination)。凸組合指的是係數非負且和爲零。後驗其實是先驗置信和數據之間的一種折中。而參數 λ 控制這兩者的權重。

3.3.3.2 Posterior variance 後驗方差

前面講的後驗均值和衆數都是點估計(point estimates),即用樣本的數據估計某個值,從而猜測分佈的某個參數。其他的點估計還有最大似然估計。而後驗方差則可以反映其置信度,Beta後驗的方差爲:

var[θ|D]=(a+N1)(b+N0)(a+N1+b+N0)2(a+N1+b+N0+1)

這個式子太可怕,我們只考慮 Na,b 的情況(爲什麼呢?),即數據量很大時的意思。此時有:

var[θ|D]N1N0NNN=θˆ(1θˆ)N
θˆ=N1/N 爲最大似然估計(MLE)。那麼我們估計中的後驗標準偏差就是:
σ=var[θ|D]θˆ(1θˆ)N

可以發現不確定性(uncertainty)是以 1/N 的比率下降的。

3.3.4 Posterior predictive distribution 後驗預測分佈

前面都是在推斷和估計未知參數,而後驗預測分佈講的是預測新的觀測數據。考慮再一次伯努利實驗中(投硬幣),硬幣的分佈符合Beta(a, b)後驗,有:

p(x˜=1|D)=10p(x=1|θ)p(θ|D)dθ=10θ Beta(θ|a,b)dθ=E[θ|D]=aa+b

注意這裏的 a,b 是後驗的參數,不是先驗,因爲這兩個概率都是符合 Beta 分佈,所以書裏這裏沒說清楚,就會很容易弄混。

3.3.4.1 Overfitting and the black swan paradox 過擬合和黑天鵝悖論

這一小結的術語可能有誤,應該是 Black Swan Theory 黑天鵝理論,或者黑天鵝效應,而非悖論。指的是歐洲人在發現澳洲之前,只見過白天鵝,從來沒有見過黑天鵝。多指未觀測到了本來人爲不可能發生的事情,並且這件事給現有的理論帶來了巨大的衝擊。當黑天鵝事件發生後,人們往往又嘗試合理化此事件,並嘗試給出解釋,就是當事後諸葛亮(hindsight)。

考慮投硬幣事件,假如連續投三次硬幣,得到的都是正面,那麼就會預測反面的概率爲零,這個一個黑天鵝事件。概率雖然小,但是仍然發生了。這個問題叫做是 zero count problem or sparse data problem。一般用加一平滑,或者叫拉普拉斯平滑解決。實際的解決方法是取 a=b=1 ,先驗分佈由 Beta 分佈退化爲爲均勻分佈,那麼後驗預測分佈爲:

p(x˜=1|D)=N1+1N1+N0+2

3.3.4.2 Predicting the outcome of multiple future trials

預測 M 次扔硬幣實驗頭朝上的次數,

p(x|D,M)=10Bin(x|θ,M)Beta(θ|a,b)dθ=(Mx)1B(a,b)10θx(1θ)Mxθa1(1θ)b1dθ=(Mx)Beta(x+a,Mx+b)B(a,b)

定義上面的後驗預測(posterior predictive)爲 貝塔-二項分佈(beta-binomial distribution)

Bb(x|a,b,M)(Mx)Beta(x+a,Mx+b)B(a,b)

這個分佈的均值和方差如下:

E(x)=Maa+b,var[x]=Mab(a+b)2a+b+Ma+b+1

3.4 The Dirichlet-multinomial model

前面講述了投兩面硬幣的問題,現在將這個問題推廣到擲 K 面骰子的問題。

3.4.1 Likelihood 似然

考慮擲 N 次的 K 面骰子的問題,得到觀測結果的集合 D={x1,...,xN} ,其中 xi{1,...,K} ,假設這 N 次實驗是獨立同分布的,那麼似然概率是,

p(D|θ)=k=1KθNkk
其中 Nk=Ni=1I(yi=k) 表示第 k 面骰子出現的次數。多項式模型和上面的似然具有類似的形式,只是多了一個組合數。

3.4.2 Prior 先驗

對於投硬幣問題,我們用的是貝塔分佈來做二項分佈的共軛先驗,那麼對應多項分佈的問題,就可以用貝塔分佈的推廣——狄利克雷分佈來描述。公式如下:

Dir(θ|α)=1B(α)k=1Kθαk1kI(xSK)

其中,B(α) 是歸一化常量,I(xSK) 會約束 x 在一個單純形上。

3.4.3 Posterior 後驗

後驗也是符合狄利克雷分佈的,

p(θ|D)p(D|θ)p(θ)k=1KθDkkθαk1k=k=1Kθαk+Nk1k=Dir(θ|α1+N1,...,αK+NK)

後驗概率在這裏其實是一個分佈,我們可以通過最大後驗估計(MAP, maximum a posterior)來求解使得後驗概率取得最大值時對應的 θ 值,即求

θˆMAP=argmaxθp(θ|D)

注意上面的狄利克雷分佈有個約束,kθk=1 ,我們可以通過構造拉格朗日函數(Lagrangian)來求解這個約束最優化問題。

(θ,λ)=kNklogθk+k(αk1)logθk+λ(1kθk)
爲什麼和會直接得到這個拉格朗日等式呢?這個用到了複合函數的性質。因爲要求的 θˆ 使得 Dirichlet 分佈取得最值,因爲 log 函數是增函數,因此等價於求此複合函數的參數最大化。
θˆMAP=argmaxθp(θ|D)=argmaxθlogp(θ|D)=argmaxθ(θ,λ)

λ 求偏導,有

λ=(1kθk)=0

θk 求偏導,記 Nk=Nk+αk1

θk=Nkθkλ=0Nk=λθkkNk=kλθk=λ

N+α0K=λ ,其中 α0Kk=1ak ,綜合上面的幾個等式可得,最大後驗估計的結果爲:

θˆk=Nk+αk1N+α0K

若用均勻先驗,即 αk=1 ,那麼有 θk=Nk/N ,和最大似然估計的結果一樣。

3.4.4 Posterior predictive 後驗預測

後驗預測分佈指的是進行單詞的多努利實驗(multinoulli trial)得到的概率,如投一次 K 面的骰子,第 k 面朝上的概率爲:

p(X=j|D)=p(X=j|θ)p(θ|D)dθ=αj+Njα0+N

3.4.4.1 Worked example: language models using bag of words 詞袋語言模型

詞袋語言模型就是直接統計一下每個詞的詞頻,套用前面的公式,就可以得到後驗概率分佈。具體的看書裏給的例子。

3.5 Naive Bayes classification 樸素貝葉斯分類器

樸素貝葉斯分類器是一種生成模型(generative model),輸入爲離散的特徵向量表示爲

x{1,...,.K}D
其中 K 表示特徵向量的取值範圍(如果是連續的隨機變量就是區間而非現在的集合了),D 是維度(dimension),即特徵向量的個數。

NBC模型需要求解class conditional distribution,即

p(x|y=c,θ)=j=1Dp(xj|y=c,θjc)
上面之所以可以連乘是因爲有個樸素的假設,即特徵之間都是相互獨立的,雖然這個假設很強,但是因爲參數很少故不容易過擬合,因此NBC模型應用也很廣泛。

上面的概率密度函數因爲特徵服從的分佈不同而不同,主要有下面的幾種:
1. 對於實數值的特徵,用高斯分佈,

p(x|y=c,θ)=j=1DN(xj|μjc,σ2jc)
其中,μjc 表示第 c 類的第 j 個特徵的均值,對應 σ2jc 則是方差。
2. 對於二元特徵,xj{0,1} ,用伯努利分佈,
p(x|y=c,θ)=j=1DBer(xj|μjc)
其中 μjc 表示第 j 個特徵在第 c 類中出現的概率。這個可以叫做是多元伯努利樸素貝葉斯模型(multivariate Bernoulli naive Bayes model)。
3. 對於 categorical features,即多分類特徵,xj{1,...,K} ,用多努力分佈(multinomial distribution):
p(x|y=c,θ)=j=1DCat(xj|μjc)
其中,μjc 表示類 c 中 xjK 種值的直方圖(就是統計一下每個類別出現的次數的意思)。

3.5.1 Model fitting

訓練樸素貝葉斯模型,用 MAP 或者 MLE 估計模型中的參數即可。

3.5.1.1 MLE for NBC 樸素貝葉斯中的極大似然估計

要求數據集上的似然概率,先考慮一個樣本的全概率公式,

p(xi,yi|θ)=p(yi|θ)p(xi|yi,θ)=p(yi|π)jp(xij|θj)=cπI(yi=c)cjcp(xij|θjc)I(yi=c)
當然上面的公式用指示函數表示,看起來很嚇人,其實表達的意思很簡單,就是標籤取某個類別的概率乘以該標籤下某些特徵取特定值的概率,帶 c 的連乘項只有 yi=c 那一項有取值,其他的項都可以忽略。

那麼整個數據集上的 log 似然爲,

logp(D|θ)=c=1CNclogπc+j=1Dc=1Ci:yi=clogp(xij|θjc)

上面的兩個參數 πcθjc (用 θ 表示)可以分別優化,其中第一項是 class prior,可以用 MLE 的到,

πˆ=NcN
其中 NciI(yi=c) 表示訓練集中標籤爲 c 類的樣本個數。

第二項是 class-conditional density,對參數的極大似然估計取決於其概率密度函數的種類,舉個例子,假設所有的例子都是二元的,即符合伯努利分佈,p(xj|y=c)Ber(θjc) ,此時MLE結果爲:

θˆjc=NjcNc

3.5.1.2 Bayesian naive Bayes

MLE 和 MAP 都是點估計,給出令似然或者後驗概率最大的參數取值即可;而貝葉斯則不一樣,則會給出整個參數的概率分佈。

有時候爲了緩解過擬合的問題,會用可因式分解的先驗(factored prior):

p(θ)=p(π)j=1Dc=1Cp(θjc)
可以考慮 p(π)Dir(α)p(θjc)Beta(β0,β1) 當參數 α=β=1 就是加一平滑,或者叫拉普拉斯平滑。

所以後驗爲

p(θ|D)=p(π|D)j=1Dc=1Cp(θjc|D)=Dir(N1+α1,...,NC+αC)j=1Dc=1CBeta((NcNjc)+β0,Njc+β1)

3.5.2 Using the model for prediction 預測

對於生成模型,直接套用貝葉斯公式和貝葉斯那個樸素的條件獨立假設,公式如下:

p(y=c|x,D)p(y=c|D)j=1Dp(xj|y=c,D)
而事實上正確的貝葉斯統計估計的參數是個分佈,不像 MLE,MAP那樣只是點估計,求一個最大的就好了。貝葉斯要在所有的位置參數上求積分。
p(y=c|x,D)[Cat(y=c|π)p(π|D)dπ]j=1D[Ber(xj|y=c,θjc)p(θjc|D)]
上面的兩個後驗概率,假如符合狄利克雷分佈,直接用前面講過的MAP估計參數的結論即可:
p(y=c|x,D)π¯i=1D(θ¯jc)I(xj=1)(1θ¯jc)I(xj=0)
其中,θ¯=Njc+β1Nc+β0+β1,π¯c=Nc+αcN+α0

3.5.3 The log-sum-exp trick

實際的計算中,由於連乘項比較多,因此常多一步 log,以防止數值下溢。比如計算 p(x|y=c) 時,由於我們約束了 xp(x|y)=1 ,所以連乘的結果必然遠遠小於 1。

還有一個技巧是說,算 log 值的時候,可以把共有的項提取出來,以減少計算,如:

log(e120+e121)=log(e0+e1)120
這個技巧就叫做 log-sum-exp trick。然而在生成模型中,只有計算 p(x) 才需要用這個技巧,所以說了等於白說。

3.5.4 Feature selection using mutual information 用互信息做特徵選取

因爲特徵有可能是冗餘的,所以可以用互信息(mutual information)來篩選有用的特徵。通過計算特徵 Xj 和類別標籤 Y 的互信息來估算其相關度(relevance):

I(Xj,Y)=xjyp(xj,y)logp(xj,y)p(xj)p(y)

特別的,對於二元的特徵,

Ij=c[θjcπclogθjcθj+(1θjc)πclog1θjc1θj]
其中 πc=p(y=c),θjc=p(xj=1|y=c)θj=p(xj=1)=cπcθjc

3.5.5 Classifying documents using bag of words 用詞袋模型做文檔分類

詞袋模型使用一個矩陣,xij 表示第 i 篇文檔中是否有第 j 個單詞,有的話取 1 否則取 0. 這個問題的 class conditional density 爲:

p(xi|yi=c,θ)=j=1DBer(xij|θjc)=j=1DθI(xij)jc(1θjc)I(1xij)

當然,如果是統計每個單詞出現的次數,而非每個單詞是否出現,可以用多努力模型代替伯努利模型,

p(xi|yi=c,θ)=Mu(xi|Ni,θc)=Ni!Dj=1xij!j=1Dθxijjc

由於上面的模型不能很好的處理單詞出現的突發性(burstiness),因此有改進的模型 Dirhlet Compound Multinomial or DCM,

p(xi|yi=c,α)=Mu(xi|Ni,θc)Dir(θc|αc)d|θc=Ni!Dj=1xij!B(xi+αc)B(αc)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章