之前整理过两篇关于主题模型的博客《文本建模之Unigram Model,PLSA与LDA》和《再看LDA主题模型》,主要是整理了主题模型的由来和推导过程,关于模型参数怎么计算没有过多涉及,因此接下来将分两篇博客,分别整理PLSA模型和EM算法求解,LDA模型和Gibbs Sample求解。
PLSA
首先回顾下PLSA,作为生成模型,其在文本生成过程中,引入主题的概念,即先从K个主题中选定一个主题,然后在该主题下生成对应的单词。这里,我们将文档di下每个主题zk的生成概率表示为p(zk∣di),每个主题zk下单词(这里的单词是只词汇表V所对应的每个不同单词)wj的生成概率表示为p(wj∣zk)。因此文档di中单词wj的生成概率可以表示为
p(di,wj)=p(di)p(wj∣di)
根据概率论公式:边缘分布等于联合分布的和有:
p(di,wj)=p(di)k=1∑Kp(wj,zk∣di)=p(di)k=1∑Kp(wj∣zk)p(zk∣di)
单词之间相互独立,因此文档di中所有单词的生成概率为
p(di,w)=j=1∏Np(di,wj)n(di,wj)
其中,w是一个N维向量(n(di,w1),n(di,w2),⋯,n(di,wN)),每个分量是单词wj在文档di中的出现次数,N是词汇表V的大小。
文档之间同样相互独立,因此语料的生成概率为
p(D)=i=1∏Mp(di,w)=i=1∏Mj=1∏Np(di,wj)n(di,wj)
采用最大似然估计,最大化logp(D),对应的p(zk∣di)和p(wj∣zk)就是我们要找的最优参数。
L=logp(D)=logi=1∏Mj=1∏Np(di,wj)n(di,wj)=i=1∑Mj=1∑Nn(di,wj)logp(di,wj)=i=1∑Mj=1∑Nn(di,wj)log[p(di)k=1∑Kp(wj∣zk)p(zk∣di)]=i=1∑Mj=1∑Nn(di,wj)[logp(di)+logk=1∑Kp(wj∣zk)p(zk∣di)]=i=1∑M(j=1∑Nn(di,wj)logp(di)+j=1∑Nn(di,wj)logk=1∑Kp(wj∣zk)p(zk∣di))=i=1∑M(n(di)logp(di)+j=1∑Nn(di,wj)logk=1∑Kp(wj∣zk)p(zk∣di))=i=1∑Mn(di)[logp(di)+j=1∑Nn(di)n(di,wj)logk=1∑Kp(wj∣zk)p(zk∣di)]
因为文档长度n(di)和文档概率p(d_i)可以单独计算,将其去掉不会影响似然函数的最优化。所以在后面部分,我们统一将L写成如下形式
L=i=1∑Mj=1∑Nn(di,wj)logk=1∑Kp(wj∣zk)p(zk∣di)
可以看到上式对数函数中包含参数的和,进行求导时将非常的复杂,即直接找到对数似然函数为零的最大值将不那么容易。庆幸的是,EM(Expectation-Maximization,简称EM)算法能够帮助我们解决这个问题。
EM算法
EM算法是一种启发式迭代算法,每次迭代分为两步:E步,求期望(expectation);M步,极大化对数似然(maximization),这也是算法名称的由来。回到我们的问题,我们将对数函数包含参数和的情况进行一般化,首先目标函数可以写成下式:
θ=argθmaxi=1∑mlogp(x(i);θ)
p(x(i);θ)是在给定参数θ下第i个样本的产生概率,有些情况下这个概率值受到一些隐含因素的影响,如主题模型中文档生成过程中的主题,将其用z(i)表示,此时p(x(i);θ)需要累加所有的p(x(i),z(i);θ),而优化目标也变成:
θ=argθmaxi=1∑mlogp(x(i);θ)=argθmaxi=1∑mlogz(i)∑p(x(i),z(i);θ)
上式的难办之处就在于对数函数中出现了和的形式,那有没有一个办法将求和符号提到log外面吗?答案是有的。
Jensen不等式
设f是定义在实数域上的函数,如果对于任意的实数x,都有
f′′≥0
那么f是凸函数,此时对于随机变量x,有
E[f(x)]≥f(E(x))
等号成立的条件是随机变量x是常量。Jensen不等式用语言描述或许方便记忆:对于凸函数,函数的期望大于等于期望的函数。 证明如下:

