datawhale x 李宏毅苹果书 ai夏令营 学习笔记(二)-爱代码爱编程
自适应学习率
由于在训练时,随着参数更新,损失越来越小,但是却总会在临界点之前卡住,并不会得到理想结果。为了解决这一点,引入自适应学习率(adaptive learning rate)的方法,例如 AdaGrad、RMSProp 和 Adam。
AdaGrad (Adaptive Gradient)能够根据梯度大小自动调整学习率,在参数梯度较大时学习率减小,参数梯度较小时学习率放大。由此便可做到缩短训练过程并提高模型性能。
RMSProp (Root Mean Squared propagation)在 AdaGrad 的基础上引入了指数衰减机制,能在同一个参数的同个方向动态调整学习率,可以动态调整过去梯度的重要性,由此可以更加灵敏地适应梯度变化,能够得到更好的效果。
Adam(Adaptive moment estimation) 可以看作RMSprop加上动量,其结合了动量和自适应学习率,使得 Adam 能够适应多种环境,成为目前最常用的优化算法之一。
学习率调度
尽管自适应学习率算法可以有效提高训练效率,但在某些情况下仍可能出现问题。例如,AdaGrad 在训练后期可能出现“爆炸”现象,即学习率过大导致参数更新过快,从而影响模型性能。
通过学习率调度(learning rate scheduling)可以解决这个问题。常见的调度方法包括学习率衰减(learning rate decay)和学习率预热。这两种方法都是将学习率调整与时间结合起来。
学习率衰减随着训练过程的进行让学习率逐渐减小,有助于模型参数更加平缓精确地更新。
学习率预热随着训练过程的进行让学习率先变大后变小,运用于多种知名模型的训练。
优化总结
优化算法经过长期进化,从最原始的梯度下降到最终的学习率调度,逐渐变得更加复杂和高效。
其中mit是动量。
这个版本里面有动量,其不是顺着某个时刻算出的梯度方向来更新参数,而是把过去所有算出梯度的方向做一个加权总和当作更新的方向。接下来的步伐大小为mitσit。最后通过ηt来实现学习率调度。
除了Adam之外,还有许多变体,他们之间的区别主要在于 mit 和 σit 的计算方式,或者学习率调度的策略。优化器的选择往往需要根据具体问题进行实验与调整。
分类
分类与回归是深度学习中最常见的两种问题。回归是预测连续值,而分类是预测离散值。
在分类问题中,往往会加上softmax函数。该函数会使大值和小值之间差距更大。
做分类时往往会有损失,选均方误差的时候,需要选择一个良好的优化器,即使如此,优化过程也会非常困难。总之,改变损失函数可以改变优化的难度。
实验
按照任务中的指示一步步完成,结果如下