首先从LDA(Latent Dirichlet Allocation)开始,LDA是文档聚类的生成模型,又是PGM(概率图模型)很典型的一个例子,先看看它的生成图模型(这里并不讨论LDA与PLSA优劣,或者是其他有关文档主题发现模型有关的问题,主要是以LDA为一个例子,学习变分推断这个方法)。

先理解一下这个模型的话,图中每一个圆圈指的是随机变量或者参数,涂黑的圆圈代表的是被观测到的变量,这里的\(w\)就是被观测到的词的分布,包裹着圈的方框,其实代表的是实体,其中的字母代表实体的数目,图中外面的实体就是文章的个数为\(M\),其中每个文章中单词数为\(N\)\(z\)为指示生成\(w\)的主题,\(\theta\)为生成主题\(z\)的分布。\(\alpha\)\(\beta\)都是超参。

所以生成整个文章的过程应该是,共有\(V\)个单词,\(K\)个主题。每个文章中都有隐含的分布\(\theta\)来生成主题(这里应该注意的是一篇文章可能有很多主题,每一次生成单词的时候都会选择主题),选定主题\(z\)后,通过\(z\)指定的\(\beta\)\(\beta\)应该为一个)中的一行选择单词\(w\)

形式化来表示为: 选择\(N \sim Poisson(\xi)\)
选择\(\theta \sim Dir(\alpha)\)
对于每一个单词
选择主题\(z_n \sim Multinomial(\theta)\)
由通过\(z\)\(\beta\)中选择出来的一个多项分布\(p(w_n|z_n,\beta)\)生成单词\(w_n\)

整个生成过程写出来应该是

\[p(\theta,z,w|\alpha,\beta)=p(\theta|\alpha)\prod_{n=1}^Np(z_n|\theta)p(w_n|z_n,\beta) \]

对于这个模型推断的关键在于其中对于给定参数以及观测的\(w\)的后验分布\(p(\theta,z|w,\alpha,\beta)=\frac{p(\theta,z,w|\alpha,\beta)}{p(\theta|\alpha,\beta)}\)的计算。由于有两个隐藏变量纠缠在一起,我们没法直接用像EM一样方法准确求解,这里我们就需要变分推断了。

让我们先回到之前的EM的那个式子:

\[\ln p(X)=\mathcal{L}(q)+KL(q||p)\]

其中

\[\mathcal{L}(q)=\int q(Z)\ln \frac{ p(X,Z)}{q(Z)}\mathcal{d}z\]

\[KL(q||p)=-\int q(Z)\ln \frac{p(Z|X)}{q(Z)}\mathcal{d}z\]

两个与之前的式子不太一样,一是将累加变成了积分,这只是对离散与连续变量的不同而已,另一方面是我们没有写\(\theta\),这是因为在我们要处理的模型中,不只是有隐藏变量\(z\)还有其他的随机变量\(\theta\),所以这里的\(Z\)就代表所有未知随机变量。我们之前的方法是通过用\(q(z)\)来接近\(p(Z|X)\)来极大化\(\mathcal{L}\),那时我们采用的是令\(q(z)=p(Z|X,\theta^{old})\),但是此时我们要优化的量不只是简单的隐藏变量\(z\),而是整个集合\(\{z_n\}\),其中\(\{z_n\}\)之间也有复杂的联系,所以我们没法直接优化。

为了解决由于\(\{z_n\}\)之间相互纠结而导致的难以求解的问题,我们索性将将\(q(Z)\)因子化为

\[q(Z)=\prod_{i=1}^{M}q_i(Z_i)\]

其实就是将不同\(z_i\)之间的联系割断,然后用来接近真实的\(q(Z)\),(这里要注意的是将\(Z\)分成互不重叠的集合\(\{z_i\}\),并不一定是一个个的拆分,有时候分成几个团反而更容易计算),这种假设并不是平白无故的产生的,在系统结构是well-mixed,即生成过程是完全图的情况下,根据平均场(Mean Field Method)理论,这种时候往往可以用一个单体来代替周围复杂的相互作用(这点是我自己的理解,可能并不准确,关于平均场的部分在之后应该还会有补充)。所以,对于一个\(z_i\)的状况用一个\(q_i(z_i)\)来描述也是合理的,而且之后我们会见到在LDA中,采用以\(\gamma\)为参数的对应分布来接近\(\theta\)的真实分布。

