主题模型LSA/LSI、PLSA和LDA

目录

LSA/LSI

PLSA

潜在狄利克雷分配(latent Dirichlet allocation,LDA)

伯努利分布(Bernoulli Distribution)

二项分布(Binomial Distribution)

多项分布(Multinomial Distribution)

贝塔分布(beta distribution)

狄利克雷分布(Dirichlet distribution)

共轭先验(conjugate prior)

LDA文本生成


LSA/LSI

 

PLSA

 

潜在狄利克雷分配(latent Dirichlet allocation,LDA)

伯努利分布(Bernoulli Distribution)

        举个例子,在一次“抛硬币”的试验中,出现正面朝上的的概率为p,反面朝上的概率为1-p,则在一次试验中出现正面朝上的次数服从伯努利分布。出现正面朝上的次数k有两个值:0和1,0次正面朝上的概率为P(0)=1-p,1次正面朝上的概率为P(1)=p,概率分布如下:

k01
P(k)1-pp

P(k)=p^k(1-p)^{1-k}

 

二项分布(Binomial Distribution)

        在伯努利试验中,我们只做了一次试验,那么如果重复独立n次伯努利试验,则正面朝上的次数k服从二项分布,正面朝上的次数为k的概率如下:

P(k)=C_n^kp^k(1-p)^{n-k}

其中

C_n^k=\frac{n!}{(n-k)!k!}

,k的取值可能是0,1,...,n。概率分布如下:

k01...n
P(k)(1-p)^{n}np(1-p)^{n-1}...p^n

在二项分布中,如果n=1,就是伯努利分布,所以伯努利分布可以看成二项分布的特例。

 

多项分布(Multinomial Distribution)

        在二项分布中,每次抛硬币可能出现的结果只有两个:正面朝上和反面朝上,那假设现在一个事件可能出现的结果不再是2个,而是k个。第i个结果出现的概率为p_i,则

\sum_{i=1}^kp_i=1

,在n次试验中,第i个结果出现的次数为n_i,则

\sum_{i=1}^kn_i=n

,在上述假设下,n次试验中,第i个结果出现次数为n_i服从多项分布

P=\frac{n!}{n_1!n_2!...n_k!}p_1^{n_1}p_2^{n_2}...p_k^{n_k}

其中系数

\frac{n!}{n_1!n_2!...n_k!}

由排列组合得到,即先在n次试验中选取n_1个结果为1的试验,可能的选取方式有C_n^{n_1}个,接着从剩下的n-n_1次试验中再选择n_2次试验,可能的选取方式有C_{n-n_1}^{n_2},依次选择下去……,总共可能的方式就是这个系数。实际上,多项分布式二项分布的推广,比如在多项分布中假设k=2,则概率变为:

P=\frac{n!}{n_1!n_2!}p_1^{n_1}p_2^{n_2}=\frac{n!}{n_1!n-n_1!}p_1^{n_1}p_2^{n-n_1}

n_1=k(因为在二项分布中,使用k表示的次数,多项分布中使用的k表示结果的个数,注意区别),就可以得到二项分布。

 

贝塔分布(beta distribution)

        设连续随机变量X的取值范围为[0,1],它的概率密度函数如下:

