3.2 为超参数选择合适的范围(Using an appropriate scale to pick hyperparameters)
Last updated
Last updated
pick hyperparameters)
随机取值并不是在有效范围内的随机均匀取值,而是选择合适的标尺,用于探究这些超参数
对于超参数#layers和#hidden units,都是正整数,是可以进行均匀随机采样的,即超参数每次变化的尺度都是一致
对于某些超参数,可能需要非均匀随机采样(即非均匀刻度尺)。例如超参数,待调范围是[0.0001, 1]。如果使用均匀随机采样,90%的采样点分布在[0.1, 1]之间,只有10%分布在[0.0001, 0.1]之间。而最佳的值可能主要分布在[0.0001, 0.1]之间,因此更应在区间[0.0001, 0.1]内细分更多刻度
通常的做法是将linear scale转换为log scale,将均匀尺度转化为非均匀尺度,然后再在log scale下进行均匀采样。这样,[0.0001, 0.001],[0.001, 0.01],[0.01, 0.1],[0.1, 1]各个区间内随机采样的超参数个数基本一致,扩大了之前[0.0001, 0.1]区间内采样值个数
如果线性区间为[a, b],令m=log(a),n=log(b),则对应的log区间为[m,n]。对log区间的[m,n]进行随机均匀采样,得到的采样值r,最后反推到线性区间,即.是最终采样的超参数。代码为:
动量梯度因子在超参数调试也需要进行非均匀采样。一般的取值范围在[0.9, 0.999]之间,1−的取值范围在[0.001, 0.1]。那么直接对1−在[0.001, 0.1]区间内进行log变换
为什么也需要向那样做非均匀采样:
假设从0.9000变化为0.9005,那么基本没有变化。但假设β从0.9990变化为0.9995,那么前后差别1000。越接近1,指数加权平均的个数越多,变化越大。所以对接近1的区间,应该采集得更密集一些