神经主题模型(NVDM-GSM)
简要介绍
主题模型(LDA)是一种文档的概率生成模型,其含有两种隐变量,文章所包含的主题,以及主题所包含的单词,通过发掘这些隐变量,能以低维的视角揭示文档的语义信息。给定一篇文档,需要解决的是两种隐变量的后验概率
然而随着模型的表示能力增强,对模型概率分布的参数进行快速准确的推断越来越困难。我们可以利用神经网络强大的表示能力和拟合能力来建模主题模型中的推断问题。
深度生成模型是一种有机融合神经网络和概率图模型的生成模型,将神经网络作为一个概率分布的逼近器,可以拟合非常复杂的数据分布。变分自编码器(VAE)是一个非常典型的深度生成模型,利用神经网络的拟合能力来有效地解决含隐变量的概率模型中后验分布难以估计的问题。
神经主题模型(NVDM-GSM)使用的结构,
模型的输入就是一篇文章的词袋向量,在实际操作中,这个输入是
VAE的结构分为推断网络和生成网络。
1.推断网络
GSM假设文档-主题分布服从一个各向同性高斯分布
2.生成网络
生成网络的输入为推断网络得到的多项式主题分布,通过一层网络(这层网络是矩阵的近似器,记为,矩阵的含义可以理解为每个主题的词分布,行代表主题,列代表单词)即可得到重构的文档,但输出不真的是一个新的词袋向量,而是一个多变量的伯努利分布,记为,即每一维都是一个概率值,也就是伯努利分布的参数,,可以写成,。
图1.推断网络和生成网络
结合笔者之前的学习笔记以及参考资料。GSM的损失函数可以写为
关于第一项可以看成交叉熵损失,第二项是两个高斯分布的KL散度,可以参见笔者的这篇学习笔记,目标是将KL散度表示成两个高斯分布的均值和方差组成的函数。
之后可以采用随机梯度下降的方式进行网络参数更新。即,在每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数,在这里一个样本指一篇文章的词袋向量。
参考资料
这位大佬把很多的神经主题模型都用pytorch实现了,笔者最近也在学习。
本篇文章的公式符号尽量保持和文献一致,有些不同还请见谅。
因篇幅问题不能全部显示,请点此查看更多更全内容