【问题标题】:Mallet Hyperparameter optimizationMallet 超参数优化
【发布时间】:2018-08-30 14:22:33
【问题描述】:

在 mallet 中训练主题模型时,可以通过 --optimize-interval [INTEGER] 函数在推理过程中学习超参数。我对此功能有以下疑问:

  1. 学习了哪些参数? alpha 和 beta 是同时学习的还是只学习其中之一?如果是,是哪一个?

  2. -use-symmetric-alpha 函数背后的原理是什么? mallet 中的帮助说:“......仅优化先验文档主题分布的浓度参数......”。但是文档主题分布的先验是 alpha,不是吗?因此,该命令应命名为-use-symmetric-beta,并遵循帮助。还是只是帮助文本中有错误?此外,据我了解的文献(参见例如 Wallach et al. (2009): Rethinking LDA: Why Priors Matter),非对称先验仅对文档主题分布有利,对主题词分布没有好处。 Alpha 是文档主题分布的狄利克雷先验。接下来我不明白-use-symmetric-alpha函数的意义。

  3. mallet 是否有可能只学习文档主题分布的先验?

感谢您的帮助。

【问题讨论】:

    标签: mallet


    【解决方案1】:

    我也为这个参数和误导性的帮助文本而苦恼。 因此,我只是简单地测试了一下,比较了不同的日志输出,最终搜索了源代码并打开了PR,它给我带来了以下问题的答案:

    学习了哪些参数? alpha 和 beta 是同时学习的还是只学习其中之一?如果是,是哪一个?

    这取决于。使用default settings,不会学习任何参数,因为--optimize-interval 为 0。这意味着 alpha(⚠️ 实际上是所有 alpha 先验的总和)保持不变,即 alpha_k = 5.0 / num-topics。 Beta 默认为 0.01。 因此,alpha 和 beta 都是对称的 Dirichlet 先验。 (尽管 alpha 参数已正确记录,但当您习惯使用 gensim 指定 alpha 而不是 alphaSum 时,它仍然会产生误导。)

    如果您为参数 --optimize-interval 提供大于 0 的值(以及注意 --num-iterations(默认值:1000)和 --optimize-burn-in(默认值:200)),则启用超参数优化阿尔法和贝塔。 因此,alpha 和 beta 都是从数据中学习到的优化 Dirichlet 先验。 但是,alpha 是作为不对称先验学习的,而 beta 始终是对称先验(即使 concentration parameter 已优化)。

    如果您还设置了--use-symmetric-alpha True,则不仅优化了beta,还优化了alpha,但是您最终会得到一个对称的alpha先验(通过参数--alpha传递的初始值)和一个a根据--beta 传递的初始对称先验从数据中学习的对称 beta 先验。等等,什么!?不意味着超参数优化alpha 学习不对称先验?不是这种情况。最初通过的对称先验,准确地说是concentration parameter,还可以进一步优化以更好地拟合数据。

    --use-symmetric-alpha 函数背后的原理是什么?

    说实话,我不知道。我只观察到上述行为。 也许对于某些数据集,优化但仍然对称的alpha 先验可能更有意义,尽管Wallach et al. 不建议这样做

    我之前错误地假设如果设置了--optimize-interval,则为 beta 学习了不对称先验。如here所示,情况并非如此。

    mallet 中的帮助说:“...只优化浓度 文档主题分布的先验参数...”。但是 文档主题分布的先验是 alpha,不是吗?

    你是对的。 Alpha 是文档-主题分布的先验,而 Beta 是主题-词分布的先验。

    所以命令应该在帮助之后命名为--use-symmetric-beta。还是只是帮助文本中有错误?

    确实是帮助文本中的mistake 帮助文本也不包含错误,命令名称也不应更改。如果没有更多关于 Dirichlet 分布的背景知识,很难理解这个选项究竟做了什么。 对于出现同样误解的相关问题,我推荐以下slides by H. Wallachthis excellent explanation

    不存在的选项 --use-symmetric-beta 未实现,因为 beta 在 Mallet 中始终是对称的

    此外,据我了解的文献(参见例如 Wallach et al. (2009): Rethinking LDA: Why Priors Matter)不对称先验仅对文档主题分布有利,对主题词没有任何好处分配。 Alpha 是文档主题分布的 Dirichlet 先验。接下来我不明白--use-symmetric-alpha函数的意义。

    我完全同意你的看法。参数--use-symmetric-beta 会更有意义(根据我的有限理解)。 Wallach et al. 声明主题词分布的不对称先验没有提供真正的好处。 这正是 Mallet 只使用对称 beta 先验的原因。 尽管如此,如果 --optimize-interval 大于 0,β Dirichlet 之前的,更准确地说是 concentration parameter,将进一步 optimizedWallach et al. 回答为什么应该使用非对称 alpha 先验而不是对称先验的问题。

    此外,帮助文本解释了使用--use-symmetric-alpha的后果如下:

    这可能会减少非常小的、估计不佳的主题的数量,但可能会将常用词分散到多个主题中。

    经验教训: 你不能(总是)相信帮助文本。它们可能具有误导性或假设某些背景知识会导致误解。如果您无法理解文档,请搜索代码。 源代码从不撒谎​​。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2020-07-31
      • 1970-01-01
      • 2020-06-05
      • 2017-10-30
      • 2018-09-28
      相关资源
      最近更新 更多