优先级
第一级:learning rate
第二级:β in momentum,mini-batch size,hidden units
第三级:layers,learning rate decay
这是吴恩达的优先级,其他人可能不认同
如何选取超参数
不要全部遍历参数选最好的,原因如下
- 调整哪些参数对效果影响大,哪些影响小是未知的,可能很多参数取所有值效果都差不多,遍历浪费了算力
- 参数可能非常多,无法穷举全部组合
随机挑选,试验效果如何再相应调整
可以采用coarse to fine sampling scheme:
- 在搜索空间中随机挑一些参数组合试验效果如何,初始时搜索空间就是全部的参数组合
- 挑选效果好的聚集的参数组合
- 将与2中的参数组合接近的参数组合作为下一步的搜索空间
- 重复1-3,逐渐缩小搜索空间
Appropriate scales to pick hyperparameters
均匀取值
有些超参数可以随机取值或者遍历,例如网络层数(2、3、4)、hidden units(50-100)
按指数尺度取值
-
为什么
以learning rate α α α举例, α α α的使用场景是: w = w − α × d w w=w-α \times dw w=w−α×dw
假设learning rate的取值范围为0.0001到1,当 α = 0.1 α=0.1 α=0.1和 α = 0.01 α=0.01 α=0.01时(差一个小数点), w w w更新的幅度差距是10倍;当 α = 0.5 α=0.5 α=0.5和 α = 0.6 α=0.6 α=0.6时, w w w更新的幅度差距1倍都不到
如果取值范围内均匀取值,0.1到1之间的取值差距都不到1倍,但是会占据取值范围的90%,显然不合理,应该扩大一个小数点和另一个小数点之间的尺度
因为一个小数点代表了10倍差距,所以 α α α适合使用10的指数来取值 -
怎么实现
假设超参数的取值范围为 1 0 a 10^{a} 10a到 1 0 b 10^{b} 10b,a到b均匀取值即可
例如 α α α的取值范围为 1 0 − 4 10^{-4} 10−4到 1 0 0 10^{0} 100,对-4到0均匀取值即可
例如 momentum里的 β β β,假设取值范围为0.9到0.999,可以将其转化为 1 − β 1-β 1−β,则取值范围变为0.001到0.1,也就是 1 0 − 3 10^{-3} 10−3到 1 0 − 1 10^{-1} 10−1,对-3到-1均匀取值即可
how to organize hyperparameter search process
- 数据很多,计算资源不够时,经常查看训练效果,根据情况调整参数
- 计算资源很多,同时训练不同超参数模型,选最好的