对于神经网络的调试,如何找到一组合适的超参数呢,下面分享一些神经网络调参的方法与技巧。
在使用神经网络时有许多参数需要调整,比如学习速率、Momentum(动量梯度下降法)的参数beta,Adam优化算法的参数,beta1,beta2,神经网络层数,不同层中隐藏单元数量,学习率衰减等。这些参数的调整也是有优先级顺序的,其中的一些应该优先调整,而另一些可能完全不用调整。
首先应该调整的是学习率alpha。在尝试多个不同的超参数时,主要有grid Search和random Search两种方法可以选择(sklearn中有GridSearchCV和RandomSearchCV可以使用)。gird Search是网格搜索,对于要调整的超参数,我们可以给定一组候选值,网格搜索会对这些候选值依次进行组合,最后选出最优的那种参数组合。random Search是随机搜索超参数,对于要调整的超参数,给定参数范围,在其中随机的选取若干个超参数进行尝试,最终选出最优的超参数组合。grid Search的有点是可以让你清楚的看到模型预测的效果是如何随着参数的变化而变化的,但是在相同的迭代次数内,random Search通常可以更快的找到合适的超参数。在深度学习中,更推荐适应random Search去搜索超参数。使用random Search的关键是要为超参数选择一个合适的范围,对于学习速率来说,通常其范围可能在0.0001到1之间。如果直接在这个范围内搜索的话,那么有90%以上的值都会落在0.1-1这个区间内。这显然是不合理的,使用random Search应该使参数均匀的落在各个区间内,对于上例来说,应该使参数落在0.0001-0.001、0.001-0.1、0.1-1之间的