至此,我们找到了接近真实\(q(Z)\)其实就是\(p(Z|X)\)的方法,剩下的就是推出具体的式子了。这里我见到两种证明方法,一种是将\(\mathcal{L}\)看做是以\(q(Z)\)为参数的泛函,然后再利用变分法以及Euler-Lagrange方程求解其极值,其中将\(q(Z)\)置换为\(q_i(z_i)\)乘积,然后由于存在\(q_i(z_i)\)积分和为1的约束,再利用拉格朗日乘子法就可以求解(本人数学基础为渣,这部分还是看看大神的介绍,这里也只能感叹各种不同学科背后数学的紧密联系,果然数学才是这个世界的真理)。

另一种是来自《PRML》中的比较容易理解的求解方式. 先考虑极大化\(\mathcal{L}\)的过程,对于其中一个\(q_i(z_i)\),我们可以将\(\mathcal{L}\)改写为

\[\begin{split} \mathcal{L}(q)=& \int \prod_i q_i\ln p(X,Z)dZ-\int \prod_i q_i\sum_i\ln q_i dZ\\ =&\int \prod_iq_i\bigg\{\ln p(X,Z)-\sum_i\ln q_i\bigg\}dZ \\ \end{split}\]

考虑其中的一个\(q_j\)则有

\[\begin{split} \mathcal{L}(q) =& \int q_j \bigg\{ \int \ln p(X,Z)\prod_{i \neq j}q_idZ_i\bigg\}dZ_j - \int q_j \ln q_j dZ_j + const \\ = & \int q_j \ln \widetilde{p}(X,Z_j)dZ_j - \int q_j \ln q_j dZ_j + const \\ = & \int q_j \frac{\widetilde{p}(X,Z_j)}{q_j}dZ_j + const\\ = & - KL(q_j || \widetilde{p}(X,Z_j)) + const \end{split}\]

其中

\[\begin{split} \ln\widetilde{p}(X,Z_j)=&\int \ln p(X,Z)\prod_{i \neq j}q_idZ_i \\ =& E_{i\neq j}[\ln p(X,Z)] \end{split}\]

这时候,我们就发现在给定所有的\(\{q_{i\neq j}\}\)时,想要极大化\(\mathcal{L}\)等价于极小化\(q_j\)\(\widetilde{p}(X,Z_j)\)的KL散度,如果我们用\(q^*_j(Z_j)\)表示\(q_j(Z_j)\)的最优值,则那我们只要让\(q_j^*(Z_j)\)\(E_{i\neq j}[\ln p(X,Z)]\)就可以了。准确写出来应该是:

