最大似然估計與期望最大化(EM)算法


一、最大似然估計與最大后驗概率

1、概率與統計

概率與統計是兩個不同的概念。

概率是指:模型參數已知,X未知,p(x1) ... p(xn) 都是對應的xi的概率

統計是指:模型參數未知,X已知,根據觀測的現象,求模型的參數

2、似然函數與概率函數

  • 似然跟概率是同義詞,所以似然也是表示概率,但這個概率有些不一樣。

似然是指:模型在不同參數下, p(x1) ... p(xn) 發生的概率

似然估計是指:模型的參數未知,X已知,根據觀測現象(X),估計模型參數的過程

  • 最大似然估計(為什么要最大):

 對於觀測數據集x1,x2...xn, 在θ下發生的概率分別是p(x1|θ),p(x2|θ)... p(xn|θ), 所以出現該觀測數據集的概率為 P(X|θ) = p(x1|θ)p(x2|θ)... p(xn|θ), 那想一想為什么我一下就會抽出x1, x2 ... xn這n個數據呢?一種直觀的解釋就是 它們發生的概率大,所以 就是求讓 P(X)最大下的θ,這就是最大似然估計。

 3、最大后驗概率

最大似然是求參數,讓P(X|θ)最大,最大后驗概率是讓P(X|θ)P(θ)最大,相當於給似然函數加了一個關於θ的權重。

為什么要讓 P(X|θ)P(θ) 最大?

想一想我們在干什么?我們是根據一群觀測數據X = (x1, x2 ... xn) 估計模型的參數,即求 P(θ0 | X),  用貝葉斯改一下就是 

P(θ0 | X) = P(X|θ0) P(θ0) / P(X) , 對於給定的觀測序列X來說P(X)是固定的,所以我們求后驗概率P(θ0 | X)最大就是求P(X|θ0) P(θ0)最大

對於👆的貝葉斯公式來說, 其實就是 【后驗概率P(θ0 | X)】 等於 【似然函數 P(X|θ0)】 乘以 【先驗概率P(θ0)】

      參考

https://zhuanlan.zhihu.com/p/26614750

https://blog.csdn.net/u011508640/article/details/72815981

https://zhuanlan.zhihu.com/p/26614750

二、高斯混合模型(Gaussian Mixture Model)

 

每個 GMM 由 K 個 Gaussian 分布組成,每個 Gaussian 稱為一個“Component”,這些 Component 線性加成在一起就組成了 GMM 的概率密度函數:

根據上面的式子,如果我們要從 GMM 的分布中隨機地取一個點的話,實際上可以分為兩步:

首先隨機地在這 K 個 Component 之中選一個,每個 Component 被選中的概率實際上就是它的系數 \pi_k ,選中了 Component 之后,再單獨地考慮從這個 Component 的分布中選取一個點就可以了──這里已經回到了普通的 Gaussian 分布,轉化為了已知的問題。

GMM可以用來做分類,每個Gaussian都是一個類別。

現在假設我們有 N 個數據點,並假設它們服從某個分布(記作 p(x) ),現在要確定里面的一些參數的值,

例如,在 GMM 中,我們就需要確定 \pi_k\mu_k 和 \Sigma_k 這些參數。 我們的想法是,找到這樣一組參數,它所確定的概率分布生成這些給定的數據點的概率最大,而這個概率實際上就等於 \prod_{i=1}^N p(x_i) ,我們把這個乘積稱作似然函數 (Likelihood Function)。通常單個點的概率都很小,許多很小的數字相乘起來在計算機里很容易造成浮點數下溢,因此我們通常會對其取對數,把乘積變成加和 \sum_{i=1}^N \log p(x_i),得到 log-likelihood function 。接下來我們只要將這個函數最大化(通常的做法是求導並令導數等於零,然后解方程),亦即找到這樣一組參數值,它讓似然函數取得最大值,我們就認為這是最合適的參數,這樣就完成了參數估計的過程。

     下面讓我們來看一看 GMM 的 log-likelihood function :

由於在對數函數里面又有加和,我們沒法直接用求導解方程的辦法直接求得最大值。為了解決這個問題,我們采取之前從 GMM 中隨機選點的辦法:分成兩步,實際上也就類似於 K-means 的兩步。

