上一节主题模型(一)LSA(LSI)提到了LSA得到的结果很难解释,并不是一个概率模型,因此并不是一个真正意义上的主题模型,但是其基本思想为主题模型奠定了基础。Hofman在LSI的基础上提出了概率潜在语义索引(probability Latent Semantic Indexing),这个模型才是人们看成是真正意义上的主题模型。
在第一节主题模型简介(topic model)中我们提到,主题模型其实就是在学习两个分布,第一个是doc-topic分布,第二个是topic-word分布。既然是分布就要满足两个条件,第一是非负性,第二是积分或者求和为1。也就是doc-topic矩阵或topic-word矩阵中,任意一行元素均为非负数且元素和为1。LSI通过SVD分解得到的两个矩阵显然不满足这两个条件。
1. PLSA
主题模型是一种无监督学习方法,当谈到主题模型的时候,通常包含5项内容:
- 主题模型的输入
- 主题模型的基本假设
- 主题模型的表示
- 概率图模型
- 生成过程
- 参数估计
- 新样本的推断
一般的,主题模型的输入和基本假设这两个方面对于大多数主题模型都是相同的。下面分布从5个方面介绍PLSA。
1.1 主题模型的输入
这一部分与LSI的输入相同,都是文档-词矩阵,矩阵元素是词在文档中的词频或者TF-IDF值。
1.2 主题模型的基本假设
这一部分也与LSI的相同,就是词袋假设,没有考虑词序,交换词序不会影响最终结果。
文档1:“我喜欢小明,但是小明不喜欢我。”
文档2:“小明喜欢我,但是我不喜欢小明。”
词典:{“我”:0,“喜欢”:1,“但是”:2,“小明”:3,“不喜欢”:4}
将文档1和文档2分别表示成bag of words向量
文档1:[2,1,1,2,1]
文档2:[2,1,1,2,1]
虽然文档1和文档2表示不同的意思,但是用bag of words模型表示出来结果是一样的。
1.3 主题模型的表示
前面两小节是大部分主题模型相同的内容,从这一节开始,不同的主题模型有着不同内容。主题模型内容的表示主要有两种形式,一种是概率图模型,一种是用文字表达的生成过程。
1.3.1 概率图模型
上面就是PLSA的概率图模型,这种图也叫条框图。下面解释一下这个图。
- 方框表示集合,右下角的字母表示集合的元素数目。 M M M表示文档数, N N N表示单词数。
- 灰色的圆圈表示可观测变量,白色的圆圈表示隐变量,比如对于一篇文档 d d d来说,文档本身和其单词 w w w都是可以观测到的。我们要做的就是根据观测的 d 和 w d和w d和w去推理出隐变量 z z z的概率分布。 z z z表示主题。
- p ( d i ) p(d_i) p(di)表示生成文本 d i d_i di的概率,在给定文档集合的时候, p ( d i ) p(d_i) p(di)是已知的。
- p ( z k ∣ d i ) p(z_{k}|d_{i}) p(zk∣di)表示文档 d i d_i di中主题 z k z_k zk出现的概率, p ( w j ∣ z k ) p(w_j|z_k) p(wj∣zk)表示单词 w j w_j wj在主题 z k z_k zk中出现的概率。
- p ( z k ∣ d i ) p(z_k|d_i) p(zk∣di)常称作文档在主题上的分布,服从多项式分布。 p ( w j ∣ z k ) p(w_j|z_k) p(wj∣zk)常称作主题在单词上的分布,也服从多项式分布。
这里稍微解释一下为什么要服从多项式分布,想一下多项式分布的表达式:
P
(
X
1
=
r
1
,
X
2
=
r
2
,
,
,
X
k
=
r
k
)
=
n
!
r
1
!
r
2
!
.
.
.
r
k
!
p
1
r
1
p
2
r
2
.
.
.
p
k
r
k
P(X_1 = r_1, X_2 = r_2,,, X_k = r_k ) = {n! \over r_1!r_2!...r_k!}p_1^{r_1}p_2^{r_2}...p_k^{r_k}
P(X1=r1,X2=r2,,,Xk=rk)=r1!r2!...rk!n!p1r1p2r2...pkrk
上式表示一次实验有
k
k
k种结果,重复进行
n
n
n次实验,第
X
i
X_i
Xi种实验结果,发生
r
i
r_i
ri次的概率。
只进行一次实验的叫做category distribution(类别分布)。
P
(
X
i
=
1
)
=
p
i
P(X_i=1) = p_i
P(Xi=1)=pi
前面讲到PLSA的输入是文档的词袋,具有无序性,所以plsa生成的文档也是无序的,只要生成那些词就够了,所以可以将类别分布的k次实验结果看做是字典中的词,一篇文档有
N
N
N词,那么重复进行
N
N
N次实验,得到了一个无序的文档词袋。这就是PLSA生成的文档。
下面解释一下生成过程。
- 为整个文档集制定主题-词分布 p ( w ∣ z ) p(w|z) p(w∣z)
- 依概率分布 p ( d ) p(d) p(d),随机选择一个文档 d i ∽ p ( d ) d_{i} \backsim p(d) di∽p(d),其单词数是 n d i n_{d_i} ndi
- 为文档 d i d_i di制定一个文档-主题分布 p ( z ∣ d i ) p(z|d_i) p(z∣di),
- 对文档
d
i
d_i
di中每个单词的位置重复以下过程
- 选择一个主题 z k ∽ p ( z ∣ d i ) z_k \backsim p(z|d_i) zk∽p(z∣di)
- 从主题 z k z_k zk中选择一个单词 w j ∽ p ( w ∣ z k ) w_j \backsim p(w|z_k) wj∽p(w∣zk)
很多人其实看到上面的生成过程还是很懵逼的,什么鬼,一篇文档就这样生成了?生成的这一堆东西是有语义的文档吗?有这些想法说明读者忘记了主题模型的基本假设,就是1.2节讲的词袋假设。主题模型的生成过程也是没有考虑词序的,所以生成的文档可能是不通顺的。
从概率图模型可以知道,可观测变量是
d
i
和
w
j
d_i和w_j
di和wj,隐变量是
z
k
z_k
zk,我们可以写出三者的联合概率分布。
p
(
d
i
,
z
k
,
w
j
)
=
p
(
d
i
)
p
(
z
k
∣
d
i
)
p
(
w
j
∣
z
k
)
(1)
\tag{1}p(d_i, z_k, w_j) = p(d_i)p(z_k|d_i)p(w_j|z_k)
p(di,zk,wj)=p(di)p(zk∣di)p(wj∣zk)(1)
我们对(1)式边缘化得到可观测数据
(
d
i
,
w
j
)
(d_i, w_j)
(di,wj)的联合概率分布:
p
(
d
i
,
w
j
)
=
p
(
d
i
)
∑
k
p
(
z
k
∣
d
i
)
p
(
w
j
∣
z
k
)
(2)
\tag{2}p(d_i, w_j) = p(d_i)\sum_{k}p(z_k|d_i)p(w_j|z_k)
p(di,wj)=p(di)k∑p(zk∣di)p(wj∣zk)(2)
我们要学习的就是
p
(
z
k
∣
d
i
)
和
p
(
w
j
∣
z
k
)
这
两
组
参
数
p(z_k|d_i)和p(w_j|z_k)这两组参数
p(zk∣di)和p(wj∣zk)这两组参数
1.4. 参数估计
前面我们分析知道了
p
(
z
k
∣
d
i
)
和
p
(
w
j
∣
z
k
)
这
两
组
参
数
p(z_k|d_i)和p(w_j|z_k)这两组参数
p(zk∣di)和p(wj∣zk)这两组参数是我们要估计的参数,而对于参数估计很自然的想法就是极大似然估计。对于一个
M
M
M篇文档的集合来说,我们观察到的数据就是
(
d
i
,
w
j
)
(d_i,w_j)
(di,wj)这样共现的pair对,其似然函数就是:
L
=
∏
i
=
1
M
∏
j
=
1
N
p
(
d
i
,
w
j
)
n
(
d
i
,
w
j
)
(3)
\begin{aligned} \tag{3}L = & \prod_{i=1}^{M}\prod_{j=1}^{N}p(d_i, w_j)^{n(d_i, w_j)} \\ \end{aligned}
L=i=1∏Mj=1∏Np(di,wj)n(di,wj)(3)
其中,
n
(
d
i
,
w
j
)
n(d_i, w_j)
n(di,wj)表示文档
d
i
d_i
di中
w
j
w_j
wj出现的次数。
将(3)式取对数并展开:
l
o
g
L
=
∑
i
=
1
M
∑
j
=
1
N
n
(
d
i
,
w
j
)
l
o
g
p
(
d
i
,
w
j
)
=
∑
i
=
1
M
∑
j
=
1
N
n
(
d
i
,
w
j
)
l
o
g
[
p
(
d
i
)
∑
k
=
1
K
p
(
z
k
∣
d
i
)
p
(
w
j
∣
z
k
)
]
=
∑
i
=
1
M
∑
j
=
1
N
n
(
d
i
,
w
j
)
[
l
o
g
p
(
d
i
)
+
l
o
g
∑
k
=
1
K
p
(
z
k
∣
d
i
)
p
(
w
j
∣
z
k
)
]
=
∑
i
=
1
M
∑
j
=
1
N
n
(
d
i
,
w
j
)
l
o
g
p
(
d
i
)
+
∑
i
=
1
M
∑
j
=
1
N
n
(
d
i
,
w
j
)
l
o
g
∑
k
=
1
K
p
(
z
k
∣
d
i
)
p
(
w
j
∣
z
k
)
⇒
∑
i
=
1
M
∑
j
=
1
N
n
(
d
i
,
w
j
)
l
o
g
∑
k
=
1
K
p
(
z
k
∣
d
i
)
p
(
w
j
∣
z
k
)
(4)
\begin{aligned} \tag{4} logL = & \sum_{i=1}^{M}\sum_{j=1}^{N}n(d_i, w_j)logp(d_i, w_j) \\ = & \sum_{i=1}^{M}\sum_{j=1}^{N}n(d_i, w_j)log [p(d_i)\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k)] \\ = & \sum_{i=1}^{M}\sum_{j=1}^{N}n(d_i, w_j) [logp(d_i)+log\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k)] \\ = & \sum_{i=1}^{M}\sum_{j=1}^{N}n(d_i, w_j) logp(d_i)+ \sum_{i=1}^{M}\sum_{j=1}^{N}n(d_i, w_j) log\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k) \\ \rArr & \sum_{i=1}^{M}\sum_{j=1}^{N}n(d_i, w_j) log\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k) \end{aligned}
logL====⇒i=1∑Mj=1∑Nn(di,wj)logp(di,wj)i=1∑Mj=1∑Nn(di,wj)log[p(di)k=1∑Kp(zk∣di)p(wj∣zk)]i=1∑Mj=1∑Nn(di,wj)[logp(di)+logk=1∑Kp(zk∣di)p(wj∣zk)]i=1∑Mj=1∑Nn(di,wj)logp(di)+i=1∑Mj=1∑Nn(di,wj)logk=1∑Kp(zk∣di)p(wj∣zk)i=1∑Mj=1∑Nn(di,wj)logk=1∑Kp(zk∣di)p(wj∣zk)(4)
(4)式就是最终的似然函数,注意,最后不是等号,可以这样写是因为第一项是一个常数,极大似然法只需要极大化第二项就可以。这时我们发现,对于(4)式很难求导,因为
l
o
g
log
log中含有加法。
所以这时应该使用EM算法来求解。假设 X X X是观测数据, Z Z Z是隐变量,在EM算法中,观测数据是不完全数据,包含隐变量的数据是完全数据,也就是 ( X , Z ) (X,Z) (X,Z)是完全数据,而 X X X是不完全数据。
EM算法的讲解这里不会叙述太多,只大致说一下EM算法的流程:
- E-step:
- 求隐变量的后验: Q ( z ) = p ( z ∣ x ; θ o l d ) = p ( x , z ; θ o l d ) p ( x ; θ o l d ) Q(z)=p(z|x;\theta^{old}) = {p(x,z; \theta^{old}) \over p(x;\theta^{old})} Q(z)=p(z∣x;θold)=p(x;θold)p(x,z;θold)
- 求期望表达式: L = ∫ z p ( z ∣ x ; θ o l d ) l o g p ( x , z ∣ θ ) d z = E p ( z ∣ x ; θ o l d ) [ l o g p ( x , z ∣ θ ) ] L = \int_z p(z|x;\theta^{old})logp(x,z|\theta)dz=E_{p(z|x;\theta^{old})}[logp(x,z|\theta)] L=∫zp(z∣x;θold)logp(x,z∣θ)dz=Ep(z∣x;θold)[logp(x,z∣θ)]
- M-step:
- 最大化 L L L: θ = a r g m a x θ ∫ z p ( z ∣ x ; θ o l d ) l o g p ( x , z ∣ θ ) d z \theta = argmax_{\theta} \int_z p(z|x;\theta^{old})logp(x,z|\theta)dz θ=argmaxθ∫zp(z∣x;θold)logp(x,z∣θ)dz
不断迭代上述两步,直到收敛。注意,这里的
θ
\theta
θ表示所有的需要求解的未知参数,并不是某一个具体的参数。比如在高斯混合算法中
θ
\theta
θ可以表示
π
k
,
μ
k
,
Σ
k
\pi_k, \mu_k, \Sigma_k
πk,μk,Σk,在这里表示
p
(
z
k
∣
d
i
)
和
p
(
w
j
∣
z
k
)
p(z_k|d_i)和p(w_j|z_k)
p(zk∣di)和p(wj∣zk)
可以看到,E步求的期望是完全数据
(
X
,
Z
)
(X,Z)
(X,Z)的对数似然函数关于隐变量
z
z
z的后验分布的期望。
在PLSA中,隐变量是主题 z z z,观测数据是 ( d i , w j ) (d_i, w_j) (di,wj),完全数据是 ( d i , z k , w j ) (d_i, z_k, w_j) (di,zk,wj)。而我们要求解的参数是 p ( z k ∣ d i ) 和 p ( w j ∣ z k ) p(z_k|d_i)和p(w_j|z_k) p(zk∣di)和p(wj∣zk)。
E-step
- 求主题的的后验概率分布:
p ( z k ∣ d i , w j ) = p ( z k , d i , w j ) p ( d i , w j ) = p ( z k , d i , w j ) ∑ l p ( z l , d i , w j ) = p ( z k ∣ d i ) p ( w j ∣ z k ) ∑ l p ( z l ∣ d i ) p ( w j ∣ z l ) \begin{aligned} p(z_k|d_i,w_j)= &{p(z_k, d_i, w_j) \over p(d_i, w_j)} \\ = & {p(z_k, d_i, w_j) \over \sum_l p(z_l, d_i, w_j)} \\ = & {p(z_k|d_i)p(w_j|z_k) \over \sum_lp(z_l|d_i)p(w_j|z_l)} \end{aligned} p(zk∣di,wj)===p(di,wj)p(zk,di,wj)∑lp(zl,di,wj)p(zk,di,wj)∑lp(zl∣di)p(wj∣zl)p(zk∣di)p(wj∣zk)
上面的公式可由贝叶斯定理得到。 - 求完全数据的对数似然函数的期望:
考虑完全数据 y i = ( d i , w 1 i , w 2 i , , , , w n d i i , z 1 i , z 2 i , , , z n d i i ) y_i = (d_i, w_1^i, w_2^i, ,,,w_{n_{d_i}}^i, z_1^i, z_2^i,,,z_{n_{d_i}}^i) yi=(di,w1i,w2i,,,,wndii,z1i,z2i,,,zndii)。其中 z 1 i , z 2 i , , , z n d i i z_1^i, z_2^i,,,z_{n_{d_i}}^i z1i,z2i,,,zndii表示文档 d i d_i di中对应位置的单词的主题。- 由于采用词袋假设,所以生成的单词是相互独立的。因此有:
p ( y i ) = p ( d i ) p ( w 1 i , w 2 i , , , , w n d i i , z 1 i , z 2 i , , , z n d i i ∣ d i ) = p ( d i ) ∏ j = 1 n d i p ( w j i , z j i ∣ d i ) \begin{aligned} p(y_i) = & p(d_i)p( w_1^i, w_2^i, ,,,w_{n_{d_i}}^i, z_1^i, z_2^i,,,z_{n_{d_i}}^i|d_i) \\ = &p(d_i)\prod_{j=1}^{n_{d_i}}p(w_j^{i}, z_{j}^{i}|d_i) \end{aligned} p(yi)==p(di)p(w1i,w2i,,,,wndii,z1i,z2i,,,zndii∣di)p(di)j=1∏ndip(wji,zji∣di) - 根据
p
(
d
i
,
w
j
,
z
k
)
=
p
(
d
i
)
p
(
z
k
∣
d
i
)
p
(
w
j
∣
z
k
)
p(d_i, w_j, z_k) = p(d_i)p(z_k|d_i)p(w_j|z_k)
p(di,wj,zk)=p(di)p(zk∣di)p(wj∣zk)可以得到,
p
(
w
j
i
,
z
j
i
∣
d
i
)
=
p
(
z
j
i
∣
d
i
)
p
(
w
j
i
∣
z
j
i
)
p(w_j^{i}, z_{j}^{i}|d_i)=p(z_j^i|d_i)p(w_j^i|z_j^i)
p(wji,zji∣di)=p(zji∣di)p(wji∣zji),所以
p ( y i ) = p ( d i ) ∏ j = 1 n d i p ( z j i ∣ d i ) p ( w j i ∣ z j i ) p(y_i)= p(d_i)\prod_{j=1}^{n_{d_i}}p( z_{j}^{i}|d_i)p(w_j^i|z_j^i) p(yi)=p(di)j=1∏ndip(zji∣di)p(wji∣zji) - 由于文档之间也是相互独立的,所以有:
p ( y 1 , y 2 , , , p y N ) = ∏ i = 1 M p ( y i ) = ∏ i = 1 M p ( d i ) ∏ j = 1 n d i p ( z j i ∣ d i ) p ( w j i ∣ z j i ) = ∏ i = 1 M p ( d i ) ∏ j = 1 N [ p ( z j i ∣ d i ) p ( w j ∣ z j i ) ] n ( d i , w j ) \begin{aligned} p(y_1,y_2, ,,py_N) = & \prod_{i=1}^{M}p(y_i) \\ = & \prod_{i=1}^{M}p(d_i)\prod_{j=1}^{n_{d_i}}p( z_{j}^{i}|d_i)p(w_j^i|z_j^i) \\ = & \prod_{i=1}^{M}p(d_i)\prod_{j=1}^{N}[p( z_{j}^i|d_i)p(w_j|z_j^{i})]^{n(d_i, w_j)} \end{aligned} p(y1,y2,,,pyN)===i=1∏Mp(yi)i=1∏Mp(di)j=1∏ndip(zji∣di)p(wji∣zji)i=1∏Mp(di)j=1∏N[p(zji∣di)p(wj∣zji)]n(di,wj)
- 由于采用词袋假设,所以生成的单词是相互独立的。因此有:
完全数据的对数似然函数就是:
L
=
∑
i
=
1
M
l
o
g
p
(
d
i
)
+
∑
i
=
1
M
∑
j
=
1
N
n
(
d
i
,
w
j
)
l
o
g
[
p
(
z
j
i
∣
d
i
)
p
(
w
j
∣
z
j
i
)
]
L = \sum_{i=1}^{M}logp(d_i)+\sum_{i=1}^{M}\sum_{j=1}^N n(d_i, w_j)log[p(z_j^i|d_i)p(w_j|z_j^i)]
L=i=1∑Mlogp(di)+i=1∑Mj=1∑Nn(di,wj)log[p(zji∣di)p(wj∣zji)]
完全数据的对数似然函数的期望,也就是Q函数就是:
Q
=
E
p
(
z
k
∣
d
i
,
w
j
)
[
L
]
=
∑
i
=
1
M
l
o
g
p
(
d
i
)
+
∑
i
=
1
M
∑
j
=
1
N
n
(
d
i
,
w
j
)
∑
k
=
1
K
p
(
z
k
∣
d
i
,
w
j
)
l
o
g
[
p
(
z
k
∣
d
i
)
p
(
w
j
∣
z
k
)
]
\begin{aligned} Q= & E_{p(z_k|d_i, w_j)}[L] \\ = & \sum_{i=1}^{M}logp(d_i) +\sum_{i=1}^{M}\sum_{j=1}^N n(d_i, w_j) \sum_{k=1}^K p(z_k|d_i, w_j)log[p(z_k|d_i)p(w_j|z_k)] \\ \end{aligned}
Q==Ep(zk∣di,wj)[L]i=1∑Mlogp(di)+i=1∑Mj=1∑Nn(di,wj)k=1∑Kp(zk∣di,wj)log[p(zk∣di)p(wj∣zk)]
其中第一项可以由文档集统计得到,是一个常数,所以只需优化第二项即可。
令
Q
′
=
∑
i
=
1
M
∑
j
=
1
N
n
(
d
i
,
w
j
)
∑
k
=
1
K
p
(
z
k
∣
d
i
,
w
j
)
l
o
g
[
p
(
z
k
∣
d
i
)
p
(
w
j
∣
z
k
)
]
\begin{aligned} Q'= \sum_{i=1}^{M}\sum_{j=1}^N n(d_i, w_j) \sum_{k=1}^K p(z_k|d_i, w_j)log[p(z_k|d_i)p(w_j|z_k)] \end{aligned}
Q′=i=1∑Mj=1∑Nn(di,wj)k=1∑Kp(zk∣di,wj)log[p(zk∣di)p(wj∣zk)]
M-step:
- 最大化
Q
′
Q'
Q′函数,同时考虑如下限制条件:
∑ j = 1 N p ( w j ∣ z k ) = 1 , k = 1 , 2 , 3 , , , K ∑ k = 1 K p ( z k ∣ d i ) = 1 , i = 1 , 2 , 3 , , , N p ( w j ∣ z k ) > = 0 , p ( z k ∣ d i ) > = 0 \sum_{j=1}^{N}p(w_j|z_k) = 1, k=1,2,3,,,K \\ \sum_{k=1}^{K}p(z_k|d_i) = 1, i=1,2,3,,,N \\ p(w_j|z_k) >=0,p(z_k|d_i)>=0 j=1∑Np(wj∣zk)=1,k=1,2,3,,,Kk=1∑Kp(zk∣di)=1,i=1,2,3,,,Np(wj∣zk)>=0,p(zk∣di)>=0
该问题是带约束的等式求极值问题,使用拉格朗日乘数法求解,得到:
L a g = ∑ i = 1 M ∑ j = 1 N n ( d i , w j ) ∑ k = 1 K p ( z k ∣ d i , w j ) l o g [ p ( z k ∣ d i ) p ( w j ∣ z k ) ] + ∑ k = 1 K τ k ( 1 − ∑ j = 1 N p ( w j ∣ z k ) ) + ∑ i = 1 M ρ i ( 1 − ∑ k = 1 K p ( z k ∣ d i ) ) Lag = \sum_{i=1}^{M}\sum_{j=1}^N n(d_i, w_j) \sum_{k=1}^K p(z_k|d_i, w_j)log[p(z_k|d_i)p(w_j|z_k)] + \sum_{k=1}^K\tau_{k}(1-\sum_{j=1}^Np(w_j|z_k)) + \sum_{i=1}^M\rho_i(1-\sum_{k=1}^{K}p(z_k|d_i)) Lag=i=1∑Mj=1∑Nn(di,wj)k=1∑Kp(zk∣di,wj)log[p(zk∣di)p(wj∣zk)]+k=1∑Kτk(1−j=1∑Np(wj∣zk))+i=1∑Mρi(1−k=1∑Kp(zk∣di))
上式分别对 p ( w j ∣ z k ) p(w_j|z_k) p(wj∣zk)和 p ( z k ∣ d i ) p(z_k|d_i) p(zk∣di)求导,得到:
∂ L a g ∂ p ( w j ∣ z k ) = ∑ i = 1 M n ( d i , w j ) p ( z k ∣ d i , w j ) p ( w j ∣ z k ) − τ k ∂ L a g ∂ p ( z k ∣ d i ) = ∑ i = 1 M n ( d i , w j ) p ( z k ∣ d i , w j ) p ( z k ∣ d i ) − ρ i {\partial Lag \over \partial p(w_j|z_k)} = {\sum_{i=1}^{M}n(d_i, w_j)p(z_k|d_i,w_j) \over p(w_j|z_k)} -\tau_k \\ {\partial Lag \over \partial p(z_k|d_i)} = {\sum_{i=1}^{M}n(d_i, w_j)p(z_k|d_i,w_j) \over p(z_k|d_i)} -\rho_i ∂p(wj∣zk)∂Lag=p(wj∣zk)∑i=1Mn(di,wj)p(zk∣di,wj)−τk∂p(zk∣di)∂Lag=p(zk∣di)∑i=1Mn(di,wj)p(zk∣di,wj)−ρi
分别令导数为0求解即可,下面以第一个等式为例求解。
令
∂ L a g ∂ p ( w j ∣ z k ) = 0 ⇒ ∑ i = 1 M n ( d i , w j ) p ( z k ∣ d i , w j ) = τ k p ( w j ∣ z k ) ⇒ ∑ j = 1 N ∑ i = 1 M n ( d i , w j ) p ( z k ∣ d i , w j ) = τ k ∑ j = 1 N p ( w j ∣ z k ) ⇒ ∑ j = 1 N ∑ i = 1 M n ( d i , w j ) p ( z k ∣ d i , w j ) = τ k {\partial Lag \over \partial p(w_j|z_k)} =0 \\ \rArr \sum_{i=1}^{M}n(d_i, w_j)p(z_k|d_i,w_j) = \tau_kp(w_j|z_k) \\ \rArr \sum_{j=1}^{N}\sum_{i=1}^Mn(d_i, w_j)p(z_k|d_i, w_j) = \tau_k \sum_{j=1}^Np(w_j|z_k) \\ \rArr \sum_{j=1}^{N}\sum_{i=1}^Mn(d_i, w_j)p(z_k|d_i, w_j) = \tau_k ∂p(wj∣zk)∂Lag=0⇒i=1∑Mn(di,wj)p(zk∣di,wj)=τkp(wj∣zk)⇒j=1∑Ni=1∑Mn(di,wj)p(zk∣di,wj)=τkj=1∑Np(wj∣zk)⇒j=1∑Ni=1∑Mn(di,wj)p(zk∣di,wj)=τk
将 τ k \tau_k τk带入第一个等式,求得:
p ( w j ∣ z k ) = ∑ i = 1 M n ( d i , w j ) p ( z k ∣ d i , w j ) ∑ j = 1 N ∑ i = 1 M n ( d i , w j ) p ( z k ∣ d i , w j ) p(w_j|z_k) = {\sum_{i=1}^{M}n(d_i, w_j)p(z_k|d_i,w_j) \over \sum_{j=1}^{N}\sum_{i=1}^Mn(d_i, w_j)p(z_k|d_i, w_j) } p(wj∣zk)=∑j=1N∑i=1Mn(di,wj)p(zk∣di,wj)∑i=1Mn(di,wj)p(zk∣di,wj)
同理可得:
p ( z k ∣ d i ) = ∑ i = 1 M n ( d i , w j ) p ( z k ∣ d i , w j ) n d i p(z_k|d_i) = {\sum_{i=1}^{M}n(d_i, w_j)p(z_k|d_i,w_j)\over n_{d_i}} p(zk∣di)=ndi∑i=1Mn(di,wj)p(zk∣di,wj)
最后重复E步和M步直到收敛。
1.5推断
在pLSA中,对于新样本的推断仍然采用EM算法完成。不过由于我们只需要得到新样本 d n e w d^{new} dnew文档在主题空间的表达 p ( z ∣ d n e w ) p(z|d^{new}) p(z∣dnew),而不需要修改 p ( w ∣ z ) p(w|z) p(w∣z),因此只在EM算法中的M步骤更新 p ( z ∣ d ) p(z|d) p(z∣d)而保持p(w|z)不变。
参考:
https://zhuanlan.zhihu.com/p/40877820
https://www.bookstack.cn/read/huaxiaozhuan-ai/spilt.2.2f542993b194a7f4.md