\[q^*_j(Z_j)=\frac{exp(E_{i\neq j}[\ln p(X,Z)]}{\int exp(E_{i\neq j}[\ln p(X,Z)])dZ_j}\]

这样我们又得到了之前在EM中M步优化的方法,将纠缠在一起的\(Z\)分割成相互独立的集合\(\{z_j\}\),然后依次迭代优化,直到收敛。

至此,我们最初的问题好像是解决了。其实在这种基础上还有一些扩展的算法,比如下面这个VBEM算法。

我们之前在讨论模型时,将所有的隐藏变量和参数都放到\(Z\)中,但是实际情况中,隐藏变量和参数往往是不同的,所以我们其实可以采用与EM很相似的过程,将隐藏变量与参数也分开优化,这就是所谓的变分EM算法,(其实所谓的变分法应该就是对于泛函求极值的方法,而对于我们面对的难以求解的模型,将复杂的那部分根据平均场理论拆开,然后就能得到一个个以\(q_i(z_i)\)为参数的泛函,利用变分法求解其极值,所得到的算法都可以成为变分推断。好吧,这句是我胡扯的。)

在VBEM中,要优化的式子与变分推断没什么大的不同,如果用m表示其中的超参的话,我们能发现在用\(\mathcal{L}\)接近似然的时候依然有

\[\ln p(X|m) = \mathcal{L}(q_z(Z),q_{\theta}(\theta),X) + KL(q||p)\]

所以我们发现,其实VBEM只是把隐藏变量和参数的优化分开,最终EM的迭代过程其实也很相似

\[\ln q_z^{(t+1)} \propto E_{q_{\theta}^{(t)}}[\ln p(X,Z|\theta,m)]\]

\[q_{\theta}^{(t+1)} \propto p(\theta,m)exp E_{q_{x}^{(t+1)}}(x)\big[\ln p(X,Z|\theta,m)\big]\]

这里有一张与EM过程相似的图,解释了相似的过程

VBEM

VBEM

由于我们把所有的未知变量全都拿到\(Z\)\(\theta\)中去了,所以在我们不更新超参的时候,其实整个模型的似然上界是不变的,VBEM的EM过程是在接近现有的上界的过程,而超参的更新才是极大化上界的过程(这一部分有不少讲的很清楚的资料比如这篇介绍)。

不过我们发现一个问题,在不优化超参的时候,上界其实没有变化的,而我们却要通过近似EM的迭代来求一个局部最优解,是不是有一些简单的情况,可以让我们直接就求出来上界的优化方法呢?

我们在选择超参与先验分布的时候往往会选择对应的共轭分布,为的是先验分布于似然函数相乘之后得到的后验依然是相同的分布族。即在很多时候,我们已经知道了后验分布的具体形式,那我们只要假设\(q_j\)依然符合相应的分布,并且给它对应的参数作为相应的充分统计量,就可以免去相对复杂的推导过程,直接通过变分下界的极大化,来求得优化的方法。

下面以一维高斯为例,尝试一下两种解法:

对于一个一维高斯分布,其观测数据为\(X={x_1,...,X_N}\),我们希望推断的是均值的\(\mu\)和方差的倒数\(\sigma\),其实就是高斯的充分统计量。

首先先引入共轭分布的:

\[p(\mu|\tau)=\mathcal{N}(\mu|\mu_0, (\lambda_0\tau)^{-1})\]

\[p(\tau)=Gam(\tau|a_0,b_0)\]

对于观测到的数据\(X\)有似然为:

\[p(X|\mu,\tau)=(\frac{\tau}{2\pi})exp\big\{-\frac{\tau}{2}\sum_{n=1}^{N}(x_n-\mu)^2\big\}\]

我们斩断\(\mu\)\(\tau\)的联系,

\[q(\mu,\tau)=q_\mu(\mu)q_\tau(\tau)\]

然后对于其中的\(q_\mu(\mu)\)尤其最优解\(q_\mu^*(\mu)\):

\[\begin{split}\ln q^*_u(\mu)&= \mathbb{E}_r[\ln p(\mathbf{X}|\mu,\tau)+\ln p(\mu|\tau)]+const \\&= -\frac{\mathbb{E}[\tau]}{2}\{\lambda_0(\mu-u_0)^2+\sum^N_{n=1}(x_n-\mu)^2\}+const \\\end{split}\]

有一些地方要注意,在求\(E[\ln p(X,Z)]\)时,由于我们要利用改进\(\mu\)来优化,所以我们只关心与\(\mu\)有关的部分,表现在生成模型中其实就是只有图中直接相连和有共同子节点的才有关,所以我们在上式的期望中仅有两项。我们发现其实大括号中间是\(\mu\)的二次项,显然\(q_u(u)\)是个高斯分布,所以我们可以求解出来

\[\begin{split}u_N &=\frac{\lambda_0u_0+N\bar{x}}{\lambda_0+N} \\\lambda_N &=(\lambda_0+N)\mathbb{E}[\tau] \\\end{split}\]

然后对于\(q_\tau(\tau)\),有:

\[\begin{split}\ln q^*_r(\tau)&=\mathbb{E}_u[\ln p(\mathbf{X}|\mu,\tau)+\ln p(\mu|\tau)]+\ln p(\tau)+const \\&=(a_0-1)\ln \tau-b_o \tau+\frac{1}{2}\ln \tau+\frac{N}{2}\ln \tau \\& -\frac{\tau}{2}\mathbb{E}_u[\sum^N_{n=1}(x_n-\mu)^2+\lambda_0(\mu-u_0)^2]+const \\\end{split}\]

对于\(\tau\),我们的先验分布有\(p(\tau)\)与其他变量无关,所以在期望外面,而且对于整理后的形式,我们用可以把它化成gamma分布的形式,其参数为:

\[\begin{split}a_N&=a_0+\frac{N}{2} \\b_N&=b_0+\frac{1}{2}\mathbb{E}_u[\sum^N_{n=1}(x_n-\mu)^2+\lambda_0(\mu-u_0)^2]\end{split}\]

然后为了求解出来具体的值,我们需要将两个式子解出来的参数根据分布的性质(这里指数分布家族的好处再次体现出来,充分统计量有着更良好的形式)联立,就能解出来,各个\(q\)的参数的依赖关系。

\[\begin{equation}\begin{split}& u_N =\frac{\lambda_0u_0+N\bar{x}}{\lambda_0+N} \\& \lambda_N =(\lambda_0+N)\frac{a_N}{b_N} \\& a_N=a_0+\frac{N+1}{2}\\&b_N=b_0+\frac{1}{2}[(\lambda_0+N)(\lambda^{-1}_N+\mu^2_N)\\ &-2(\lambda_0u_0+\sum^N_{n=1}x_n)u_N+(\sum^N_{n=1}{x_n}^2)+\lambda_0{u_0}^2)]\\\end{split}\end{equation}\]

