20201008 -
提示:本篇文章并没有详细的说明EM算法数学推导,虽然前面通过GMM的例子能够明白大致的思想,但是在底层数学推导部分没有非常完整说明(后续有时间可能会继续添加),如果想知道数学原理的读者,就不要浪费时间再看这篇文章了,可以参考CS229的一个笔记;如果是想得到一个大致的了解,看完GMM的推导就可以了。
在学习HMM的训练算法中,其使用了EM算法,而不理解EM算法的话,实际上连很多参数都不明白,就更不用提理解了,因此必须首先学习一下EM算法。我最初学习机器学习的时候,当时很多算法都是理解了,然后能够用python的库使用了,没有具体深入,能明白大概是什么意思,这也是大多数实战书上的流程。这次就趁这个这个机会,把这部分内容来学习一下。
在学习EM算法的过程中,实际上我参考了非常多的资料,因为书上的讲解例子都是从数学的角度出发,都太过抽象,所以本次学习过程中,都是参考了一些国外的博客上的文章。
但是即使是这样,很多文章虽然表面上看起来是一样的,但是从推导上,很多地方都不一样。这也造成了,看了很多文章,反而更糊涂的结果。本篇文章讲从表层来入手,从最开始的一些内容,然后再到实际的数学公式来介绍。
(本人非数学的专业,本文仅记录自己在参考各个文章时候的思考。)
EM算法的流程非常像k均值算法,都是先初步随机设置一个值,然后循环进行更新,EM算法只有两个步骤,分别是E和M过程,但实际上底层涉及的东西很多。
本小节的内容主要参考自文章[1]。
假设统计了一个学校的男女身高,男女的不同分布,通过随机采样两种性别的N个人,然后得到了相应的统计值,那么只需要进行估计相应的参数即可,这部分就是统计学中一些参数估计的方法。在采集的过程中,需要身高的数值,同时还需要性别。从一维数轴上来看,就是不同颜色(不同性别)的点,假设他们都符合高斯分布,然后对分布的参数进行估计。
假设我们并不知道男女的性别,仅仅只有身高的信息。那么应该如何进行估计,如何进行分析,知道两个分布参数,同时估计某个人是什么性别呢?在学习统计学的时候,一般进行参数估计都是针对单个高斯变量,通过最大似然估计就能完成。这里,性别分布也不知道,高斯分布的参数也不知道。这本质上就是一个GMM(高斯混合模型)的问题。
把问题简化一下,假设我们知道某些信息,我们该怎么解决这个参数估计或者概率分布的问题。 1)假设知道男女的标签,那么只需要通过最大似然估计的方式,即可。 μ ^ M L E = 1 N ∑ i N x i = x ˉ θ ^ M L E = 1 N ∑ i N ( x i − x ^ ) 2 \hat{\mu}_{MLE}=\frac{1}{N}\sum_{i}^{N}x_i=\bar{x}\\ \hat{\theta}_{MLE}=\sqrt{\frac{1}{N}\sum_i^N(x_i-\hat{x})^2} μ^MLE=N1i∑Nxi=xˉθ^MLE=N1i∑N(xi−x^)2 2)假设知道了分布的参数,想求解每个观察值是属于什么类别,只需要给每个观察值赋予一个混合的概率值(表示其属于某个概率分布的情况),然后同时求解最大似然方程即可。 P ( x i = m a l e ) = α 1 N ( x i ∣ μ 1 , Σ 1 ) Z P ( x i = f e m a l e ) = α 2 N ( x i ∣ μ 2 , Σ 2 ) Z Z = ∑ j = 1 2 α j N ( x i ∣ μ j , Σ j ) P(x_i=male)=\frac{\alpha_1\mathcal N(x_i|\mu_1,\Sigma_1)}{Z} \\ \quad\\ P(x_i=female)=\frac{\alpha_2\mathcal N(x_i|\mu_2,\Sigma_2)}{Z}\\ \quad\\ Z=\sum_{j=1}^2{\alpha_j \mathcal N(x_i|\mu_j,\Sigma_j)} \\ P(xi=male)=Zα1N(xi∣μ1,Σ1)P(xi=female)=Zα2N(xi∣μ2,Σ2)Z=j=1∑2αjN(xi∣μj,Σj) (上述公式摘抄自文章[2],后续会对其进行具体分析) 从上述的内容中可以看出,假设我们知道一部分信息,我们可以推导出另外一部分信息。这就是他们很多在介绍EM算法的时候,提到的鸡和蛋的问题。在无监督学习中,通过GMM进行聚类的时候,并不知道这些信息。理解EM算法最直观的例子就是GMM的训练过程了。 问题就是,我们仅仅知道测量值的时候,我们如何进行GMM的参数估计还有相应的标签赋值呢?
既然没有办法直接的进行解决,同样是分为两个步骤,在初始化过程中,将一些参数随机,例如直接给出正态分布的参数,或者给出每个观察值的标签。下面假设我们给出了每个观察值的标签。 1)通过观察值的标签,我们可以直接对这个参数分布进行估计,然后得到了相应的概率分布 2)前一步中得到的概率分布参数,重新对观察值进行标签赋值 3)重复以上两个步骤,直到收敛
这个步骤跟k-means算法的步骤非常像。但是实际上,虽然看起来很简单,但是需要思考的内容有很多,就比如说你怎么保证这个东西就一定收敛?或者说,这一定会成功呢?!
前面的示例中,是从一个实际的问题出发;实际上EM算法解决最大似然估计的方法是引入了一个潜在变量,通过这个潜在变量将本来不好优化的问题转化为可以优化的部分。(但是前面的例子中没有直白的说明这个潜在变量) 前面宏观的理解非常简单,与k-means非常像。很多文章在利用GMM进行介绍的时候,也非常容易明白,但是一旦涉及到具体的公式,问题就变得抽象了。
本小节将主要利用EM算法来解决GMM模型的问题,通过具体的数学公式,明白实际上操作流程。本小节的内容参考自文章[3]。 上述图片也是来自文章[3],好像是一个通过matlab的程序生成的,后续的时候可以尝试也绘制一个这种图片。文章[3]要解决的问题,就是估计GMM的参数,在估计过程中,采用软聚类的形式,也就是说,给每个点赋予一个属于某个类的概率,而不是直接属于某个类。具体问题是,存在数据集 n n n个点,其属于 R d R^d Rd空间,他们由一个GMM(Gaussian Mixture Model)模型生成,现在的任务就是估计出最可能产生这些点的GMM模型,也就是求解他们的参数。
本小节主要介绍一下后文中主要使用的参数都有哪些 1)k个成分,GMM模型中,有k个高斯分布,一般这个数值都是实现指定的。 2)每个高斯分布 j , k ∈ { 1 , 2 , . . . , k } j,k\in\{1,2,...,k\} j,k∈{1,2,...,k}有参数 μ \mu μ和 σ 2 \sigma^2 σ2去确定 P x ( x ∣ μ j , σ j 2 ) = N ( X ; μ j , σ j 2 ) = 1 ( 2 π σ j 2 ) d 2 e − ∥ x − μ j ∥ 2 2 σ j 2 P_x(x|\mu^j,\sigma^2_j)=\mathcal N(X;\mu^j,\sigma^2_j)=\frac{1}{(2\pi\sigma^2_j)^{\frac{d}{2}}}e^{\frac{-\|x-\mu^j\|^2}{2\sigma^2_j}} Px(x∣μj,σj2)=N(X;μj,σj2)=(2πσj2)2d1e2σj2−∥x−μj∥2 上面这些变量的含义,很好理解,但是这里有些不一样的是,他没有使用协方差矩阵,在有些公式里面可能是协方差矩阵,这里不影响理解。 3)每个高斯分布有一个权重,这个权重代表这个可能是这个高斯成分的概率 j ∼ M u l t i n o n i a l ( p 1 , p 2 , . . . , p K ) j\sim Multinonial(p_1,p_2,...,p_K) j∼Multinonial(p1,p2,...,pK) 4)最后是所有的要去估计的参数集合 Θ = p 1 , p 2 , . . . , p K , μ 1 , μ 2 , . . . , μ K , σ 1 1 , σ 2 2 , . . . , σ K 2 \Theta=p_1,p_2,...,p_K,\mu^1,\mu^2,...,\mu^K,\sigma^1_1,\sigma^2_2,...,\sigma^2_K Θ=p1,p2,...,pK,μ1,μ2,...,μK,σ11,σ22,...,σK2
最大似然估计是指选取能够满足所有观测值最大出现概率的参数值。 P ( X n ∣ Θ ) = ∏ i = 1 n ∑ j = 1 K p j N ( x i ; μ j , σ j 2 ) {\rm \textbf P}(X_n|\Theta)=\prod_{i=1}^n\sum_{j=1}^{K}p_j\mathcal N(x_i;\mu^j,\sigma^2_j) P(Xn∣Θ)=i=1∏nj=1∑KpjN(xi;μj,σj2) 而求解这个方程的过程会非常复杂,正如前面所说,很多内容都不知道。
首先初始化变量 Θ \Theta Θ。
当所有参数都被确定了,那么就需要求解每个数据的后验概率(每个数据点属于每个高斯分布的概率),换句话说,就是已经看到了这些点,那么每个成分的权重是多少。 P ( j ∣ i ) = P ( y = j ∣ X n ) = P ( j ) P ( X n ∣ j ) P ( X n ) = P ( j ) P ( X n ∣ j ) ∑ j = 1 K P ( j ) P ( X n ∣ j ) {\rm \textbf P}(j|i)={\rm \textbf P}(y=j|X_n)=\frac{{\rm \textbf P}(j){\rm \textbf P}(X_n|j)}{{\rm \textbf P}(X_n)}=\frac{{\rm \textbf P}(j){\rm \textbf P}(X_n|j)}{\sum_{j=1}^{K}{\rm \textbf P}(j){\rm \textbf P}(X_n|j)} P(j∣i)=P(y=j∣Xn)=P(Xn)P(j)P(Xn∣j)=∑j=1KP(j)P(Xn∣j)P(j)P(Xn∣j) 先验概率是 P ( j ) {\rm \textbf P}(j) P(j),似然值是 P ( X n ∣ j ) {\rm \textbf P}(X_n|j) P(Xn∣j)。在另一篇文章中《先验概率及后验概率等解释》记录了这些名词的解释。 这里的 P ( j ) {\rm \textbf P}(j) P(j)就是前面的每个成分的权重,从历时解释的角度来说,{\rm \textbf P}(j|i)就是要求,在看到这个样本点之后,其属于成分 j j j的概率是多少,实质上就是要确定每个样本点属于每个高斯成分的概率,正是一个打标签的过程。类别k-means方法,就是随机中心样本点之后,求每个点的标签。
前面的步骤已经得到了每个点属于每个高斯成分的后验概率,这部分将重新估计初始化的数值。首先重新估计 P ( j ) {\rm \textbf P}(j) P(j)。 P ^ ( j ) = n ^ j n = ∑ i = 1 n P ( j ∣ i ) n \hat{\rm \textbf P}(j)=\frac{\hat{n}_j}{n}=\frac{\sum_{i=1}^{n}{\rm \textbf P}(j|i)}{n} P^(j)=nn^j=n∑i=1nP(j∣i) 然后,利用最大似然来估计其他高斯分布的参数。 P ( X n ∣ Θ ) = ∏ i = 1 n ∑ j = 1 K p j N ( x i ; μ j , σ j 2 ) {\rm \textbf P}(X_n|\Theta)=\prod_{i=1}^{n}\sum_{j=1}^{K}p_j\mathcal N(x_i;\mu^j,\sigma^2_j) P(Xn∣Θ)=i=1∏nj=1∑KpjN(xi;μj,σj2) 将其改写为 l o g log log似然函数。 log ( P ( X n ∣ Θ ) ) = ℓ ( X n ; Θ ) ℓ ( X n ; Θ ) = ∑ i = 1 n l o g ∑ j = 1 K P ^ ( j ) N ( x i ; μ j , σ j 2 ) \log({\rm \textbf P}(X_n|\Theta))=\ell(X_n;\Theta) \\ \ell(X_n;\Theta)=\sum_{i=1}^{n}log\sum_{j=1}^{K}\hat{\rm \textbf P}(j)\mathcal N(x_i;\mu^j,\sigma^2_j) log(P(Xn∣Θ))=ℓ(Xn;Θ)ℓ(Xn;Θ)=i=1∑nlogj=1∑KP^(j)N(xi;μj,σj2) 其中 p j p_j pj已经被替换为前面估计出来的 P ^ ( j ) \hat{\rm \textbf P}(j) P^(j)。最后是各个参数的估计方式。 μ ^ j = 1 n ^ j ∑ i = 1 n P ( j ∣ i ) x i σ ^ j 2 = 1 n ^ j ∑ i = 1 n P ( j ∣ i ) ∥ x i − μ ^ j ∥ 2 \hat{\mu}^j=\frac{1}{\hat{n}_j}\sum^{n}_{i=1}{\rm \textbf P}(j|i)x_i \\ \hat{\sigma}_j^2=\frac{1}{\hat{n}_j}\sum_{i=1}^n{\rm \textbf P}(j|i)\|x_i-\hat{\mu}^j\|^2 μ^j=n^j1i=1∑nP(j∣i)xiσ^j2=n^j1i=1∑nP(j∣i)∥xi−μ^j∥2 (正如前面介绍参数的时候所说,这里没有利用协方差矩阵的形式,仅仅是一个例子,能够明白其推到的过程)
通过重复上述两个步骤,直到最后数值收敛即可。
本部分的内容,主要就是第一小节的公式实例推导,但前面也说过,EM算法的通过引入了一个潜在的变量来实现参数估计,这里的情况比较特殊,没有具体说明,在后面具体引入通用公式的时候再来具体说明。英语好的读者可以直接阅读文章[3]来获得最佳的体验。 利用GMM的例子来进行解释,能够知道大致的步骤,但是对于实际的问题来说,例如HMM训练算法的推导,还是不一样,因此需要一个更通用的公式来解决这个鸡和蛋的问题。
注意:如果上述内容能够明白,就已经大致知道了EM算法的思想,由于本人能力有限,下面的推导也是看了其他的一些文章,虽然能明白他要干什么,但是对数学公式不甚理解,为了不误人子弟,请读者谨慎阅读。
其实在看这部分内容的时候,耗费了很久,很多文章的角度不同,深度也不同,我也很难明白。但是我觉得,学习这个东西的目标应该循序渐进,既然以后要用到这个东西,那么可以先从怎么使用来入手。并不是说,在sklearn中直接使用了GMM这种形式(EM被隐式的调用),而是我能够把自己的问题形式化为直接使用EM的形式,这是第一个目标,而第二个目标,就是能够理解底层的数学原理。先简单说一下EM要优化的目标。
在文章[2]中,文章的前半部分也是利用GMM来进行说明,来看一看他的公式。 Θ = { α 1 , α 2 , . . , α K , μ 1 , μ 2 , . . . , μ K , Σ 1 , Σ 2 , . . . , Σ K } max Θ P ( X ∣ Θ ) = max Θ ∏ i P ( x i ∣ Θ ) = max α j , μ j Σ j ∏ i ⟮ ∑ j = 1 K α j N ( x i ∣ μ j , Σ j ) ⟯ \Theta=\{\alpha_1,\alpha_2,..,\alpha_K,\mu_1,\mu_2,...,\mu_K,\Sigma_1,\Sigma_2,...,\Sigma_K\} \\ \max_\Theta P(X|\Theta)=\max_\Theta \prod_i P(x_i|\Theta)=\max_{\alpha_j,\mu_j\Sigma_j}\prod_i\lgroup\sum_{j=1}^{K}\alpha_j\mathcal N(x_i|\mu_j,\Sigma_j)\rgroup Θ={α1,α2,..,αK,μ1,μ2,...,μK,Σ1,Σ2,...,ΣK}ΘmaxP(X∣Θ)=Θmaxi∏P(xi∣Θ)=αj,μjΣjmaxi∏⟮j=1∑KαjN(xi∣μj,Σj)⟯ 转化为 l o g log log似然函数 max Θ l o g P ( X ∣ Θ ) = max Θ l o g ( ∏ i P ( x i ∣ Θ ) ) = max Θ ∑ i l o g ( P ( x i ∣ Θ ) ) = max α i , μ j , Σ j ∑ i l o g ( ∑ j = 1 K α j N ( x i ∣ μ j , Σ j ) ) \max_\Theta logP(X|\Theta)=\max_\Theta log(\prod_i P(x_i|\Theta))=\max_\Theta \sum_i log(P(x_i|\Theta))\\=\max_{\alpha_i,\mu_j,\Sigma_j}\sum_i log(\sum_{j=1}^{K}\alpha_j \mathcal N(x_i|\mu_j,\Sigma_j)) ΘmaxlogP(X∣Θ)=Θmaxlog(i∏P(xi∣Θ))=Θmaxi∑log(P(xi∣Θ))=αi,μj,Σjmaxi∑log(j=1∑KαjN(xi∣μj,Σj)) 这个公式跟前面讲解GMM的时候的公式是一致的。虽然从前面的讲解中,我们知道了GMM的参数如何用EM算法进行估计,但是EM算法本身的描述更为形式化,或者说更通用,他可以应用于很多优化问题,本质上的想法就是要去优化一个似然函数,或者说 l o g − log- log−似然函数,如 max Θ l o g ( X ∣ Θ ) = max Θ l o g ( ∏ i P ( x i ∣ Θ ) ) = max Θ ∑ i l o g ( P ( x i ∣ Θ ) ) \max_\Theta log(X|\Theta)=\max_\Theta log(\prod_i P(x_i|\Theta))=\max_\Theta \sum_i log(P(x_i|\Theta)) Θmaxlog(X∣Θ)=Θmaxlog(i∏P(xi∣Θ))=Θmaxi∑log(P(xi∣Θ)) 那么也就是说,将问题更改为,如果这个概率的分布并不是混合高斯分布的情况下,甚至于更通用的场景下,应该怎么来解决这个优化问题。这里文章[2]介绍了一些数学基础才开始将EM算法,我这里直接就开始将EM,然后穿插着再把这些数学基础带上,这里最重要的就是这个Jensen’s inequality。
隐含变量是一个非常重要的概念,但是经过这些文中的描述之后,我有点不明白这其中的问题了。有些文章直接从隐含变量的角度来说明,其要最大似然估计的公式中就带有着隐含变量,因为求导过程复杂,所以采用了EM算法;而有些文章则是说是为了求解这个最大似然函数,然后构造了一个隐含变量,以此帮助进行优化。感觉很多内容都不统一,这也导致我看了越来越多的文章之后,越来越感觉非常疑惑。但是有些文章也指出,**EM算法最初的提出,就是为了解决含有隐含变量的最大似然函数的求解 **,这句话我感觉也挺正确的。总之,这里要说明的问题就是,因为这些概念的不明确,导致我从这些博客从这些文章中得到的思想是非常不一样的,也就导致了不能理解。看来得多看一些比较权威的文章或者是书籍才行。
通俗一点来讲,在前面的GMM中,一个指示样本 x x x属于某个类别的变量,就被称为隐含变量,用公式写出来,就是: l o g ( X ∣ θ ) = ∑ i l o g ( ∑ z i p ( x i , z i ∣ θ ) ) log(X|\theta)=\sum_i log(\sum_{z_i}p(x_i,z_i|\theta)) log(X∣θ)=i∑log(zi∑p(xi,zi∣θ)) 也就是说, 通过遍历隐含变量的空间,计算整个边缘概率,就是原始的概率结果。
首先,EM算法就是要求解出来一个下限值,然后通过迭代的方式,来持续获取到最大的下限。要使用jensen不等式的内容来辅助推导。这部分可以看文章[2]的一个动图来加深理解。 意思就是说,找到一个函数,先固定参数,然后调整函数来让他达到最大的下限;而第二步之后,固定函数,调整参数再次达到最大下限。重复这个步骤,最终得到相应的结果。
接着前面的内容继续来说,通过加入了隐含变量,或者说我本来就有隐含变量,那么似然值应该是如下过程: P ( x i ∣ θ ) = ∑ j = 1 K P ( x i ∣ t i = j , θ ) P ( t i = j ∣ θ ) = ∑ j = 1 K P ( x i , t i = j ∣ θ ) P(x_i|\theta)=\sum_{j=1}^{K}P(x_i|t_i=j,\theta)P(t_i=j|\theta)=\sum_{j=1}^{K}P(x_i,t_i=j|\theta) P(xi∣θ)=j=1∑KP(xi∣ti=j,θ)P(ti=j∣θ)=j=1∑KP(xi,ti=j∣θ) 其中, t i t_i ti是一个隐含变量,其解释了 x i x_i xi属于哪个聚类的类别。那么根据jensen不等式的内容, l o g ( ∑ j = 1 K β j ν j ) ≥ ∑ j = 1 K l o g ( β j ν j ) log(\sum_{j=1}^{K}\beta_j\nu_j)\geq\sum_{j=1}^{K}log(\beta_j\nu_j) log(j=1∑Kβjνj)≥j=1∑Klog(βjνj) 其中,各项内容分别是 β j = P ( t i = j ∣ θ ) ν j = P ( x i ∣ t i = j , θ ) \beta_j=P(t_i=j|\theta)\\ \nu_j=P(x_i|t_i=j,\theta) βj=P(ti=j∣θ)νj=P(xi∣ti=j,θ) 前面已经定义了,本来要求解得最优化目标是 max Θ l o g ( X ∣ Θ ) = max Θ l o g ( ∏ i P ( x i ∣ Θ ) ) = max Θ ∑ i l o g ( P ( x i ∣ Θ ) ) \max_\Theta log(X|\Theta)=\max_\Theta log(\prod_i P(x_i|\Theta))=\max_\Theta \sum_i log(P(x_i|\Theta)) Θmaxlog(X∣Θ)=Θmaxlog(i∏P(xi∣Θ))=Θmaxi∑log(P(xi∣Θ)) 那么讲上述内容带入进去, ∑ i l o g ( P ( x i ∣ θ ) ) = ∑ i l o g ( ∑ j = 1 K P ( x i ∣ t i = j , θ ) P ( t i = j ∣ θ ) ) ≥ ∑ i ∑ j = 1 K l o g ( β j ν j ) = ∑ i ∑ j = 1 K l o g ( P ( t i = j ∣ θ ) P ( x i ∣ t i = j , θ ) ) \sum_i log(P(x_i|\theta))=\sum_i log(\sum_{j=1}^{K}P(x_i|t_i=j,\theta)P(t_i=j|\theta))\geq\\ \sum_i\sum_{j=1}^{K}log(\beta_j\nu_j)=\sum_i\sum_{j=1}^{K}log(P(t_i=j|\theta)P(x_i|t_i=j,\theta)) i∑log(P(xi∣θ))=i∑log(j=1∑KP(xi∣ti=j,θ)P(ti=j∣θ))≥i∑j=1∑Klog(βjνj)=i∑j=1∑Klog(P(ti=j∣θ)P(xi∣ti=j,θ)) 但是公式右边是一个 θ \theta θ的函数,还要有一个分布 q q q l o g ( P ( x i ∣ θ ) ) = l o g ( ∑ j = 1 K P ( x i ∣ t i = j , θ ) P ( t i = j ∣ θ ) ) = l o g ( ∑ j = 1 K P ( x i , t i = j ∣ θ ) ) = l o g ( ∑ j = 1 K q ( t i = j ) q ( t i = j ) P ( x i , t i = j ∣ θ ) ) = l o g ( ∑ j = 1 K q ( t i = j ) P ( x i , t i = j ∣ θ q ( t i = j ) ) log(P(x_i|\theta))=log(\sum_{j=1}^{K}P(x_i|t_i=j,\theta)P(t_i=j|\theta)) \\ =log(\sum_{j=1}^{K}P(x_i,t_i=j|\theta)) \\ =log(\sum_{j=1}^{K}\frac{q(t_i=j)}{q(t_i=j)}P(x_i,t_i=j|\theta))\\ =log(\sum_{j=1}^{K}q(t_i=j)\frac{P(x_i,t_i=j|\theta}{q(t_i=j)}) log(P(xi∣θ))=log(j=1∑KP(xi∣ti=j,θ)P(ti=j∣θ))=log(j=1∑KP(xi,ti=j∣θ))=log(j=1∑Kq(ti=j)q(ti=j)P(xi,ti=j∣θ))=log(j=1∑Kq(ti=j)q(ti=j)P(xi,ti=j∣θ) 再次利用jensen不等式。 l o g ( ∑ j = 1 K q ( t i = j ) P ( x i , t i = j ∣ θ ) q ( t i = j ) ) ≥ ∑ j = 1 K l o g ( q ( t i = j ) P ( x i , t i = j ∣ θ ) q ( t i = j ) ) = L ( θ , q ) log(\sum_{j=1}^{K}q(t_i=j)\frac{P(x_i,t_i=j|\theta)}{q(t_i=j)})\geq\sum_{j=1}^{K}log(q(t_i=j)\frac{P(x_i,t_i=j|\theta)}{q(t_i=j)})=L(\theta,q) log(j=1∑Kq(ti=j)q(ti=j)P(xi,ti=j∣θ))≥j=1∑Klog(q(ti=j)q(ti=j)P(xi,ti=j∣θ))=L(θ,q) 这部分内容定义了一个下限,保证所有的值都小于等于最大似然值。 那么下面的步骤就是最大化这个下限。
q k + 1 = arg max L ( θ k , q k ) q^{k+1}=\arg\max L(\theta^k,q^k) qk+1=argmaxL(θk,qk) 固定参数 θ \theta θ,求解最大的下限值。而上述公式可以推导为 q k + 1 ( t i ) = arg max L ( θ k , q k ) = P ( t i ∣ x i , θ ) q^{k+1}(t_i)=\arg \max L(\theta^k,q^k)=P(t_i|x_i,\theta) qk+1(ti)=argmaxL(θk,qk)=P(ti∣xi,θ) 这个公式就是前面GMM时候求解的 P ( j ∣ x ) P(j|x) P(j∣x)
θ k + 1 = arg max L ( θ k , q k + 1 ) \theta^{k+1}=\arg \max L(\theta^k,q^{k+1}) θk+1=argmaxL(θk,qk+1) 固定 q q q然后最大的这个下限,这里文章[2]的公式就不对了,感觉他少推到了一些东西,最后就得到了一个期望值。
这部分还是没有从公式的角度,或者从数学的角度上弄明白,就感觉不知道他到底想说什么,也没有一个承上启下的过程。
再来记录一下: 因为直接对含有因变量的似然函数进行求解很难,所以采用一种另外的方法,也就是通过求解他的紧下界,也就是必须存在等于的情况;那么此时通过jensen不等式的内容,可以直接求解。而具体的实现步骤,就是通过固定某些参数,然后最大化另外的,持续这个步骤,直到收敛。
jensen不等式的内容: E [ f ( x ) ] ≥ f ( E X ) {\rm E}[f(x)]\geq f({\rm E}X) E[f(x)]≥f(EX) 其中 f f f是一个凸函数( f ′ ′ ( x ) ≥ 0 f^{''}(x)\geq 0 f′′(x)≥0), X X X是一个随机变量,也就是他的期望值在某些函数下,不等式成立。
我觉得,我大致上明白了具体的含义,通过参考了两个部分的内容:
EMEM详细推导同时我觉得文章[1]在后面写的挺好的,就是必须有一定的基础;同时她在最后对比了这种方式与梯度下降算法的异同,贴一个图。
同时文章The Expectation-Maximization Algorithm的解释,看起来更为形式化,可以作为参考。
[1]The EM Algorithm Explained [2]Gaussian Mixture Models and Expectation-Maximization (A full explanation) [3]Expectation-Maximization Algorithm Step-by-Step