超参数搜索——网格搜索和随机搜索

我们在搜索超参数的时候,如果超参数个数较少(三四个或者更少),那么我们可以采用网格搜素,一种穷尽式的搜索方法。

但是当超参数个数比较多的时候,我们仍然采用网格搜索,那么搜索所需时间将会指数级上升。

比如我们有四个超参数,每个范围都是[10,100],那么我们所需的搜索次数是10*10*10*10=10^4。

如果再增加一个超参数,那么所需的搜索次数是10^5,搜索时间指数级上升。

所以很多很多个超参数的情况,假如我们仍然采用网格搜索,那么……gg,算到天荒地老就不一定有结果。

所以出现了这样的做法,网格搜索,但是网格取稀疏一点,比如上面例子中的[10,100],我们就去10,30,50,70,90这几个数,降低一下搜索次数。

这样变快了一点,但是有可能找到的超参数不是全局最小。

所以又有人提出了随机搜索的方法,随机在超参数空间中搜索几十几百个点,其中就有可能会有比较小的值。

这种做法比上面稀疏化网格的做法快,而且实验证明,随机搜索法结果比稀疏化网格法稍好。

笔者刚刚在寻找资料的时候,还看到了一种做法,批量化随机搜索法。具体做法如下:

假设我们要找25个点,那么我们把这25个分成5个批次,每个批次5个点。

我们做第一个批次的时候,假设超参数范围是[0,100],我们有1个超参数(容易理解),那么我们把这个范围切分为[0,20],[20,40],[40,60],[60,80],[80,100]。

也就是把范围平均切分为5份,我们在每一份之中随机找到一个点,最终可以找到5个点,我们再找到里面的最小点。

接着,在第二个批次之中,我们在找到的最小点附近,再找5个随机点,在这5个随机点之中得到最小点。

接着,在第三个批次之中,重复同样的操作。

这样可以保证我们找到一个局部最小值点,结果可能会比随机搜索稍好一点。

当然,如果随机搜索直接得到更好的局部最小值,甚至全局最小值,那么……只能说你的运气爆表了。

这种批次随机寻找的方法,基本上可以说优于稀疏化网格法,但不一定优于随机搜索法。

参考资料:

1、笔者刚刚提到的批次随机搜索法的来源:https://yq.aliyun.com/articles/68266

2、知乎关于这部分知识的一些问答:https://www.zhihu.com/question/57394983

原文地址:https://www.cnblogs.com/chenjx85/p/9430950.html