關于機器學習-EM算法新解

jopen 9年前發布 | 11K 次閱讀 算法 機器學習
 

我希望自己能通俗地把它理解或者說明白,但是,EM這個問題感覺真的不太好用通俗的語言去說明白,因為它很簡單,又很復雜。簡單在于它的思想,簡 單在于其僅包含了兩個步驟就能完成強大的功能,復雜在于它的數學推理涉及到比較繁雜的概率公式等。如果只講簡單的,就丟失了EM算法的精髓,如果只講數學 推理,又過于枯燥和生澀,但另一方面,想把兩者結合起來也不是件容易的事。所以,我也沒法期待我能把它講得怎樣。希望各位不吝指導。

  • EM模型

在統計計算中, 最大期望(EM)算法 是在概率(probabilistic)模型中尋找參數最大似然估計或者最大后驗估計的算法,其中概率模型依賴于無法觀測的隱藏變量(Latent Variable)。最大期望經常用在機器學習和計算機視覺的數據聚類(Data Clustering)領域。

最大期望算法經過兩個步驟交替進行計算:

第一步是計算期望(E),利用對隱藏變量的現有估計值,計算其最大似然估計值;

第二步是最大化(M),最大化在 E 步上求得的最大似然值來計算參數的值。

M 步上找到的參數估計值被用于下一個 E 步計算中,這個過程不斷交替進行。總體來說,EM的算法流程如下:

1.初始化分布參數

2.重復直到收斂:

E步驟:估計未知參數的期望值,給出當前的參數估計。

M步驟:重新估計分布參數,以使得數據的似然性最大,給出未知變量的期望估計。

這里面需要重點強調的就是最大似然估計的建模過程以及M步驟計算過程

  • 最大似然

扯了太多,得入正題了。假設我們遇到的是下面這樣的問題:

假設我們需要調查我們學校的男生和女生的身高分布。你怎么做啊?你說那么多人不可能一個一個去問吧,肯定是抽樣了。假設你在校園里隨便地活捉了100個男 生和100個女生。他們共200個人(也就是200個身高的樣本數據,為了方便表示,下面,我說“人”的意思就是對應的身高)都在教室里面了。那下一步怎 么辦啊?你開始喊:“男的左邊,女的右邊,其他的站中間!”。然后你就先統計抽樣得到的100個男生的身高。假設他們的身高是服從高斯分布的。但是這個分 布的均值u和方差? 2 我們不知道,這兩個參數就是我們要估計的。記作θ=[u, ?] T

用數學的語言來說就是:在學校那么多男生(身高)中,我們獨立地按照概率密度p(x|θ)抽取100了個(身高),組成樣本集X,我們想通過樣本集X來估 計出未知參數θ。這里概率密度p(x|θ)我們知道了是高斯分布N(u,?)的形式,其中的未知參數是θ=[u, ?] T 。抽到的樣本集是X={x 1 ,x 2 ,…,x N },其中x i 表示抽到的第i個人的身高,這里N就是100,表示抽到的樣本個數。

由于每個樣本都是獨立地從p(x|θ)中抽取的,換句話說這100個男生中的任何一個,都是我隨便捉的,從我的角度來看這些男生之間是沒有關系的。那么, 我從學校那么多男生中為什么就恰好抽到了這100個人呢?抽到這100個人的概率是多少呢?因為這些男生(的身高)是服從同一個高斯分布p(x|θ)的。 那么我抽到男生A(的身高)的概率是p(x A |θ),抽到男生B的概率是p(x B |θ),那因為他們是獨立的,所以很明顯,我同時抽到男生A和男生B的概率是p(x A |θ)*  p(x B |θ),同理,我同時抽到這100個男生的概率就是他們各自概率的乘積了。用數學家的口吻說就是從分布是p(x|θ)的總體樣本中抽取到這100個樣本的概率,也就是樣本集X中各個樣本的聯合概率,用下式表示:

關于機器學習-EM算法新解

這個概率反映了,在概率密度函數的參數是θ時,得到X這組樣本的概率。因為這里X是已知的,也就是說我抽取到的這100個人的身高可以測出來,也 就是已知的了。而θ是未知了,則上面這個公式只有θ是未知數,所以它是θ的函數。這個函數放映的是在不同的參數θ取值下,取得當前這個樣本集的可能性,因 此稱為參數θ相對于樣本集X的似然函數(likehood function)。記為L(θ)。

