深度学习中的超参数
超参数是我们在将学习算法应用于机器学习数据集之前需要设置的变量。
超参数的挑战在于没有可以在任何地方使用的最佳数值。最佳数值取决于每个任务和每个机器学习数据集。
超参数可分为两类:
- 优化器超参数,
- 特定于模型的超参数
1.优化器超参数
它们更多地与优化和培训过程相关
1.1学习率:
良好的起点= 0.01
如果我们的学习率太小,则需要更长的时间(数百或数千)才能达到理想状态
另一方面,如果我们的学习速率太大,那么我们的算法可能不会收敛
这只是一个例子。在现实世界中,事情要复杂得多。
a)您的模型将有数百个参数,每个参数都有自己的误差曲线。而学习率引导所有参数
b)误差曲线不是干净的U形。它们具有更复杂的形状和局部最小值
1.2Minibatch Size:
批量大小会影响训练过程的资源需求,速度和迭代次数,这种方式可能并不像您想象的那样小
从历史上看,随机训练一直存在争议,在随机训练中,将数据集的一个例子放入模型中,只使用一个例子,forward pass,计算误差,然后反向传播,并为所有超参数设置调整值。然后对数据集中的每个例子都这样做。
或者,最好将整个数据提供给训练步骤,并使用通过查看数据集中的所有示例生成的误差来计算梯度。这称为批量训练
今天常用的技术是设置minibatch size。
随机训练是当minibatch size= 1时,批量训练是当minibatch size=训练集中的示例数量时
推荐的实验起始值
1,2,4,8,16,32,64,128,256
较大的minibatch size允许在训练计算中利用矩阵乘法的计算增强,但这是以需要更多内存用于训练过程为代价的。
较小的minibatch size会在误差计算中产生更多噪声,并且通常在防止训练过程停止在局部最小值时更有用。
minibatch size(比较好的值)= 32
1.3epochs数量:
要为我们的训练步骤选择正确的epochs数,我们应该关注的指标是验证误差。
直观的手动方式是只要验证误差不断减少,就可以使模型序列进行多次迭代。
有一种叫做Early Stopping的技术可以确定何时停止训练模型。如果验证误差在过去10或20个epochs内没有改善,则停止训练过程
2.模型超参数
2.1隐藏单元数量:
隐藏单元的数量是其中最神秘的超参数之一。
神经网络是通用函数逼近器,用于网络学习近似函数(或预测任务),它需要有足够的“capacity ”来学习函数
隐藏单元的数量是模型学习能力的主要衡量标准
‘Learning Capacity’ for a Simple Function
对于一个简单的函数,它可能需要更少数量的隐藏单元。
‘Learning Capacity’ for a Complex Function
函数越复杂,模型所需的学习能力就越强
单元数比最优单元数多一点不是问题,但如果单元数太多,就会导致模型过拟合,也就是说,如果模型容量太大,它可能会过拟合,并试图记住数据集。
2.2第一个隐藏层:
涉及第一个隐藏层的另一个启发式方法是,将隐藏单元的数量设置为大于输入的数量,可以在任务数量上获得更好的结果
2.3层数:
在实践中,3层神经网络通常会胜过2层神经网络。但深的网络很少有帮助。
对此的例外是卷积神经网络,它们越深,它们的表现就越好。