You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未指定目标函数时mlrMBO包如何实现超参数优化

mlrMBO调参逻辑问题解答

为什么无需手动定义目标函数

你不需要自行构建目标函数就能完成MBO调参,核心是mlr生态的tuneParams()函数已经自动完成了目标函数的封装:
你传入的learner(待调参模型)、task(训练任务)、resampling(交叉验证规则)、measures(评估指标)四个核心参数,已经让tuneParams()自动生成了MBO需要的黑盒优化目标:输入一组超参数,输出该超参数下模型交叉验证的评估结果。
默认优化你measures列表中排在第一位的指标,也就是你代码里的tpr(真正率),并非mlrMBO内置了固定的默认目标函数,这个自动生成的目标函数完全和你当前的调参需求绑定。

MBO与网格搜索的核心差异

两者的搜索逻辑完全不同:

  • 网格搜索:对你定义的超参数空间内所有可能的组合进行穷举测试,全部跑完后选出表现最好的组合。这种方式的局限性很明显:如果超参数数量多、步长设置细,组合数会指数级增长,算力消耗极高;且如果步长设置不合理,真实最优的超参数可能落在步长间隙中无法被搜索到。
  • MBO(基于模型的序贯优化,属于贝叶斯优化的一类):不会穷举所有组合,而是按「测试-拟合-选点」的序贯逻辑迭代搜索:
    • 先随机测试少量初始超参数组合,得到初始的「超参数-性能」对应数据集
    • 用代理模型(默认是高斯过程模型)拟合上述数据集,学习超参数和性能之间的映射关系
    • 用采集函数(默认是期望提升EI)计算当前所有未测试的组合中,最有可能带来性能提升的一组,进行实际测试
    • 把新测试的结果加入数据集,更新代理模型,重复上述流程直到达到停止条件
      这种搜索方式会把算力集中在更有可能出优解的参数区域,不需要遍历所有组合,同等算力下往往能得到比网格搜索更好的结果,离散超参数空间也可正常适配。
      如果你只是替换了控制函数其他参数不变的情况下MBO结果更好,本质就是MBO的搜索效率高于网格搜索,避开了很多无意义的低性能参数组合的测试,把评估次数用在了更优的参数区域。如果要严格对比两种调参方式的真实效果,建议在代码开头设置固定随机种子,排除交叉验证数据切分的随机性干扰。

内容的提问来源于stack exchange,提问作者S J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:39:04