#Expectation Maximization Algorithm EM算法和以前学的都不太同样,EM算法更多的是一种思想,因此后面用几个例子讲解,同时也会重点讲解GMM高斯混合模型。 ###①极大似然估计 极大似然估计这里面用的比较多。假设咱们想要知道咱们学生身高的分布,首先先假设这些学生都是符合高斯分布$$N(μ, σ^2)$$咱们要作的就是要估计这两个参数究竟是多少。学生这么多,挨个挨个来确定是不切实际的,因此天然就是抽样了。 为了统计学生身高,咱们抽样200我的组成样本git
咱们须要估计的参数$$θ = [μ, σ]^T$$ 首先估计一下抽到这两百人的几率一共是多少,抽到男生A的几率github
那么同时抽到这200个学生的G几率$$L(θ) = L(x_1,x_2,x_3...,x_200;θ) = \prod_{i=1}^{200}P(x_i|θ)$$ 最后再取一个对数就行了:算法
####notation和log 上面有一条公式里面是同时存在了;和|,这两个符号差异其实有点大的。**|通常咱们是用来表示条件几率,好比$$P(x|θ)$$就是表示x在θ的条件下发生的几率。框架
也是一个意思。 分号;表示的就是表示后面的是待估计的参数,也就是说P(x;θ)意思就是后面的θ是须要估计的参数而不是条件,因此|也有另外一层意思,若是不是表示条件几率,那么就是表示后面有待估计参数。 固然是在|不表示条件几率的状况下。** 这两种表示法是源于两种学派的不一样理解: 频率派认为参数为固定的值,是指真实世界中,参数值就是某个定值。 贝叶斯派认为参数是随机变量,是指取这个值是有必定几率的。固然,不管是;仍是|,他们都是表示条件几率的意思,只不过这两个学派理解不同而已。 notation的问题解决了以后就是log的问题了,为何须要log化,讲道理,是不须要的。可是求log有这么几个好处: 1.计算简单,累乘是很难计算的,log以后能够变换成累加。 2.几率累乘是会出现数字很是小的状况,log以后就能够避免这种状况。 3.log以后函数的梯度方向是没有变化的,对于函数优化的方向影响很小。dom
似然函数的执行步骤: 1.获得似然函数 2.取对数整理 3.求导数,另导数为零 4.解方程获得解函数
###②Jensen不等式 首先引出凸函数的概念$$f(x)^{''} > 0$$那么就是凸函数,因此它的图像就是一个勾形的,看起来是一个凹函数,其实是凸函数。 学习
####隐变量Z 隐变量是观测不到的,好比作一个抽样,从3个袋子里面抽取小球。而抽取这些小球的过程是不可见的,抽取的过程其实就是隐变量,而这些隐变量,也就是过程能够告诉咱们这个x是从哪一个袋子来的,由此来区分。这个隐变量和HMM里面的隐含序列不是一个东西,隐含序列是当前x的状态,而不是抽取x的过程。因此在这里,通俗点讲,这个z就是用来找到x的组类的,也就是说z来告诉这个x你是属于哪一组的。 另外须要注意的是,隐变量是不能够随便添加的,添加隐变量以后不能影响边缘几率。也就是说,原来是P(x),添加以后就是P(x,z),那么必须有:
优化
因此咱们引入隐变量的缘由是为了转化成和这几个高斯模型相关的式子,不然无从下手。化简一下上式子:$$L(θ) = \sum_{i=1}^{n}logP(x;θ)=\sum_{i=1}^{n}log\sum_zP(x, z;θ)$$既然z能够指定x,那么咱们只须要求解出z就行了。 注意上面凸函数所提到的一个指望性质,这里就可使用了。由于虽然优化了上面的式子,仍是不能求出来,由于z变量实在是太抽象了,找不到一个合适的公式来表示它。EM的一个方法就是用优化下界函数的方法来达到优化目标函数的目的。 既然z很抽象,那么咱们就须要一个转变一下。对于每个样例x都会对应一个z,那么假设一个分布Q(z)是知足了z的分布的,而Q(z)知足的条件是Qi意味着每个x对应的z都会对应着一个Q了,这里有点复杂,再详细解释一下。一个x对应一组z,z是一个向量,可是每个z又会分别对应一个一个分布Q。觉得最后获得的z不会是一个数字,而是一个几率,也就是说Q(z)获得的是这个x样例属于这个类别的几率是多少。而z的数量,一个是当前有多少个分布混合在一块儿的数量。 再梳理一下:如今的样本是xi,那么每个xi将会对应着一组的z,每个xi同时也会对应着一个分布Qi,z其实就是反应了这个样本是来自于哪一个分布的。好比这个x是A1分布作了3,A2分布作了5,那么z可能就是={3,5}。因此Qi(z)获得的是这个x属于这些个分布的几率,也就是说这些分布对x作了多少百分比的功,天然就是要等于1了。 还要注意的是,上面的
这个并不能获得Qi(z)就是分布对x作了多少功的结论,获得这个结论是后面下界函数与目标函数相等获得的。这里只是知道了总和等于1,由于是分布的总和嘛。 如今就到了公式的化简:$$\sum_ilogP(x^{(i)};θ) = \sum_ilog\sum_{z^{(i)}}P(x^{(i)},z^{i};θ) = \sum_ilog\sum_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{i},z^{i};θ)}{Q_i(z^{(i)})}$$ 仔细看一下这个式子$$\sum_zQ_i(z^{(i)})\frac{P(x^{i},z^{i};θ)}{Q_i(z^{(i)})}$$这个式子其实就是求
的指望,假设
,那么能够利用上面
。因而化简:.net
因而有: 3d
####EM算法计算步骤: E-step: 对于每个
,求
M-step:
这时候就可使用求导迭代的方法求解了。
这就是整一个EM算法的框架了,能够看到其实没有比较具体的算法,大体上就是一个框架。那么问题来了,怎么样证实这东西是一个收敛的??
####证实EM算法的收敛性 既然是极大似然估计,那么须要证实的天然就是
,也就是说极大似然估计要单调递增。由于每一次都是极大,那么随着时间增长,天然就是要增大的了。 当给定一个
的时候,至关于t时间的EM算法进行了E步了,因此有:
意思就是求出第i个样本属于第j个分布的几率是多少。以后就是M-step了,就是化简了:
这里可能须要解释一下,根据至于条件,由于很明显,z是隐变量,只是指明了x是属于哪一个类别,和μ,Σ没有什么关系,因此直接忽略那两个参数了,因此P(z)是没有那两个参数的,z是表明了分布,因此每个分布的几率确定是包括了,因此就只有一个几率的参数。P(x|z)是自己的几率,就是已经知道分布是那个了,求属于这个分布的几率是多少,既然已经选定了分布那么天然就不须要再看φ了,由于φ是各个分布的几率。