微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从加权分类分布中采样 Optuna 参数?

如何解决如何从加权分类分布中采样 Optuna 参数?

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

如果我这样做

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

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

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

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

编辑:

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

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

解决方法

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

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

没错。寻找行之有效的价值观不是您想做的事情吗?

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。