如上图所示,对于(x,f(x)),(y,f(y))线段内的任意一点,其横纵坐标可以分别表示为tx+(1−t)y,tf(x)+(1−t)f(y),而函数f(x)在tx+(1−t)y对应的纵坐标为f(tf(x)+(1−t)f(y)),因为函数f(x)是凸函数,有
tf(x)+(1−t)f(y)≥f(tx+(1−t)y)
因为t+(1−t)=1,所以我们可以将t和1−t看作随机变量x,y对应的概率,即上式表达的是
E[f(x)]≥f(E(x))
若函数f是凹函数,上述不等式符号相反。
EM算法推导
有了Jensen不等式,我们可以对上面的对数似然函数进行缩放如下:
i=1∑mlogz(i)∑p(x(i),z(i);θ)=i=1∑mlogz(i)∑Q(z(i))Q(z(i))p(x(i),z(i);θ)(1)≥i=1∑mz(i)∑Q(z(i))logQ(z(i))p(x(i),z(i);θ)(2)
其中∑z(i)Q(z(i))=1,即隐变量z(i)的概率分布。在上式中,将Q(z(i))看作随机变量Q(z(i))p(x(i),z(i);θ)的概率,函数f对应log函数,根据Jensen不等式就能得到上面不等式。
OK,到这里我们就成功的将求和符号提到了对数函数外面,因而式(2)将容易求导。但是式(2)和式(1)是不等号关系,式(2)的最大值不一定是式(1)的最大值,那怎么才能得到式(1)的最大值呢?我们知道,当给定参数θ时,对数似然函数L的值就确定了,也就是式(2)的上界就确定了,同时p(x(i),z(i))的值就确定了,这时我们修改Q(z(i))的值,使下界等于上界。
如果要满足Jensen不等式的等号,需要:
Q(z(i))p(x(i),z(i);θ)=c,c为常量⇒p(x(i),z(i);θ)=cQ(z(i))⇒z(i)∑p(x(i),z(i);θ)=cz(i)∑Q(z(i))⇒z(i)∑p(x(i),z(i);θ)=c
所以,我们可以得到,等号成立需要满足的条件是
Q(z(i))=∑z(i)p(x(i),z(i);θ)p(x(i),z(i);θ)=p(z(i)∣x(i);θ)
即隐变量的后验概率。知道了Q(z(i)),将其带入式(2),然后找出使其最大的θ,这时我们就确定了在该θ值处的一个下界,同样我们调整Q(z(i))使这个下界最大化,同时也在尝试提升我们的对数似然函数,即我们需要最大化下式:
argθmaxi=1∑mz(i)∑Q(z(i))logQ(z(i))p(x(i),z(i);θ)⇒argθmaxi=1∑mz(i)∑Q(z(i))logp(x(i),z(i);θ)=argθmaxi=1∑mz(i)∑p(z(i)∣x(i);θ)logp(x(i),z(i);θ)
上式可以理解为对数似然函数logp(x(i),z(i);θ)基于条件概率p(z(i)∣x(i);θ)的期望,正好对应EM算法的E步,而最大化过程,正好对应M步。重复上述过程,直到收敛到对数似然函数L的最大处θ∗,至于为什么会收敛?证明可以参考李航《统计学习方法》等。注意,与所有迭代算法一样,EM算法不能保证得到全局最优解。
EM算法的形象过程如下图:

总结EM算法的流程如下:
输入:观测数据x=(x(1),x(2),⋯,x(m)),联合分布p(x(i),z(i);θ),条件概率p(z(i)∣x(i);θ),最大迭代次数J。
- 随机初始化模型参数θ0;
- E步:计算联合分布的条件概率期望:
Qj(z(i))=p(z(i)∣x(i);θj)E=i=1∑mz(i)∑Q(z(i))logp(x(i),z(i);θ)
- M步:最大化期望,得到θj+1
θj+1=argθmaxi=1∑mz(i)∑Qj(z(i))logp(x(i),z(i);θ)
- 重复第(2)步和第(3)步,直至收敛或达到最大迭代次数J。
PLSA模型的EM算法步骤
L=logp(D)=i=1∑Mj=1∑Nn(di,wj)logk=1∑Kp(wj∣zk)p(zk∣di)≥i=1∑Mj=1∑Nn(di,wj)k=1∑KQ(zk)logQ(zk)p(wj∣zk)p(zk∣di)
根据上面的推导得
Q(zk)=p(zk∣di,wj)
然后开始EM算法迭代过程。
E步:计算联合分布的条件概率期望
(1)计算隐变量的后验概率
p(zk∣di,wj)=∑k=1Kp(zk,di,wj)p(zk,di,wj)=∑k=1Kp(wj∣zk)p(zk∣di)p(wj∣zk)p(zk∣di)
(2)将隐变量的后验概率带入,得到期望函数
Lc=i=1∑Mj=1∑Nn(di,wj)k=1∑Kp(zk∣di,wj)logp(zk,di,wj)=i=1∑Mj=1∑Nn(di,wj)k=1∑Kp(zk∣di,wj)logp(wj∣zk)p(zk∣di)
M步:最大化期望函数,这是一个带约束的最优化问题:
j=1∑Np(wj∣zk)=1k=1∑Kp(zk∣di)=1
可以采用拉格朗日乘子法求解,拉格朗日函数如下:
H=Lc+k=1∑Kτk(1−j=1∑Np(wj∣zk))+i=1∑Mρ(1−k=1∑Kp(zk∣di))
分别求偏导,令其结果等于0,最终可以估计出参数p(wj∣zk)和p(zk∣di)
p(wj∣zk)=∑j=1N∑i=1Mn(di,wj)p(zk∣di,wj)∑i=1Mn(di,wj)p(zk∣di,wj)p(zk∣di)=n(di)∑j=1Nn(di,wj)p(zk∣di,wj)
参考文献
EM算法原理总结
从最大似然到EM算法浅解