GMM高斯混合模型学习笔记(EM算法求解)
????提出混合模型主要是為了能更好地近似一些較復雜的樣本分布,通過不斷添加component個數,能夠隨意地逼近不論什么連續的概率分布。所以我們覺得不論什么樣本分布都能夠用混合模型來建模。由于高斯函數具有一些非常有用的性質。所以高斯混合模型被廣泛地使用。
????GMM與kmeans相似,也是屬于clustering,不同的是。kmeans是把每一個樣本點聚到當中一個cluster,而GMM是給出這些樣本點到每一個cluster的概率。每一個component就是一個聚類中心。
????GMM(Gaussian Mixture Model)高斯混合模型,由K個不同的Gaussian線性組合而成,每一個Gaussian是混合模型的一個component,GMM的概率密度函數例如以下:
????依據上式。從GMM中生成一個樣本點x分兩步:
????1,從K個component中隨機的選擇一個
????2。從該component中選擇一個點
????參數說明:N個樣本點。K個component,μk,∑k 是第k個component的均值和協方差矩陣,是模型參數,是須要預計的。
πk是mixing coefficient,表示第k個component被選中的概率。πk=1N∑Nn=1znk,也是模型參數。須要預計。N是高斯(正態)分布。
????對一個樣本集建立高斯混合模型的過程,就是依據已知樣本集X反推高斯混合模型的參數(μ,∑,π),這是一個參數預計問題。首先想到用最大似然的方法求解,也就是,要確定參數π,μ,∑使得它所確定的概率分布生成這些樣本點的概率最大。這個概率也就是似然函數,例如以下:
而一般對于單個樣本點其概率較小。多個相乘后更小,easy造成浮點數下溢,所以通常是對似然函數求log,變成加和形式:
∑i=1Nlnp(xi)
????這個叫做log似然函數,目標是要最大化它。用log似然函數對參數分別求偏導。令偏導等于0,可求解得參數。
????然而。GMM的log似然函數是例如以下形式:
lnp(X)=∑i=1Nln[∑k=1Kπk(xi|μk,∑k)]
????能夠看到對數中有求和,直接求導求解將導致一系列復雜的運算,故考慮使用EM算法。(詳細思路見上一篇:EM算法學習筆記)
????考慮GMM生成一個樣本點的過程,這里對每一個xi引入隱變量z,z是一個K維向量,如果生成xi時選擇了第k個component,則zk=1,其它元素都為0。∑Kk=1zk=1.
????如果z是已知的。則樣本集變成了{X,Z},要求解的似然函數變成了:
log似然函數為:
lnp(X,Z|μ,∑,π)=∑n=1N∑k=1Kznk[lnπk+ln(xn|μk,∑k)].(?)
????能夠看到,這次ln直接對Gaussian作用,求和在ln外面,所以能夠直接求最大似然解了。
1,初始化一組模型參數π,μ,∑
2,E-step
????然而。其實z是不知道的。我們僅僅是如果z已知。
而z的值是通過后驗概率觀測。所以這里考慮用z值的期望在上述似然函數中取代z。
????對于一個樣本點x:
p(x|zk=1)=(x|μk,∑k)
p(x|z)=∏k=1K(x|μk,∑k)zk
p(x)=∑zp(z)p(x|z)=∑k=1Kπk(x|μk,∑k)
????后驗概率(固定μ,∑,π):
p(z|x,μ,∑,π)=p(x|z)p(z)p(x)正比于∏n=1N∏k=1K[πk(xn|μk,∑k)]znk
????由于{zn}之間是相互獨立的。
????計算z期望γ(znk)(z向量僅僅有一個值取1,其余為0):
γ(znk)=E[znk]=0?p(znk=0|xn)+1?p(znk=1|xn)=p(znk=1|xn)=p(znk=1)p(xn|znk=1)p(xn)=πk(x|μk,∑k)∑Kj=1πj(x|μj,∑j).
????將z值用期望取代。則待求解的log似然函數(*)式變為:
3,M-step
????如今能夠最大化似然函數求解參數了,首先對μ求偏導,令偏導等于0。可得:
μk=1Nk∑n=1Nγ(znk)xn,其中Nk=∑n=1Nγ(znk).
Nk 是“the effective number of points assigned to cluster k”.
????再對∑k求偏導,令偏導等于0,可得:
∑k=1Nk∑n=1Nγ(znk)(xn?μk)(xn?μk)T
????接下來還需求解π。注意到π需滿足∑Kk=1πk=1。所以這是一個帶等式約束的最大值問題。使用拉格朗日乘數法。
????構造拉格朗日函數:
????對π求導,令導數為0:
∑n=1N(x|μk,∑k)∑Kj=1πj(x|μj,∑j)+λ=0
????兩邊同乘πk得:
∑n=1Nγ(znk)+λπk=0
Nk+λπk=0
????兩邊對k求和:
∑k=1KNk+∑k=1Kλπk=0
N+λ=0
????可得:λ=?N
????代入可得:πk=NkN.
4,檢查是否收斂
????反復E-step和M-step兩步。直到收斂,就可以求得一個局部最優解。
GMM的建模步驟例如以下圖(k=2,高斯分布是藍色和紅色圈):
主要參考資料:
《Pattern Recognization and Machine Learning》
幫助理解:
http://blog.pluskid.org/?p=39
轉載于:https://www.cnblogs.com/mfrbuaa/p/5111355.html
總結
以上是生活随笔為你收集整理的GMM高斯混合模型学习笔记(EM算法求解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于java中的不可变类(转)
- 下一篇: spring mvc返回json