Ray----Tune(4):Tune 的搜索(Search)算法

本文详细介绍了Ray Tune中支持的各种超参数搜索算法,包括Grid Search、Random Search、BayesOpt、HyperOpt、SigOpt、Nevergrad、Scikit-Optimize和GeneticSearch,以及如何使用它们进行优化。每种算法都有其特点和使用方法,如BayesOpt基于贝叶斯优化,而HyperOpt则依赖于Tree-structured Parzen Estimators。此外,还讨论了如何自定义搜索算法API和基于模型的建议算法。
摘要由CSDN通过智能技术生成

Tune提供了很多有效的优化模型的超参搜索算法。Tune允许您结合使用不同的搜索算法和不同的试验调度程序。在默认情况下,Tune将隐式地使用Variant Generation算法来创建试验。
你可以利用这些搜索算法如下:

tune.run(my_function, search_alg=SearchAlgorithm(...))

目前,Tune提供了以下搜索算法(和库集成):

  • 1.Grid Search and Random Search(网格搜索和随机搜索)
  • 2.BayesOpt(贝叶斯优化)
  • 3,HyperOpt(超参优化)
  • 4.SigOpt
  • 5.Nevergrad
  • 6.Scikit-Optimize
  • 7.GeneticSearch
1.Grid Search and Random Search(网格搜索和随机搜索)

默认情况下,Tune使用默认的搜索空间和变量生成(Variant Generation)过程来创建和排队测试。这支持随机搜索和网格搜索作为tune.run的指定的config参数。

class ray.tune.suggest.BasicVariantGenerator(shuffle=False)

基础:ray.tune.suggest.search.SearchAlgorithm
使用Tune的变量生成(variant generation)去分析变量。
其他详情请看:ray.tune.suggest.variant_generator.
例子:

>>> searcher = BasicVariantGenerator()
>>> searcher.add_configurations({"experiment": { ... }})
>>> list_of_trials = searcher.next_trials()
>>> searcher.is_finished == True

注意,其他搜索算法不一定要扩展该类,可能需要与默认tune格式不同的搜索空间声明。

2.BayesOpt Search(贝叶斯优化搜索)

BayesOptSearch是一种由 bayesian-optimization包支持的搜索算法,用于执行 基于顺序模型的超参数优化 。注意,这个类没有扩展ray.tune.suggest。因此,在使用BayesOptSearch时,您将无法使用Tune的默认变量生成/搜索空间声明。
要用这个BayesOpt 搜索算法,首先需要通过命令安装 bayesian-optimization包:

pip install bayesian-optimization

该算法需要设置搜索空间和定义实用函数。你可以使用BayesOptSearch如下:

tune.run(... , search_alg=BayesOptSearch(bayesopt_space, utility_kwargs=utility_params, ... ))

一个例子可以在bayesopt_example.py中找到。

class ray.tune.suggest.bayesopt.BayesOptSearch(space, max_concurrent=10, reward_attr=‘episode_reward_mean’, utility_kwargs=None, random_state=1, verbose=0, **kwargs)

基础:ray.tune.suggest.suggestion.SuggestionAlgorithm
BayesOpt的一个包装器提供试验建议。

参数:
	space (dict) –连续的搜索空间。参数将从该空间取样,用于运行试验。
	max_concurrent (int) –最大同时试验次数。默认为10。
	reward_attr (str) –训练结果目标值属性。这指的是一个递增的值。
	utility_kwargs (dict) – 参数来定义实用函数。必须为键类型、kappa和xi提供值。
	random_state (int) –用于初始化BayesOpt。
	verbose (int) – 设置BayesOpt包的复杂级别。

例子:

>>> space = {
>>>     'width': (0, 20),
>>>     'height': (-100, 100),
>>> }
>>> algo = BayesOptSearch(
>>>     space, max_concurrent=4, reward_attr="neg_mean_loss")
3.HyperOpt Search (Tree-structured Parzen
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值