【问题标题】:Hyperopt Exploration/Exploitation strategyHyperopt 探索/开发策略
【发布时间】:2014-08-30 13:16:27
【问题描述】:

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

谁能提供任何代码示例。

非常感谢您的帮助!

【问题讨论】:

    标签: machine-learning optimization scikit-learn deep-learning hyperopt


    【解决方案1】:

    我刚刚发现 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 并在循环中处理该过程,因此您可以在每次迭代之间修改“试验”和“建议算法”。

    【讨论】:

      【解决方案2】:

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

      我的猜测是,如果它没有记录在案,它可能还没有完成。您可以尝试在 Github 上提出问题 - 根据我所见,开发人员的反应相当不错。

      编辑:看看this paper,这些强盗算法可能是其他算法继承自的基类。

      【讨论】:

      • 谢谢。你是对的:“优化算法应该继承自 BanditAlgo(或 TheanoBanditAlgo)”。现在我正在研究如何调整现有强盗算法的设置以调整 E/E,甚至自定义它以添加新的分支案例(我希望唯一的解决方案是不要修改建议()方法)。
      猜你喜欢
      • 2021-12-31
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 2010-11-27
      • 2013-07-25
      • 2012-12-22
      • 2011-07-06
      相关资源
      最近更新 更多