神经网络中,除了寻找最优的权重和偏置等参数,设定合适的超参数也同样重要。比如各层神经元的数量、batch_size的取值、参数更新时的学习率、权值衰减系数或学习的epoch等。超参数寻找过程一般会伴随很多试错,所以用尽可能高效的方法找到超参数非常重要。
下面介绍一种实践性的方法,说实话是有一些实践者经验的感觉。
步骤0
设定超参数的范围。
说明:超参数的范围只要“大致的指定”就可以了。也就是类似于,确定量级即可。
步骤1
从设定的超参数范围中随机采样。
例如:权重衰减系数和学习率随机采样
weight_decay = 10 ** np.random.uniform(-8, -4)
lr = 10 ** np.random.uniform(-6, -2)
步骤2
使用步骤1中采样到的超参数的值进行学习,通过验证数据评估识别精度(但是要将epoch设置的很小)。
Q&A:
1、什么是验证数据?