【问题标题】:How to sample an Optuna parameter from a weighted categorical distribution?如何从加权分类分布中采样 Optuna 参数?
【发布时间】:2021-09-21 21:39:33
【问题描述】:

我有一个非常复杂的树状结构搜索空间。在顶层,我需要做出分类选择——要探索哪个参数子空间。举个简单的例子,你可以想象我需要在使用线性回归、SVM 还是某些神经网络之间做出决定。每个子空间的大小都大不相同,我希望 Optuna 采样器(我正在考虑使用 TPESampler)花更多时间探索更大的空间。

如果我这样做

  trial.suggest_categorical("network_type", ["linear", "svm", "nn"])

和分支取决于这里选择的内容,我将探索比我想要的更多的小子空间。从概念上讲,如果我可以为每个类别传递一个weight,它将解决我的问题。

我可以想象要求一个随机浮点数并将其映射到正确的类别,但它有一些明显的问题,包括:查看结果更难;采样器实际上并不知道它是一个分类空间(例如,靠近的浮点数将代表完全不同的类别)。

在这个简单的示例中,TPESampler 可能会发现哪个“network_type”效果好,并更频繁地选择它。在我的实际用例中,我有一千多个类别。

编辑:

我很高兴了解人们的经验,即 Optuna 在没有太多先验的情况下运行良好。我想这是非常依赖问题的。当搜索空间高度结构化且具有多个 O(1000) 基数的分支时,即使从每个叶子空间中获取一个样本也可能非常困难。

可能没有自动调谐器可以解决我的问题,但我仍然希望知道实际问题的答案。有人能以某种方式“指导”optuna 在分类分布中的选择吗?

【问题讨论】:

    标签: optuna


    【解决方案1】:

    感觉就像您在尝试第二次猜测黑盒优化器。我建议让 Optuna 学习空间并寻找有希望的答案。

    在这个简单的示例中,TPESampler 可能会发现哪个“network_type”效果好并更频繁地选择它。

    没错。找到行之有效的值不是您想要做的吗?

    就个人而言,我尝试使用可视化来“帮助”Optuna 并手动减少搜索空间。一般来说,当我可以看到更好的搜索区域时,我发现 TPE 已经知道它们,所以只要让 Optuna 运行,我就会得到更快的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-12
      • 2020-04-28
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多