本文在少用數學公式的狀況下,儘可能僅依靠感性直覺的思考來說解 極大似然估計 & 極大後驗機率估計,而且從名著中找了幾個實例給你們看看這兩種估計如何應用 & 其很是有趣的特色。html
機率(probability)和統計(statistics)看似兩個相近的概念,其實研究的問題恰好相反。java
機率研究的是,已經知道了模型和參數後,給出一個事件發生的機率。算法
機率是一種肯定性的東西,是一種理想值。根據大數定理,當實驗次數趨近無窮的時候,頻率等於機率。框架
頻率學派就是認爲世界是肯定的,建模時候參數 θ 是一個肯定的值,所以他們的觀點是直接的對時間自己進行建模。機器學習
統計是根據給出的觀測數據,利用這些數據進行建模和參數的預測。函數
統計通俗的說法就是根據觀測的數據,獲得對應的模型以及模型的描述參數等(例如推測是一個高斯模型,以及獲得該模型的具體的參數 σ,μ 等)。工具
一句話總結:機率是已知模型和參數,推數據。統計是已知數據,推模型和參數。post
頻率學派和貝葉斯學派對世界的認知有本質不一樣。學習
頻率學派認爲世界是肯定的,有一個本體,這個本體的真值是不變的,咱們的目標就是要找到這個真值或真值所在的範圍;
貝葉斯學派認爲世界是不肯定的,人們對世界先有一個預判,然後經過觀測數據對這個預判作調整,咱們的目標是要找到最優的描述這個世界的機率分佈。優化
頻率學派從「天然」角度出發,試圖直接爲「事件」自己建模,即事件在獨立重複試驗中發生的頻率趨於極限,那麼這個極限就是該事件的機率。
貝葉斯學派並不從試圖刻畫「事件」自己,而從「觀察者」角度出發。貝葉斯學派並不試圖說「事件自己是隨機的」,或者「世界的本體帶有某種隨機性」,這套理論根本不言說關於「世界本體」的東西,而只是從「觀察者知識不完備」這一出發點開始,構造一套在貝葉斯機率論的框架下能夠對不肯定知識作出推斷的方法。
機率:參數 + 觀測 --> 結果 似然:觀測 + 結果 --> 參數
假若有一個函數 P(x|θ)
, 其中θ是須要估計的參數,x是具體的數據也就是樣本。
若是θ是已知肯定的,x是變量,這個函數叫作機率函數(probability function),它描述對於不一樣的樣本點x,其出現機率是多少(表示不一樣x出現的機率)。
機率函數屬於已知模型和參數對時間進行預測分析。機率函數用於在已知一些參數的狀況下,預測接下來的觀測所獲得的結果。
若是x是已知肯定的,θ是變量,這個函數叫作似然函數(likelihood function), 它描述對於不一樣的模型參數θ,出現x這個樣本點的機率是多少(表示不一樣θ下,x出現的機率)。此時的函數也記做L(θ|x)或L(x;θ)或f(x;θ)
似然函數是一種關於統計模型中的參數的函數,表示模型參數中的似然性(可能性)。就是給定一組觀測數據,對有關事物的性質的參數進行估計,即已知具體樣本數據,對於模型的參數進行分析預測。
最大似然就是模型參數的最大可能性。
參數估計(parameter estimation),統計推斷的一種。根據從整體中抽取的隨機樣原本估計整體分佈中未知參數的過程。
所謂的「機器學習」就是把大量的數據概括到少數的參數中,「訓練」正是估計這些參數的過程。
現代機器學習的終極問題都會轉化爲解目標函數的優化問題,MLE和MAP是生成這個函數的很基本的思想。
在對事物建模時,用 θ 表示模型的參數,解決問題的本質就是求θ 。那麼:
頻率學派認爲:存在惟一真值θ 。
貝葉斯學派認爲: θ是一個隨機變量,符合必定的機率分佈。即不認爲模型的參數θ是一個肯定的值,而是認爲參數θ 自己也服從某種潛在分佈。
在貝葉斯學派裏有兩大輸入和一大輸出,輸入是先驗 (prior)和似然 (likelihood),輸出是後驗 (posterior)。
先驗,即 θ,指的是在沒有觀測到任何數據時對θ 的預先判斷;
似然,即 p(x|θ) ,是假設 θ已知後咱們觀察到的數據應該是什麼樣子的;
後驗,即 p(θ|x) , 是最終的參數分佈。
即對事件進行建模的時候,先假設有一個預估(先驗機率),而後根據觀測數據,不斷調整以前的預估。
最大似然估計是一種「模型已定,參數未知」的方法,即利用已知的樣本的結果,在使用某個模型的基礎上,反推最有可能致使這樣結果的模型參數值。
最大似然估計的思想: 使得觀測數據(樣本)發生機率最大的參數就是最好的參數。
通俗的說就是 —— 最像估計法(最可能估計法),即機率最大的事件,最可能發生。
極大似然估計是典型的頻率學派觀點,它的基本思想是:待估計參數 θ 是客觀存在的,只是未知而已,當 θ-mle
知足 「 θ = θ-mle 時
,該組觀測樣本 (X1,X2,...,Xn) = (x1, x2,...,xn)
更容易被觀測到「,咱們就說 [θ-mle]
是 [θ]
的極大似然估計值。也即,估計值 [θ-mle]
使得事件發生的可能性最大。
假設分佈率爲 P=p(x;θ),x是發生的樣本,θ是代估計的參數,p(x;θ)表示估計參數爲θ時,發生x的的機率。
那麼當咱們的樣本值爲:x1,x2,...,xn
時,
L(θ) = L(x1,x2,...,xn;θ) = p(x1|θ)...p(xn|θ)
連乘
其中L(θ)成爲樣本的似然函數。假設有 θ^ 使得 L(θ) 的取值最大,那麼 θ^ 就叫作參數 θ 的極大似然估計值
能使L(θ)最大的值,就做爲參數的最大似然估計值。
而求最大似然估計的問題,就變成了求似然函數的極值。
可以使用極大似然估計方法的樣本必須須要知足一些前提,好比:訓練樣本的分佈能表明樣本的真實分佈。每一個樣本集中的樣本都是所謂獨立同分布的隨機變量,且有充分的訓練樣本。
對一個獨立同分布的樣本集來講,整體的似然就是每一個樣本似然的乘積。因爲整體的似然就是每一個樣本似然的乘積,可是連乘計算起來比較麻煩,並且會有以下問題:
下溢出問題:是太多很小的數相乘,結果可能會很小,就形成了下溢出。
浮點數舍入問題:是程序中在相應小數位置進行四捨五入,計算結果可能就變成0。
爲了求解方便,咱們一般會將似然函數取對數,從而轉成對數似然函數。
轉成對數似然函數還有以下好處:
lnab = blna、lnab = lna + lnb
,求導就很方便了。公式中的機率連乘變成了對數機率相加。既然似然函數可導,那麼就能夠經過求導數的方式獲得駐點,從而算出極大值。
若是對數似然函數簡單,是能夠直接求導獲得,可是在更多的狀況下,咱們須要經過梯度降低法等最優化算法來求解。而絕大部分最優化的工具包都默認求函數的最小值,所以別忘了在你把它塞給一個最優化工具包以前,把你的log似然 乘以 -1 變成負log似然(Negative Log Likelihood)。
這也是某些文章中有以下公式的緣由:
\[ θ =arg max l(θ)=-arg min l(θ) \]
舉一個網上的經典例子:
假若有一個罐子,裏面有黑白兩種顏色的球,數目多少不知,兩種顏色的比例也不知。我 們想知道罐中白球和黑球的比例,但咱們不能把罐中的球所有拿出來數。如今咱們能夠每次任意從已經搖勻的罐中拿一個球出來,記錄球的顏色,而後把拿出來的球 再放回罐中。這個過程能夠重複,咱們能夠用記錄的球的顏色來估計罐中黑白球的比例。假如在前面的一百次重複記錄中,有七十次是白球,請問罐中白球所佔的比例最有多是多少?不少人立刻就有答案了:70%。而其後的理論支撐是什麼呢? 咱們假設罐中白球的比例是p,那麼黑球的比例就是1-p。由於每抽一個球出來,在記錄顏色以後,咱們把抽出的球放回了罐中並搖勻,因此每次抽出來的球的顏色服從同一獨立分佈。這裏咱們把一次抽出來球的顏色稱爲一次抽樣。題目中在一百次抽樣中,七十次是白球的機率是P(Data | M),這裏Data是全部的數據,M是所給出的模型,表示每次抽出來的球是白色的機率爲p。若是第一抽樣的結果記爲x1,第二抽樣的結果記爲x2... 那麼Data = (x1,x2,…,x100)。這樣, P(Data | M) = P(x1,x2,…,x100|M) = P(x1|M)P(x2|M)…P(x100|M) = p^70(1-p)^30. 那麼p在取什麼值的時候,P(Data |M)的值最大呢?將p^70(1-p)^30對p求導,並其等於零。 70p^69(1-p)^30-p^70*30(1-p)^29=0。 解方程能夠獲得p=0.7。 在邊界點p=0,1,P(Data|M)=0。因此當p=0.7時,P(Data|M)的值最大。這和咱們常識中按抽樣中的比例來計算的結果是同樣的。
最大似然估計老是能精確地獲得解嗎?簡單來講,不能。更有可能的是,在真實的場景中,對數似然函數的導數仍然是難以解析的(也就是說,很難甚至不可能人工對函數求微分)。所以,通常採用指望最大化(EM)算法等迭代方法爲參數估計找到數值解,但整體思路仍是同樣的。
話說極大似然估計是一個平時經常使用的原理,我在《水滸傳》中也找到了相關的應用,下面找幾個看看。
很是有趣的是,應用實例的人全是北宋都頭。一個是鄆城縣都頭雷橫,一個是清河縣都頭武松。
這能看出來北宋基層刑警一些工做特色, 他們沒有現代各類科學儀器和理論的幫助,只能憑藉"極大似然估計" 這個法寶在第一時間作出最可能最有效的判斷。與後文中實施"極大後驗機率"的小商販石秀造成了明顯區別。
假定 分佈率爲P=p(x;θ),x是發生的樣本,θ是代估計的參數,p(x;θ)表示估計參數爲θ時,發生x的的機率。
θ = 劉唐是什麼人。可能取值大概是 普通人/賊人/軍官......
x = 這殿裏沒有廟祝,殿門不關,一條大漢夜裏獨睡。
雷橫這經驗豐富的老刑警,馬上作出了最可能的判斷。
θ 是"劉唐是賊"。
第十二回青面獸北京鬥武急先鋒東郭爭功
只說雷橫當晚引了二十個士兵出東門繞村巡察,遍地裏走了一遭,回來到東溪村山上,衆人採了那紅葉,就下村來。
行不到三二里,早到靈官廟前,見殿門不關。
雷橫道:「這殿裏又沒有廟祝,殿門不關,莫不有歹人在裏面麼?咱們直入去看一看。」衆人拿着火一齊將入來。
只見供桌上禁止地睡着一個大漢。
天道又熱,那漢子把些破衣裳團作一塊做枕頭枕在項下,的沉睡着了在供桌上。
雷橫看了道:「好怪!懊怪!知縣相公忒神明!原來這東溪村真個有賊!」 大喝一聲。
那漢卻待要掙挫,被二十個士兵一齊向前,把那漢子一條索綁子,押 出廟門,投一個保正莊上來。
假定 分佈率爲P=p(x;θ),x是發生的樣本,θ是代估計的參數,p(x;θ)表示估計參數爲θ時,發生x的的機率。
θ = 大漢是什麼人。取值多是蔣門神,店小二,隔壁店掌櫃......
x = 一個金剛也似大漢在蔣門神酒店門前躺着乘涼。
武二郎馬上作出了極大似然判斷,這漢在蔣門神酒店門前乘涼,長得身材金剛也似,因此這廝必然是蔣忠。
θ = "大漢是蔣門神"
第二十八回施恩重霸孟州道武松醉打蔣門神
武松酒卻涌上來,把布衫攤開;雖然帶着五七分酒,卻裝作十分醉的,前顛後偃,東倒西歪,來到林子前,僕人用手指道:「只前 頭丁字路口即是蔣門神酒店。」武松道:「既是到了,你自去躲得遠着。等我 打倒了,大家卻來。」
武松搶過林子背後,見一個金剛來大漢,披着一領白布衫,撒開一把交椅,拿着蠅拂子,坐在綠槐樹下乘涼。武松假醉佯顛,斜着眼看了一看,心中自忖道:「這個大漢必定是蔣門神了。」直搶過去。又行不到三五十步,早見丁字路口一個大酒店,檐前立着望竿,上面掛着一個酒望子,寫着四個大字,道:「河陽風月」。
假定 分佈率爲P=p(x;θ),x是發生的樣本,θ是代估計的參數,p(x;θ)表示估計參數爲θ時,發生x的的機率。
θ = 王道人是什麼人。可能取值是 正常道人,歹人......
x = 荒山野嶺孤庵,一個先生摟着一個婦人在那窗前看月戲笑。
武二郎馬上作出了極大似然判斷,這必然不是好人。
θ = "王道人是歹人"
第三十回張都監血濺鴛鴦樓武行者夜走蜈蚣嶺
當晚武行者離了大樹十字坡便落路走。此時是十月間天氣,日正短,轉眼便晚了。約行不到五十里,早望見一座高嶺。武行者趁着月明, 一步步上嶺來,料道只是初更天色。武行者立在嶺頭上看時,見月從東邊上
來,照得嶺上草木光輝。 正看之間,只聽得前面林子裏有人笑聲。武行者道:「又來做怪!這般一條靜蕩蕩高嶺,有甚麼人笑語!」走過林子那邊去打一看,只見松樹林中,傍山一座墳庵,約有十數間草屋,推開着兩扇小窗,一個先生摟着一個婦人 在那窗前看月戲笑。
武行者看了,「怒從心上起,惡向膽邊生,」「這是山間林下,出家人卻作這等勾當!」便去腰裏掣出那兩口爛銀也似戒刀來,在月光下看了,道:「刀倒是好,到我手裏未曾發市,且把這個鳥先生試刀!」
最大後驗機率估計,英文爲Maximum A Posteriori Estimation,簡寫爲MAP。MAP是貝葉斯學派經常使用的參數估計方法 。
先回顧下似然函數的概念:函數 P(x|θ), 其中θ是須要估計的參數,x 是具體的數據也就是樣本。若是x是已知肯定的,θ是變量,這個函數叫作似然函數(likelihood function),它描述對於不一樣的模型參數,出現x這個樣本點的機率是多少。
最大後驗機率估計能夠從最大似然估計推導出來。
最大似然估計是求參數θ, 使似然函數P(x|θ)最大。
最大後驗機率估計則是想求θ使 P(x|θ)P(θ) 最大。求得的 θ 不僅僅讓似然函數大,θ 本身出現的先驗機率也得大。
MAP是在最大化 P(x|θ)P(θ)
由於在實際實驗中,p(x)是已經發生了,因此p(x)是一個固定數值, 是觀測到的。於是
MAP也就是在最大化 P(x|θ)P(θ) / P(x)
此時可見,MAP受到兩個部分的影響,P(x∣θ) 和P(θ) ,前者相似於似然函數,後者是參數的先驗分佈。
P(x|θ)P(θ) / P(x) ==> 就是 p(θ|x)。因此
MAP是在最大化 p(θ|x) = P(x|θ)P(θ) / P(x)
最大化P(θ|x)的意義也很明確,x 已經出現了,要求θ取什麼值使P(θ|x)最大。順帶一提,P(θ|x)即後驗機率,這就是「最大後驗機率估計」名字的由來。
最大似然估計認爲使似然函數P(x|θ)最大的參數θ即爲最好的θ,此時最大似然估計是將θ看做固定的值,只是其值未知;
最大後驗機率分佈認爲θ是一個隨機變量,即θ具備某種機率分佈,稱爲先驗分佈,求解時除了要考慮似然函數P(x|θ)以外,還要考慮θ的先驗分佈P(θ),所以其認爲使P(x|θ)P(θ)取最大值的θ就是最好的θ。
此時要最大化的函數變爲P(x|θ)P(θ), 因爲x的先驗分佈p(x)是固定的(可經過分析數據得到),所以最大化函數可變爲P(x|θ)P(θ)/P(x),根據貝葉斯法則,要最大化的函數P(x|θ)P(θ)/P(x) = p(θ|x),所以要最大化的函數是p(θ|x),而p(θ|x)是θ的後驗機率。
在最大似然估計中,因爲認爲θ是固定的,所以P(θ)=1。
最大後驗估計不僅是關注當前樣本的狀況,還容許咱們把先驗知識加入到估計模型中,這在樣本不多時候是頗有用的。
最大後驗,最大似然這二者的區別,其實就是對於參數θ的理解不同。
最大後驗機率估計其實就是最大似然多了一個先驗機率參數(待估計參數的先驗分佈),也能夠認爲最大似然估計就是把先驗機率認爲是一個定值。即,若是假設 P(θ) 是均勻分佈,則貝葉斯方法等價於頻率方法。由於直觀上來說,先驗是uniform distribution本質上表示對事物沒有任何預判, 那麼最大後驗,最大似然就相等了。
極大似然估計是有風險的,就是若是樣本不足,可能就會有判別偏差。
而最大後驗與最大似然區別:最大後驗容許咱們把先驗知識加入到估計模型中,這在樣本不多時候是頗有用的。
水滸傳中極大後驗機率估計的應用,就是石秀殺裴如海/潘巧雲。
拼命三郎石秀是什麼人?
不管是職業特點仍是性格特色都決定了他不會單純考慮 "極大似然",而是會結合"先驗條件"來實施「極大後驗機率估計」,就是必須 "先驗條件" & "樣本" 加在一塊兒最大。
下面原文中加粗下劃線的就是石秀 以前的樣本經驗(先驗知識):潘巧雲以前就幾番對石秀說過風話。
假定 分佈率爲P=p(x;θ),x是發生的樣本,θ是代估計的參數,p(x;θ)表示估計參數爲θ時,發生x的的機率。
θ = 潘巧雲和裴如海的關係,可能取值是 普通香客與僧人 / 結義兄妹 / 有姦情 .....
x = 石秀的觀察數據
石秀經過 "連續十次以上暗中觀察",獲得了觀測樣本,而後 "觀測數據(樣本)+ 先驗知識 ---> 發生機率最大的參數" 。
θ 是"有姦情"。
施耐庵老爺子實在厲害,在書中把石秀這個"先驗 + 觀察 ---> 推理" 的迭代過程和心理狀態寫的入木三分。
第四十四回 楊雄醉罵潘巧雲 石秀智殺裴如海
石秀道:「原來恁地。」自肚裏已瞧科一分了。
不防石秀在布里一眼張見,早瞧科了二分,道: 「‘莫信直中直,須防仁不仁!’我幾番見那婆娘經常的只顧對我說些風話, 我只以親嫂嫂通常相待。原來這婆娘倒不是個良人!莫教撞在石秀手裏,敢替楊雄作個出場也不見得!」石秀一想,一發有三分瞧科了,便揭起布,撞將出來。
石秀 在門前低了頭只顧尋思,其實心中已瞧科四分。
石秀都瞧科了,足有五分來不快意。
石秀不快,此時真到六分,只推肚疼,自去睡在板壁後了。
不想石秀在板壁後假睡,正瞧得看,已看到七分了。
石秀自瞧科八分了。
石秀是乖覺的人,早瞧了九分,冷地里,思量道:「這條巷是條死巷。如何有這頭陀,連日來這裏敲木魚叫佛?」
石秀聽得叫的蹺蹊,便跳將起來去門縫裏張時, 只見一我的,戴頂頭巾,從黑影裏,閃將出來,和頭陀去了;隨後即是迎兒關門。石秀瞧到十分。
貝葉斯學派有一個硬傷:憑什麼去選擇先驗?若是選擇了一個強但偏離實際的先驗,MAP效果可能還不如MLE。因此貝葉斯估計準備在MAP上作進一步拓展,如何擴展呢?下面理一下思路:
首先,MLE和MAP都把參數θ當作一個未知的肯定變量。MLE認爲參數θ是一個固定數值。MAP認爲隨機變量θ具備某種機率分佈,而後MAP取了後驗分佈的峯值(衆數,mode)。
其次,mode每每不具備很強的表明性(特別是在多峯的函數中)。那麼與其將後驗分佈的峯值拿來湊合,還不如將整個後驗分佈求出來,用一個分佈來描述待估的參數。這就是Inference。
因此,貝葉斯估計一樣假定θ是一個隨機變量(服從必定機率分佈),但貝葉斯估計並非直接估計出θ的某個特定值,而是估計θ的分佈,這是貝葉斯估計與最大後驗機率估計不一樣的地方。在貝葉斯估計中,先驗分佈P(X)是不可忽略的。
貝葉斯學派的思想認爲,世界是不肯定的,所以先假設有一個預估(先驗機率),而後根據觀測數據,不斷調整以前的預估。通俗的講就是,對事件進行建模的時候,不認爲模型的參數θ是一個肯定的值,而是認爲參數θ自己也服從某種潛在分佈。
貝葉斯統計的重點:參數未知且不肯定,所以做爲未知的隨機變量,參數自己也是一個分佈,同時,根據已有的先驗知識和樣本信息能夠獲得參數θ的先驗機率,根據先驗機率來推斷θ的後驗機率。並指望後延機率在真實的θ值處有一個尖峯。
極大似然估計和極大後驗機率估計,都求出了參數θ的值,而貝葉斯推斷則不是,它根據參數的先驗分佈P(θ)和一系列觀察X,求出參數θ的後驗分佈P(θ|X),即這個後驗機率分佈P(θ|X)實際上是一系列參數值θ的機率分佈,再說簡單點就是咱們獲得了許多個參數θ及其對應的可能性,咱們只須要從中選取咱們想要的值就能夠了。
那麼如何根據後驗分佈進行參數估計呢?常見的方法有三種:後驗分佈的衆數(即後驗密度最大的點)、後驗分佈的中位數、後驗分佈的均值。
有時咱們想要機率最大的那個參數,那這就是 後驗衆數估計(posterior mode estimator);
有時咱們想知道參數分佈的中位數,那這就是 後驗中位數估計(posterior median estimator);
有時咱們想知道的是這個參數分佈的均值,那就是 後驗指望估計。
這三種估計沒有誰好誰壞,只是提供了三種方法得出參數,看須要來選擇。用得最多的是後驗指望估計,它通常也直接簡稱爲貝葉斯估計。基於貝葉斯估計和基於極大似然估計的樸素貝葉斯算法步驟基本上是同樣的,區別在於有沒有對機率作平滑。
如今咱們清楚了,在貝葉斯估計中,若是咱們採用極大似然估計的思想,考慮後驗分佈極大化而求解 θ ,而後選取了後驗分佈的峯值(衆數,mode),就變成了最大後驗估計(Maximum A Posteriori estimation,MAP)。
做爲貝葉斯估計的一種近似解,MAP有其存在的價值,由於貝葉斯估計中後驗分佈的計算每每是很是棘手的;並且,MAP並不是簡單地回到極大似然估計,它依然利用了來自先驗的信息,這些信息沒法從觀測樣本得到。
詳解最大似然估計(MLE)、最大後驗機率估計(MAP),以及貝葉斯公式的理解