超参数类型神经网络的主要分为2种:1-1

超参数的类型

神经网络的超参数主要分为两种:

1)网络结构相关:网络中间层数、类型(全连接、dropout层、归一化层、卷积层等)、每层神经元个数、激活函数等。

2)模型训练相关:损失函数、优化方法、batch size、迭代次数、学习率、正则化方法和系数、初始化方法等。

总体战略

首先,使用小数据集和简单的网络模型进行测试运行,确保网络能够正常收敛,优于随机预测。

其次,通过参数在验证集上的准确率,判断超参数的效果,选择更好的超参数。

总之,我们希望尽快得到相对准确的超参数效果,指导我们选择超参数。

更改其他超参数后,某个超参数的当前最优值可能不再是最优值。但是,由于超参数搜索的空间很大,没有那么多时间和计算成本去尝试。即使有网格搜索、贝叶斯优化等自动化超参数调优方法,实用性仍然不强,所以经验法还是很重要的。

参数调优技巧学习率时间表

学习率决定了参数优化的步长。小lr可以收敛到更小的损失,但优化速度较慢;大lr优化速度快,但可能不会收敛,请参考下图。因此找到合适的lr很重要。

通常我们使用衰减学习率或循环学习率。在前几个 epoch 使用较大的 lr 使 loss 下降更快,随着训练的进行逐渐减小 lr,使模型最终收敛到较小的 loss。

如何确定初始学习率?您可以使用小数据快速进行试验,以找出模型可以正确训练的 lr 的大小。比如先用lr=0.1,如果前几个epoch的loss减少了,那么可以试试lr=1、lr=10,取更大的值;如果前几个 epoch 的 loss 没有减少,那么可以去 For较小的值试试 lr=0.01、lr=0.001。确定可用的lr量级后,如lr=0.1,再稍微确定近似值,如lr=0.5,即可作为训练的初始学习率。

学习率如何衰减?衰减规则可以手动设置,比如每隔几个epoch衰减一半神经网络 参数初始化,或者当validation set effect没有像early stopping那样增长时,衰减一半,直到衰减到初始lr的1/1000。

提前停止

在每个 epoch 之后,测试模型对验证集的效果,当效果没有增加时停止训练。 Early stop 可以让我们及时获得最优模型,停止训练,无需设置 epoch num 的超参数,减少资源浪费,防止过拟合。

如何判断验证集效果不再增长?一两个时期的结果可能是中间波动,过早停止使模型训练不足。更合适的方法是十内不改进规则,即验证集效果在 10 个 epoch 后仍然没有提高。

但实际上也有模型的准确率在中间很长一段时间没有提升的情况,但是之后又进一步提升了。因此,10 不改进规则适用于初始训练,需要 20 不改进和 50 不改进,以便以后找到更好的模型。当然,这会引入新的超参数,但这个超参数是更好的选择。

正则化参数

通常需要正则化,可以有效缓解过拟合。建议不设置正则项,即正则系数λ=0,找到更好的lr后再使用验证集寻找合适的λ;正则系数可以从λ=1开始,每次增加或减少10倍,并使用验证集找到一个合适的量级如10或0.1,然后进一步缩小范围以确定更好的正则化系数;然后固定正则化系数,使用验证集寻找更好的lr神经网络 参数初始化,等等。

批量大小

在线学习的场景下,mini batch size可以为1。我们会担心单个样本会带来很大的梯度偏差,但实际上并没有太大的影响。我们不需要每个梯度都是准确的,只要足以降低损失即可。

小批量允许更频繁地更新参数。虽然中间会有一些抖动,但整体收敛速度更快。批量大小会影响学习率。当我们使用大批量时,获得的梯度的置信度更高。这时候,我们可以使用较大的学习率,即较大的步长,来更新参数。同样,当batch size较小时,为了避免偏差,我们需要使用相对较小的学习率。

通过矩阵运算分批批次的样本,无需遍历每个样本,这样一个批次的处理时间不会比单个样本的处理时间长很多。

所以batch size的选择也是一种折衷,太小不能有效利用矩阵运算带来的加速,太大的参数更新会很慢。幸运的是,批量大小独立于其他超参数。我们可以根据不同batch size的“validation set effect – time-lasting (not epoch)”来选择一个最有效的batch size。

待续

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论