一、前言
通过前面的学习我们了解到神经网络的优化和改变会涉及到许多不同的超参数,例如:与神经网络结构相关的层数、每层节点数,与优化算法相关的学习效率以及Momentum、RMSprop、Adam中的指数权重项,学习效率衰减中的衰减系数,Mini-batch中的batch size等等。那么对于超参数而言,我们要如何找到一套好的设定了,下面来介绍一些关于如何系统组织超参数调试过程的技巧。
二、调试处理
值得注意的是,这些所列举的超参数优先级别却是不一样的,学习效率一般是需要调试的最重要的超参数,有时也会调试mini-batch的大小、隐层节点数以及Momentum优化算法中的指数权重,这三个是比较重要的超参数,神经网络层数和学习率衰减系数则是其次比较重要的超参数。另外,在Adam优化算法中一般很少去调试两个指数权重和分母校正项,总是选定为0.9,0.999和10e-8。
接下来我们介绍具体的调试方法,在早一代的机器学习算法中,如果有两个超参数,这里我们称之为超参一,超参二,常见的做法是在网格中取样点,然后系统的研究这些数值。如下例中的左图所示,可以尝试这所有的25个点,然后选择效果最好的参数。当参数的数量相对较少时,这个方法很实用。而在我们的深度学习领域,我们通常随机选择点,对于下面的例子(右图)我们随机选择25个点,用这些随机取得点试验超参数的效果,这样做的原因在于对于要解决的问题而言,我们很难知道哪个超参数最重要。我们假设超参一为学习率,假设超参二为Adam算法中分母校正项,这种情况下学习率的取值很重要,而分母校正项的取值则无关紧要。我们首先基于传统网格方法,在左图中给超参一取五个值,我们会发现无论分母校正项无论取何值结果基本上都是一样的。对比而言,如果随机取值,我们会尝试25个独立的学习率值,所以我们会更容易发现最好的那个。
三、为超参数选择合适的范围
上面已经介绍了网格取值和随机取值,但随机取值并不是在有效值范围内的随机均匀取值,而是选择合适的标尺用于探究这些超参数。例如我们要选取隐藏单元的数量n[l],对于给定层 l 而言,假设我们选择的取值范围是从50到100中某点,我们可以在这个范围内随机取点,这是一个搜索特定超参数很直观的方式。又或者我们呢要选取神经网络的层数L,也许我们会选择层数2-4中的某个值,顺着2,3,4随机均匀取样会比较合理,你还可以应用网格搜索。这是几个在我们的考虑范围内随机均匀取值的例子,这些取值似乎还挺合理。但对于某些超参数而言则不适用,假设我们在搜索超参数-学习率alpha,我们怀疑其值最小是0.0001,最大是1,如果画一条从0.0001到1的数轴,延其随机均匀取值,那么90%的值都会落在0.1到1之间,结果就是在0.1到1之间应用了90%的资源,显然这是极不均匀的。反而我们用对数标尺搜索超参数的方式会更合理,因此这里的线性数轴也就变成了对数数轴,在0.0001到0.001之间就会有更多的搜索资源可用。我们所要做的就是在[-4,0]的区间随机均匀的给r取值,最终的学习率alpha值也就为10^r。

本文深入探讨了深度学习中超参数的选择和调试,详细讲解了Batch正则化的概念、实现方式及其在神经网络中的应用。同时,介绍了测试时的Batch归一化策略,并对Softmax回归进行了简要阐述,最后提到了深度学习框架在实践中的重要性。
-超参数调试、Batch正则化和程序框架&spm=1001.2101.3001.5002&articleId=78411645&d=1&t=3&u=b3799ca2918c4528a92538c0c653a595)
2193

被折叠的 条评论
为什么被折叠?



