大部分深度学习算法都有许多超参数来控制算法。有些超参数会影响算法运行的时间和存储成本。有些超参数会影响学习到的模型质量,以及在新输入上推断正确结果的能力。
有两种选择超参数的基本方法:手动选择和自动选择。手动选择超参数需要了解超参数做了些什么,以及机器学习模型如何取得良好的泛化。自动选择超参数算法大大减少了解这些想法的需要,但他们往往需要更高的计算成本。
手动设置超参数,我们必须了解超参数,训练误差, 泛化误差和计算资源(内存和运行时间)之间的关系。这需要切实了解学习算法的有效容量。
手动搜索超参数的目标通常是最小化受限于运行时间和内存预算的泛化误差。我们不去探讨如何确定各种超参数对运行时间和内存的影响,因为这高度依赖于平台。
手动搜索超参数的主要目标是调整模型的有效容量以匹配任务的复杂性。有效容量受限于三个因素:模型的表示容量,学习算法成功最小化训练模型成本函数的能力,以及代价函数和训练过程正则化模型的程度。具有更多网络层,每层有更多隐藏单元的模型具有较高的表达能力——能够表示更复杂的函数。然而,如果训练算法不能找到合适的函数来最小化训练代价,或是如果正则化项,如权重衰减,排除了这些函数,那么模型就不能学习到所有这些函数。
当泛化误差以某个超参数为变量,作为函数绘制出来时,通常会表现为 U 形曲线。在某个极端情况下, 超参数对应着低容量,并且泛化误差由于训练误差较大而很高。这便是欠拟合的情况。另一种极端情况, 超参数对应着高容量,并且泛化误差由于训练误差和测试误差之间的差距较大而很高。最优的模型容量位于曲线中间的某个位置,能够达到最低可能的泛化误差,由中等的泛化误差和中等的训练误差相加构成。
超参数数值太大时,会发生过拟合。例如,中间隐藏单元数量太大时,会发生过拟合。因为隐藏单元数量增多提高了模型容量。 超参数数值太小时,也会发生过拟合。例如,权重衰减系数为零时,学习算法具有最大的有效容量,容易过拟合。
并非每个超参数都能对应着完整的 U 形曲线。很多超参数是离散的,如中间层单元数目或是maxout 单元中线性元件的数目,这种情况只能沿曲线探索离散的点。有些超参数是二值的。通常这些超参数用来指定是否使用学习算法中的一些可选部分,如预处理步骤减去均值,除以标准差,标准化输入特征。这些超参数只能探索曲线上的两点。其他一些超参数可能会限制其探索曲线某部分的最大值或最小值。例如,权重衰减系数最小是零。这意味着,如果权重衰减系数为零时模型欠拟合,那么我们将无法通过修改权重衰减系数探索过拟合区域。换言之,有些超参数只能减少模型容量。
学习率可能是最重要的超参数。如果你只有时间调整一个超参数,那就调整学习率。相比其他超参数,它以一种更复杂的方式控制模型的有效容量——当学习率适合优化问题时,模型的有效容量最高,此时学习率既不是特别大也不是特别小。学习率关于训练误差具有 U 形曲线,当学习率过大时,梯度下降可能会不经意地增加而非减少训练误差。在理想化的二次情况下,如果学习率是最佳值的两倍大时,会发生这种情况 (LeCun et al., 1998a)。当学习率太小,训练不仅慢,还有可能永久停留在一个很高的训练误差。关于这种情况,我们知之甚少(不会发生于一个凸损失函数中)。