Expectation Maximization Algorithm
EM算法和之前学的都不太一样,EM算法更多的是一种思想,所以后面用几个例子讲解,同时也会重点讲解GMM高斯混合模型。
①极大似然估计
极大似然估计这里面用的比较多。假设我们想要知道我们学生身高的分布,首先先假设这些学生都是符合高斯分布我们要做的就是要估计这两个参数到底是多少。学生这么多,挨个挨个来肯定是不切实际的,所以自然就是抽样了。
为了统计学生身高,我们抽样200个人组成样本
我们需要估计的参数首先估计一下抽到这两百人的概率一共是多少,抽到男生A的概率抽到学生B的概率所以同时抽到这两个学生的概率就是那么同时抽到这200个学生的G概率
最后再取一个对数就好了:
notation和log
上面有一条公式里面是同时存在了;和|,这两个符号差别其实有点大的。|一般我们是用来表示条件概率,比如就是表示x在θ的条件下发生的概率。也是一个意思。
分号;表示的就是表示后面的是待估计的参数,也就是说P(x;θ)意思就是后面的θ是需要估计的参数而不是条件,所以|也有另一层意思,如果不是表示条件概率,那么就是表示后面有待估计参数。
当然是在|不表示条件概率的情况下。
这两种表示法是源于两种学派的不同理解:
频率派认为参数为固定的值,是指真实世界中,参数值就是某个定值。
贝叶斯派认为参数是随机变量,是指取这个值是有一定概率的。当然,无论是;还是|,他们都是表示条件概率的意思,只不过这两个学派理解不一样而已。
notation的问题解决了之后就是log的问题了,为什么需要log化,讲道理,是不需要的。但是求log有这么几个好处:
1.计算简单,累乘是很难计算的,log之后可以变换成累加。
2.概率累乘是会出现数字非常小的情况,log之后就可以避免这种情况。
3.log之后函数的梯度方向是没有变化的,对于函数优化的方向影响很小。
似然函数的执行步骤:
1.得到似然函数
2.取对数整理
3.求导数,另导数为零
4.解方程得到解
②Jensen不等式
首先引出凸函数的概念那么就是凸函数,所以它的图像就是一个勾形的,看起来是一个凹函数,实际上是凸函数。
凸函数的性质很显而易见了
其实很明显的,看图就知道了,E(x)其实就是a到b的平均值,上面的结论很容易证实。那么如果想要取到等号,需要改变上面?取等号的意思就是相切,相切的意思就是a = b,既然a = b了,那么x自然就是常数了,所以当且仅当
③EM算法的推导
正常来看先是要引入一个最大似然函数:但这样其实是和难求的,P(x|θ)完全混在了一起,根本求不出来,所以我们要引入一个辅助变量z。
隐变量Z
隐变量是观测不到的,比如做一个抽样,从3个袋子里面抽取小球。而抽取这些小球的过程是不可见的,抽取的过程其实就是隐变量,而这些隐变量,也就是过程可以告诉我们这个x是从哪个袋子来的,由此来区分。这个隐变量和HMM里面的隐含序列不是一个东西,隐含序列是当前x的状态,而不是抽取x的过程。所以在这里,通俗点讲,这个z就是用来找到x的组类的,也就是说z来告诉这个x你是属于哪一组的。
另外需要注意的是,隐变量是不可以随便添加的,添加隐变量之后不能影响边缘概率。也就是说,原来是P(x),添加之后就是P(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同时也会对应