本系列主要是貝葉斯機器學習相關知識的學習筆記。
第一講:概率論回顧,貝葉斯公式,共軛先驗
- 「貝葉斯規則」 是來自於對於概率分佈的一些基本操作。下面舉一個簡單的例子
例子
整個空間是
Ω,
Ai 是第i列(隨便定義的),
Bi 是第i行(同理,隨便定義的)
- 在這個空間裏分佈着一些點。我們隨機的且均勻的從這些點裏取出一個點。
- 那麼這個概率計算是一個簡單的數數。
P(x∈A1)=#Ω#A1,P(x∈B1)=#Ω#B1
- 那
P(x∈A1∣x∈B1)表示什麼呢?它表示在已知該點屬於
B1的情況下,它屬於
A1的概率。這就是 條件概率。
P(x∈A1∣x∈B1)=#B1#(A1∩B1)=#Ω#(A1∩B1)#B1#Ω=P(x∈B1)P(x∈A1&x∈B1)
更一般的表述
-
A和
B代表兩個事件,然後
P(A∣B)=P(B)P(A,B)⇒P(A∣B)P(B)=P(A,B)
- 對於上述的一些符號,我們有如下命名,
P(A∣B):條件概率
P(A,B):聯合概率
P(B):邊緣概率
- 這最後一個聽起來似乎不是很好理解,因爲它僅僅是「B的概率」。我們可以通過之前同樣數數的方式來解釋
P(B)作爲概率是如果通過整合(邊緣化)來得到的。
P(B)=#Ω#B=#Ω∑i=13#(Ai∩B)=i=1∑3#Ω#(Ai∩B)=i=1∑3P(Ai,B)
- 一般而言,這個求和以及對於每個
Ai都是有嚴格的要求的。要求彼此沒有交集而且它們的並集等於整個空間(
Ω)。
貝葉斯規則
- 我們簡單的從幾步來推導一下
P(A,B)=P(A∣B)P(B)
由對稱性我們有
P(A,B)=P(B∣A)P(A)
因此
P(A∣B)=P(B)P(B∣A)P(A)=∑iP(Ai,B)P(B∣A)P(A)=∑iP(B∣Ai)P(Ai)P(B∣A)P(A)
- 這個等式就是 貝葉斯規則, 可以發現它有一些不同的表示。
- 我們有
P(A∣B)=P(B)P(B∣A)P(A)
- 對應的這些值有各自的名字
posterior(後驗概率)=evidence(證據因子)likelihood(似然概率)×prior(先驗概率)
- 證據因子(又稱歸一化常數,標準化常量),可看做一個歸一化的因子,以保證各類別的後驗概率和爲1。
- 假想我們並不知道
A,但是我們可以通過
B的某種形式來得到一些信息。貝葉斯規則就是告訴我們一種有跡可循的方法來整合我們所知道的關於
A的信息。
舉例(醫療檢查)
- 我們有兩個事件,
A和
B:
A={1 患病0 沒有患病 B={1 病情良性0 病情惡性
- 那麼一個人被檢查出患病,且病情良性。這個概率是多少呢?
- 根據描述我們知道我們想要的是
P(A=1∣B=1)。貝葉斯規則對我們有幫助嗎,通過貝葉斯我們知道
P(A=1∣B=1)==P(B=1)P(B=1∣A=1)P(A=1)P(B=1∣A=1)P(A=1)+P(B=1∣A=0)P(A=0)P(B=1∣A=1)P(A=1)
- 假設根據已有的數據可以估計:
P(B=1∣A=1)=0.95, P(B=1∣A=0)=0.05, P(A=1)=0.01=1−P(A=0)
根據上式我們可以推導出
P(A=1∣B=1)=0.16
連續空間
- 之前討論的都是離散空間。也就是我們可以取的不知道的可能值的數量是有限的。
- 當值在連續空間的時候,我們就需要轉換到連續分佈上來。
例子
x∈R,
p(x)是它的概率密度
p(x)≥0並且
∫p(x)dx=1
P(x∈A)=∫Ap(x)dx
- 對離散隨機變量適用的法則在這裏同樣適用
-
p(x∣y)=p(y)p(x,y), p(y)=∫p(x,y)dx
-
p(x∣y)p(y)=p(x,y)=p(y∣x)p(x)
- 那麼可以導出對於連續隨機變量的貝葉斯法則
p(y∣x)=p(x)p(x∣y)p(y)=∫p(x∣y)p(y)dyp(x∣y)p(y)
貝葉斯模型
- 應用貝葉斯規則去處理一個數據模型問題的未知參數叫做貝葉斯建模。
- 簡單來說,我們有下面的一般式
x∼p(x∣y)← 數據生成的分佈,這是數據模型。
y∼p(y)← 模型的先驗分佈。
- 我們想要學習
y,那麼我們有
p(y∣x)∝p(x∣y)p(y)
- 在上式中,我們並不知道
p(y∣x),所以我們想要計算它。這個式子就回答了「如果已知
x,我們能得到什麼關於
y的信息?」。右邊的兩項
p(x∣y)p(y)我們是知道的,因爲是由我們定義的。符號
∝表示「服從分佈」。
- 這是本系列討論的問題的一般形式,它是比較複雜的因爲
-
p(x∣y)可能會很複雜
-
p(y∣x)可能會難以處理,因爲歸一化常數的積分沒有封閉形式,這就需要一個算法來逼近
- 這兩個問題會是本系列的重點:對數據生成分佈的結構,定義不同的模型,以及定義推導算法來學習模型參數的後驗分佈。
例子:β-伯努利模型
- 現在我們有一系列的觀察數據
X1,...,XN,這裏
Xi=1表示「成功」,
Xi=0表示「失敗」。可以直觀地將它們看作是拋硬幣的結果。
- 我們假設每個
Xi都來自於拋擲一枚有偏差的硬幣,這裏
P(Xi=1∣π)=π。
- 我們進一步假設
Xi是獨立分佈的(iid,independent and identically distributed)。這意味着
Xi在給予
π的情況下是條件獨立的。數學上,我們可以寫作
P(X1,...,XN∣π)=i=1∏NP(Xi∣π)
- 因爲
P(Xi∣π)=πXi(1−π)(1−Xi),所以
P(X1,...,XN∣π)=i=1∏NπXi(1−π)(1−Xi)
- 我們在意的是在給予
X1,...,XN的情況下,
π的後驗分佈
P(π∣X1,...,XN)∝P(X1,...,XN∣π)p(π)∝i=1∏NπXi(1−π)(1−Xi)p(π)
- 那麼這就引出了下一個重要的問題:我們應該怎麼定義
p(π)?
第一次嘗試
- 定義
p(π)=Uniform(0,1)⇒p(π)=1(0≤π≤1)
- 通過貝葉斯法則,
p(π∣X1,...,XN)=∫01π∑iXi(1−π)N−∑iXidππ(∑iXi+1)−1(1−π)(N−∑iXi+1)−1
- 歸一化常數是很複雜的,還好數學家已經幫我們解決了
p(π∣X1,...,XN)=Γ(1+∑iXi)Γ(1+N−∑iXi)Γ(N+2)π∑iXi+1−1(1−π)N−∑iXi+1−1
這裏
Γ(⋅)表示的是 gamma函數
- 這是一個非常普遍的分佈,叫做beta分佈:
Beta(a,b)=Γ(a)Γ(b)Γ(a+b)πa−1(1−π)b−1
- 在本例中,上述的後驗分佈,
a=1+∑iXi,
b=1+N−∑iXi。
- 注意到當
a=b=1,
Beta(1,1)=Uniform(0,1),正是我們選擇的先驗分佈。
共軛先驗
- 通過觀察我們發現似然項和beta分佈長得很像。同時,因爲beta分佈擁有
Uniform(0,1)分佈作爲特例,這些信息就給了我們很多先驗知識。如果我們嘗試使用beta分佈作爲
π的先驗會怎麼樣呢?
p(π∣X1,...,XN)∝p(X1,...,XN∣π)p(π)∝[π∑iXi(1−π)N−∑iXi][Γ(a)Γ(b)Γ(a+b)πa−1(1−π)b−1]∝πa+∑iXi−1(1−π)b+N−∑iXi−1
- 有以下幾點需要注意:
- 在最後一行,我們去掉了
Γ(a)Γ(b)Γ(a+b)項。這是因爲它跟
π無關,它可以在歸一化常數中表示。也就是,歸一化常數是分子的積分。如果我們在第二行除以這個積分項,我們就可以去掉
Γ(a)Γ(b)Γ(a+b)。這樣的唯一目的就是方便,且讓公式看起來更簡潔。
- 在本例中,我們知道除以什麼可以使它是一個關於
π的概率分佈。看公式最後一行,我們知道它與
Beta(a+∑iXi,b+N−∑iXi)分佈成比例。
- 因此,
p(π∣X1,...,XN)=Beta(a+∑iXi,b+N−∑iXi)
- 注意到一個問題,當我們選擇beta分佈來作爲先驗分佈的時候,我們發現後驗分佈也同樣是一個beta分佈,只是參數不同。這是因爲beta分佈是這個問題的共軛先驗。
- 如果後驗分佈和先驗分佈屬於統一分佈族只是參數不同,那麼我們就說這個分佈是似然函數中的特定參數的「共軛先驗」,或者說它是「似然函數的共軛先驗」。共軛先驗非常方便,因爲我們只需要從數據中收集足夠多的信息來完成先驗到後驗的轉化。比如,在上述問題中,我們只需要數總的「成功」次數(
∑iXi)和總的「失敗」次數(
N−∑iXi)。
- 我們會發現很多共軛先驗,然後它們能夠幫助完成模型的快速推導。
通過使用貝葉斯,我們獲得了什麼
- 對於之前的beta先驗的模型問題,考慮後驗概率中
π的期望和方差
E[π]=a+b+Na+∑iXi, Var(π)=(a+b+N)2(a+b+N−1)(a+∑iXi)(b+N−∑iXi)
- 注意到隨着
N增加,
- 期望會收斂於實際的成功率。
- 方差會以
1/N衰減,最終趨近於0。
- 和最大似然估計相比,最大似然估計是尋找
π的一個點估計(特定值)來最大化似然函數
π=argπmax p(X1,...,XN∣π)=N1i=<222222em;">b+N)2(a+b+N−1)(a+∑iXi)(b+N−∑iXi)
- 注意到隨着
N增加,
- 期望會收斂於實際的成功率。
- 方差會以
1/N衰減,最終趨近於0。
- 和最大似然估計相比,最大似然估計是尋找
π的一個點估計(特定值)來最大化似然函數
π=argπmax p(X1,...,XN∣π)=N1i=1∑NXi