很抱歉,如果这是重复的话。
我有一个两级预测模型;它有n
个可配置(数字)参数。如果正确调整这些参数,该模型可以很好地工作,但很难找到这些参数的具体值。我使用网格搜索(例如,为每个参数提供m
值)。这需要学习m ^ n
次,即使在具有24个内核的计算机上并行运行,也非常耗时。
我尝试修复所有参数,只修改一个参数并仅更改一个参数(产生m × n
次),但对于我如何处理我得到的结果并不明显。这是负(红色)和正(蓝色)样本的精度(三角形)和召回(点)的示例图:
简单地选择"冠军"以这种方式获得的每个参数的值并且将它们组合不会导致最佳(或甚至好的)预测结果。我考虑在精度/召回作为因变量的参数集上建立回归,但我不认为具有超过5个自变量的回归将比网格搜索场景快得多。
您建议找到好的参数值,但估算时间合理吗?对不起,如果这有一些明显(或记录良好)的答案。
答案 0 :(得分:2)
我会使用随机网格搜索(为您认为合理的给定范围内的每个参数选择随机值并评估每个随机选择的配置),只要您能负担就可以运行。 This paper运行了一些实验,证明这至少与网格搜索一样好:
网格搜索和手动搜索是最广泛使用的超参数优化策略。 本文从经验和理论上证明随机选择的试验更有效 用于超参数优化而不是网格上的试验。经验证据来自比较 以前的大型研究使用网格搜索和手动搜索来配置神经网络 和深刻的信仰网络。与纯网格搜索配置的神经网络相比, 我们发现在同一个域上的随机搜索能够找到同样好或更好的模型 在计算时间的一小部分内。
对于它的价值,我使用scikit-learn's random grid search来解决需要为文本分类任务优化大约10个超参数的问题,只有大约1000次迭代才能获得非常好的结果。
答案 1 :(得分:1)
我建议Simplex Algorithm with Simulated Annealing:
使用起来非常简单。只需给它 n + 1 点,让它运行到一些可配置的值(迭代次数或收敛)。
以各种可能的语言实施。
不需要衍生产品。
比您目前正在使用的方法更能适应当地的最佳状态。