自适应学习率
在神经网络训练过程中,当损失函数不再下降时,很多人可能会认为模型卡在了局部最小值或鞍点。但实际上,有时候这种现象是因为梯度在“山谷”的两侧来回震荡,导致损失无法继续下降。这种情况并非真的达到了临界点或局部最优,而是梯度仍然存在,只是训练过程中损失的下降速度放缓甚至停止。换句话说,损失停滞并不一定意味着模型达到了最优解,而可能只是训练陷入了这种“震荡”状态。
1. AdaGrad
AdaGrad(Adaptive Gradient Algorithm)是一种自适应学习率优化算法。它会根据参数更新的历史信息来调整学习率,对于经常更新的参数,学习率变小,对于不常更新的参数,学习率变大。AdaGrad的优点是适合处理稀疏数据,但它的学习率会不断变小,可能导致训练停滞。
2. RMSProp
RMSProp(Root Mean Square Propagation)是为了解决AdaGrad学习率下降过快的问题而提出的。它引入了一个衰减系数(通常设为0.9)来控制学习率的变化,这样可以防止学习率快速衰减。RMSProp非常适合处理非平稳目标(如深度学习任务)和稀疏梯度情况。
3. Adam
Adam(Adaptive Moment Estimation)结合了AdaGrad和RMSProp的优点,既考虑梯度的一阶动量(均值)又考虑二阶动量(方差)。Adam使用偏差校正来保证学习率在训练的早期保持稳定,适合大多数深度学习任务,并且不太依赖于超参数的调节,是目前广泛使用的优化器之一。
学习率调度(Learning Rate Scheduling)
学习率调度是一种在深度学习模型训练过程中动态调整学习率的方法。学习率(Learning Rate, LR)是控制模型参数更新步长的重要超参数,适当的学习率能加快模型收敛速度,避免陷入局部最优。
分类与回归
分类目的不同,损失函数可以是交叉熵