然后根据参数依赖迭代关系,迭代更新就好了。在这种方法中,我们也发现\(q\)函数本身与\(p\)也有着相同的形式,(直觉上是很自然的,至于内在的原因是不是与指数家族与共轭分布有关,还得多看看书),所以我们可以一开始就假设它满足这个形式,直接优化\(\mathcal{L}\)。所以,我们直接写出来\(\mathcal{L}\)

\[\begin{split}\mathcal{L} = & \int q(Z) \ln\frac{p(X,Z)}{q(Z)}dZ \\ = & E_q[\ln p(X,Z)] - E_q[\ln q(Z)] \\ = & E_q[\ln p(X|\mu, \tau)] + E_q[\ln p(\mu|\tau)] + E_q[\ln p(\tau)] \\ &- E[q_\mu(\mu)] - E[q_\tau[\tau]] \end{split}\]

由于我们已经知道各个\(q_j\)的分布,所以自然能写出来其似然期望与自身期望形式,即可以将\(\mathcal{L}\)写作各个参数的形式,我们直接针对各个参数求偏导就可以求得迭代的形式了。这个地方的详细推倒可以在《Machine Learning:A Probabilistic Perspective》第21章里面找到。

到这里,变分推断的基础大致都看了一遍。也该回到我们LDA的问题上了。

回到LDA的生成过程上来,我们再来看一眼LDA的生成过程。

新生成过程

新生成过程

我们发现其实整个模型中,\(\alpha\)\(\beta\)都是超参,位置的参数只有\(\theta\),而\(z\)为隐藏变量,我们难以优化的原因也是\(\theta\)\(z\)纠缠在一起,所以我们干脆就把\(\theta\)\(z\)的联系切断,即把\(\theta\)\(z\)分到不同的组中,然后我们之前就提过我们对每一个\(q_j\)的假设其实是不重要的,因为我们最终都是要将他们近似到\(p\)上,所以可以在假设中加入参数,即可得到第二个图,切断了\(\theta\)\(z\)的联系,然后又加入新的参数以作为对\(\theta\)\(z\)的影响因子。

