码迷,mamicode.com
首页 > 其他好文 > 详细

ML_Review_GMM(Ch10)

时间:2019-06-17 12:38:18      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:tail   gmm   本质   iter   you   log   ref   问题   混合   

Note sth about GMM(Gaussian Mixtrue Model)
高斯混合模型的终极理解
高斯混合模型(GMM)及其EM算法的理解
这两篇博客讲得挺好,同时讲解了如何解决GMM参数问题的EM算法,其实GMM式子没有什么高深的地方,都是概率论的东西,主要是构思比较巧妙。

动机:
?GMM是用来拟合某种分布的。哪种?任意一种!当然,前提是参数足够多的情况下,所以实作其实并非拟合任意模型。那么一般什么样的模型会被GMM较好拟合?首先,我们思考一下一维的高斯分布(即正态分布),然后我们思考一下二维的,三维的……会发现,高斯分布在二维类似椭圆,三维类似椭球,而这也是我理解它为什么说可以拟合任意分布的原因。因为椭圆(我们从二维来说),其实就是实轴(a)和虚轴(b)决定的一种图形,那么如果$a=b$就世缘,而如果$a \gg b$或者$a \ll b$,其实就非常得趋近于直线了。当然这是一个高斯分布的情况,而GMM本质就是混合(Mixtrue)了很多的高斯分布(Gaussian Model),然后保证权重和为1即可(单高斯分布也可看成是GMM的特殊情况,即某个权重为1,其余均为0)。
?GMM算法过程没什么描述,流程就在公式里,本质就是用多个高斯分布的和去拟合我们目前拿到的样本数据(TrainingData)。

GMM算法公式概述:只打GMM的部分公式,EM的实在太长了,但强烈建议纸上手推
高斯混合模型的概率密度函数:
$$ p(y|\theta) = \sum_{k=1}^{K} \alpha\phi(y|\theta_k) $$
where
$$ \phi(y|\theta_k) \Leftrightarrow \phi(y|\theta_k) = \frac{1}{\sqrt{2\pi}\sigma_k} exp(-\frac{(y-\mu_k)^2}{2\sigma_k^2}) $$
$$ \alpha \geq 0 \quad and\quad \sum_{k=1}^{K}\alpha_k = 1, \qquad \theta_k = (\mu_k, \theta_k) $$
顺带写一写对其做极大似然估计的过程:
$$ p(x; \theta) = \sum_{k=1}^{K} \pi_kN(x;\mu_i,\sigma_k) \qquad s.t.\quad \sum_{k=1}^{K} \pi_k=1 $$
$$ P(x; \theta) = \prod_{i=1}^{N}p(x_i;\theta) $$
$$ lnP(x; \theta) = \sum_{i=1}^{N} ln( \sum_{k=1}^{K}\pi_kN(xi;\theta_k) ) $$
This formula, you will get ;_; if you try to caculate it‘s gradient, because it need reduction of fractions to a commomn denominator.It may make you mad,at least it made me mad.

细节理解:
?1、为何$\sum_{k=1}{K} \alpha_k=1$,因为概率密度函数的定义域内积分要为1,显然GMM必须满足这个性质,而分配权重和为1,就可以满足这个性质,因为求积分可以分开求,最后累加,而每个分布的积分都是1,乘以和为1的权重,最后和才会为1。
?2、为何需要EM算法,MLE不可以么?其实是先尝试过MLE,就会发现需要EM,因为在做MLE(手写)的时候会遇到一个问题(其实就是求出似然函数之后,取完对数发现需要求导的部分是$\sum ln (\sum)$这种形式,显然求导非常难算,可以简单想想,分式,或许需要通分,然后有N个式子。。。)。第一篇之中的“第二个细节”就是说的这个问题。

ML_Review_GMM(Ch10)

标签:tail   gmm   本质   iter   you   log   ref   问题   混合   

原文地址:https://www.cnblogs.com/FormerAutumn/p/11038398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!