当前位置:   article > 正文

神经主题模型(NVDM-GSM)

神经主题模型
简要介绍

主题模型(LDA)是一种文档的概率生成模型,其含有两种隐变量,文章所包含的主题,以及主题所包含的单词,通过发掘这些隐变量,能以低维的视角揭示文档的语义信息。给定一篇文档,需要解决的是两种隐变量的后验概率p(z|x)的密度估计问题。目前有两种算法来解决,分别是使用变分推断的EM算法和吉布斯采样,两种都属于近似推断方法。变分推断EM算法采用变分分布来近似模型中难以计算的条件概率,吉布斯采样核心思想是将采样过程看作一个马尔可夫链,如果这个马尔可夫链的平稳分布为需要求解的概率分布,那么在状态平稳时抽取的样本就服从这个概率分布。

然而随着模型的表示能力增强,对模型概率分布的参数进行快速准确的推断越来越困难。我们可以利用神经网络强大的表示能力和拟合能力来建模主题模型中的推断问题。

深度生成模型是一种有机融合神经网络和概率图模型的生成模型,将神经网络作为一个概率分布的逼近器,可以拟合非常复杂的数据分布。变分自编码器(VAE)是一个非常典型的深度生成模型,利用神经网络的拟合能力来有效地解决含隐变量的概率模型中后验分布难以估计的问题。

神经主题模型(NVDM-GSM)使用VAE的结构,

模型的输入就是一篇文章的词袋向量,在实际操作中,这个输入是N\times V的矩阵(二维张量),N代表了批次数目(有多少词袋向量同时在一起训练),V是文档的无重复单词数目。

VAE的结构分为推断网络和生成网络。

1.推断网络

GSM假设文档-主题分布服从一个各向同性高斯分布p(\theta;\mu_0,\sigma_0^2)=N(\theta;\mu_0,\sigma_0^2)(各个维度的变量之间是相互独立,且方差相等),推断网络的任务是近似这个高斯分布,即通过变分分布q(\theta;\mu(d),\sigma(d)^2)=N(\theta;\mu(d),\sigma(d)^2)来近似,词袋向量通d过这个网络后得到的是高斯分布的参数\mu(d)\sigma(d)(重参数化技巧,将这个高斯分布的参数与随机性分离),在每个维度(高斯分布的维度在定义神经网络时指定),先从标准高斯分布N(\varepsilon ;0,1)采样得到一个随机值\varepsilon,之后通过\sigma(d)\times \varepsilon +\mu(d)计算得到值x,通过归一化网络\theta=g(x)即可得到文章的多项式主题分布\widehat{\theta}(所有值和为1)。归一化变换仅仅是一种线性缩放,它不会改变数据的分布形状或数据点之间的相对关系,只是改变了数据的取值范围。也因此p(\theta;\mu_0,\sigma_0^2)=N(x;\mu_0,\sigma_0^2)q(\theta;\mu(d),\sigma(d)^2)=N(x;\mu(d),\sigma(d)^2)

2.生成网络

生成网络的输入为推断网络得到的多项式主题分布,通过一层网络(这层网络是矩阵K\times V的近似器,记为\beta,矩阵的含义可以理解为每个主题的词分布,行代表主题,列代表单词)即可得到重构的文档,但输出不真的是一个新的词袋向量,而是一个多变量的伯努利分布,记为p(\mathbf{w}|\beta,\widehat{\theta}),即每一维都是一个概率值,也就是伯努利分布的参数[1,...,\gamma^v,...,\gamma ^V]\gamma _v\overset{\Delta }{=}p(w_v=1|\beta,\widehat{\theta}),可以写成p(\mathbf{w}|\beta,\widehat{\theta})=\prod_{v=1}^{V}\gamma^{w_v}_v(1-\gamma_v)^{1-w_v}w_v\in \{0,1\}^V

图1.推断网络和生成网络

结合笔者之前VAE的学习笔记以及参考资料。GSM的损失函数可以写为

\displaystyle L_d=\sum_{v=1}^{V}(\log{p(w_v|\beta,\widehat{\theta})})-\lambda D_{KL}(N(x;\mu(d),\sigma(d)^2)||N(x;\mu_0,\sigma_0^2))

关于第一项可以看成交叉熵损失,第二项是两个高斯分布的KL散度,可以参见笔者的这篇学习笔记两个多维高斯分布的KL散度公式推导,目标是将KL散度表示成两个高斯分布的均值和方差组成的函数。

之后可以采用随机梯度下降的方式进行网络参数更新。即,在每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数,在这里一个样本指一篇文章的词袋向量。

参考资料

大佬讲解的NVDM-GSMhttps://zhuanlan.zhihu.com/p/309349268

这位大佬把很多的神经主题模型都用pytorch实现了,笔者最近也在学习。

基于神经变分推断的离散隐藏主题发现http://proceedings.mlr.press/v70/miao17a.html

本篇文章的公式符号尽量保持和文献一致,有些不同还请见谅。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/552518
推荐阅读
相关标签
  

闽ICP备14008679号