按照已经介绍的方法,我们可以写出\(\mathcal{L}\):

\[\mathcal{L} = E_q[\ln p(w|z,\beta)] + E_q[\ln p(z|\theta)] + E_q[\ln p(\theta|\alpha)] - E_q[\ln q(\theta)] - E_q[\ln q(z)]\]

然后展开这个式子

对于\(E_q[\ln p(z|\theta)]\),首先有\(p(z|\theta)=\prod_{i=1}^{k}\theta_i^{(z_i)}\)则其整个对数似然应该有\(\sum_n^N\sum_i^Kz_{in}\ln \theta_i\),对于同一文章的主题都有一个\(\theta\)生成,则其期望有

\[\begin{split}E_q[\ln p(z|\theta)] = & E_q\big[\sum_{n=1}^N\sum_{i=1}^Kz_{in}\ln \theta_i\big] = E_q\big[\sum_{n=1}^N\ln \theta\sum_{i=1}^Kz_{in}\big] \\ = & \sum_{n=1}^N\ln E_{q(\gamma)}[\ln\theta]\sum_{i=1}^KE_{q(\phi)}[z_{in}] = \sum_{n=1}^N(\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j))\sum_{i=1}^K\phi_{ni} \\ = & \sum_{n=1}^N\sum_{i=1}^K\phi_{ni} (\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j)) \end{split}\]

这里注意其实\(z_{ni}\)的期望就是\(\phi_{ni}\),最后Dirichlet分布的那个期望的证明在LDA原论文的附录A.1。 对于\(E_q[\ln q(z)]\),显然有

\[\begin{split}E_{q(\phi)}[\ln q(z)]= &E_{q(\phi)}\big[\ln \prod_{n=1}^N\prod_{i=1}^{k}\phi_{ni}^{z_{ni}}\big] \\ = & E_{q(\phi)}\big[\sum_{n=1}^{N}\sum_{i=1}^{k}z_{ni}\ln \phi_{ni}\big]\\ = & \sum_{n=1}^{N}\sum_{i=1}^{k}E[z_{ni}]\ln \phi_{ni} \\ = & \sum_{n=1}^{N}\sum_{i=1}^{k}\phi_{ni}\ln \phi_{ni} \end{split}\]

对于\(E_q[\ln p(w|z, \beta)]\)

\[\begin{split}E_q[\ln p(w|z, \beta)] = & E_q[\ln \prod_{i=1}^k\prod_{n=1}^N\prod_{j=1}^V\beta^{z_{ni}w_n^j}_{ij}] \\ = & \sum_{n=1}^N\sum_{i=1}^k\sum_{j=1}^V\phi_{nj}w_n^j\ln \beta_{ij} \end{split}\]

对于\(E_q[\ln q(\theta)]\)

\[\begin{split} E_q[\ln q(\theta)] = & (\sum_{j=1}^k(\gamma_j - 1)E_{q(\gamma)}[\ln \theta_i]) + \ln \Gamma(\sum_{i=1}^k\gamma_i)-\sum_{i=1}^k \ln\Gamma(\gamma_i) \\ = & \sum_{i=1}^k(\gamma_i - 1)(\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j)) + \ln \Gamma(\sum_{j=1}^k\gamma_j)-\sum_{i=1}^k \ln\Gamma(\gamma_i) \end{split}\]

这里要注意的的是\(w_n\)本身是一个长度为所有word个数的且其中只有一个元素为1其余为0的向量,而\(w_n^j\)为文章第N个词是单词表第j个词的情况。所以,\(\beta_{ij}\)是否有效,需要满足第n个词的主题是不是i即\(z_{ni}\),以及第N个词是不是单词表的第j个词即\(w_n^j\)两个条件。

对于\(E_q[\ln p(\theta|\alpha)]\)的计算与\(E_q[\ln q(\theta)]\)相似两次展开Dirichlet分布就好了。

