本文介绍超参数(hyperparameter)的调优方法。
神经网络模型的参数可以分为两类,模型参数,在训练中通过梯度下降算法更新;
超参数,在训练中一般是固定数值或者以预设规则变化,比如批大小(batch size)、学习率(learning rate)、正则化项系数(weight decay)、核函数中的gamma等。
超参数调优的目标通常是最小化泛化误差(generalization error),也可以根据具体任务自定义其他优化目标。泛化误差是指预测未知样本得到的误差,通常由验证集得到,关于验证集可以参阅 [Cross-validation (statistics). Wikipedia.] 。调优的方法如网格搜索(grid search)、随机搜索(random search)、贝叶斯优化(bayesian optimization),是比较常用的算法,下文将作介绍。其他算法如基于梯度的优化(gradient-based optimization)、受启发于生物学的进化算法(evolution strategy)等,读者可以自行了解。
网格搜索 Grid search
网格搜索就是遍历所有可能的超参数组合,找到能得到最佳性能(比如最小化泛化误差)的超参数组合,但是由于一次训练的计算代价很高,搜索区间通常只会限定于少量的离散数值,以下用一段伪代码说明,
def train(acf, wd, lr):
优化目标函数得到模型M
由验证集得到泛化误差e
return e
learning_rate = [0.0001, 0.001, 0.01, 0.1]
weight_decay = [0.01, 0.1, 1]
activation =