【发布时间】:2014-08-30 13:16:27
【问题描述】:
Hyperopt 提供了什么样的设置来调整探索与利用之间的平衡?代码中有“bandit”和“bandit_algo”之类的东西,但没有解释。
谁能提供任何代码示例。
非常感谢您的帮助!
【问题讨论】:
标签: machine-learning optimization scikit-learn deep-learning hyperopt
Hyperopt 提供了什么样的设置来调整探索与利用之间的平衡?代码中有“bandit”和“bandit_algo”之类的东西,但没有解释。
谁能提供任何代码示例。
非常感谢您的帮助!
【问题讨论】:
标签: machine-learning optimization scikit-learn deep-learning hyperopt
我刚刚发现 hyperopt partial() 是优化器算法的神奇包装函数。它允许在不同策略之间取得平衡,然后是 E/E:
Partial 返回随机选择的建议函数的结果。例如,有时使用随机搜索,有时使用退火,有时使用 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 并在循环中处理该过程,因此您可以在每次迭代之间修改“试验”和“建议算法”。
【讨论】:
最好的选择是阅读 Bergstra 等人的论文。人。 12 和 3。我不是 100% 清楚 bandit_algo 是什么,除了其中一篇论文提到它是高斯过程和 Parzen 估计器树的替代方法 - 也许你可以像这两个一样使用它?
我的猜测是,如果它没有记录在案,它可能还没有完成。您可以尝试在 Github 上提出问题 - 根据我所见,开发人员的反应相当不错。
编辑:看看this paper,这些强盗算法可能是其他算法继承自的基类。
【讨论】: