问题标签 [optuna]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
730 浏览

python - xgboost 的 alpha、lambda 和 gamma 正则化参数有什么区别?

我有一个问题要问:

xgboost 算法中权重的 L1 和 L2 正则化项究竟有何不同。

据我了解,LASSO使用L1,RIDGE回归使用L2,L1可以缩小到0,L2不能。我了解使用简单线性回归时的机制,但我不知道它在基于树的模型中是如何工作的。

此外,gamma 是另一个参数,它使模型更加保守。我应该如何注意 L1/L2 和 gamma 参数之间的区别。

我在文档中发现这个问题很少:

lambda [默认=1,别名:reg_lambda]

  • 权重的 L2 正则化项。增加此值将使模型更加保守。

alpha [默认=0,别名:reg_alpha]

  • 权重的 L1 正则化项。增加此值将使模型更加保守。

gamma [默认=0,别名:min_split_loss]

  • 在树的叶节点上进行进一步分区所需的最小损失减少。gamma越大,算法就越保守。

它们的范围都是从 0 到 inf。

提前感谢您的任何回答/评论!

0 投票
1 回答
62 浏览

python - 基于准确性优化超参数的正确方法

我正在使用 optunta + catboost 来优化和训练一些增强的树。我想知道优化我的超参数以最大化准确性(而不是最小化对数损失)的正确方法。

目前我的代码是:

这是否是调整超参数以最大化准确性而不是最小化对数损失的正确方法?

0 投票
0 回答
272 浏览

python - 在 colab 单元执行后持续存在的内存泄漏

我遇到了微妙的内存泄漏,无法使用tracemalloc确定源。我在 google colab 中运行以下代码,旨在优化自定义ppo代理的超参数。此外,泄漏发生的速度也各不相同:有时它会在运行时的 10-20 分钟/5-10 次迭代内发生,而其他时候可能需要 50 次迭代/几个小时。这是一个包含完整代码的 colab笔记本。

这就是我运行的:

这会导致内存迅速膨胀,直到会话崩溃。

崩溃前

如果我在单元崩溃之前停止它,内存问题会一直存在,直到运行时重新启动。

膨胀的记忆持续存在

以下是崩溃前 15 次连续迭代产生的内存快照,它们没有显示任何特定的危险信号。此外,通过总结size最近快照的列,总共有 967249710 字节 ~= 1GB,这很奇怪,因为 colab 上的可用内存 ~= 12GB。以下是前 23 个回溯:

追溯

这是崩溃日志之一:

0 投票
1 回答
140 浏览

optuna - 如何从加权分类分布中采样 Optuna 参数?

我有一个非常复杂的树结构搜索空间。在顶层,我需要做出分类选择——探索哪个参数子空间。举个简单的例子,你可以想象我需要在使用线性回归、SVM 或某些神经网络之间做出决定。每个子空间的大小都大不相同,我希望 Optuna 采样器(我正在考虑使用 TPESampler)花更多时间探索更大的空间。

如果我做

和分支取决于这里选择的内容,我将探索比我想要的更多的小子空间。从概念上讲,如果我可以为每个类别传递一个weight,它将解决我的问题。

我可以想象要求一个随机浮点数并将其映射到正确的类别,但它有一些明显的问题,包括:查看结果更难;采样器实际上并不知道它是一个分类空间(例如靠近的浮点数将代表完全不同的类别)。

在这个简单的例子中,TPESampler 可能会发现哪个“network_type”效果好并更频繁地选择它。在我的实际用例中,我有一千多个类别。

编辑:

我很高兴了解人们的经验,即 Optuna 在没有太多先验的情况下运行良好。我想这是非常依赖问题的。当搜索空间是高度结构化的具有 O(1000) 基数的多个分支时,即使从每个叶子空间中获取一个样本也可能非常困难。

可能没有自动调谐器可以解决我的问题,但我仍然希望知道实际问题的答案。有人能以某种方式“指导” optuna 在分类分布中的选择吗?

