今天又把em演算法求解gmm過了一遍,講下理解的大致過程:
目的:求關於一堆樣本的gmm,但是gmm相關的引數資訊也不知道,只知道高斯的個數k,剩下的就是這麼一堆單純的訓練樣本向量;(比如,高斯是128個,樣本是n多個sift,可以是原始的也可以是降維的)
那麼,em演算法的第一步是初始化:需要初始化的引數有三類,wi,mui,sigmai,分別代表每個高斯的權重(或者說是概率)、均值和方差。對於單個高斯zi來說,wi是標量,另外兩個是向量,和向量空間的維度一致。初始化的方法可以隨機初始化,比較好的方法可以是先對樣本做乙個k-means,同樣得到k個類,然後就可以根據訓練的結果得到初始化的每個wi,mui,sigmai,初始化的wi=當前k-means這個類i所包含的樣本個數/樣本總數,mui=這個類i的均值,sigmai=這個類i的方差;
然後,就是em演算法了,下面直接參考自:
ps:下面的π和我說的權重w是一回事,u和均值mu是一回事,σ和方差sigma是一回事,k等價於我所說的i
e-step e就是expectation的意思,就是假設模型引數已知的情況下求隱含變數z分別取z1,z2,...的期望,亦即z分別取z1,z2,...的概率。在gmm中就是求資料點由各個 component生成的概率。
注意到我們在z的後驗概率前面乘以了乙個權值因子αk,它表示在訓練集中資料點屬於類別zk的頻率,在gmm中它就是πk。
m-step m就是maximization的意思,就是用最大似然的方法求出模型引數。現在我們認為上一步求出的r(i,k)就是「資料點xi由component k生成的概率」。根據公式(3),(4),(5)可以推出:
顯然上面的引數都是可計算的,於是w、mu和sigma就被更新了,然後又可以執行e-step了,然後接著執行m-step,周而復始,直到對數似然函式的值收斂。其中gmm的log-likelihood function是
這是由gmm的概率模型取log得到的。
這個很好理解,看了基本就懂了,重要
正確性的推導等blablabla的,最後那個男生女生的例子非常直觀
簡單理解和說明
EM演算法簡單理解
在求解概率模型的時候,如果需要的變數都是觀測變數,不涉及到隱藏變數的話,可以使用極大似然或者貝葉斯估計來求解模型的引數。比如 對於單高斯模型來講,如果知道觀測變數,那麼就可以使用極大似然或者最小均方誤差來估計高斯模型的均值和方差。如果模型同時包含觀察變數和隱藏變數的話,傳統的方法不能完成模型的估計,...
CSS教程 簡單理解em
px比em更加容易使用,em指字型高,任意瀏覽器的預設字型高都是16www.cppcns.compx。所以未經調整的瀏覽器都符合 1em 16px,所以程式設計客棧10px 0.625em。為了簡化font size的換算,需要在css中的body選擇器中宣告font size 62.5 這就使em...
機器學習 GMM引數估計的EM演算法
看理論之前先來 舉個例子 對於乙個未知引數的模型,我們觀測他的輸出,得到下圖這樣的直方圖 我們先假設它是由兩個高斯分布混合疊加而成的,那麼我們該怎麼去得到這兩個高斯分布的引數呢?em演算法!假設觀測資料 y1 y2,yn是由高斯混合模型生成的。p y k 1k k y k 其中,表示的是高斯模型的引...