使用tensorflow实现LDA(潜在dirichlet分配)的优势
我想用tensorflow实现LDA作为一种实践,我认为tensorflow版本可能具有以下优点:使用tensorflow实现LDA(潜在dirichlet分配)的优势,tensorflow,lda,Tensorflow,Lda,我想用tensorflow实现LDA作为一种实践,我认为tensorflow版本可能具有以下优点: 快。如果我可以使用内置的ops来表示采样过程 易于并行化。许多ops已经通过并行化优化实现,因此这种lda应该很容易在GPU或分布式集群上运行 更短更干净的代码。与许多其他模型一样,尤其是NNs,使用tensorflow构建此类模型所需的代码更少 在我检查了一些lda的python实现(例如)之后,我不知道可以使用什么样的tensorflow操作,应该构建什么样的图,应该选择什么样的优化器。因
- 快。如果我可以使用内置的ops来表示采样过程
- 易于并行化。许多ops已经通过并行化优化实现,因此这种lda应该很容易在GPU或分布式集群上运行
- 更短更干净的代码。与许多其他模型一样,尤其是NNs,使用tensorflow构建此类模型所需的代码更少
我是否可以将生成文档与实际输入文档的可能性作为优化目标,并利用梯度提升优化器最小化可能性的负值,从而得到alpha、beta和doc主题分布?因为如果这是可处理的,tensorflow肯定可以在这里使用。关于如何从系统中获益这一更广泛的问题,有许多相关的答案 对于TensorFlow中的潜在Dirichlet分配(LDA),我可以给出一个明确的答案。一个关键的好处是认识到LDA只是一个模型。给定此模型,以及以术语矩阵(例如,via)表示为文档的数据集,TensorFlow不仅可以执行可伸缩的推理,还可以执行非常灵活的推理。TF中使用的特定ops取决于特定的算法。您可以编写Gibbs采样器或坐标上升变分推理算法,这两种算法对于LDA都是高效的(可用于手动
tf.assign
ops对可训练变量)。CAVI在计算和内存方面都是高效的,并且可以通过高效的数据管道(如
使用TensorFlow,您还可以使用诸如黑盒变分推理之类的通用方法,这些方法非常通用,不需要手动
tf.assign
ops。一旦您编写的LDA能够很好地解决您的问题,您就可以通过多种方式扩展LDA,例如使用非共轭先验、层次先验和深度网络参数化(可能使用)。通用方法需要诸如TensorFlow优化器和TensorFlow的基于梯度优化的自动微分等工具。这些在Python中是不可用的,除非您演示跟踪工具,例如。我已经运行了这两个模型,所以我想我从实践中得到了一些想法。
LDA的输出是主题分布和单词分布,输入是文档中的单词。Word2Vec的输出是句子的向量表达式。在您的应用场景中,您的目标是推荐相似的主题,而不是句子的相似含义。例如,“我发现一只非常可爱的猫”,“我叔叔的猫很胖,我给它喂食物,我很满意。”这两句话有不同的意思,但这两句话的主题都是猫。
希望有帮助。LDA的输出是主题上的单词分布,Word2Vec的输出是短语(而不是句子)的向量表达式。可以找到一个用于Tensorflow概率的LDA实现