超参数调整
什么是超参数
模型参数通常是有数据来驱动调整。
超参数不需要数据来驱动,而是在训练前或者训练中人为的进行调整的参数。
CNN中包含哪些超参数
- 网络参数:网络层与层之间的交互方式(相加、相乘或者串接等)、卷积核数量和卷积核尺寸、网络层数(也称深度)和激活函数等。
- 优化参数:一般指学习率(learning rate)、批样本数量(batch size)、不同优化器的参数以及部分损失函数的可调参数。
- 正则化:权重衰减系数,丢弃比率(dropout)。
为什么要进行超参数调整
本质是寻找最优解和正则项之间的关系。
模型优化希望最小化经验风险(找到全局最优解),而容易陷入过拟合,正则项用来约束模型复杂度。所以如何平衡两者之间的关系,得到最优或者较优的解就是超参数调整优化的目的。
超参数的重要性顺序
-
学习率,损失函数上的可调参数。在网络参数、优化参数、正则化参数中最重要的超参数可能就是学习率了。学习率直接控制着训练中网络梯度更新的量级,直接影响着模型的有效容限能力。
-
批样本数量,动量优化器(Gradient Descent with Momentum)的动量参数β。批样本决定了数量梯度下降的方向。过小的批数量,极端情况下,例如batch size为1,即每个样本都去修正一次梯度方向,样本之间的差异越大越难以收敛
若网络中存在BN,batch size过小则更难以收敛。因为数据样本越少,统计量越不具有代表性,噪声也相应的增加。而过大的batch size,会使得梯度方向基本稳定,容易陷入局部最优解,降低精度。一般参考范围会取在[1:1024]之间。
梯度不稳定:针对梯度不稳定的问题,通常不会太致命,若训练中发现梯度不稳定导致性能的严重降低时可采用累计梯度的策略,即每次计算完不反向更新,而是累计多次的误差后进行一次更新,这是一种在内存有限情况下实现有效梯度更新的一个策略。
-
优化器的超参数、权重衰减系数、丢弃法比率(dropout)和网络参数
- 权重衰减系数通常会有个建议值,例如 ,一般在。权重衰减可以有效的起到限制参数变化的幅度,起到一定的正则作用
- dropout通常会在全连接层之间使用防止过拟合,建议比率控制在之间。使用dropout时需要特别注意两点:一、在RNN中,如果直接放在memory cell中,循环会放大噪声,扰乱学习。一般会建议放在输入和输出层;二、不建议dropout后直接跟上BN,dropout很可能影响BN计算统计量,导致方差偏移,这种情况下会使得推理阶段出现模型完全垮掉的极端情况
如何调试模型
- 探索和清洗数据。
- 探索模型结果。对模型在验证集上的性能进行进一步的分析,这是如何进一步提升模型性能很重要的步骤。将模型在训练集和验证集都进行结果的验证和可视化,可直观的分析出模型是否存在较大偏差以及结果的正确性。(类别不平衡问题)
- 监控训练和验证误差。根据训练和验证误差进一步追踪模型的拟合状态。若训练数据集很小,此时监控误差则显得格外重要。确定了模型的拟合状态对进一步调整学习率的策略的选择或者其他有效超参数的选择则会更得心应手。
为什么要进行学习率的调整
当模型训练到一定程度时,损失将不再减少,这时模型的一阶梯度接近零,对应Hessian 矩阵通常是两种情况:
- 正定,即所有特征值均为正,此时通常可以得到一个局部极小值,若这个局部极小值接近全局最小则模型已经能得到不错的性能了,但若差距很大,则模型性能还有待于提升,通常情况下后者在训练初最常见。
- 特征值有正有负,此时模型很可能陷入了鞍点,若陷入鞍点,模型性能表现就很差。
以上两种情况在训练初期以及中期,此时若仍然以固定的学习率,会使模型陷入左右来回的震荡或者鞍点,无法继续优化。所以,学习率衰减或者增大能帮助模型有效的减少震荡或者逃离鞍点。
学习率调整有哪些策略
- 指数衰减是最常用的衰减方式,这种方式简单直接,在训练初期衰减较大利于收敛,在后期衰减较小利于精调
- 分段设置学习率法,跟指数型类似,区别在于每个阶段的衰减并不是按指数调整。可在不同阶段设置手动不同的学习率。这种学习率重点在有利于精调。