专栏名称: 深度学习与神经网络
关注深度学习教育,关注人工智能前沿科技
目录
相关文章推荐
央视频  ·  未播先火!央视年末大剧来了→ ·  3 天前  
掌中淄博  ·  官宣!这部电视剧将在淄博拍摄 ·  3 天前  
乌鸦预告片  ·  疯批飙戏!网飞年度压轴!真拉了? ·  4 天前  
乌鸦预告片  ·  疯批飙戏!网飞年度压轴!真拉了? ·  4 天前  
51好读  ›  专栏  ›  深度学习与神经网络

简述手动调整超参数

深度学习与神经网络  · 公众号  ·  · 2017-11-05 18:52

正文

简述手动调整超参数


大部分深度学习算法都有许多超参数来控制算法。有些超参数会影响算法运行的时间和存储成本。有些超参数会影响学习到的模型质量,以及在新输入上推断正确结果的能力。


有两种选择超参数的基本方法:手动选择和自动选择。手动选择超参数需要了解超参数做了些什么,以及机器学习模型如何取得良好的泛化。自动选择超参数算法大大减少了解这些想法的需要,但他们往往需要更高的计算成本。

                                

手动设置超参数,我们必须了解超参数,训练误差, 泛化误差和计算资源(内存和运行时间)之间的关系。这需要切实了解学习算法的有效容量。


手动搜索超参数的目标通常是最小化受限于运行时间和内存预算的泛化误差。我们不去探讨如何确定各种超参数对运行时间和内存的影响,因为这高度依赖于平台。


手动搜索超参数的主要目标是调整模型的有效容量以匹配任务的复杂性。有效容量受限于三个因素:模型的表示容量,学习算法成功最小化训练模型成本函数的能力,以及代价函数和训练过程正则化模型的程度。具有更多网络层,每层有更多隐藏单元的模型具有较高的表达能力——能够表示更复杂的函数。然而,如果训练算法不能找到合适的函数来最小化训练代价,或是如果正则化项,如权重衰减,排除了这些函数,那么模型就不能学习到所有这些函数。


当泛化误差以某个超参数为变量,作为函数绘制出来时,通常会表现为 U 形曲线。在某个极端情况下, 超参数对应着低容量,并且泛化误差由于训练误差较大而很高。这便是欠拟合的情况。另一种极端情况, 超参数对应着高容量,并且泛化误差由于训练误差和测试误差之间的差距较大而很高。最优的模型容量位于曲线中间的某个位置,能够达到最低可能的泛化误差,由中等的泛化误差和中等的训练误差相加构成。


超参数数值太大时,会发生过拟合。例如,中间隐藏单元数量太大时,会发生过拟合。因为隐藏单元数量增多提高了模型容量。 超参数数值太小时,也会发生过拟合。例如,权重衰减系数为零时,学习算法具有最大的有效容量,容易过拟合。


并非每个超参数都能对应着完整的 U 形曲线。很多超参数是离散的,如中间层单元数目或是maxout 单元中线性元件的数目,这种情况只能沿曲线探索离散的点。有些超参数是二值的。通常这些超参数用来指定是否使用学习算法中的一些可选部分,如预处理步骤减去均值,除以标准差,标准化输入特征。这些超参数只能探索曲线上的两点。其他一些超参数可能会限制其探索曲线某部分的最大值或最小值。例如,权重衰减系数最小是零。这意味着,如果权重衰减系数为零时模型欠拟合,那么我们将无法通过修改权重衰减系数探索过拟合区域。换言之,有些超参数只能减少模型容量。


学习率可能是最重要的超参数。如果你只有时间调整一个超参数,那就调整学习率。相比其他超参数,它以一种更复杂的方式控制模型的有效容量——当学习率适合优化问题时,模型的有效容量最高,此时学习率既不是特别大也不是特别小。学习率关于训练误差具有 U 形曲线,当学习率过大时,梯度下降可能会不经意地增加而非减少训练误差。在理想化的二次情况下,如果学习率是最佳值的两倍大时,会发生这种情况 (LeCun et al., 1998a)。当学习率太小,训练不仅慢,还有可能永久停留在一个很高的训练误差。关于这种情况,我们知之甚少(不会发生于一个凸损失函数中)。





训练误差和学习速率的典型关系

调整学习率外的其他参数时,需要同时监测训练误差和测试误差,以判断您的模型是否过拟合或欠拟合,然后适当调整其容量。如果训练集错误率大于目标错误率,那么只能增加模型容量以改进模型。如果没有使用正则化,并且确信优化算法正确运行,那么有必要添加更多的网络层或隐藏单元。然而,令人遗憾的是,这增加了模型的计算代价。如果测试集错误率大于目标错误率,那么可以采取两个方法。测试误差是训练误差和测试误差之间差距与训练误差的总和。寻找最佳的测试误差需要权衡这些数值。当训练误差较小(因此容量较大),测试误差主要取决于训练误差和测试误差之间的差距时,通常神经网络效果最好。此时目标是缩小这一差距,使训练误差的增长速率不快于差距减小的速率。要减少差距,我们可以改变正则化超参数,以减少有效的模型容量,如添加Dropout或权重衰减。通常,最佳性能来自正则化得很好的大规模模型,比如使用Dropout的神经网络。大部分超参数可以通过推理其是否增加或减少模型容量来设置。

手动调整超参数时,不要忘记最终目标:提升测试集性能。加入正则化只是实现这个目标的一种方法。只要训练误差低,随时都可以通过收集更多的训练数据来减少泛化误差。实践中能够确保学习有效的的暴力方法就是不断提高模型容量和训练集的大小,直到解决问题。这种做法增加了训练和推断的计算代价,所以只有在拥有足够资源时才是可行的。原则上,这种做法可能会因为优化难度提高而失败,但对于许多问题而言,优化似乎并没有成为一个显著的障碍,当然,前提是选择了合

适的模型。