概率潜在语义分析(Probalilistic Latent Semantic Analysis)

(注:博主只是笔记的搬运工。以下内容大多来自我们老师——西安交通大学刘佳鹏老师,有时再加一点点博主自己的思考)

1 简介

概率潜在语义分析(probabilistic latent semantic analysis,PLSA),是一种利用概率生成模型对文本集合进行话题分析的无监督学习方法。

包含以下特点:

  • 用隐变量表示话题
  • 整个模型表示文本生成话题,话题生成单词,从而得到单词-文本共现数据的过程
  • 每个文本由一个话题分布决定,每个话题由一个单词分布决定。

概率潜在语义分析最初用于文本数据挖掘,后来扩展到其他领域。

2 生成模型

2.1模型要点:

  1. 每个文本d生成话题z的概率P(z|d),这意味着一个文本的内容由其相关话题决定
  2. 每个话题z生成单词w的概率P(w|z),这意味着一个话题的内容由其相关单词决定

2.2生成模型步骤:

生成模型通过以下步骤生成文本-单词共现数据:

(1)依据概率分布P(d),从文本(指标)集合中随机选取一个文本d,共生成N个文本;

(2)在文本d给定的条件下,依据条件概率分布P(z|d),从话题集合随机选取一个话题z,共生成L个话题

(3)在话题z给定条件下,依据条件概率分布P(w|z),从单词集合中随机选取一个单词w

2.3模型说明:

  • 生成模型中,单词变量w与文本变量d是观测变量,话题变量z是隐变量
  • 模型生成的是单词-话题-文本三元组(w,z,d)的集合,但观测到的是单词-文本二元组(w,d)的集合
  • 观测数据表示为单词-文本矩阵T的形式,矩阵T的行表示单词,列表示文本,元素表示单词-文本对(w,d)出现次数。

生成模型关系可见下图:

生成模型属于概率有向图模型,可以用有向图表示。

实心圆表示观测变量,空心圆表示隐变量,箭头表示概率依存关系,方框表示多次重复,方框内数字表示重复次数。文本变量d是一个观测变量,话题变量z是一个隐变量,单词变量w是一个观测变量。

从数据的生成过程可以推出,文本-单词共现数据T的生成概率为所有单词-文本对(w,d)的生成概率的乘积,

P(T)=\prod_{(w,d)}P(w,d)^{n(w,d)}

这里n(w,d)表示(w,d)的出现次数,单词-文本对出现的总次数是N*L

2.4模型参数推导:

模型通过引入隐变量,实现了降维:由M*N个参数→N*K+M*K个参数。

使用极大似然估计法对模型参数进行估计,已知d,w是可观测的,即P(w,d)可知。下面,通过4个阶段介绍具体计算方式:

准备工作:

对每个单词-文本对(w,d)的生成概率由以下公式决定:

\begin{aligned} P(w,d)&=P(d)P(w|d)\\&=P(d)\sum_{z}P(w,z|d)\\&=P(d)\sum _{z}P(w|z,d)P(z|d)\\&=P(d)\sum_{z}P(w|z)P(z|d) \end{aligned}

其中第三行到第四行等号是由于条件独立性假设,当z给定时,单词w与文本d条件独立,即

P(w,z|d)=P(z|d)P(w|z)

1.建立对数似然函数

得到每个单词-文本对的概率公式后,接下来写出所有单词-文本对(w,d)的生成概率的似然函数:(M,N,K分别表示单词数,文本数,话题数)

L=\prod_{i=1}^{M}\prod_{j=1}^{N}P(w_i,d_j)^{n(w_i,d_j)}

那么其对数似然函数为:

\begin{aligned} LL&=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\log P(w_i,d_j)\\ &=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\log [P(d_j)\sum_{k=1}^KP(w_i,z_i|d_j)]\\ &=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\log P(d_j)+\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\log \sum_{k=1}^KP(w_i,z_i|d_j)\\ \end{aligned}

第二行为将①式代入得到。

2.对P(d_j)进行计算

F=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\log P(d_j),参数P(d_j)中,j=1,2...,N,且有约束\sum_{j=1}^{N}P(d_j)=1

考虑到约束,利用拉格朗日乘子法将F写为其拉格朗日函数:

F'=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\log P(d_j)+\lambda(1-\sum_{j=1}^NP(d_j))

F'关于P(d_j)求导置0,得到P(d_j)取值