\[E_q[\ln p(\theta|\alpha)]= \sum_{i=1}^k(\alpha_i - 1)(\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j)) + \ln \Gamma(\sum_{i=1}^k\alpha_i)-\sum_{i=1}^k \ln\Gamma(\alpha_i)\]

则整个\(\mathcal{L}\)为:

\[\begin{split} \mathcal{L}(\gamma,\phi;\alpha,\beta) = & (\sum_{i=1}^k(\alpha_i - 1)(\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j)) + \ln \Gamma(\sum_{i=1}^k\alpha_i)-\sum_{i=1}^k \ln\Gamma(\alpha_i) \\ + & \sum_{n=1}^N\sum_{i=1}^K\phi_{ni} (\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j)) \\ + & \sum_{n=1}^N\sum_{i=1}^k\sum_{j=1}^V\phi_{nj}w_n^j\ln \beta_{ij} \\ - & \sum_{i=1}^k(\gamma_i - 1)(\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j)) - \ln \Gamma(\sum_{j=1}^k\gamma_j)+\sum_{i=1}^k \ln\Gamma(\gamma_i) \\ - & \sum_{n=1}^{N}\sum_{i=1}^{k}\phi_{ni}\ln \phi_{ni} \end{split}\]

由于对于\(\phi\)还有\(\sum_{i=1}^k\phi_{ni}=1\)的约束,所以用拉格朗日乘子法,对于其中的一个\(\phi_{ni}\)

\[\mathcal{L}_{[\phi_{ni]}}=\phi_{ni}(\psi(\gamma_i)-\psi(\sum_{j=i}^k\gamma_j))+\phi_{ni}\ln \beta_{iv}-\phi_{ni}\ln\beta_{iv}+\lambda_n(\sum_{j=1}^{k}\phi_{ni}-1)\]

这里\(\beta_{iv}\)其实省略了之前的\(w_n^j\),对于每一个\(\phi_{ni}\)都有对应的同一主题、同一单词的\(\beta\)中的概率对应就是\(\beta_{iv}\)。然后求偏导,令其等于零,显然有

\[\phi_{ni} \propto \beta_{iv}exp(\psi(\gamma_i)-\psi(\sum_{j=1}^{k}\gamma_j))\]

再看\(\gamma_i\)

\[$$\begin{split} \mathcal{L}_{\gamma} = & (\sum_{i=1}^k(\alpha_i - 1)(\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j)) + \sum_{n=1}^N\phi_{ni} (\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j)) \\ - & \sum_{j=1}^k(\gamma_j - 1)(\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j)) - \ln \Gamma(\sum_{j=1}^k\gamma_j)+\ln\Gamma(\gamma_i) \\ \end{split}\]$$

\[\mathcal{L}_{[\gamma]}=\sum_{i=1}^{k}(\psi(\gamma_i)-\psi(\sum_{j=1}^k\gamma_j))(\alpha_i+\sum_{n=1}^N\phi_{ni}-\gamma_i)-\ln \Gamma(\sum_{j=1}^{k}\gamma_j)+\ln \Gamma(\gamma_i)\]

\(\gamma_i\)求偏导,对于第一项,\(\sum_{i=1}^k\psi(\gamma_i)(\alpha_i+\sum_{n=1}^N\phi_{ni}-\gamma_i)\)由于其中只有一个\(\gamma_i\),所以偏导应该为\(\psi'(\gamma_i)(\alpha_i+\sum_{n=1}^N\phi_{ni}-\gamma_i) - \psi(\gamma_i)\),但对于\(\sum_{i=1}^k\psi(\sum_{j=1}^k\gamma_j)(\alpha_i+\sum_{n=1}^N\phi_{ni}-\gamma_i)\),这里由于对于每个i,都有\(\psi(\sum_{j=1}^k\gamma_j)\)中存在一个\(\gamma_i\),故,其偏导为\(\psi'(\sum_{j=1}^k\gamma_j)\sum_{j=1}^k(\alpha_j+\sum_{n=1}^N\phi_{nj}-\gamma_j)-\psi(\sum_{j=1}^{k}\gamma_j)\)),由于有\(\psi(a)=\frac{d}{da}\ln \Gamma(a)\),所以最后只剩下