1、估計數據由每個 Component 生成的概率(並不是每個 Component 被選中的概率):對於每個數據 x_i 來說,它由第 k 個 Component 生成的概率為

\displaystyle
\gamma(i, k) = \frac{\pi_k \mathcal{N}(x_i|\mu_k, \Sigma_k)}{\sum_{j=1}^K \pi_j\mathcal{N}(x_i|\mu_j, \Sigma_j)}

由於式子里的 \mu_k 和 \Sigma_k 也是需要我們估計的值,我們采用迭代法,在計算 \gamma(i, k) 的時候我們假定 \mu_k 和 \Sigma_k 均已知,我們將取上一次迭代所得的值(或者初始值)。

2估計每個 Component 的參數:現在我們假設上一步中得到的 \gamma(i, k) 就是正確的“數據 x_i 由 Component k 生成的概率”,亦可以當做該 Component 在生成這個數據上所做的貢獻,或者說,我們可以看作 x_i 這個值其中有 \gamma(i, k)x_i 這部分是由 Component k 所生成的。集中考慮所有的數據點,現在實際上可以看作 Component 生成了 \gamma(1, k)x_1, \ldots, \gamma(N, k)x_N 這些點。由於每個 Component 都是一個標准的 Gaussian 分布,可以很容易分布求出最大似然所對應的參數值:

\displaystyle
\begin{aligned}
\mu_k & = \frac{1}{N_k}\sum_{i=1}^N\gamma(i, k)x_i \\
\Sigma_k & = \frac{1}{N_k}\sum_{i=1}^N\gamma(i,
k)(x_i-\mu_k)(x_i-\mu_k)^T
\end{aligned}

其中 N_k = \sum_{i=1}^N \gamma(i, k) ,並且 \pi_k 也順理成章地可以估計為 N_k/N 。 //不太懂

3、重復迭代前面兩步,直到似然函數的值收斂為止。

參考:

http://blog.pluskid.org/?p=39 

https://github.com/wrayzheng/gmm-em-clustering

三、Expectation Maximum (EM)算法

 

假設我們有一個樣本集{x(1),…,x(m)},包含m個獨立的樣本。但每個樣本i對應的類別z(i)是未知的(相當於聚類),也即隱含變量。故我們需要估計概率模型p(x,z)的參數θ,但是由於里面包含隱含變量z,所以很難用最大似然求解,但如果z知道了,那我們就很容易求解了。

 

對於參數估計,我們本質上還是想獲得一個使似然函數最大化的那個參數θ,現在與最大似然不同的只是似然函數式中多了一個未知的變量z,見下式(1)。也就是說我們的目標是找到適合的θ和z讓L(θ)最大。那我們也許會想,你就是多了一個未知的變量而已啊,我也可以分別對未知的θ和z分別求偏導,再令其等於0,求解出來不也一樣嗎?
---------------------
作者:zouxy09
來源:CSDN
原文:https://blog.csdn.net/zouxy09/article/details/8537620
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

    

本質上我們是需要最大化(1)式(對(1)式,我們回憶下聯合概率密度下某個變量的邊緣概率密度函數的求解,注意這里z也是隨機變量。對每一個樣本i的所有可能類別z求等式右邊的聯合概率密度函數和,也就得到等式左邊為隨機變量x的邊緣概率密度),也就是似然函數,但是可以看到里面有“和的對數”,求導后形式會非常復雜(自己可以想象下log(f1(x)+ f2(x)+ f3(x)+…)復合函數的求導),所以很難求解得到未知參數z和θ。那OK,我們可否對(1)式做一些改變呢?我們看(2)式,(2)式只是分子分母同乘以一個相等的函數,還是有“和的對數”啊,還是求解不了,那為什么要這么做呢?咱們先不管,看(3)式,發現(3)式變成了“對數的和”,那這樣求導就容易了。我們注意點,還發現等號變成了不等號,為什么能這么變呢?這就是Jensen不等式的大顯神威的地方。
---------------------
作者:zouxy09
來源:CSDN
原文:https://blog.csdn.net/zouxy09/article/details/8537620
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

      轉自:https://blog.csdn.net/zouxy09/article/details/8537620


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM