gpt4 book ai didi

tensorflow - 用tensorflow实现LDA(latent dirichlet allocation)的优势

转载 作者:行者123 更新时间:2023-12-04 00:09:41 32 4
gpt4 key购买 nike

我想用tensorflow实现LDA作为实践,我认为tensorflow版本可能有以下优点:

  • 快。如果我可以使用内置的操作来表达采样过程。
  • 易于并行化。许多操作已经通过并行化优化实现,因此这个 lda 应该很容易在 gpus 或分布式集群上运行。
  • 更短更清晰的代码。与许多其他模型(尤其是神经网络)一样,使用 tensorflow 构建此类模型涉及的代码更少。

虽然我检查了 lda 的一些 python 实现(例如 https://github.com/ariddell/lda/ ),但我不知道可以使用哪些 tensorflow 操作,应该构建什么样的图以及我应该选择什么样的优化器。因为 gibbs 采样的过程看起来就像所有关于文档主题、主题词矩阵和主题计数表的逐元素更新。那么tensorflow可以做些什么来简化和优化这个过程呢?

我能否将生成的文档与真实输入文档的可能性视为优化目标,并利用梯度提升优化器来最小化可能性的负值,从而获得 alpha、beta 和 doc-topics 分布?因为如果这很容易处理,那么绝对可以在这里使用 TensorFlow。

最佳答案

关于如何 probabilistic programming 这个更广泛的问题有很多相关的答案。受益于 deep probabilistic programming系统。

对于 TensorFlow 中的 Latent Dirichlet Allocation (LDA),我可以给出一个明确的答案。一个关键的好处是认识到 LDA 只是一个模型。给定此模型和表示为逐项矩阵的数据集(例如,通过 tf.SparseTensor ),TensorFlow 让您不仅可以执行可扩展的推理,还可以执行非常灵活的推理。在 TF 中使用的具体操作取决于具体的算法。您可以编写 Gibbs 采样器或坐标上升变分推理算法——这两种算法对于 LDA 都非常高效(可与可训练变量上的手动 tf.assign 操作一起使用)。 CAVI 具有计算和内存效率,scaling to millions of documents并且可以通过高效的数据管道进行具体化,例如 tf.data .

借助 TensorFlow,您还可以使用通用方法,例如黑盒变分推理,这些方法非常通用,并且不需要手动 tf.assign 操作。一旦您编写了它以很好地解决您的问题,您就可以通过多种方式扩展 LDA,例如使用非共轭先验、分层先验和深度网络参数化(可能使用 tf.layers )。通用方法需要 TensorFlow 优化器和 TensorFlow 用于基于梯度的优化的自动微分等工具。这些在 Python 中不可用,除非您使用跟踪工具,例如 autograd .

关于tensorflow - 用tensorflow实现LDA(latent dirichlet allocation)的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37903444/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com