ludwig [Hyperopt] 评估结果未在调优中呈现

4nkexdtk  于 2个月前  发布在  其他
关注(0)|答案(3)|浏览(22)

背景

我曾在一个特定试验的日志中看到过一个较高的AUROC(> 0.8),如图屏幕截图1所示,但在Hyperopt实验的整体摘要中,较高的AUROC并未被复制(如图屏幕截图2所示)。请注意,这两个屏幕截图来自一个单独的实验,我只是想把它们加进来作为例子。

发现

  • 根据hyperopt的总体“最佳试验”,具有最高AUC为0.79912。深入研究此试验的训练统计数据,所有评估(包括验证和测试)都小于0.8
  • 我深入研究了所有试验的训练统计数据,并实际上确实找到了AUROC > 0.8的试验。我看到的最高的val AUROC是0.80087。然而,这个试验的hyperopt统计数据中没有列出这个AUROC,而且这个试验的“最佳报告”指标是0.797168。
  • 用于选择最佳试验以及整体摘要中报告的指标是Val AUROC
  • 对于实际的最佳试验,测试和验证的AUROC都大于0.8

屏幕截图1

屏幕截图2

ncgqoxb0

ncgqoxb01#

@ShreyaR 我开始调查这个问题。为了测试,我使用了一个相当于100MB的数据集,并用8个试验运行了hyperopt。到目前为止,我没有看到这个问题出现,并且一直在监控每个试验的评估日志以及整体最佳试验。有什么办法可以重新创建这个问题吗?

在玩的过程中,我注意到了一些事情:
如果目标设置为最小化,当值变得太小时,似乎不会选择最小的值。要重现这个问题,请在 test_hyperopt.py 中运行 test_hyperopt_run_hyperopt ,并进行3个epoch,直到损失值变得非常小(几乎为0)。你以前见过这种情况吗?

我最初认为这可能是由于位溢出引起的,但 metric_score 的类型是 float64 ,所以我怀疑这不是原因。如果我理解正确的话,这个输出是由 tune.run() 根据日志详细程度自动创建的,所以不确定Ray Tune中是否有错误或导致这种行为的原因,因为这就是返回ExperimentAnalysis和打印状态消息的地方。

8wigbo56

8wigbo562#

@arnavgarg1 这是一个有趣的发现,似乎可能是tune的问题。它是由ray.tune()维护的总体试验状态,并根据报告的指标选择最佳试验。
关于无法复现问题——这并不意外。在我训练了4-5小时后,在一个非常大的规模数据集上观察到了这个问题。
在能够复现这个问题之前,推迟运行实验是有道理的。直到我们能够获得更经济实惠的GPU来运行实验,才能复现这个问题。

kcrjzv8t

kcrjzv8t3#

ray-project/ray#26943中修复了@arnavgarg1发现的问题。
下一步:在大型数据集上运行长时间的超参数优化实验,并尝试重现该问题。

相关问题