p(x)=\left\{\begin{matrix} \frac{1}{B(s,t)}x^{s-1}(1-x)^{t-1}, &x\in[0,1] \\ 0,&otherwise \end{matrix}\right.

其中s>0,t>0是参数,B(s,t)是beta函数,定义如下:

B(s,t)=\int_{0}^{1}x^{s-1}(1-x)^{t-1}dx

beta函数也可以由伽马函数得到,伽马函数定义如下:

beta函数和伽马函数之间的关系如下:

B(s,t)=\frac{\Gamma(s)\Gamma (t)}{\Gamma (s+t)}

可以如下证明这个关系:

\Gamma(s)\Gamma(t)=\int_{0}^{+\infty }x^{s-1}e^{-x}dx\int_{0}^{+\infty }y^{t-1}e^{-y}dy

x=r^2cos\theta,y=r^2sin\theta(r\geq 0,\theta\in[0,\pi]),利用重积分性质既能得到\Gamma(s)\Gamma(t)=B(s,t)\Gamma (s+t)

 

狄利克雷分布(Dirichlet distribution)

        狄利克雷分布是一种多元连续随机变量的分布,是贝塔分布(beta distribution)的推广。我们将beta分布的单个随机变量X推广到由k个随机变量构成的随机向量\mathbf{X}=(X_1,X_2,...,X_K),每个随机变量X_i的取值范围为[0,1],不过他们之间和为1,即

\sum_{i=1}^kx_i=1

x_i表示第i个随机变量X_i的取值。 概率密度函数如下定义:

p(x_i|\alpha_i)=\frac{\Gamma (\sum_{i=1}^k\alpha _i)}{\prod_{i=1}^{k}\Gamma (\alpha _i)}\prod_{i=1}^kx_i^{\alpha_i-1}

\alpha_i>0是参数。

在狄利克雷分布中,取k=2,\alpha_1=s,\alpha_2=t,则就变成了Beta分布。

为了可以和Beta分布有相同的形式,令

B(\alpha )=\frac{\prod_{i=1}^{k}\Gamma (\alpha _i)}{\Gamma (\sum_{i=1}^k\alpha _i)}\alpha=(\alpha_1,\alpha_2,...,\alpha_k)x=(x_1,x_2,...,x_k)

p(x|\alpha)=\frac{1}{B(\alpha )}\prod_{i=1}^kx_i^{\alpha_i-1}

因为\int_x p(x|\alpha)=1,所以实际上B(\alpha )可以看成一个归一化因子。

下面以k=3来直观认识下狄利克雷分布,此时x_1+x_2+x_3=1,x_1\geq 0,x_2\geq 0,x_3\geq 0,如果看成是在三维空间中,如图:

图中正三角形ABC区域表示x_1,x_2,x_3的各种可能的取值,也就是说x_1,x_2,x_3的取值会落在三角形ABC上或者内部。现在我们取不同的\alpha=(\alpha_1,\alpha_2,\alpha_3)

(1)\alpha_1=\alpha_2=\alpha_3的情况,

\alpha=(3,3,3),\alpha=(7,7,7),\alpha=(20,20,20),分别对应如下图:

也就是说当各个分量相等时,x_1,x_2,x_3的分布是对称的,随着分量的增大,分布更集中。

(2)当\alpha=(\alpha_1,\alpha_2,\alpha_3)的各个分量不全部相等时

比如

分别对应如下图:

\alpha_i越小越向x_i靠近。

以上介绍的各种分布,整理如下:

伯努利分布P(k)=p^k(1-p)^{1-k}
二项分布P(k)=C_n^kp^k(1-p)^{n-k}
多项分布

P=\frac{n!}{n_1!n_2!...n_k!}p_1^{n_1}p_2^{n_2}...p_k^{n_k}

(p_i>0,\sum_{i=1}^kp_i=1,\sum_{i=1}^kn_i=n)

贝塔分布

p(x)=\frac{1}{B(s,t)}x^{s-1}(1-x)^{t-1}

(x\in[0,1],s>0,s>0)

狄利克雷分布p(x|\alpha)=\frac{1}{B(\alpha )}\prod_{i=1}^kx_i^{\alpha_i-1}(x_i\in[0,1],\sum_{i=1}^kx_i=1,\alpha _i>0,\alpha=(\alpha_1,...,\alpha_k))

 

共轭先验(conjugate prior)

        这里有几个分布需要搞清楚,分别是先验分布,后验分布和似然函数。我们以抛硬币为例,假设正面朝上的概率为\theta,但是在未抛硬币之前我们是不知道\theta的具体值,根据当前已有的经验,我们通常会假设\theta服从[均为分布,当然也可以假设服从其他分布,也就是说正面朝上的概率\theta取[0,1]之间任意值是等可能的,假设均匀分布的密度函数是

p(\theta)=1,\theta\in[0,1]

这个均匀分布称为\theta的先验分布。假设现在抛了5次,得到如下一组数据X

正面,正面,反面,反面,正面

在参数\theta下,产生“如此数据“的条件概率P(X|\theta)称之为似然函数,如下:

P(X|\theta)=\theta^3(1-\theta)^2

这里说个题外话,很多时候,我们会碰到最大似然估计,指的是什么样的概率\theta,最有可能产生“如此数据”,即求似然函数的最大值对应的\theta值,可以通过似然函数两边取对数解出\theta=\frac{3}{5}。下面我们还说后验分布,根据贝叶斯公式:

P(\theta|X)=\frac{P(X|\theta)P(\theta)}{P(X)}=\frac{P(X|\theta)P(\theta)}{\sum_{\theta}P(X|\theta)P(\theta)}

如果是连续的,就是

P(\theta|X)=\frac{P(X|\theta)P(\theta)}{\int_{\theta}P(X|\theta)P(\theta)} 

P(\theta|X)表示在得到数据X之后\theta的概率,服从的分布称为\theta的后验分布。先验分布和后验分布的区别就是后验分布比先验分布多了数据这样的“证据”。在本例中\theta的先验分布是均为分布,但是在拿到数据后,从数据来看,正面朝上的可能性更大,所以后验分布并不是均匀分布,事实上可以根据贝叶斯公式准确计算出来,如下:

P(\theta|X)=\frac{P(X|\theta)P(\theta)}{\int_{\theta}P(X|\theta)P(\theta)}==\frac{\theta^3(1-\theta)^2}{\int_{0}^{1}\theta^3(1-\theta)^2}=60\theta^3(1-\theta)^2

从结果的密度函数来看确实不是均匀分布。上面表明如果二项分布的先验分布是均匀分布,它的后验分布并不是均匀分布。

        如果\theta的先验分布和后验分布具有相同的分布类型,比如都是高斯分布,则称先验分布和后验分布为共轭分布。先验分布称为共轭先验。下面这个结论在LDA模型中比较重要

如果多项分布的先验分布是狄利克雷分布,则其后验分布也是狄利克雷分布。

下面我们给出证明:

假设随机变量X服从多项分布,可能的k个结果为{1,2,...,k},概率如下:

P=\frac{n!}{n_1!n_2!...n_k!}\theta_1^{n_1}\theta_2^{n_2}...\theta_k^{n_k}

假设现在得到n个数据的样本D,则似然函数为

p(D|\theta)=\theta_1^{n_1}\theta_2^{n_2}...\theta_k^{n_k}

其中\theta=(\theta_1,\theta_2,...,\theta_k)。假设\theta的先验分布是狄利克雷分布,即

p(\theta)=B(\alpha )\prod_{i=1}^k\theta_i^{\alpha_i-1}

根据贝叶斯公式,\theta的后验分布为

P(\theta|D)=\frac{P(D|\theta)P(\theta)}{\int_{\theta}P(D|\theta)P(\theta)}

=\frac{\theta_1^{n_1}\theta_2^{n_2}...\theta_k^{n_k}\frac{1}{B(\alpha )}\prod_{i=1}^k\theta_i^{\alpha_i-1}}{\int_{\theta}\theta_1^{n_1}\theta_2^{n_2}...\theta_k^{n_k}\frac{1}{B(\alpha )}\prod_{i=1}^k\theta_i^{\alpha_i-1}}

=\frac{\prod_{i=1}^k\theta_i^{\alpha_i+n_i-1}}{\int_{\theta}\prod_{i=1}^k\theta_i^{\alpha_i+n_i-1}}

=\frac{\frac{1}{B(\gamma )}\prod_{i=1}^k\theta_i^{\gamma_i-1}}{\frac{1}{B(\gamma)}\int_{\theta}\prod_{i=1}^k\theta_i^{\gamma_i-1}}            (其中\gamma =(\gamma_1,\gamma_2,...,\gamma_k),r_i=\alpha_i+n_i

=\frac{1}{B(\gamma )}\prod_{i=1}^k\theta_i^{\gamma_i-1}                 (由\int_{\theta}\frac{1}{B(\alpha )}\prod_{i=1}^k\theta_i^{\alpha_i-1}=1得到)

从最后结果来看,P(\theta|D)任然是一个狄利克雷分布,只不过参数由\alpha变为\gamma

 

LDA文本生成

        LDA模型是一个文本生成概率模型。假设文本集合D=(d_1,d_2,...,d_M),含有M个文档,d_i=(w_{i1},w_{i2},...,w_{iN_i})表示文档d_iN_i个词构成,V=\{v_1,v_2,...,v_L\}是一个词典,含有L个词。文本集合D与K个主题相关,主题集合Z=\{z_1,z_2,...,z_K\}。下面看如何生成文本d_i=(w_{i1},w_{i2},...,w_{iN_i}),事实上,生成一个文本只要生成构成文本的每个词就可以了。但我们并不是直接生成词,而是通过中间隐含变量——主题来间接生成,首先生成文档的主题序列,然后由主题序列生成词序列,从而生成文档。生成过程如下:

(1)生成主题序列

对于文档d_i,在给定参数\alpha_i=(\alpha_{i1},\alpha_{i2},...,\alpha_{iK})的情况下,按照狄利克雷分布

p(\theta_i)=\frac{1}{B(\alpha_i)}\prod_{j=1}^K\theta_{ij}^{\alpha_{ij}-1}

随机生成一组概率\theta_i=(\theta_{i1},\theta_{i2},...,\theta_{iK}),概率\theta_{ij}表示的是文档生成主题z_{j}的概率。因为有M个文档,生成一个M\times K阶矩阵:

\theta=\begin{bmatrix} \theta_{11}&\theta_{12} &... &\theta_{1K} \\\theta_{21} &\theta_{22} &... &\theta_{2K} \\ \vdots&\vdots &\ddots & \vdots\\ \theta_{M1}& \theta_{M2} &... &\theta_{MK} \end{bmatrix}

得到文档d_i主题分布

p(z_j|d_i)=\frac{N_i!}{n_{i1}!n_{i2}!...n_{iK}!}\theta_{i1}^{n_1}\theta_{i2}^{n_2}...\theta_{iK}^{n_K}   (\sum_{j=1}^Kn_{ij}=N_i

构成一个M\times K矩阵:

D2Z=\begin{bmatrix} p(z_1|d_1)&p(z_2|d_1) &... &p(z_K|d_1) \\ p(z_1|d_2)&p(z_2|d_2) &... &p(z_K|d_2) \\\vdots &\vdots &\ddots &\vdots \\ p(z_1|d_M) &p(v_2|d_M)&... &p(z_K|d_M) \end{bmatrix}

根据这个密度函数就可以生成文档d_i=(w_1,w_2,...,w_{N_i})对应的主题序列了(实际不关心顺序),如下:

Z_{seq}=(z_{i1},z_{i2},...,z_{iN_i})z_{ij}\in Z

        注意到主题序列Z_{seq}=(z_{i1},z_{i2},...,z_{iN_i})中总共有N_i个分量,这些主题分量可能会有重复,但是总共只有K个主题,所以我们只需要关注这K个主题即可,对于任意主题z_i,可以如下生成词v_j

(2)生成词序列

对于主题z_i,在给定参数\beta_i=(\beta_{i1},\beta_{i2},...,\beta_{iL})的情况下,按照狄利克雷分布

p(\eta_i)=\frac{1}{B(\beta_{i} )}\prod_{j=1}^L\eta_{ij}^{\beta_{ij}-1}

随机产生一组概率\eta_i=(\eta_{i1},\eta_{i2},...,\eta_{iL}),概率\eta_{ij}表示的是主题z_i生成词v_j的概率。因为有K个主题,总共生成K组,构成如下K\times L阶矩阵:

\eta =\begin{bmatrix} \eta_{11} &\eta_{12} &... &\eta_{1L} \\ \eta_{21}&\eta_{22} &... &\eta_{2L} \\\vdots &\vdots &\ddots &\vdots \\ \eta_{K1} &\eta_{K2}&... &\eta_{KL} \end{bmatrix}

得到主题z_i生成词的分布

p(v_j|z_i)=\frac{N_i!}{m_1!m_2!...m_L!}\eta _{i1}^{m_1}\eta _{i2}^{m_2}...\eta _{iL}^{m_L}    (\sum_{i=1}^Lm_i=N_i

正好构成一个K\times L阶矩阵

Z2V=\begin{bmatrix} p(v_1|z_1)&p(v_2|z_1) &... &p(v_L|z_1) \\ p(v_1|z_2)&p(v_2|z_2) &... &p(v_L|z_2) \\\vdots &\vdots &\ddots &\vdots \\ p(v_1|z_K) &p(v_2|z_K)&... &p(v_L|z_K) \end{bmatrix}

根据该密度函数和主题序列Z_{seq}=(z_{i1},z_{i2},...,z_{iN_i}),就可以生成如下词序列了

W_{seq}=(w_{i1},w_{i2},...,w_{iN_i})

也就是文档d_i=(w_{i1},w_{i2},...,w_{iN_i})

上面的整个生成过程,可以使用如下概率图表示:

方框右下角符号表示方框中相同图形的数量。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ErbaoLiu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值