数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
三、LDA Model
在
pLSA
模型中,参数 $ \Phi,\Theta $ 是常数。而在LDA
模型中,假设 $ \Phi,\Theta $ 也是随机变量:- 参数 $ \vec\varphi^i=(\varphi_{i,1},\varphi_{i,2},\cdots,\varphi_{i,T}) $ 为文档 $ \mathcal D_i $ 的主题分布(离散型的),其中 $ i=1,2,\cdots,N $ 。该分布也是一个随机变量,服从分布 $ p(\vec\varphi^i) $ (连续型的)。
- 参数 $ \vec\theta^t=(\theta_{t,1},\theta_{t,2},\cdots,\theta_{t,V}) $ 为主题 $ \text{topic}_t $ 的单词分布(离散型的),其中 $ t=1,2,\cdots,T $ 。该分布也是一个随机变量,服从分布 $ p(\vec\theta^t) $ (连续型的)。
因此
LDA
模型是pLSA
模型的贝叶斯版本。例:在
pLSA
模型中,给定一篇文档,假设:- 主题分布为
{教育:0.5,经济:0.3,交通:0.2}
,它就是 $ p( \text{topic}_t\mid \mathcal D_i) $ 。 - 主题
教育
下的主题词分布为{大学:0.5,老师:0.2,课程:0.3}
,它就是 $ p(\text{word}_v\mid \text{topic}_t = \text{教育}) $ 。
在
LDA
中:给定一篇文档,主题分布 $ p( \text{topic}_t\mid \mathcal D_i) $ 不再固定 。可能为
{教育:0.5,经济:0.3,交通:0.2}
,也可能为{教育:0.3,经济:0.5,交通:0.2}
,也可能为{教育:0.1,经济:0.8,交通:0.1}
。但是它并不是没有规律的,而是服从一个分布 $ p(\vec \varphi) $ 。即:主题分布取某种分布的概率可能较大,取另一些分布的概率可能较小。
主题
教育
下的主题词分布也不再固定。可能为{大学:0.5,老师:0.2,课程:0.3}
,也可能为{大学:0.8,老师:0.1,课程:0.1}
。但是它并不是没有规律,而是服从一个分布 $ p(\vec\theta) $ 。即:主题词分布取某种分布的概率可能较大,取另一些分布的概率可能较小。
- 主题分布为
3.1 文档生成算法
LDA
模型的文档生成规则:- 根据参数为 $ \vec\eta $ 的狄利克雷分布随机采样,对每个话题 $ \text{topic}_t $ 生成一个单词分布 $ \vec\theta_t=(\theta_{t,1},\theta_{t,2},\cdots,\theta_{t,V}) $ 。每个话题采样一次,一共采样 $ T $ 次。
- 根据参数为 $ \vec\alpha $ 的狄利克雷分布随机采样,生成文档 $ \mathcal D $ 的一个话题分布 $ \vec\varphi=(\varphi_{1},\varphi_{2},\cdots,\varphi_{T}) $ 。每篇文档采样一次。
- 根据话题分布 $ p(\text{topic}_t\mid \mathcal D)= \varphi_{t} $ 来随机挑选一个话题。然后在话题 $ \text{topic}_t $ 中,根据单词分布 $ p(\text{word}_v\mid \text{topic}_t)= \theta_{t,v} $ 来随机挑选一个单词。
- 重复执行
挑选话题--> 挑选单词
$ n $ 次,则得到一篇包含 $ n $ 个单词 $ \{\text{word}_{w_1},\text{word}_{w_2},\cdots,\text{word}_{w_n}\} $ 的文档,记作 $ (w_1 ,w_2 ,\cdots,w_{n } ) $ 。其中: $ 1\le w_j \le V $ , $ v=w_j $ 表示文档的第 $ j $ 个单词为 $ \text{word}_v $ 。
对于包含 $ N $ 篇文档的数据集 $ \mathbb D $ ,假设所有文档都是如此生成。则数据集 $ \mathbb D $ 的生成规则:
以概率 $ p(\mathcal D_i) $ 选中第 $ i $ 篇文档。
根据参数为 $ \vec\eta $ 的狄利克雷分布随机采样,对每个话题 $ \text{topic}_t $ 生成一个单词分布 $ \vec\theta_t=(\theta_{t,1},\theta_{t,2},\cdots,\theta_{t,V}) $ 。每个话题采样一次,一共采样 $ T $ 次。
生成文档 $ \mathcal D_i $ :
- 根据参数为 $ \vec\alpha $ 的狄利克雷分布随机采样,生成文档 $ \mathcal D_i $ 的一个话题分布 $ \vec\varphi_i=(\varphi_{i,1},\varphi_{i,2},\cdots,\varphi_{i,T}) $ 。每篇文档采样一次。
- 在文档 $ \mathcal D_i $ 中,根据话题分布 $ p(\text{topic}_t\mid \mathcal D_i)= \varphi_{i,t} $ 来随机挑选一个话题。然后在话题 $ \text{topic}_t $ 中,根据单词分布 $ p(\text{word}_v\mid \text{topic}_t)= \theta_{t,v} $ 来随机挑选一个单词。
- 重复执行
挑选话题--> 挑选单词
$ n_i $ 次,则得到一篇包含 $ n_i $ 个单词 $ \{\text{word}_{w_1},\text{word}_{w_2},\cdots,\text{word}_{w_{n_i}} \} $ 的文档,记作 $ (w_1^i ,w_2^i ,\cdots,w_{n_i}^i ) $ 。
重复执行上述文档生成规则 $ N $ 次,即得到 $ N $ 篇文档组成的文档集合 $ \mathbb D $ 。
由于两次随机采样,导致
LDA
模型的解会呈现一定程度的随机性。所谓随机性,就是:当多次运行LDA
算法,获得解可能会各不相同当采样的样本越稀疏,则采样的方差越大,则
LDA
的解的方差越大。- 文档数量越少,则文档的话题分布的采样越稀疏。
- 文档中的单词越少,则话题的单词分布的采样越稀疏。
3.2 模型原理
由于使用词袋模型,
LDA
生成文档的过程可以分解为两个过程:$ \vec\alpha\rightarrow \vec\varphi_i\rightarrow \{\text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z_{n^i_i}}\} $ :该过程表示,在生成第 $ i $ 篇文档 $ \mathcal D_i $ 的时候,先从
文档-主题
分布 $ \vec\varphi_i $ 中生成 $ n_i $ 个主题。其中:
- $ t={z^i_j} $ 表示文档 $ \mathcal D_i $ 的第 $ j $ 个单词由主题 $ \text{topic}_t $ 生成。
- $ n_i $ 表示文档 $ \mathcal D_i $ 一共有 $ n_i $ 个单词。
$ \vec\eta \rightarrow \vec\theta_t\rightarrow \{\text{word}_{w^t_1},\text{word}_{w^t_2},\cdots,\text{word}_{w^t_{n_t}}\} $ :该过程表示,在已知主题为 $ \text{topic}_t $ 的条件下,从
主题-单词
分布 $ \vec\theta_t $ 生成 $ n_t $ 个单词。其中:
- $ v=w^t_j $ 表示由主题 $ \text{topic}_t $ 生成的的第 $ j $ 个单词为 $ \text{word}_v $ 。
- $ n_t $ 为由 $ \text{topic}_t $ 生成的单词的数量。
3.2.1 主题生成过程
主题生成过程用于生成第 $ i $ 篇文档 $ \mathcal D_i $ 中每个位置的单词对应的主题。
$ \vec\alpha\rightarrow \vec\varphi_i $ :对应一个狄里克雷分布
$ \vec\varphi_i\rightarrow \{\text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}}\} $ :对应一个多项式分布
该过程整体对应一个
$ p( \text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}}; \vec\alpha)=\int p(\text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}}\mid\vec\varphi_i)p(\vec\varphi_i;\vec\alpha)d\vec\varphi_i\\ =\int \left[\prod_{j=1}^{n_i} p(\text{topic}_{z^i_j}\mid\vec\varphi_i)\right]\left[Dir(\vec\varphi_i;\vec\alpha)\right]d\vec\varphi_i $狄里克雷-多项式
共轭结构:
合并文档 $ \mathcal D_i $ 中的同一个主题。设 $ n_z(i,t) $ 表示文档 $ \mathcal D_i $ 中,主题 $ \text{topic}_t $ 出现的次数。则有:
$ \prod_{j=1}^{n_i} p(\text{topic}_{z^i_j}\mid\vec\varphi_i)=\prod_{t=1}^T\varphi_{i,t}^{n_z(i,t)} $则有:
$ p( \text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}}; \vec\alpha)=\\ =\int \left[\prod_{j=1}^{n_i} p(\text{topic}_{z^i_j}\mid\vec\varphi_i)\right]\left[Dir(\vec\varphi_i;\vec\alpha)\right]d\vec\varphi_i\\ =\int \left[\prod_{t=1}^T\varphi_{i,t}^{n_z(i,t)}\right]\left[\frac{1}{B(\vec\alpha)}\prod_{t=1}^T\varphi_{i,t}^{\alpha_t-1}\right]d\vec\varphi_i\\ =\frac{1}{B(\vec\alpha)}\int \prod_{t=1}^T\varphi_{i,t}^{n_z(i,t)+\alpha_t-1}d\vec\varphi_i\\ =\frac{B(\mathbf{\vec n}_z(i)+\vec\alpha)}{B(\vec\alpha)} $其中 $ \mathbf{\vec n}_z(i)=(n_z(i,1),n_z(i,2),\cdots,n_z(i,T)) $ 表示文档 $ \mathcal D_i $ 中,各主题出现的次数。
由于语料库中 $ N $ 篇文档的主题生成相互独立,则得到整个语料库的主题生成概率:
$ p( \text{topic}_{z^1_1},\text{topic}_{z^1_2},\cdots,\text{topic}_{z^1_{n_1}},\cdots,\text{topic}_{z^N_1},\cdots,\text{topic}_{z^N_{n_N}}; \vec\alpha)\\=\prod_{i=1}^Np( \text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}}; \vec\alpha)=\prod_{i=1}^{N}\frac{B(\mathbf{\vec n}_z(i)+\vec\alpha)}{B(\vec\alpha)} $.
3.2.2 单词生成过程
单词生成过程用于生成数据集 $ \mathbb D $ 中所有文档的所有主题的单词。
$ \vec\eta \rightarrow \vec\theta_t $ :对应一个狄里克雷分布
$ \vec\theta_t\rightarrow \{\text{word}_{w^t_1},\text{word}_{w^t_2},\cdots,\text{word}_{w^t_{n_t}}\} $ :对应一个多项式分布,其中 $ \text{word}_{w^t_i} $ 为数据集 $ \mathbb D $ 中(将所有单词拼接在一起)由主题 $ \text{topic}_t $ 生成的单词。
数据集 $ \mathbb D $ 中,由主题为 $ \text{topic}_t $ 生成的所有单词的分布对应一个
$ p(\text{word}_{w^t_1}, \cdots,\text{word}_{w^t_{n_t}}\mid \text{topic}_{w^t_1}=\text{topic}_t,\cdots,\text{topic}_{w^t_{n_t}}=\text{topic}_t;\vec\eta) \\= \int p(\text{word}_{w^t_1}, \cdots,\text{word}_{w^t_{n_t}}\mid \vec\theta_t , \text{topic}_{w^t_1}=\text{topic}_t,\cdots,\text{topic}_{w^t_{n_t}}=\text{topic}_t) \times p(\vec\theta_t;\vec\eta) d \vec\theta_t\\ =\int \prod_{i=1}^{n_t}p(\text{word}_{w_i^t}\mid \vec\theta_t,\text{topic}_{w^t_i}=\text{topic}_t ) Dir(\vec\theta_t;\vec\eta) d \vec\theta_t $狄里克雷-多项式
共轭结构:
合并主题 $ \text{topic}_t $ 生成的同一个单词。设 $ n_v(t,v) $ 表示中主题 $ \text{topic}_t $ 生成的单词中, $ \text{word}_v $ 出现的次数。则有:
$ \prod_{i=1}^{n_t}p(\text{word}_{w_i^t}\mid \vec\theta_t,\text{topic}_{w^t_i}=\text{topic}_t) =\prod_{v=1}^V\theta_{t,v}^{n_t(t,v)} $则有:
$ p(\text{word}_{w^t_1}, \cdots,\text{word}_{w^t_{n_t}}\mid \text{topic}_{w^t_1}=\text{topic}_t,\cdots,\text{topic}_{w^t_{n_t}}=\text{topic}_t;\vec\eta)\\ =\int \prod_{v=1}^V\theta_{t,v}^{n_t(t,v)}\left[\frac 1{B(\vec\eta)}\prod_{v=1}^V\theta_{t,v}^{\eta_v-1}\right]d \vec \theta_t=\frac{B(\vec{\mathbf n}_{v}(t)+\vec\eta)}{B(\vec\eta)} $其中 $ \mathbf{\vec n}_v(t)=(n_v(t,1),n_v(t,2),\cdots,n_v(t,V)) $ 表示由主题 $ \text{topic}_t $ 生成的单词的词频。
考虑数据集 $ \mathbb D $ 中的所有主题,由于不同主题之间相互独立,则有:
$ p(\text{word}_{w^1_1},\cdots,\text{word}_{w^1_{n_1}},\cdots,\text{word}_{w^T_1},\cdots,\text{word}_{w^T_{n_T}}\mid \\ \text{topic}_{w^1_1}=\text{topic}_1,\cdots,\text{topic}_{w^1_{n_1}}=\text{topic}_1,\cdots,\text{topic}_{w^T_1}=\text{topic}_T,\cdots,\text{topic}_{w^T_{n_T}}=\text{topic}_T ;\vec\eta)\\ = \prod_{t=1}^Tp(\text{word}_{w^t_1},\text{word}_{w^t_2},\cdots,\text{word}_{w^t_{n_t}}\mid \text{topic}_{w^t_1}=\text{topic}_t,\cdots,\text{topic}_{w^t_{n_t}}=\text{topic}_t;\vec\eta) \\ =\prod_{t=1}^T\frac{B(\vec{\mathbf n}_{v}(t)+\vec\eta)}{B(\vec\eta)} $这里是按照主题来划分单词,如果按照位置来划分单词,则等价于:
$ p(\text{word}_{w^1_1},\cdots,\text{word}_{w^1_{n_1}},\cdots,\text{word}_{w^T_1},\cdots,\text{word}_{w^T_{n_T}}\mid \\ \text{topic}_{w^1_1}=\text{topic}_1,\cdots,\text{topic}_{w^1_{n_1}}=\text{topic}_1,\cdots,\text{topic}_{w^T_1}=\text{topic}_T,\cdots,\text{topic}_{w^T_{n_T}}=\text{topic}_T ;\vec\eta)\\ = p(\text{word}_{w^1_1},\cdots,\text{word}_{w^1_{n_1}},\cdots,\text{word}_{w^N_1},\cdots,\text{word}_{w^N_{n_N}}\mid \\ \text{topic}_{z^1_1},\text{topic}_{z^1_2},\cdots,\text{topic}_{z^1_{n_1}},\cdots,\text{topic}_{z^N_1},\cdots,\text{topic}_{z^N_{n_N}};\vec\eta) $注意:这里 $ w $ 的意义发生了变化:
- 对于前者, $ w^t_j $ 表示由主题 $ \text{topic}_t $ 生成的第 $ j $ 个单词。
- 对于后者, $ w^i_j $ 表示文档 $ \mathcal D_i $ 中的第 $ j $ 个单词。
3.2.3 联合概率
数据集 $ \mathbb D $ 的联合概率分布为:
$ p(\text{word}_{w^1_1},\cdots,\text{word}_{w^1_{n_1}},\cdots,\text{word}_{w^N_1},\cdots,\text{word}_{w^N_{n_N}}, \\ \text{topic}_{z^1_1},\text{topic}_{z^1_2},\cdots,\text{topic}_{z^1_{n_1}},\cdots,\text{topic}_{z^N_1},\cdots,\text{topic}_{z^N_{n_N}};\vec\alpha ,\vec\eta)\\ =p(\text{word}_{w^1_1},\cdots,\text{word}_{w^1_{n_1}},\cdots,\text{word}_{w^N_1},\cdots,\text{word}_{w^N_{n_N}}\mid \\ \text{topic}_{z^1_1},\text{topic}_{z^1_2},\cdots,\text{topic}_{z^1_{n_1}},\cdots,\text{topic}_{z^N_1},\cdots,\text{topic}_{z^N_{n_N}};\vec\eta) \\ \times p( \text{topic}_{z^1_1},\text{topic}_{z^1_2},\cdots,\text{topic}_{z^1_{n_1}},\cdots,\text{topic}_{z^N_1},\cdots,\text{topic}_{z^N_{n_N}}; \vec\alpha) \\ = \prod_{t=1}^T\frac{B(\vec{\mathbf n}_{v}(t)+\vec\eta)}{B(\vec\eta)} \times\prod_{i=1}^{N}\frac{B(\mathbf{\vec n}_z(i)+\vec\alpha)}{B(\vec\alpha)}\\ = \prod_{i=1}^N\prod_{t=1}^T\frac{B(\mathbf{\vec n}_z(i)+\vec\alpha)}{B(\vec\alpha)}\frac{B(\vec{\mathbf n}_{v}(t)+\vec\eta)}{B(\vec\eta)} $其中:
- $ \mathbf{\vec n}_z(i)=(n_z(i,1),n_z(i,2),\cdots,n_z(i,T)) $ 表示文档 $ \mathcal D_i $ 中,各主题出现的次数。
- $ \mathbf{\vec n}_v(t)=(n_v(t,1),n_v(t,2),\cdots,n_v(t,V)) $ 表示主题 $ \text{topic}_t $ 生成的单词中,各单词出现的次数。
3.2.4 后验概率
若已知文档 $ \mathcal D_i $ 中的主题 $ \{\text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}}\} $ ,则有:
$ p(\vec\varphi_i\mid\text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}})=\frac{p(\vec\varphi_i, \text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}})}{p(\text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}})}\\ =\frac{p(\text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}}\mid \vec\varphi_i)p(\vec\varphi_i)}{p(\text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}})}\\ =\frac{\left[\prod_{t=1}^T\varphi_{i,t}^{n_z(i,t)}\right]\left[\frac{1}{B(\vec\alpha)}\prod_{t=1}^T\varphi_{i,t}^{\alpha_t-1}\right]}{\frac{B(\mathbf{\vec n}_z(i)+\vec\alpha)}{B(\vec\alpha)}}\\ =\frac{\prod_{t=1}^T\varphi_{i,t}^{n_z(i,t)+\alpha_t-1}}{B(\mathbf{\vec n}_z(i)+\vec\alpha)} $则有: $ p(\vec\varphi_i\mid\text{topic}_{z^i_1},\text{topic}_{z^i_2},\cdots,\text{topic}_{z^i_{n_i}}) \sim Dir(\vec\varphi_i;\mathbf{\vec n}_z(i)+\vec\alpha) $ 。这说明参数 $ \vec\varphi_i $ 的后验分布也是狄里克雷分布。
若已知主题 $ \text{topic}_t $ 及其生成的单词 $ \{\text{word}_{w^t_1},\cdots,\text{word}_{w^t_{n_t}}\} $ 则有:
$ p(\vec\theta_t\mid \text{topic}_t,\text{word}_{w^t_1},\cdots,\text{word}_{w^t_{n_t}}) =\frac{p(\vec\theta_t,\text{word}_{w^t_1},\cdots,\text{word}_{w^t_{n_t}}\mid \text{topic}_t)}{p(\text{word}_{w^t_1},\cdots,\text{word}_{w^t_{n_t}}\mid \text{topic}_t)}\\ =\frac{p(\text{word}_{w^t_1},\cdots,\text{word}_{w^t_{n_t}}\mid \text{topic}_t,\vec\theta_t)p(\vec\theta_t\mid \text{topic}_t)}{p(\text{word}_{w^t_1},\cdots,\text{word}_{w^t_{n_t}}\mid \text{topic}_t)}\\ =\frac{\left[\prod_{v=1}^V\theta_{t,v}^{n_v(t,v)}\right]\left[\frac 1{B(\vec\eta)}\prod_{v=1}^V\theta_{t,v}^{\eta_v-1}\right]}{\frac{B(\vec\eta+\vec{\mathbf n}_{v}(t))}{B(\vec\eta)}}\\ =\frac{\prod_{v=1}^V\theta_{t,v}^{n_v(t,v)+\eta_v-1}}{B(\vec\eta+\vec{\mathbf n}_{v}(t))} $则有: $ p(\vec\theta_t\mid \text{topic}_t,\text{word}_{w^t_1},\cdots,\text{word}_{w^t_{n_t}}) \sim Dir(\vec\theta_t;\vec{\mathbf n}_{v}(t)+\vec\eta) $ 。这说明参数 $ \vec\theta_t $ 的后验分布也是狄里克雷分布。
3.3 模型求解
LDA
的求解有两种办法:变分推断法、吉布斯采样法。
3.3.1 吉布斯采样
对于数据集 $ \mathbb D $ :
- 其所有的单词 $ \{\text{word}_{w^1_1},\cdots,\text{word}_{w^1_{n_1}},\cdots,\text{word}_{w^N_1},\cdots,\text{word}_{w^N_{n_N}}\} $ 是观测的已知数据,记作 $ \mathbf {WORD} $ 。
- 这些单词对应的主题 $ \{\text{topic}_{z^1_1},\cdots,\text{topic}_{z^1_{n_1}},\cdots,\text{topic}_{z^N_1},\cdots,\text{topic}_{z^N_{n_N}}\} $ 是未观测数据,记作 $ \mathbf {TOPIC} $ 。
需要求解的分布是: $ p(\mathbf{WORD}\mid \mathbf{TOPIC}) $ 。其中: $ v=w^i_j $ 表示文档 $ \mathcal D_i $ 的第 $ j $ 个单词为 $ \text{word}_v $ , $ t=z_j^i $ 表示文档 $ \mathcal D_i $ 的第 $ j $ 个单词由主题 $ \text{topic}_t $ 生成。
定义 $ \mathbf{TOPIC}_{\neg{(i,j)}} $ 为:去掉 $ \mathcal D_i $ 的第 $ j $ 个单词背后的那个生成主题(注:只是对其频数减一):
$ \mathbf{TOPIC}_{\neg{(i,j)}} = \{\text{topic}_{z^1_1},\cdots,\text{topic}_{z^1_{n_1}}\cdots,\text{topic}_{z^i_1},\cdots,\text{topic}_{z^i_{j-1}},\text{topic}_{z^i_{j+1}},\cdots,\text{topic}_{z^i_{n_i}}\\ ,\cdots,\text{topic}_{z^N_1},\cdots,\text{topic}_{z^N_{n_N}}\} $定义 $ \mathbf {WORD}_{\neg{(i,j)}} $ 为:去掉 $ \mathcal D_i $ 的第 $ j $ 个单词:
$ \mathbf {WORD}_{\neg{(i,j)}} = \{\text{word}_{w^1_1},\cdots,\text{word}_{w^1_{n_1}}\cdots,\text{word}_{w^i_1}\cdots,\text{word}_{w^i_{j-1}},\text{word}_{w^i_{j+1}},\cdots,\text{word}_{w^i_{n_i}}\\ ,\cdots,{\text{word}_{w^N_1},\cdots,\text{word}_{w^N_{n_N}}}\} $根据吉布斯采样的要求,需要得到条件分布:
$ p(\text{topic}_{z^i_j} \mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}) $根据条件概率有:
$ p(\text{topic}_{z^i_j} \mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}) = \frac{p(\text{topic}_{z^i_j},\text{word}_{w^i_j}\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}})}{p(\text{word}_{w^i_j})} $则有:
$ p(\text{topic}_{z^i_j} \mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}) \propto p(\text{topic}_{z^i_j},\text{word}_{w^i_j}\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}}) $对于文档 $ \mathcal D_i $ 的第 $ j $ 个位置,单词 $ \text{word}_{w^i_j} $ 和对应的主题 $ \text{topic}_{z^i_j} $ 仅仅涉及到如下的两个
狄里克雷-多项式
共轭结构:- 文档 $ \mathcal D_i $ 的主题分布 $ \vec\alpha \rightarrow \vec\varphi_i $
- 已知主题为 $ \text{topic}_{z^i_j} $ 的情况下单词的分布 $ \vec\eta \rightarrow \vec\theta_{z^i_j} $
对于这两个共轭结构,去掉文档 $ \mathcal D_i $ 的第 $ j $ 个位置的主题和单词时:
先验分布(狄里克雷分布):保持不变。
文档 $ \mathcal D_i $ 的主题分布:主题 $ \text{topic}_{z^i_j} $ 频数减少一次,但是该分布仍然是多项式分布。其它 $ N-1 $ 个文档的主题分布完全不受影响。因此有:
$ p(\mathbf{TOPIC}_{\neg{(i,j)}};\vec\alpha)=\prod_{i=1}^{N}\frac{B(\mathbf{\vec n}^\prime_z(i)+\vec\alpha)}{B(\vec\alpha)} $主题 $ \text{topic}_{z^i_j} $ 的单词分布:单词 $ \text{word}_{w^i_j} $ 频数减少一次,但是该分布仍然是多项式分布。其它 $ T-1 $ 个主题的单词分布完全不受影响。因此有:
$ p(\mathbf{WORD}_{\neg{(i,j)}}\mid \mathbf{TOPIC}_{\neg{(i,j)}};\vec\eta)=\prod_{t=1}^T\frac{B(\vec{\mathbf n}^\prime_{v}(t)+\vec\eta)}{B(\vec\eta)} $根据主题分布和单词分布有:
$ p(\mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}};\vec\alpha,\vec\eta) =\prod_{i=1}^{N}\prod_{t=1}^T\frac{B(\mathbf{\vec n}^\prime_z(i)+\vec\alpha)}{B(\vec\alpha)}\frac{B(\vec{\mathbf n}^\prime_{v}(t)+\vec\eta)}{B(\vec\eta)} $其中:
- $ \mathbf{\vec n}^\prime_z(i)=(n^\prime_z(i,1),n^\prime_z(i,2),\cdots,n^\prime_z(i,T)) $ 表示去掉文档 $ \mathcal D_i $ 的第 $ j $ 个位置的单词和主题之后,第 $ i $ 篇文档中各主题出现的次数。
- $ \mathbf{\vec n}^\prime_v(t)=(n^\prime_v(t,1),n^\prime_v(t,2),\cdots,n^\prime_v(t,V)) $ 表示去掉文档 $ \mathcal D_i $ 的第 $ j $ 个位置的单词和主题之后,数据集 $ \mathbb D $ 中,由主题 $ \text{topic}_t $ 生成的单词中各单词出现的次数。
考虑 $ p(\text{topic}_{z^i_j},\text{word}_{w^i_j}\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}}) $ 。记 $ t=z_j^i,v=w_j^i $ ,则有:
$ p(\text{topic}_t,\text{word}_v\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}})\\ = \int p(\text{topic}_t,\text{word}_v,\vec \varphi_i,\vec\theta_t\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}})d\vec \varphi_id \vec\theta_t $考虑到主题生成过程和单词生成过程是独立的,则有:
$ p(\text{topic}_t,\text{word}_v,\vec \varphi_i,\vec\theta_t\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}}) = \\ p(\text{topic}_t,\vec \varphi_i\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}}) \times p( \text{word}_v,\vec\theta_t\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}}) $考虑到文档 $ \mathcal D_i $ 的第 $ j $ 个位置的单词背后的主题选择过程和其它文档、以及本文档内其它位置的主题选择是相互独立的,则有:
$ p(\text{topic}_t,\vec \varphi_i\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}}) = \\ p(\text{topic}_t \mid \vec \varphi_i) \times p(\vec \varphi_i\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}})\\ =\varphi_{i,t}Dir(\vec\varphi_i;\vec{\mathbf n}^\prime_z(i)+\vec\alpha) $考虑到文档 $ \mathcal D_i $ 的第 $ j $ 个位置的单词选择过程和其它文档、以及本文档内其它位置的单词选择是相互独立的,则有:
$ p( \text{word}_v,\vec\theta_t\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}}) = \\ p( \text{word}_v\mid \vec\theta_t) \times p(\vec\theta_t\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}})\\ = \theta_{t,v}Dir(\vec\theta_t;\vec{\mathbf n}_v^\prime(t)+\vec\eta) $则有:
$ p(\text{topic}_t,\text{word}_v\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}}) = \\ = \int \varphi_{i,t}Dir(\vec\varphi_i;\vec{\mathbf n}^\prime_z(i)+\vec\alpha) \times \theta_{t,v}Dir(\vec\theta_t;\vec{\mathbf n}_v^\prime(t)+\vec\eta)d\vec \varphi_id \vec\theta_t\\ = \int \varphi_{i,t}Dir(\vec\varphi_i;\vec{\mathbf n}^\prime_z(i)+\vec\alpha) d\vec \varphi_i\times \int \theta_{t,v}Dir(\vec\theta_t;\vec{\mathbf n}_v^\prime(t)+\vec\eta)d \vec\theta_t\\ = \mathbb E[ \varphi_{i,t}]_{Dir} \times \mathbb E[ \theta_{t,v}]_{Dir} $根据狄里克雷分布的性质有:
$ \mathbb E[ \varphi_{i,t}]_{Dir} =\frac{n_z^{\prime}(i,t)+\alpha_{t}}{\sum_{t'=1}^T\left[n_z^{\prime}(i,t')+\alpha_{t'}\right]}\\ \mathbb E[ \theta_{t,v}]_{Dir}=\frac{n_v^{\prime}(t,v)+\eta_{v}}{\sum_{v'=1}^V\left[n_v^{\prime}(t,v')+\eta_{v'}\right]} $则有:
$ p(\text{topic}_t,\text{word}_v\mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}_{\neg{(i,j)}})\\ =\frac{n_z^{\prime}(i,t)+\alpha_{t}}{\sum_{t'=1}^T\left[n_z^{\prime}(i,t')+\alpha_{t'}\right]}\times \frac{n_v^{\prime}(t,v)+\eta_{v}}{\sum_{v'=1}^V\left[n_v^{\prime}(t,v')+\eta_{v'}\right]} $其中: $ t=z_j^i $ 为文档 $ \mathcal D_i $ 的第 $ j $ 个位置的单词背后的主题在主题表的编号; $ v=w_j^i $ 为文档 $ \mathcal D_i $ 的第 $ j $ 个位置的单词在词汇表中的编号。
根据上面的推导,得到吉布斯采样的公式( $ t=z^i_j, v=w_j^i $ ):
$ p(\text{topic}_{t} \mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}) \propto \frac{n_z^{\prime}(i,t)+\alpha_{t}}{\sum_{t'=1}^T\left[n_z^{\prime}(i,t')+\alpha_{t'}\right]}\times \frac{n_v^{\prime}(t,v)+\eta_{v}}{\sum_{v'=1}^V\left[n_v^{\prime}(t,v')+\eta_{v'}\right]} $- 第一项刻画了:文档 $ \mathcal D_i $ 中,第 $ j $ 个位置的单词背后的主题占该文档所有主题的比例(经过 $ \vec\alpha $ 先验频数调整)。
- 第二项刻画了:在数据集 $ \mathbb D $ 中,主题 $ \text{topic}_{t} $ 中,单词 $ \text{word}_{v} $ 出现的比例(经过 $ \vec\eta $ 先验频数调整)。
- 它整体刻画了:文档 $ \mathcal D_i $ 中第 $ j $ 个位置的单词为 $ \text{word}_{v} $ ,且由主题 $ \text{topic}_{t} $ 生成的可能性。
令:
- $ \alpha_{\mathbb D} = \sum_{t^\prime=1}^T\alpha_{t^\prime} $ 为数据集中所有主题的先验频数之和
- $ \eta_{\mathbb D} = \sum_{v^\prime=1}^V\eta_{v^\prime} $ 为数据集中所有单词的先验频数之和
- $ \sum_{t'=1}^T n_z^{\prime}(i,t') $ 表示去掉文档 $ \mathcal D_i $ 位置 $ j $ 的主题之后,文档 $ \mathcal D_i $ 剩下的主题总数。它刚好等于 $ n_i-1 $ ,其中 $ n_i $ 表示文档 $ \mathcal D_i $ 中单词总数,也等于该文档中的主题总数。
- $ F(t) $ 表示:数据集 $ \mathbb D $ 中属于主题 $ t $ 的单词总数。
- $ \sum_{v'=1}^V n_v^{\prime}(t,v') $ 表示去掉文档 $ \mathcal D_i $ 位置 $ j $ 的单词之后,数据集 $ \mathbb D $ 中属于主题 $ t $ 的单词总数,则它等于 $ F(t) -1 $ 。
则有:
$ p(\text{topic}_{t} \mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}) \propto \frac{n_z^{\prime}(i,t)+\alpha_{t}}{n_i-1+\alpha_{\mathbb D}}\times \frac{n_v^{\prime}(t,v)+\eta_{v}}{F(t)-1 +\eta_{\mathbb D}} $考虑到对于文档 $ \mathcal D_i $ 来讲, $ n_i -1+\alpha_\mathbb D $ 是固定的常数,因此有:
$ p(\text{topic}_{t} \mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}) \propto \left(n_z^{\prime}(i,t)+\alpha_{t}\right) \times \frac{n_v^{\prime}(t,v)+\eta_{v}}{F(t)-1 +\eta_{\mathbb D}} $事实上,上述推导忽略了一个核心假设:考虑到采取词袋假设,
LDA
假设同一篇文档中同一个单词(如:喜欢
)都由同一个主题生成。定义 $ p(\text{topic}_{t} \mid \mathbf{TOPIC}_{\neg{(i,v)}},\mathbf{WORD}) $ 为:已知所有单词,以及去掉文档 $ \mathcal D_i $ 中单词 $ \text{word}_v $ 出现的所有位置(对某个单词,如
喜欢
,可能在文档中出现很多次)背后的主题的条件下,单词 $ \text{word}_v $ 由主题 $ \text{topic}_{t} $ 生成的概率。则有:
$ p(\text{topic}_{t} \mid \mathbf{TOPIC}_{\neg{(i,v)}},\mathbf{WORD}) \propto \frac{n_{z,v}^{\prime}(i,t)+\alpha_{t}}{\sum_{t'=1}^T\left[n_{z,v}^{\prime}(i,t')+\alpha_{t'}\right]}\times \frac{n_{v,v}^{\prime}(t,v)+\eta_{v}}{\sum_{v'=1}^V\left[n_{v,v}^{\prime}(t,v')+\eta_{v'}\right]} $其中:
$ n_{z,v}^\prime(i,t) $ 表示:去掉单词 $ \text{word}_v $ 出现的所有位置背后的主题之后,文档 $ \mathcal D_i $ 剩余的主题中,属于主题 $ \text{topic}_t $ 的总频数。则根据定义有:
$ \sum_{t'=1}^T\left[n_{z,v}^{\prime}(i,t')+\alpha_{t'}\right ] = n_i - n_w(i,v) + \alpha_{\mathbb D} $其中 $ n_i $ 表示文档 $ \mathcal D_i $ 中单词总数,也等于该文档中的主题总数; $ n_w (i,v) $ 为文档 $ \mathcal D_i $ 中单词 $ \text{word}_v $ 出现的次数。
$ n_{v,v}^\prime(t,v) $ 表示:去掉文档 $ \mathcal D_i $ 单词 $ \text{word}_v $ 出现的所有位置背后的主题之后,数据集 $ \mathbb D $ 中由主题 $ t $ 生成的单词 $ \text{word}_v $ 总数。则根据定义有:
$ \sum_{v'=1}^V\left[n_{v,v}^{\prime}(t,v')+\eta_{v'}\right] = F(t) +\eta_{\mathbb D} -n_w(i,v) $其中 $ F(t) $ 表示数据集 $ \mathbb D $ 中属于主题 $ t $ 的单词总数。
因此得到:
$ p(\text{topic}_{t} \mid \mathbf{TOPIC}_{\neg{(i,v)}},\mathbf{WORD}) \propto \frac{n_{z,v}^{\prime}(i,t)+\alpha_{t}}{n_i - n_w(i,v)+\alpha_\mathbb D}\times \frac{n_{v,v}^{\prime}(t,v)+\eta_{v}}{F(t) - n_w(i,v) +\eta_\mathbb D} $这称作基于单词的采样:每个单词采样一次,无论该单词在文档中出现几次。这可以确保同一个文档中,相同的单词由同一个主题生成。
前面的采样方式称作基于位置的采样:每个位置采样一次。这种方式中,同一个文档的同一个单词如果出现在不同位置则其主题很可能会不同。
3.3.2 模型训练
定义
$ \mathbf T=\begin{bmatrix} n_z(1,1)&n_z(1,2)&\cdots&n_z(1,T)\\ n_z(2,1)&n_z(2,2)&\cdots&n_z(2,T)\\ \vdots&\vdots&\ddots&\vdots\\ n_z(N,1)&n_z(N,2)&\cdots&n_z(N,T) \end{bmatrix} $文档-主题
计数矩阵 $ \mathbf T $ 为:其中第 $ i $ 行代表文档 $ \mathcal D_i $ 的主题计数。
定义
$ \mathbf W=\begin{bmatrix} n_v(1,1)&n_v(1,2)&\cdots&n_v(1,V)\\ n_v(2,1)&n_v(2,2)&\cdots&n_v(2,V)\\ \vdots&\vdots&\ddots&\vdots\\ n_v(T,1)&n_v(T,2)&\cdots&n_v(T,V) \end{bmatrix} $主题-单词
计数矩阵 $ \mathbf W $ 为:其中第 $ t $ 行代表 主题 $ \text{topic}_t $ 的单词计数
LDA
训练的吉布斯采样算法(基于位置的采样)输入:
- 单词词典 $ \mathbb V $
- 超参数 $ \vec\alpha,\vec\eta $
- 主题数量 $ T $
- 语料库 $ \mathbb D $
输出:
文档-主题分布 $ \vec\varphi_i $ 的估计量
主题-单词分布 $ \vec\theta_t $ 的估计量
因为这两个参数都是随机变量,因此使用它们的期望来作为一个合适的估计
算法步骤:
设置全局变量:
- $ n^z_{i,t} $ 表示文档 $ \mathcal D_i $ 中,主题 $ \text{topic}_t $ 的计数。它就是 $ n_z(i,t) $ ,也就是 $ \mathbf T $ 的第 $ i $ 行第 $ t $ 列。
- $ n^v_{t,v} $ 表示主题 $ \text{topic}_t $ 中,单词 $ \text{word}_v $ 的计数。它就是 $ n_v(t,v) $ ,也就是 $ \mathbf W $ 的第 $ t $ 行第 $ v $ 列。
- $ n^z_i $ 表示各文档 $ \mathcal D_i $ 中,主题的总计数。它也等于该文档的单词总数,也就是文档长度,也就是 $ \mathbf T $ 的第 $ i $ 行求和。
- $ n^v_t $ 表示单主题 $ \text{topic}_t $ 中,单词的总计数。它也就是 $ \mathbf W $ 的第 $ t $ 行求和。
随机初始化:
对全局变量初始化为 0 。
遍历文档: $ i \in \{1,2,\cdots,N\} $
对文档 $ \mathcal D_i $ 中的每一个位置 $ j=1,2,\cdots,n_i $ ,其中 $ n_i $ 为文档 $ \mathcal D_i $ 的长度:
- 随机初始化每个位置的单词对应的主题: $ \text{topic}_{z^i_j}\rightarrow z^i_j=t\sim Mult(\frac 1T) $
- 增加“文档-主题”计数: $ n^z_{i,t}+=1 $
- 增加“文档-主题”总数: $ n^z_i+=1 $
- 增加“主题-单词”计数: $ n^v_{t,v}+=1 $
- 增加“主题-单词”总数: $ n^v_t+=1 $
迭代下面的步骤,直到马尔科夫链收敛:
遍历文档: $ i \in \{1,2,\cdots,N\} $
对文档 $ i $ 中的每一个位置 $ j=1,2,\cdots,n_i $ ,其中 $ n_i $ 为文档 $ \mathcal D_i $ 的长度:
删除该位置的主题计数,设 $ t=z_j^i,v=w_j^i $ :
$ n^z_{i,t}-=1\\ n^z_i-=1\\ n^v_{t,v}-=1\\ n^v_t-=1 $根据下面的公式,重新采样得到该单词的新主题 $ \text{topic}_{z^i_j} $ :
$ p(\text{topic}_{t} \mid \mathbf{TOPIC}_{\neg{(i,j)}},\mathbf{WORD}) \propto \\ \frac{n_z^{\prime}(i,t)+\alpha_{t}}{\sum_{t'=1}^T\left[n_z^{\prime}(i,t')+\alpha_{t'}\right]}\times \frac{n_v^{\prime}(t,v)+\eta_{v}}{\sum_{v'=1}^V\left[n_v^{\prime}(t,v')+\eta_{v'}\right]} $记新的主题在主题表中的编号为 $ \tilde t $ ,则增加该单词的新的主题计数:
$ n^z_{i,\tilde t}+=1\\ n^z_i+=1\\ n^v_{\tilde t,v}+=1\\ n^v_{\tilde t}+=1 $
如果马尔科夫链收敛,则根据下列公式生成
$ \hat\varphi_{i,t}=\mathbb E[ \varphi_{i,t}]_{Dir} =\frac{n_z (i,t)+\alpha_{t}}{\sum_{t'=1}^T\left[n_z (i,t')+\alpha_{t'}\right]}\\ \hat\theta_{t,v}=\mathbb E[ \theta_{t,v}]_{Dir}=\frac{n_v (t,v)+\eta_{v}}{\sum_{v'=1}^V\left[n_v (t,v')+\eta_{v'}\right]} $文档-主题分布
$ \Phi $ 的估计,以及主题-单词
分布 $ \Theta $ 的估计:
如果使用基于单词的采样,则训练过程需要调整为针对单词训练,而不是针对位置训练:
对文档 $ \mathcal D_i $ 中的每一个词汇 $ \text{word}_v, v \in \{ v_{i,1},v_{i,2},\cdots,v_{i,n_v^i}\} $ ,其中 $ n^i_v $ 为出现在文档 $ \mathcal D_i $ 的词汇构成的词汇表的大小。:
- 随机初始化每个词汇对应的主题: $ \text{topic}_{z^i_v}\rightarrow z^i_v=t\sim Mult(\frac 1T) $
- 增加“文档-主题”计数: $ n^z_{i,t}+=n_w(i,v) $
- 增加“文档-主题”总数: $ n^z_i+=n_w(i,v) $
- 增加“主题-单词”计数: $ n^v_{t,v}+=n_w(i,v) $
- 增加“主题-单词”总数: $ n^v_t+=n_w(i,v) $
其中 $ n_w(i,v) $ 表示文档 $ \mathcal D_i $ 中单词 $ \text{word}_v $ 出现的次数。
采样公式:
$ p(\text{topic}_{t} \mid \mathbf{TOPIC}_{\neg{(i,v)}},\mathbf{WORD}) \propto \frac{n_{z,v}^{\prime}(i,t)+\alpha_{t}}{n_i - n_w(i,v)+\alpha_\mathbb D}\times \frac{n_{v,v}^{\prime}(t,v)+\eta_{v}}{F(t) - n_w(i,v) +\eta_\mathbb D} $主题更新公式:
$ n^z_{i,\tilde t}+=n_w(i,v)\\ n^z_i+=n_w(i,v)\\ n^v_{\tilde t,v}+=n_w(i,v)\\ n^v_{\tilde t}+=n_w(i,v) $
通常训练时对 $ \mathbf T $ 和 $ \mathbf D $ 进行批量更新:每采样完一篇文档或者多篇文档时才进行更新,并不需要每次都更新。
- 每次更新会带来频繁的更新需求,这会带来工程实现上的难题。如分布式训练中参数存放在参数服务器,频繁更新会带来大量的网络通信,网络延时大幅增加。
- 每次更新会使得后一个位置(或者后一个单词)的采样依赖于前一个采样,因为前一个采样会改变文档的主题分布。这使得采样难以并行化进行,训练速度缓慢。
这使得训练时隐含一个假设:在同一篇文档的同一次迭代期间,
文档-主题
计数、主题-单词
矩阵保持不变。即:参数延迟更新。
3.3.3 模型推断
理论上可以通过最大似然估计来推断新的文档 $ \mathcal D_{new} $ 的主题分布。设新文档有 $ n $ 个单词,分别为 $ \text{word}_{w_1},\cdots,\text{word}_{w_{n} } $ 。 假设这些单词背后的主题分别为 $ \text{topic}_{z_1},\cdots,\text{topic}_{z_{n}} $ 。则有:
$ \mathcal L(\mathcal D_{new}) = p(\text{word}_{w_1},\cdots,\text{word}_{w_{n}},\text{topic}_{z_1},\cdots,\text{topic}_{z_{n}};\vec\alpha ,\vec\eta)\\ =p(\text{word}_{w_1},\cdots,\text{word}_{w_{n}}\mid \text{topic}_{z_1},\cdots,\text{topic}_{z_{n}};\vec\eta) \times p( \text{topic}_{z_1},\cdots,\text{topic}_{z_{n}}; \vec\alpha) $由于单词的生成是独立的,且主题的单词分布是已经求得的,因此有:
$ p(\text{word}_{w_1},\cdots,\text{word}_{w_{n}}\mid \text{topic}_{z_1},\cdots,\text{topic}_{z_{n}};\vec\eta) = \prod_{i=1}^n p(\text{word}_{w_i}\mid \text{topic}_{z_{i}};\vec\eta)=\prod_{i=1}^n \hat\theta_{z_i,w_i} $由于主题的选择是独立的,但是文档的主题分布未知,该主题分布是从狄里克雷分布采样。因此有:
$ p( \text{topic}_{z_1},\cdots,\text{topic}_{z_{n}}; \vec\alpha) = \prod_{t=1}^T \varphi_t^{n_z(t)} \times B(\vec\alpha)\prod_{t=1}^T\varphi_{t}^{\alpha_t-1} = B(\vec\alpha)\prod_{t=1}^T\varphi_{t}^{n_z(t)+\alpha_t-1} $其中 $ n_z(t) $ 为文档中主题 $ \text{topic}_t $ 的频数。
因此有:
$ \mathcal L(\mathcal D_{new}) = \prod_{i=1}^n \hat\theta_{z_i,w_i}\times B(\vec\alpha)\prod_{t=1}^T\varphi_{t}^{n_z(t)+\alpha_t-1} \propto \prod_{i=1}^n \hat\theta_{z_i,w_i}\prod_{t=1}^T\varphi_{t}^{n_z(t)+\alpha_t-1} $由于 $ \text{topic}_{z_i} $ 取值空间有 $ T $ 个,则新文档中可能的主题组合有 $ T^n $ 种,因此最大似然 $ \max \mathcal L(\mathcal D_{new}) $ 计算量太大而无法进行。
有三种推断新文档主题分布的策略。假设训练文档集合为 $ \mathbb D_1 $ ,待推断的文档集合为 $ \mathbb D_2 $ ,二者的合集为 $ \mathbb D_{all} = \mathbb D_1\bigcup \mathbb D_2 $ 。
完全训练:
- 首先单独训练 $ \mathbb D_1 $ 到模型收敛。
- 然后加入 $ \mathbb D_2 $ ,并随机初始化新文档的主题,继续训练模型到收敛。
这种做法相当于用 $ \mathbb D_1 $ 的训练结果为 $ \mathbb D $ 的主题进行初始化( $ \mathbb D_2 $ 的部分仍然保持随机初始化)。其推理的准确性较高,但是计算成本非常高。
固定主题:
- 首先单独训练 $ \mathbb D_1 $ 到模型收敛。
- 然后加入 $ \mathbb D_2 $ ,并随机初始化新文档的主题,继续训练模型到收敛。训练过程中固定 $ \mathbb D_1 $ 的主题。
这种做法只需要在第二轮训练中更新 $ \mathbb D_2 $ 的主题。
固定单词:
- 首先单独训练 $ \mathbb D_1 $ 到模型收敛。
- 然后训练一篇新文档 $ \mathcal D_{new} $ 。训练过程中,使用训练集合 $ \mathbb D_1 $ 的主题-单词计数矩阵 $ \mathbf W $ 。
这种做法可以在线推断,它每次只处理一篇新文档(前面两个版本每次处理一批新文档)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论