3.2 为超参数选择合适的范围(Using an appropriate scale to pick hyperparameters)

pick hyperparameters)

随机取值并不是在有效范围内的随机均匀取值,而是选择合适的标尺,用于探究这些超参数

对于超参数#layers和#hidden units,都是正整数,是可以进行均匀随机采样的,即超参数每次变化的尺度都是一致

对于某些超参数,可能需要非均匀随机采样(即非均匀刻度尺)。例如超参数α\alpha,待调范围是[0.0001, 1]。如果使用均匀随机采样,90%的采样点分布在[0.1, 1]之间,只有10%分布在[0.0001, 0.1]之间。而最佳的α\alpha值可能主要分布在[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,最后反推到线性区间,即10r10^r.10r10^r是最终采样的超参数。代码为:

m = np.log10(a)
n = np.log10(b)
r = np.random.rand()
r = m + (n-m)*r
r = np.power(10,r)

动量梯度因子β\beta在超参数调试也需要进行非均匀采样。一般β\beta的取值范围在[0.9, 0.999]之间,1−β\beta的取值范围在[0.001, 0.1]。那么直接对1−β\beta在[0.001, 0.1]区间内进行log变换

为什么β\beta也需要向α\alpha那样做非均匀采样:

假设β\beta从0.9000变化为0.9005,那么11β\frac{1}{1-\beta}基本没有变化。但假设β从0.9990变化为0.9995,那么11β\frac{1}{1-\beta}前后差别1000。β\beta越接近1,指数加权平均的个数越多,变化越大。所以对β\beta接近1的区间,应该采集得更密集一些

Last updated