我需要为我的最新研究项目进行参数优化。我有一个算法,它目前有 5 个参数(四个双精度 [0,1] 和一个标称值,有 3 个值)。该算法使用这些参数来计算一些东西,然后我计算精度、召回率和 FMeasure。单次运行大约需要 1.8 秒。目前我正在以 0.1 步长遍历每个参数,这向我展示了全局最大值的大致位置。但我想找到精确的全局最大值。我研究了梯度下降,但我真的不知道如何将其应用于我的算法(如果可能的话)。任何人都可以指导我如何实现这样的算法,因为我对这种工作很陌生。
干杯,丹尼尔
我需要为我的最新研究项目进行参数优化。我有一个算法,它目前有 5 个参数(四个双精度 [0,1] 和一个标称值,有 3 个值)。该算法使用这些参数来计算一些东西,然后我计算精度、召回率和 FMeasure。单次运行大约需要 1.8 秒。目前我正在以 0.1 步长遍历每个参数,这向我展示了全局最大值的大致位置。但我想找到精确的全局最大值。我研究了梯度下降,但我真的不知道如何将其应用于我的算法(如果可能的话)。任何人都可以指导我如何实现这样的算法,因为我对这种工作很陌生。
干杯,丹尼尔
您当然可以比网格搜索做得更好。
在应用梯度下降等算法之前,您必须确保您的参数空间不包含局部最大值,或者至少您的起点接近全局最大值,并且您的步长足够适合您。
在您的情况下,我建议您从尽可能多的随机样本开始。这是一种比网格搜索更好的探索参数空间的方法。一旦以这种方式收集了足够的数据,您就可以使用模式查找算法,例如均值偏移或其更快的导数之一,或者直接进行优化。由于您没有参数空间的雅可比行列式,您可以使用迭代逼近它的Broyden 方法或割线方法,例如BFGS。
另外,请参阅此相关问题:如何以有效的方式调整图像处理算法的参数?