雪花臺灣

機器學習:太陽升起的概率

今天《高級機器學習》課上,老師講到了半監督學習,涉及到混合高斯模型和EM演算法時,順帶講了個小插曲,這裡就命名為「機器學習:太陽升起的概率」吧,感覺還挺有意思的,這裡整理一下。故事雖小,但卻揭示了很多機器學習裡面的道理。

故事是這樣的,在統計機器學習領域有兩個派別,一個是頻率學派,一個是貝葉斯學派。兩個學派都在做一件事情,就是預測太陽升起的概率。他們都觀察了 n 天,並且這 n 天太陽都是照常升起,那麼頻率學派聲稱「太陽一定會升起」,而貝葉斯學派聲稱「太陽升起的概率將會很大,並且這個概率會無限趨向於1」,於是兩個學派開始爭論起來,到底誰的說法纔是準確的。

然而實際上,物理學家默默不說話,物理學家內心os:」太陽每時每刻都在衰減,到40~50億年之後太陽將會坍縮,從地球上再也看不到太陽了,所以你們都錯了「。

Excuse me ? 然而,此時頻率學派和貝葉斯學派仍在爭論。

頻率學派和貝葉斯學派是兩個從不同角度看待問題的學派。頻率學派認為事件本身就是有隨機性的,我們只需要通過數據統計就可以獲得對現實世界的認知;貝葉斯學派則認為隨機性產生於觀察者,觀察者先有一個先驗知識,然後觀察到了現實世界中發生的事情作為證據,然後不斷改變自己的認知。

以太陽升起為例,記事件 表示第 i 天太陽是否升起,頻率學派和貝葉斯學派都觀察到了 n 天的結果 。那麼如何求得太陽升起的概率呢?

頻率學派如下做:

假設事件發生的概率大小為 ,事件不發生的概率為 ,即簡單的伯努利分佈(Bernoulli distribution)。那麼對應到太陽升起的問題中,太陽升起的概率為 ,那麼只要簡單統計 n 天裡面有多少天太陽升起,然後除以總天數就可以了。這就是頻率學派的做法,事件發生的概率是觀察數量足夠多時該事件發生的頻率

那麼很簡單:

所以,頻率學派認為太陽升起的概率為 1,太陽一定會升起。這裡,不免產生一個疑問,為什麼簡單統計頻率就可以呢?實際上,頻率學派簡單統計得到的結果是最大似然估計(Maximum Likelihood Estimation, MLE)的結果。

最大似然估計做的是最大化似然 ,考慮對於 來說, ,可以合併寫為 ,那麼有:

這裡需要注意頻率學派還假設事件之間獨立同分布(iid)。那麼最大化上面的似然,一般會等價地最大化對數似然(Log Likelihood),即:

求導即可得到:

貝葉斯學派如下做:

首先,有兩個假設條件和頻率學派一致:太陽升起這個事件服從伯努利分佈,並且第 i 天的觀測和第 j 天的觀測互相獨立,數據獨立同分布

除此之外,貝葉斯學派又引入了很多假設,將觀測太陽是否升起的過程分成了三個部分:

  • 先驗(prior):從觀察者出發,觀測者事先有一個對太陽升起概率的認知
  • 證據(evidence):觀測事件的發生情況,這 n 天裡面有哪些天太陽升起了
  • 後驗(posterior):通過觀測的數據,觀測者認識到之前的認知不太準確,改變認知

通常這可以通過貝葉斯公式來表示:

其中 先驗,模型的參數並不是確定的,而是服從一個分佈; 就是似然,衡量的是觀測到的證據和我們假設的模型有多符合; 後驗概率,衡量的是觀測到一部分數據之後認知的變化。

通常,我們希望先驗和後驗服從一樣的分佈,這樣建模起來比較方便,並且也有一定的道理:觀測的認知大致上是不變的,只是稍微改變一下。這就是共軛分佈,先驗和似然滿足共軛條件的話,那麼得到的後驗和先驗服從一致的分佈。基於似然角度來說,就是似然的共軛先驗(Conjugate prior)。

對於太陽升起的問題,貝葉斯學派這麼做,記 為事件「 n 天裡面有多少天太陽升起了」,那麼這是一個二項分佈(Binomial distribution),記 ,有:

注意上面是 ,給定了 的取值。貝葉斯學派選擇Beta分佈作為先驗,這是因為Beta分佈是二項分佈的共軛先驗

接下來利用最大化後驗估計(Maximum A Posterior, MAP),即最大化

對上式取對數,然後對 求導,求得最優解為:

在太陽升起的問題中,觀測的數據裡面 ,所以得到:

對上面式子的直觀解釋是,觀測者剛開始認為太陽升起的概率為 ,這是Beta分佈的均值,然後觀測到 n 天太陽都升起了,那麼觀測者開始認為太陽升起的概率應該更大一些,所以改為了

這裡注意貝葉斯學派並沒有通過觀測到 n 天太陽都升起了而下結論說太陽一定升起,貝葉斯學派認為太陽不升起的概率還是會存在的。這麼看來貌似是貝葉斯學派的建模更合理一些。

物理學家如下做:

由物理學和天文學知識,此處省略五萬字,太陽升起的概率應該會逐漸減小,40~50億年之後太陽就沒了。

額。。。

難道說頻率學派和貝葉斯學派都錯了嗎?答案是:學派理論沒有錯,各有千秋,大家考慮問題角度不一樣,或者說假設偏好不一樣。問題出在了數據模型上,在太陽升起問題上,有以下兩個不合理之處:

  • 模型:太陽每天是否升起並不是獨立的,當然也不會服從伯努利分佈,模型假設錯誤
  • 數據:由於樣本有限,觀測到的都是太陽升起,誰如果誰能觀測到40億年之後太陽的狀態,或許還可以發一篇Science

這裡就引發了模型和數據的爭論了,到底是模型更重要還是數據更重要?個人認為,還是模型更重要,假如使用了錯誤的模型,數據越多,結論可能越離譜;當然在模型是基本正確的前提下,數據就成了瓶頸了。舉個例子,對於分類問題準確率來說,可能0~0.85都是由好的模型決定的,但是從0.85到0.95可能就取決於數據大小和質量了。

總結一下:

要想準確得到太陽升起的概率,從樣本的角度出發,個人建議還是要活得久一點,多運動多鍛煉,人生苦短,我看日出。其實司馬懿早就發現了這個道理了,曹操、曹丕、曹睿都狗帶了,他還健在,司馬懿不取天下誰取天下?難不成是周瑜hhh?


推薦閱讀:
相關文章