看了好多書籍和博客,講先驗后驗、貝葉斯公式、兩大學派、概率模型、或是邏輯回歸,講的一個比一個清楚 ,但是聯系起來卻理解不能
基本概念如下
- 先驗概率:一個事件發生的概率 \[P(y)\]
- 后驗概率:一個事件在另一個事件發生條件下的條件概率 \[P(y|x)\]
- 貝葉斯公式:聯合概率公式直接能推導出來的,代表什么意義?不放在具體問題中代表不了任何意義 \[P(y|x) = \frac{{P(x|y)P(y)}}{{P(x)}}\]
拿一個實際的例子,如果用陰天預測是否下雨
- 先驗概率:下雨的概率 \[P(rain)\]
- 后驗概率:已經知道陰天,下雨的概率 \[P(rain|cloudy)\]
- 貝葉斯公式:表現了后驗概率與先驗概率的關系 \[P(rain|cloudy) = \frac{{P(cloudy|rain)P(rain)}}{{P(cloudy)}}\]
- 把注意力集中在分子,公式可以理解為:陰天會下雨的概率(后驗概率),不僅跟下雨那天的確是陰天的概率(條件概率)有關,還跟下雨本身的概率(先驗概率)有關,如果下雨本身概率很低(先驗概率=0),即便下雨一定陰天(條件概率=1),那么下雨的概率還是會很低(后驗概率=0) \[P(rain|cloudy) = \frac{{P(cloudy|rain)P(rain)}}{{P(cloudy)}}\]
- 把注意力集中在分母,公式可以理解為:陰天會下雨的概率(后驗概率),不僅跟下雨並且是陰天的概率有關,還跟不下雨也是陰天的概率有關 \[P(rain|cloudy) = \frac{{P(cloudy|rain)P(rain)}}{{P(cloudy|rain)P(rain) + P(cloudy|norain)P(norain)}}\]
- 似然函數:根據貝葉斯公式得出的先驗概率與后驗概率的關系參數 \[{P(cloudy|rain)}\] 由於已經知道是陰天了,忽略P(cloudy) \[P(rain|cloudy) \propto P(cloudy|rain)P(rain)\]
在很多文獻中,將x與y分別描述為“因”和“果”,P(因)即為先驗概率,P(因|果)即已經知道結果求原因的概率為后驗概率,這里產生了第一個混淆點,在很多現實的例子里,“因”“果”是什么?因為陰天所以下雨?還是因為要下雨所以陰天?
在上面的例子里,顯然只能解釋為后者,即這天要下雨是“原因”,陰天是下雨的“結果”,下雨可能引發陰天,也可能引發不陰天。這個理解本身就很別扭。
在英文中,P(y)先驗概率、P(y|x)后驗概率、P(x|y)似然函數、P(x)分別的名稱為:prior、posterior、likelihood、evidence,最后的P(x)連中文名稱都沒有,但我個人認為這個才是理解這些概念的關鍵。
先說說概率論兩大學派,頻率學派和貝葉斯學派,頻率學派認為事件出現的概率是一定的,貝葉斯學派認為事件的概率也是存在分布的
- 頻率學派:認為事件概率是確定的,所以重復實驗解決一切問題,代表算法是最大似然估計MLE,這里常舉的例子是硬幣的例子,如果拋10次硬幣,10次正面向上,則頻率學派認為P(拋硬幣正面向上)就為1.0。
- 貝葉斯學派:認為事件概率本身是有分布的,所以引入先驗概率(分布)的概念,代表算法是最大后驗概率估計MAP,如果認為硬幣很可能是均勻的,如果拋10次硬幣,10次正面向上,則貝葉斯學派認為P(拋硬幣正面向上)是一個介於0.5-1.0之間的數。
這里是怎么跟上面的先驗概率、后驗概率、似然函數聯系起來的呢,注意頻率學派和貝葉斯學派都是參數估計的方法,所以要估計的不是正面或者反面向上,而是模型的參數,P(拋硬幣正面向上)其實只是模型參數的一個表現。如果用“因果論”來解釋,模型參數即為因,拋硬幣結果為正面向上即為果。這里為了避免混淆,許多文獻令模型參數為θ,區別於之前使用的y。
- 先驗概率: \[P(\theta )\]
- 后驗概率: \[P(\theta |x)\]
- 似然函數: \[P(x|\theta )\]
基於這樣的定義,推導兩個學派的估計方法
- 頻率學派:使用最大似然估計,即 \[\mathop {\arg \max }\limits_\theta (P({x_1},{x_2},...,{x_{10}}|\theta ))\] 像硬幣實驗一樣的獨立重復實驗可化簡為 \[\mathop {\arg \max }\limits_\theta (\prod\limits_i {P({x_i}|\theta )} )\] 直觀理解也很好理解,如果拋10次硬幣都是正面向上,那么最可能的估計當然就是這枚硬幣只有可能正面向上(說不定兩面都是正面)
- 貝葉斯學派:使用最大后驗概率估計,即 \[\mathop {\arg \max }\limits_\theta (P(\theta |{x_1},{x_2},...,{x_{10}})) \propto P({x_1},{x_2},...,{x_{10}}|\theta )P(\theta )\] 正好比最大似然估計多了一項P(θ),即對應先驗分布,直觀理解即硬幣可能兩面都是正面,也可能一面重一些,也可能是均勻的,各種情況的(先驗)概率不同,各種情況下10次拋硬幣結果都正面朝上的(條件)概率也不同
目前還比較順利,但回到剛才陰天下雨的問題,在機器學習任務中,我們一般是希望通過陰天來判斷是否會下雨,那么模型對應的(表現)就是P(rain|cloudy),這里用“因”到底應該對應模型參數?還是下雨?
接下來看一個機器學習的典型模型——邏輯回歸,邏輯回歸模型如下(x為輸入特征向量、θ為參數向量、y為預測結果) \[P(y = 1|x) = \frac{1}{{1 + {e^{ - \theta x}}}}\] \[P(y = 0|x) = 1 - P(y = 1) = \frac{1}{{1 + {e^{\theta x}}}}\] P(y=1|x)與P(y=0|x)是該模型對於后驗概率的估計,可以化簡為 \[P(y|x) = {(\frac{1}{{1 + {e^{ - \theta x}}}})^y}{(1 - \frac{1}{{1 + {e^{ - \theta x}}}})^{1 - y}}\] 然后是用最大似然估計推導邏輯回歸參數估計的過程 \[\mathop {\arg \max }\limits_\theta \prod\limits_i {{{(\frac{1}{{1 + {e^{ - \theta {x_i}}}}})}^{{y_i}}}{{(1 - \frac{1}{{1 + {e^{ - \theta {x_i}}}}})}^{1 - {y_i}}}} \]
這推導表面上順利的不得了,大家都這么寫,仔細想想不對啊!似然函數是P(a|b)的話,后驗分布應該是P(b|a),兩個怎么成了一回事?x、y、θ擠到一塊,哪個是哪個?
所以個人認為用“因”“果”描述先驗后驗,不太合適。英文將P(x)描述為evidence,evidence有顯性的意思在里面,如果用“顯示的”“隱藏的”來描述,看是不是能順暢點。
在陰天下雨模型中,我們知道今天是陰天,要推斷的是是否要下雨,陰天是“顯示的”,下雨是“隱藏的”,那么先驗概率自然是P(下雨),后驗概率則為P(下雨|陰天)。
在硬幣模型中,我們知道10次拋硬幣結果是正面,要推斷的是拋硬幣結果模型,拋硬幣結果是“顯”,模型是“隱”,那么先驗分布為P(模型),后驗分布為P(模型|10次拋硬幣結果是正面)。
在邏輯回歸模型中,模型的功能是根據輸入x預測輸出y,自然x是已知的,是“顯”,y是要預測的,是“隱”,所以模型將決策函數假設為后驗概率P(y|x)。但是在參數估計的過程中,輸入的是訓練數據,訓練數據的x、y都是已知的,而模型參數θ才是未知的,所以x、y是“顯”,θ是“隱”,所以此時的似然函數不是P(x|y),也不是P(θ|x),而是P(θ|x,y),這樣,最大似然估計的式子就可以推導出來了!
回頭看邏輯回歸的模型,其實假設的也不是P(y|x),而是P(y|x,θ)。
所以其實預測和參數估計是兩個過程,一個是概率過程,根據模型求概率(數據),一個是統計過程,根據數據(展現出來的概率)求模型,兩個過程正好相反,這里是第二個混淆點。
舉另一個實例,如果需要根據一個人是否咳嗽判斷他是否有肺炎,那么“是否咳嗽”就是“顯”,“是否有肺炎”就是“隱”;如果需要根據一個人是否有肺炎判斷他平時是否咳嗽,那么“是否有肺炎”就是“顯”,“是否咳嗽”就是“隱”,這哪有什么絕對的因果關系嘛。
接下來再看一個機器學習的經典模型——朴素貝葉斯,朴素貝葉斯模型為最大化后驗概率(x為輸入特征向量、y為預測結果) \[y = \mathop {\arg \max }\limits_{{y_k}} P({y_k}|x)\] 但是參數估計方式是怎樣呢,很多地方解釋為最大后驗概率估計MAP \[\mathop {\arg \max }\limits_{{y_k}} P({y_k}|x) \propto \mathop {\arg \max }\limits_{{y_k}} P(x|{y_k})P({y_k})\] 按之前的說法,x、y都是已知的,概率有什么好估計的呢?所以參數估計方法如果非要說是最大后驗概率估計的話,也是如下試 \[\mathop {\arg \max }\limits_\theta (\mathop {\arg \max }\limits_{{y_k}} P(\theta |x,{y_k})) \propto \mathop {\arg \max }\limits_\theta (\mathop {\arg \max }\limits_{{y_k}} P(x,{y_k}|\theta )P(\theta ))\] 但是我們的確沒有給參數θ預設任何值,所以從這個角度其實P(θ)就是均勻分布,最大后驗概率估計等同於最大似然估計 \[\mathop {\arg \max }\limits_\theta (\mathop {\arg \max }\limits_{{y_k}} P(x,{y_k}|\theta )) = \mathop {\arg \max }\limits_\theta (\mathop {\arg \max }\limits_{{y_k}} P(x|{y_k},\theta )P({y_k}|\theta ))\] 這里又是一個混淆點,貝葉斯學派與頻率學派的區別關鍵在於認為參數是一定的還是有概率分布的,在朴素貝葉斯模型中,也可以認為P(y)是一個概率分布,所以稱朴素貝葉斯是符合貝葉斯學派思想的也沒什么問題。問題是,我們在估計模型參數的時候,並沒有辦法估計P(y)的概率分布,還是估計了一個固定的P(y)的值,而不是概率分布,所以還是不太算得上是最大后驗概率估計。
在《統計學習方法》中也是如下描述的:P(y)的最大似然估計為(I(***)為指示函數) \[P({y_k}) = \frac{{I(y = {y_k})}}{n}\] P(x|y)的最大似然估計為 \[P({x_i}|{y_k}) = \frac{{I(x = {x_i},y = {y_k})}}{{I(y = {y_k})}}\] 然后在預測時使用 \[\mathop {\arg \max }\limits_{{y_k}} P({y_k}|{x_i}) \propto \mathop {\arg \max }\limits_{{y_k}} P({x_i}|{y_k})P({y_k})\]
參考文獻:
https://blog.csdn.net/u011508640/article/details/72815981
https://www.cnblogs.com/ldphoebe/p/5041813.html
https://blog.csdn.net/zjuPeco/article/details/77165974
https://www.zhihu.com/question/24261751
https://www.zhihu.com/question/27398304
