3.3 自适应学习率
- 临界点:在训练神经网络时,损失函数可能陷入局部最小值或鞍点,导致梯度下降停滞。
- 梯度范数:即使损失不再下降,梯度范数(梯度的向量长度)仍然可能很大,表明并未真正达到临界点。
- 自适应学习率:为每个参数定制不同的学习率,以克服梯度下降中的不足。
3.3.1AdaGrad
- 定义:AdaGrad(Adaptive Gradient)是一种典型的自适应学习率方法,根据梯度的大小自动调整学习率。
- 公式:
-
其中,是第 t 次迭代时参数 i 的梯度, 是过去所有梯度平方的平均值(均方根)。 - 特点:梯度大时减小学习率,梯度小时增加学习率。
3.3.2 RMSProp
- 背景:RMSprop 是一种由 Geoffrey Hinton 提出的自适应学习率方法,未正式发表,但广泛用于实践中。
- 公式:
- 其中,α 是一个超参数,用于调整旧梯度和新梯度的重要性。
- 特点:能够动态调整学习率,适应误差表面的变化。
3.3.3Adam
- 定义:Adam(Adaptive moment estimation)结合了 RMSprop 和动量法,是目前最常用的优化器之一。
- 特点:
- 使用动量作为参数更新方向。
- 能够自适应调整学习率。
- PyTorch等框架内置了Adam优化器,并提供了预设的超参数。
3.4 学习率调度
- 定义:学习率调度(Learning Rate Scheduling)是指学习率随时间变化的策略。
- 常见策略:
- 学习率衰减(Learning Rate Decay):随着训练的进行,逐渐减小学习率。
-
- 预热(Warmup):在训练初期,先以较小的学习率收集信息,然后逐渐增大学习率。
示例分析
- AdaGrad优化问题:在某些情况下,AdaGrad可能导致学习率累积过大,通过学习率调度可以修正这一问题。
- 学习率衰减效果:结合学习率衰减,可以更平滑地收敛到最优解。
3.5 优化总结
- 最终公式: 其中,是动量项,ηt 是随时间变化的学习率。
- 变形与优化器:各种优化器主要区别在于计算 mit 和 σit 的方式,以及学习率调度的策略。
3.6 分类
3.6.1 分类与回归的关系
- 回归:输入一个向量 x,输出预测值 y^,目标是让 y^ 尽可能接近真实标签 y。
- 分类:可视为一种特殊的回归,但输出采用独热向量表示不同类别,避免类别间的预设关系问题。
- 独热向量:每个类别对应一个向量,向量长度为类别总数,其中只有一个元素为1(表示该类别),其余元素为0。
- 示例:类别1为[1,0,0]^T,类别2为[0,1,0]^T,类别3为[0,0,1]^T。
3.6.2 带有softmax的分类
- softmax函数:用于将网络输出 y^ 归一化为概率分布 y′。
- 公式:
- 作用:将任意实数值映射到(0,1)区间,并保证所有输出元素的和为1,同时放大较大值与较小值之间的差距。
3.6.3 分类损失
- 损失函数:衡量预测输出 y′ 与真实标签 y 之间的差异。
- 均方误差(MSE):e=
- 交叉熵(Cross-Entropy):e=−
- 为什么选择交叉熵:
- 交叉熵在输出接近目标时梯度较大,有助于模型快速收敛。
- 交叉熵与最大似然估计等价,具有更好的统计解释。