\[\frac{\partial \mathcal{L}}{\partial \gamma_i} = \psi'(\gamma_i)(\alpha_i+\sum_{n=1}^N\phi_{ni}-\gamma_i)-\psi'(\sum_{j=1}^k\gamma_j)\sum_{j=1}^k(\alpha_j+\sum_{n=1}^N\phi_{nj}-\gamma_j)\]

\(\gamma_i\)取得极大值的条件为

\[\gamma_i=\alpha_i+\sum_{n=1}^{N}\phi_{ni}\]

到这里,我们得到了\(\gamma\)\(\phi\)的迭代式子。下面应该找\(\alpha\)\(\beta\),我们发现我们在估计\(\gamma\)\(\beta\)时,只是在一篇文章的层面上来观察模型,这我们也可以从生成过程图上理解这个问题,由于每篇文章都是可交换与独立同分布的所以,整个文集的极大似然,其实就是所有似然的累加,加上对于同一主题\(\beta_i\)所有元素之和应该为一,在故对于\(\beta\)

\[\mathcal{L}=\sum_{d=1}^{M}\sum_{n=1}^{N_d}\sum_{i=1}^{k}\sum_{j=1}^{V}\phi_{dni}w_{dn}^j\ln \beta_{ij}+\sum_{i=1}^k\lambda_i(\sum_{i=1}^k\beta_{ij}-1)\]

取偏导为零为

\[\beta_{ij}\propto \sum_{d=1}^M\sum_{n=1}^{N_d}\phi_{dni}w_{dn}^j\]

对于\(\alpha\)

\[\mathcal{L}_{[\alpha_i]}=\sum_{d=1}^M\big(\ln \Gamma(\sum_{j=1}^k\alpha_j)-\sum_{i=1}^k\ln \Gamma(\alpha_i)+\sum_{i=1}^{k}((\alpha_i-1)(\psi(\gamma_{di})-\psi(\sum_{j=1}^k\gamma_{dj}))\big)\]

由于每个文本中都有\(\alpha_i\),所以对于一个\(\alpha_i\)

\[\frac{\partial\mathcal{L}}{\partial \alpha}=M(\psi(\sum_{j=1}^{k}\alpha_j)-\psi(\alpha_i))+\sum_{d=1}^{M}(\psi(\gamma_{di}-\psi(\sum_{j}^{k}\gamma_{dj})))\]

这个式子中要求对每一个\(\alpha_i\)迭代的时候还需要依赖于其他的\(\alpha_{j\neq i}\),为了简化运算复杂度,采用LDA论文附录A.2中的方法,其Hessian的元素为

\[\frac{\partial\mathcal{L}}{\partial \alpha_i \alpha_j}=\delta(i,j)M(\psi'(\alpha_i)-\psi'(\sum_{j=1}^k\alpha_j)\]

对于\(\alpha\)的更新

\[\alpha_{new} = \alpha_{old} - H(\alpha_{old})^{-1}g(\alpha_{old})\]

至此,对于LDA中所有的参数估计的过程。整个迭代过程为

整个过程也分为EM两步
E步为
  初始化所有的\(\phi_{ni}^0\)\(1/k\)
  初始化所有的\(\gamma_i\)\(\alpha_i+N/k\)
  repeat
    for n = 1 to N
      for i = 1 to k
        \(\phi_{ni}^{t+1}=\beta_{iw_n}exp(\psi(\gamma_i'))\)
      归一化\(\phi_n^{t+1}\)
    \(\gamma^{t+1}=\alpha+\sum_{n=1}^N\phi_n^{t+1}\) 这里都是向量

M步为
对于每一个\(\beta_{ij} \propto \sum_{d=1}^M\sum_{n=1}^{N_d}\phi_{dni}^*w_{dn}^j\)
对于\(\alpha\)\(\alpha_{new} = \alpha_{old} - H(\alpha_{old})^{-1}g(\alpha_{old})\)




X