\frac{\partial F'}{\partial P(d_j)}=\sum_{i=1}^{M}n(w_i,d_j)/P(d_j)-\lambda=0\\ P(d_j)=\frac{1}{\lambda}\sum_{i=1}^{M}n(w_i,d_j)\\ \sum_{j=1}^{N}P(d_j)=\frac{1}{\lambda}\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\Rightarrow \lambda=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\\ P(d_j)=\frac{\sum_{i=1}^{M}n(w_i,d_j)}{\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)}=\frac{n(d_j)}{\sum_{i=1}^{N}n(d_i)}

注意:第一行中j为固定值,为关于某一具体P(d_j)求导(相当于令N个这样的式子等于0),因此求导结果中不出现\sum_{j=1}^{N};

表示P(d_j)的式中,分子代表的是文本j中所有单词的个数,分母代表所有文本中所有单词个数。

通过以上计算过程,得到P(d_j)表示方法。然而在现实应用中,计算P(d_j)意义往往并不大,P(w|z)P(z|d),才是我们所更为关心的。

3.对\sum_{k=1}^{K}P(w_i,z_i|d_j)进行迭代计算

主要利用了EM算法,对参数更新进行求解:

首先将使用到的参数列举如下:

(1)P(w_i|z_k),i=1,2,...,M,k=1,2,...,K

(2)P(z_k|d_j),k=1,2,...,K,j=1,2,...,N

约束条件为:

(1)\sum_{i=1}^{M}P(w_i|z_k)=1,k=1,2,...,K

(2)\sum_{k=1}^{K}P(z_k|d_j)=1,j=1,2,...,N

 下面开始使用EM算法:

E步:计算Q函数(利用Jensen不等式,具体可参照EM算法)

Q函数为完全数据的对数似然函数对不完全数据的条件分布的期望,针对概率潜在语义分析的生成模型,Q函数是:

\begin{aligned} Q&=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\sum_{k=1}^{K}P(z_k|w_i,d_j)\log P(w_i,z_k|d_j)\\ &=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\sum_{k=1}^{K}P(z_k|w_i,d_j)[\log P(w_i|z_k)+\log P(z_k|d_j)] \end{aligned}

其中,

P(z_k|w_i,d_j)=\frac{P(z_k|d_j)P(w_i|z_k,d_j)}{P(w_i,d_j)}=\frac{P(z_k|d_j)P(w_i|z_k)}{\sum_{l=1}^{K}P(z_l|d_j)P(w_i|z_l)}

(推导时可以先将d_j当做已知,利用贝叶斯推导后再将其加入式子中;分母是P(w_i|d_j)的展开,用l是为了避免造成与分子上k混淆)

对于k=1,2,...,K;i=1,2,...,M;j=1,2,...N分别计算,相当于一共计算K*M*N个P(z_k|w_i,d_j)

M步:极大化Q函数

通过约束最优化求解Q函数极大值,这时P(w_i|z_k)P(z_k|d_j)是变量。考虑②和③约束,定义拉格朗日函数\Lambda

\begin{aligned} \Lambda &=Q+\sum_{k=1}^{K}\tau_k(1-\sum_{i=1}^{M}P(w_i|z_k))+\sum_{j=1}^{N}\rho_j(1-\sum_{k=1}^{K}P(z_k|d_j)) \\ &=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)\sum_{k=1}^{K}{P(z_k|w_i,d_j)[\log P(w_i,z_k)+\log P(z_k|d_j)]}+\sum_{k=1}^{K}\tau_k(1-\sum_{i=1}^{M}P(w_i|z_k))+\sum_{j=1}^{N}\rho_j(1-\sum_{k=1}^{K}P(z_k|d_j)) \end{aligned}

其中,P(z_k|w_i,d_j)是E步中已计算出的

为求极值,分别对变量P(w_i|z_k)P(z_k|d_j)求导

(1)\LambdaP(w_i|z_k)求导:

\begin{aligned} \frac{\partial \Lambda }{\partial P(w_i|z_k)}&=\sum_{j=1}^{N}n(w_i,d_j)\frac{P(z_k|w_i,d_j)}{P(w_i,z_k)}-\tau_k=0\\ &\Rightarrow P(w_i,z_k)=\frac{\sum_{j=1}^{N}n(w_i,d_j)P(z_k|w_i,d_j)}{\tau_k} \\ &\Rightarrow \frac{1}{\tau_k}\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)P(z_k|w_i,d_j)=1\\&\Rightarrow \tau_k=\sum_{i=1}^{M}\sum_{j=1}^{N}n(w_i,d_j)P(z_k|w_i,d_j) \\&\Rightarrow P(w_i,z_k)=\frac{\sum_{j=1}^{N}n(w_i,d_j)P(z_k|w_i,d_j)}{\sum_{m=1}^{M}\sum_{j=1}^{N}n(w_m,d_j)P(z_k|w_m,d_j)} \end{aligned}

其中,第2到3行推导通过代入\sum_{i=1}^{M}P(w_i|z_k)=1得到。第3到4行推导是将最后一行分母中求和变为m=1是为了避免与分子上的i混淆。

对于所有i=1,2,...M;k=1,2,...K重复上述步骤,计算M*K个P(w_i,z_k)

(2)\LambdaP(z_k|d_j)求导

推导方式同理,

\begin{aligned} \frac{\partial \Lambda }{\partial P(z_i|d_j)}&=\sum_{i=1}^{M}n(w_i,d_j)\frac{P(z_k|w_i,d_j)}{P(z_k|d_j)}-\rho_j=0\\ &\Rightarrow P(z_k,d_j)=\frac{\sum_{j=1}^{M}n(w_i,d_j)P(z_k|w_i,d_j)}{\rho_j} \\ &\Rightarrow \frac{1}{\rho_j}\sum_{k=1}^{K}\sum_{i=1}^{M}n(w_i,d_j)P(z_k|w_i,d_j)=\frac{1}{\rho_j}\sum_{i=1}^{M}n(w_i,d_j)\sum_{k=1}^{K}P(z_k|w_i,d_j) \\&\Rightarrow \rho_j=n(d_j)\\ &\Rightarrow P(z_k,d_j)=\frac{1}{n(d_j)}\sum_{i=1}^{M}n(w_i,d_j)P(z_k|w_i,d_j) \end{aligned}

第三行使用了加法交换律和结合律

对于所有k=1,2,...K;j=1,2,...N重复上述步骤,计算K*N个P(z_k|d_j)

使用EM算法进行迭代,即可计算出最终参数

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hardworking mole

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值