1. 特征缩放
1.1 特征缩放的作用
特征缩放是一种将不同特征值归一化到相似范围的技术,可以显著提高梯度下降法的收敛速度。
作用:
-
避免数值差异导致的优化困难:当特征值范围差异较大时,代价函数呈现“长而窄”的形状,梯度下降更新效率低下。
-
加速优化:特征缩放后代价函数的等高线接近圆形,使梯度下降更快到达最优点。
-
防止数值溢出:特征值在相似范围内可减少计算误差。
1.2 不进行特征缩放的例子
假设我们在房价预测问题中有以下特征:
-
x 1 x_1 x1 (房屋面积,单位:平方米):范围是 100 到 1000。
-
x 2 x_2 x2 (房屋年龄,单位:年):范围是 1 到 50。
因为特征值的数量级不同,导致梯度下降过程中,更新 x 1 x_1 x1 的步伐过小,而更新 x 2 x_2 x2 的步伐过大,优化过程非常缓慢。
1.3 特征缩放方法
1.3.1 特征值归一化
通过将每个特征的值调整到 [ 0 , 1 ] [0, 1] [0,1] 或 [ − 1 , 1 ] [-1, 1] [−1,1] 范围内,使所有特征在同一数量级。公式为:
x normalized = x − x min x max − x min x_{\text{normalized}} = \frac{x - x_{\text{min}}}{x_{\text{max}} - x_{\text{min}}} xnormalized=xmax−xminx−xmin
1.3.2 均值归一化
通过调整特征值的中心位置和范围,使其均值为 0,范围较小。公式为:
x mean-normalized = x − μ σ x_{\text{mean-normalized}} = \frac{x - \mu}{\sigma} xmean-normalized=σx−μ
其中:
- μ \mu μ 是特征的均值。
- σ \sigma σ 是特征的标准差。
1.4 特征缩放前后对比
通过图示比较:
-
缩放前:特征的尺度差异明显,代价函数的等高线是细长的椭圆形。
-
缩放后:特征在相似的范围内,代价函数的等高线接近圆形。
1.5 特征缩放的结论
特征缩放是加速梯度下降法的重要步骤。在预处理阶段进行特征缩放,不仅能提高模型的收敛速度,还能减少调参时间。
2. 判断梯度下降是否收敛
2.1 利用学习曲线判断梯度下降是否收敛
2.1.1 学习曲线
学习曲线是代价函数值随迭代次数变化的图表,反映梯度下降的收敛过程。通过学习曲线可以直观判断优化效果。
2.1.2 学习曲线示例
-
平稳下降曲线:代价函数逐渐减小并趋于平稳,说明算法已接近收敛。
-
波动曲线:代价函数值剧烈波动,可能是学习率设置过高。
-
缓慢下降曲线:代价函数下降缓慢,可能是学习率过低。
2.2 利用自动收敛测试判断梯度下降是否收敛
自动收敛测试的关键是监控代价函数的变化幅度:
-
若满足设定阈值 ,则认为梯度下降已收敛。
-
通常设置为一个非常小的正数(如 0.0001)。
示例:
通过记录每次迭代的代价函数值,判断其变化是否足够小。如果连续多次迭代的变化量都小于 ,可以停止迭代。
2.3 梯度下降收敛态势结论
通过结合学习曲线和自动收敛测试,可以有效判断算法是否已到达收敛状态。这种方法能避免计算资源浪费,同时保证模型优化效果。
3. 如何设置学习率
3.1 学习率与代价函数收敛的联系
学习率是影响梯度下降算法收敛速度的关键参数:
-
学习率过大:算法可能跳过最优点,导致无法收敛甚至发散。
-
学习率过小:算法收敛速度过慢,训练时间大幅增加。
示例:
观察不同学习率对代价函数的影响:
-
学习率为 0.1:收敛迅速,代价函数快速减小。
-
学习率为 0.0001:收敛缓慢,需大量迭代才能优化。
3.2 如何选择合适的学习率
3.2.1 手动试验与调整
通过多次试验,观察学习曲线的变化,选择使代价函数快速下降并趋于平稳的学习率。
3.2.2 学习率调节策略
-
动态调整学习率:在训练过程中逐步减小学习率,以保证初期快速下降和后期稳定收敛。
-
自适应优化算法:使用如 AdaGrad、RMSProp 或 Adam 等方法,自动调整每个参数的学习率。
3.2.3 学习率调度策略
动态学习率调度可以进一步提升优化效率。常见策略包括:
-
阶梯下降:每隔一定迭代次数减小学习率。
-
指数衰减:学习率按指数规律逐步减小。
-
余弦退火:学习率按余弦函数变化,周期性减小。
总结
特征缩放、合理设置学习率、判断收敛状态及动量法等技巧,均能显著提高梯度下降法的收敛效率。这些方法结合使用,不仅能加速模型训练,还能提升模型性能和稳定性。