首页 > 解决方案 > 使用 Optuna 进行微调时使超参数加起来为 1

问题描述

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

def fine_tuning(x,y,model1,model2,model3,trial):
   pred1 = model1.predict(x)
   pred2 = model2.predict(x)
   pred3 = model3.predict(x)
   
   h1 = trial.suggest_float('h1', 0.0001, 1, log = True)
   h2 = trial.suggest_float('h1', 0.0001, 1, log = True)
   h3 = trial.suggest_float('h1', 0.0001, 1, log = True)

   pred = pred1 * h1 + pred2 * h2 + pred3 * h3

   return mean_absolute_error(y, pred)

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

标签: pythonscikit-learnhyperoptoptuna

解决方案


基本上,您正在寻找 h1、2、3 的 dirichlet 分布。以下是有关如何为 Optuna 实现该分布的指南:https ://optuna.readthedocs.io/en/latest/faq.html#how-do-我建议变量代表符合狄利克雷分布的比例


推荐阅读