lda - Gibbs 采样迭代次数如何影响潜在 Dirichlet 分配?
问题描述
MALLET的文档提到以下内容:
--num-iterations [NUMBER]
采样迭代的次数应该是完成采样所花费的时间和主题模型的质量之间的权衡。
MALLET 还提供了一个示例:
// Run the model for 50 iterations and stop (this is for testing only,
// for real applications, use 1000 to 2000 iterations)
model.setNumIterations(50);
很明显,太少的迭代会导致糟糕的主题模型。
然而,增加 Gibbs 采样迭代的数量是否必然有益于主题模型的质量(通过困惑度、主题连贯性或下游任务来衡量)?或者模型质量是否会随着--num-iterations
设置的太高而降低?
在个人项目中,平均超过 10 倍的交叉验证将迭代次数从 100 增加到 1000 不会影响下游任务的平均准确度(测量为平均倒数等级)。然而,在交叉验证拆分中,性能发生了显着变化,尽管随机种子是固定的并且所有其他参数保持不变。我缺少关于吉布斯抽样的哪一部分背景知识来解释这种行为?
我在没有超参数优化和 MALLET 提供的并行 LDA 实现的情况下对 alpha 和 beta 使用对称先验。
解决方案
1000 次迭代设置被设计为对于大多数集合大小来说是一个安全的数字,并且还用于传达“这是一个很大的整数,所以不要认为它非常精确”。较小的数字可能会很好。我曾经运行一个模型进行 1000000 次迭代,并且完全有一半的令牌分配从未改变过 1000 次迭代模型。
您能否更具体地了解交叉验证结果?是不是不同的折叠有不同的 MRR,它们在迭代次数上是单独稳定的?或者单个折叠 MRR 因迭代次数而异,但它们在整体平均值上是平衡的?不同的折叠有不同的“难度”并不罕见。如果数据不同,修复随机种子也不会产生影响。
推荐阅读
- bash - 使用执行命令但继续运行的 bash 脚本运行 cmder/conemu 任务
- spring-boot - 在 Centos7 中为 docker 内的 Spring Boot 应用程序安装证书
- python - Python Selenium 无法从类名找到的元素中获取属性
- git - 在 mac 上将 rsa 主机密钥添加到 known_hosts
- google-apps-script - 在 RE2 中替换为小写
- kinect - 计算图 slam 的信息矩阵
- reactjs - 使用rest api将我的react js中的个人资料图片上传到我的django服务器时遇到问题,我使用cloudinary来存储我所有的图片上传
- c# - C# Winform 应用程序中的阿拉伯语日历(阿拉伯语 Datetimepicker)
- asp.net-core - wsl2 arch linux (dotnet run) 不工作。路径问题 #19169
- php - 获取 TransactionID 并加入数组