這里出現了一個概念,似然函數。還記得我們的目標嗎?我們需要在已經抽到這一組樣本X的條件下,估計參數θ的值。怎么估計呢?似然函數有啥用呢?那咱們先來了解下似然的概念。

直接舉個例子:

某位同學與一位獵人一起外出打獵,一只野兔從前方竄過。只聽一聲槍響,野兔應聲到下,如果要你推測,這一發命中的子彈是誰打的?你就會想,只發一槍便打中,由于獵人命中的概率一般大于這位同學命中的概率,看來這一槍是獵人射中的。

這個例子所作的推斷就體現了極大似然法的基本思想。

再例如:下課了,一群男女同學分別去廁所了。然后,你閑著無聊,想知道課間是男生上廁所的人多還是女生上廁所的人比較多,然后你就跑去蹲在男廁和 女廁的門口。蹲了五分鐘,突然一個美女走出來,你狂喜,跑過來告訴我,課間女生上廁所的人比較多,你要不相信你可以進去數數。呵呵,我才沒那么蠢跑進去數 呢,到時還不得上頭條。我問你是怎么知道的。你說:“5分鐘了,出來的是女生,女生啊,那么女生出來的概率肯定是最大的了,或者說比男生要大,那么女廁所 的人肯定比男廁所的人多”。看到了沒,你已經運用最大似然估計了。你通過觀察到女生先出來,那么什么情況下,女生會先出來呢?肯定是女生出來的概率最大的 時候了,那什么時候女生出來的概率最大啊,那肯定是女廁所比男廁所多人的時候了,這個就是你估計到的參數了。

從上面這兩個例子,你得到了什么結論?

回到男生身高那個例子。在學校那么男生中,我一抽就抽到這100個男生(表示身高),而不是其他人,那是不是表示在整個學校中,這100個人(的 身高)出現的概率最大啊。那么這個概率怎么表示?哦,就是上面那個似然函數L(θ)。所以,我們就只需要找到一個參數θ,其對應的似然函數L(θ)最大, 也就是說抽到這100個男生(的身高)概率最大。這個叫做θ的最大似然估計量,記為:

關于機器學習-EM算法新解

有時,可以看到L(θ)是連乘的,所以為了便于分析,還可以定義對數似然函數,將其變成連加的:

關于機器學習-EM算法新解

好了,現在我們知道了,要求θ,只需要使θ的似然函數L(θ)極大化,然后極大值對應的θ就是我們的估計。這里就回到了求最值的問題了。怎么求一 個函數的最值?當然是求導,然后讓導數為0,那么解這個方程得到的θ就是了(當然,前提是函數L(θ)連續可微)。那如果θ是包含多個參數的向量那怎么處 理啊?當然是求L(θ)對所有參數的偏導數,也就是梯度了,那么n個未知的參數,就有n個方程,方程組的解就是似然函數的極值點了,當然就得到這n個參數 了。

最大似然估計你可以把它看作是一個反推。多數情況下我們是根據已知條件來推算結果,而最大似然估計是已經知道了結果,然后尋求使該結果出現的可能 性最大的條件,以此作為估計值。比如,如果其他條件一定的話,抽煙者發生肺癌的危險時不抽煙者的5倍,那么如果現在我已經知道有個人是肺癌,我想問你這個 人抽煙還是不抽煙。你怎么判斷?你可能對這個人一無所知,你所知道的只有一件事,那就是抽煙更容易發生肺癌,那么你會猜測這個人不抽煙嗎?我相信你更有可 能會說,這個人抽煙。為什么?這就是“最大可能”,我只能說他“最有可能”是抽煙的,“他是抽煙的”這一估計值才是“最有可能”得到“肺癌”這樣的結果。 這就是最大似然估計。

好了,極大似然估計就講到這, 總結一下:

極大似然估計,只是一種概率論在統計學的應用,它是參數估計的方法之一。說的是已知某個隨機樣本滿足某種概率分布,但是其中具體的參數不清楚,參 數估計就是通過若干次試驗,觀察其結果,利用結果推出參數的大概值。最大似然估計是建立在這樣的思想上:已知某個參數能使這個樣本出現的概率最大,我們當 然不會再去選擇其他小概率的樣本,所以干脆就把這個參數作為估計的真實值。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!