0

Hyperopt 提供了什么样的设置来调整探索与利用之间的平衡?代码中有“bandit”和“bandit_algo”之类的东西,但没有解释。

有人可以提供任何代码示例。

非常感谢您的帮助!

4

2 回答 2

3

我刚刚发现 hyperopt partial() 是优化器算法的神奇包装函数。它允许在不同的策略和 E/E 之间取得平衡:

部分返回随机选择的建议函数的结果。例如,有时使用随机搜索,有时使用退火,有时使用 tpe 进行搜索,请键入:

fmin(...,
algo=partial(mix.suggest,
p_suggest=[
(.1, rand.suggest),
(.2, anneal.suggest),
(.7, tpe.suggest),]),
)

参数“p_suggest”:(概率,建议)对列表。从其中一个建议功能中提出建议,与其相应的概率成比例。sum(probabilities) 必须 [接近] 1.0。

如果您想要更清晰地控制算法进程:您可以利用 hyperopt 优化器算法是无状态的这一事实,并返回可以作为输入提供给新 fmin 的试验对象以继续该过程。然后您可以使用 max_evals 为 1 调用 fmin 并在循环中处理该过程,因此您可以在每次迭代之间修改“试验”和“建议算法”。

于 2014-07-11T08:17:55.330 回答
2

最好的选择是阅读 Bergstra 等人的论文。人。1 23。我不是 100% 清楚 bandit_algo 是什么,除了其中一篇论文提到它是高斯过程和 Parzen 估计器树的替代方法 - 也许你可以像这两个一样使用它?

我的猜测是,如果没有记录,它可能还没有完成。你可以尝试在 Github 上提出问题——开发人员对我所见的反应相当敏感。

编辑:看这篇论文,这些强盗算法可能是其他人继承的基类。

于 2014-07-09T22:27:31.293 回答