半监督主题模型Correlation Explanation
Correlation Explanation是一种分析变量相关性的方法,可用于包含离散变量的任意数据(作者似乎把连续数据的模型也弄出来了,详细可参考作者的Github)。Correlation Explanation的基本原理是,假设变量 Y Y Y能对变量 X X X很好地进行“解释”,即变量 Y Y Y与 X X X强相关,那么 X X X应该具有较低的不确定性,而对解释程度的量化是使用熵来描述的。
换个思路理解这个原理,有点像使用 Y Y Y去对 X X X进行聚类(对特征聚类而不是对数据聚类),假设 X X X有 N N N个维度,我们现在想用 M M M个 Y Y Y去“解释” X X X,当 X i X_i Xi分配合理时,每个 Y j Y_j Yj应该包含若干个 X i X_i Xi,且每个 Y j Y_j Yj内的 X i X_i Xi达到较高相关度解释。
把这个思路对应到NLP中,就是做文本聚类/主题模型了,但也有点不一样,这里应该是对词/Token做聚类,文档的主题分布反而是副产品。
至于为什么是半监督,是因为建模的过程中引入了一个选择主题的变量 α i , j \alpha_{i, j} αi,j,可以在优化时固定某些值,即事先设定一些主题的Anchor词,优化后可以把相关的其他词聚在一起。
模型使用熵去描述目标函数,使用Lagrange乘子法优化,优化的过程类似EM过程或者坐标上升法,原理上比起Bayesian相关的Gibbs采样、Variational Inference,要简单一些。但是也由于这个模型需要信息论相关的知识体系(比如信息瓶颈之类的),在当前机器学习社区里面讨论的不多,造成原文理解起来有一定难度,所以这里就作一些浅显的解读。
信息论基础
随机变量 X X X的熵为:
H ( X ) = − ∑ X p ( x ) ⋅ log ( p ( x ) ) H(X) = -\sum_{X}{p(x) \cdot \text{log}(p(x))} H(X)=−X∑p(x)⋅log(p(x))
两个随机变量的互信息为:
I ( X 1 : X 2 ) = H ( X 1 ) + H ( X 2 ) − H ( X 1 , X 2 ) I(X_1: X_2) = H(X_1) + H(X_2) - H(X_1, X_2) I(X1:X2)=H(X1)+H(X2)−H(X1,X2)
定义Total Correlation:
T C ( X G ) = ∑ i ∈ G H ( X i ) − H ( X G ) {TC}(X_G) = \sum_{i \in G}{H(X_i)} - H(X_G) TC(XG)=i∈G∑H(Xi)−H(XG)
其中 G G G是 X X X的一个子集,直观来看就是子集中每一个随机变量熵之和减去子集的联合熵,当 G G G中只有两个变量时, T C TC TC等价于两个变量的互信息。也就是说 T C TC TC描述了集合中变量间的依赖程度。使用KL散度去理解可能会更加清晰:
T C ( X G ) = ∑ i ∈ G H ( X i ) − H ( X G ) = ∑ i ∈ G l o g ( p ( x i ) ) ( ∫ j ≠ i p ( x G ) d x j ) d x i − H ( X G ) = ∫ x G p ( x G ) l o g ( p ( x G ) ∏ i ∈ G p ( x i ) ) d x G = D K L ( p ( x G ) ∥ ∏ i ∈ G p ( x i ) ) (6) \begin{array}{rcl} TC(X_G) & = & \sum\limits_{i \in G} H(X_i) - H(X_G) \\ & = & \sum\limits_{i \in G} log\big( p(x_i) \big) \big( \int\limits_{j \neq i} p(x_G)d{x_j} \big) d{x_i} - H(X_G) \\ & = & \int\limits_{x_G} p(x_G)log\big( \frac{p(x_G)}{\prod\limits_{i \in G} p(x_i)} \big) d{x_G} \\ & = & D_{KL}\bigg( p(x_G) \| \prod\limits_{i \in G}p(x_i) \bigg) \end{array} \tag{6} TC(XG)====i∈G∑H(Xi)−H(XG)i∈G∑log(p(xi))(j=i∫p(xG)dxj)dxi−H(XG)xG∫p(xG)log(i∈G∏p(xi)p(xG))dx