0 投票
1 回答
149 浏览

python - 可以用纯python构造一个.jsonnet文件吗

我使用.jsonnet文件作为AllenNLP模型配置的模板

我使用Optuna包搜索超参数空间,并在每个步骤中使用建议的超参数作为extVars 评估该模板。然后我训练一个模型并将其保存到档案中。

问题是,除了超参数之外,我的配置的某些部分还包括相对于变量的.jsonnet文件路径(我的包内的一个目录)。extVar这些文件路径也被渲染,最后我的 . 中有绝对路径model.tar.gz,这是错误的,因为它们甚至可能不存在于加载该存档的机器上

.jsonnet:

渲染的.json:

所以我想保存原始路径表达式并在加载时提供环境变量,但我还没有找到在python中序列化.jsonnet文件的方法,只有.json

0 投票
1 回答
54 浏览

python - 使用 Optuna 进行微调时使超参数加起来为 1

我有一个看起来像这样的函数:

这个函数的问题是 h1+h2+h3 != 1。我将如何更改此函数以使超参数的总和 = 1?

0 投票
1 回答
308 浏览

python - 使用 optuna 对 huggingface 进行超参数搜索失败并出现 wandb 错误

我正在使用这个简单的脚本,使用示例博客文章。但是,它失败了,因为wandb. 使wandb离线也没有用。

Trail 0成功完成,但下一次Trail 1崩溃并出现以下错误:

非常感谢任何帮助。

0 投票
1 回答
403 浏览

optuna - 为什么 Optuna 在经过一定次数的试验后会卡住

我正在尝试使用Optuna. 数据集是MovieLense(1M)。在一个脚本中,我有Lasso,RidgeKnn. Optuna 在 Lasso 和 Ridge 上运行良好,但在 Knn 上却卡住了。

您可以在 中看到 Ridge 模型调整的试验2021-07-22 18:33:53。后来为 Knn 创建了一项新研究2021-07-22 18:33:53。现在(在发布时)它是2021-07-23 11:07:48,但没有试用Knn.  

SVR模型也发生了同样的事情(您可以在 84 号试用后看到 optuna 卡住2021-07-23 05:13:40

你能告诉我为什么 Optuna 卡住了,我该如何解决这些问题?

环境

  • Optuna 版本:2.8.0
  • Python版本:3.8
  • 操作系统:Linux CentOS 7
  • (可选)其他库及其版本:Scikit Learn、Pandas 和(最常见的库)

可重现的例子

我用于超调的代码

0 投票
1 回答
188 浏览

optuna - 当 Optuna 找到新的最佳参数时“做点什么”

我有一个神经网络,我在其中使用 Optuna 来查找一些最佳超参数,例如批量大小等。

当 Optuna 找到新的最佳参数组合时,我想保存网络参数。

我尝试了以下两种方法:

它失败了,UnboundLocalError: local variable 'SCORE' referenced before assignment但如果我SCORE=0在顶部的函数内移动,它会在每次试验时重置。

我想立即保存权重,而不是在study.best_params最后进行另一次训练的原因是,有时权重的随机初始化会产生影响并给出更高的分数(尽管如果训练是稳健的,它不应该有所作为)-但这不是重点/问题。

0 投票
1 回答
2247 浏览

xgboost - 与目标“binary:logistic”一起使用的默认评估指标从“error”更改为“logloss”

在使用 optuna 进行超参数调整后,我正在尝试将 XGBClassifier 拟合到我的数据集,但我不断收到此警告:

与目标“binary:logistic”一起使用的默认评估指标从“error”更改为“logloss”

下面是我的代码:

但是,如果我使用 Optuna 然后拟合获得的参数,它会给我警告。下面是代码:

完整的警告是:

从 XGBoost 1.3.0 开始,与目标“binary:logistic”一起使用的默认评估指标从“error”更改为“logloss”。如果您想恢复旧行为,请显式设置 eval_metric。

我想MSE作为我选择的指标。