浅析机器学习的主题模型和语义分析
下面和大家分享下机器学习中LDA主题模型的心得,首先从大体上来说假设有400篇文档,每一篇文档后面都m个主题,可以是 医学,教育,军事。。 那么对这400篇文档我们提取出它的词库,假设一共有L个词
那么每一个主题后面都对应着一个词库,我们可以理解为每一个主题后面都对应着L维的一个词分布。好的接下来我们拿到一篇文档,它后面有个主题分布是m维的,那么我们从这m维的主题分布中根据分布选出一个主题,然后这个主题背后又有一个L维的词库分布,再从这个词库分布中选出一个词。然后不断地迭代,这就是LDA总体在干的事情。总体看上去好像不难,不过具体讨论到各个主题分布,以及相应的词分布时可能就有点绕了,LZ也是花了一些力气才把它理解
那么接下来我们先讨论一个叫做beta分布东西,那么对它进行一个高维推广就是一个狄利克雷分布,这个分布,有了这两个东西,其实说白了,主题分布就一个狄利克雷(简记为dir)分布乘上一个多项分布,根据共轭分布,所以就得到一个新的狄利克雷分布,这个dir分布那么他有个参数alpha需要调参,当这个参数大于1,那么一篇文档的主题就越不明显,如果这参数小于1,那么这篇文档的主题就更加突出。接下来我们对于词分布做同样的事情,每一个词都是一个参数为alpha2的dir分布,好了那么主题分布有了,关于我们文档主题的个数m和主题分布alpha和alpha2需要自己调参的,根据实际情况。
好了那么词分布有了,主题分布有了,我们就能做开头说的事情了,对于一篇文档,更加dir的主题分布选出主题,再根据主题后面的词分布选出词,那么我们就能选出这个主题在这篇文档中的词,或者这个词的主题关于其中的公式推动请允许LZ偷个懒(哈哈哈)很多文献中都有相关推导,其实是LZ找不到文档了
接下来我们说gibbs采样,其实也可以说得很简单,就是假如一篇文档中有诺干个词,那么我们把其中一个词去掉z,然后看其他词对于主题分布,那么我们就能求在去掉z词之后词z的主题分布,然后从这个分布中根据概率选出一个主题,这就是这个词的主题。