问题 Pytorch模型的超参数优化


为Pytorch模型执行超参数优化的最佳方法是什么?实施例如随机搜索自己?使用Skicit Learn?或者还有其他我不知道的事情?


2764
2018-05-30 10:51


起源

-1的原因是什么? - Alex


答案:


进行黑盒优化的最简单的无参数方法是随机搜索,它将比网格搜索更快地探索高维空间。有关于此的论文,但是tl; dr随机搜索每次都会在每个维度上获得不同的值,而使用网格搜索则不会。

贝叶斯优化 有很好的理论保证(尽管有近似值),像Spearmint这样的实现可以包装你拥有的任何脚本;有超参数,但用户在实践中看不到它们。通过显示比朴素贝叶斯优化更快的收敛,Hyperband得到了很多关注。它能够通过针对不同的迭代次数运行不同的网络来实现这一点,并且贝叶斯优化不能天真地支持它。虽然贝叶斯优化算法可以做得更好,可以考虑到这一点,例如 FABOLAS实际上,超频带是如此简单,你可能更好地使用它并观察它以间隔调整搜索空间。


5
2017-08-01 14:59





您可以使用 贝叶斯优化 (完全披露,我已经为这个包做出了贡献)或 超高频带。这两种方法都试图自动化超参数调整阶段。据称,Hyperband是这个领域的最新技术。超频带是我听说过的除随机搜索之外的唯一无参数方法。如果您愿意,您还可以考虑使用强化学习来学习最佳超参数。


4
2018-06-03 22:50





正如@jmancuso所提到的,我在HyperBand上取得了非常好的成绩。

您可以在中找到此算法的实现 。它是用于超参数调整的可扩展框架/工具,专门用于深度学习。

它还允许您在有效的搜索算法之间切换(即, HyperOpt/ TPE和HyperBand)在大约10行Python中。

import ray
from ray import tune

def train_tf_model(config, tune_reporter):  # 1 new arg for reporting results
    # ... train here ....
    # ... train here ....
    # ... train here ....
    pass

ray.init()

tune.run_experiments({
    "my_experiment": {
        "run": train_tf_model,
        "stop": { "mean_accuracy": 100 },
        "config": {
            "alpha": tune.grid_search([0.2, 0.4, 0.6]),
            "beta": tune.grid_search([1, 2]),
        }}})

(免责声明:我积极参与这个项目!)


4
2018-04-07 07:47