特征归一化与梯度下降
用梯度下降训练模型时,损失函数的等高线有时呈狭长椭圆,有时接近圆形。这些形状会影响参数更新的路径和收敛速度。下面通过梯度公式和数值例子,说明特征归一化如何影响这个过程。
1. 输入特征与模型参数
以线性回归为例:
x₁、x₂ 可以分别代表房屋面积和房龄;w₁、w₂ 是模型要学习的权重。训练时,输入特征已经给定,梯度下降会不断更新权重。绘制训练过程中的损失函数等高线时,横纵坐标通常选择两个待优化的参数,例如 w₁、w₂。图上的每个点对应一组参数值。后文还会使用 u₁、u₂ 表示一般的优化变量。
2. 等高线为什么是圆形或椭圆形?
先考虑一个损失函数:
把 u₁、u₂ 作为水平坐标,把损失 L 作为高度,便得到一个碗形曲面。当损失固定为 c 时:
这是一条圆形曲线。改变 c,便得到一圈圈圆。同一条等高线上的所有点,损失值相同;越靠近中心,损失越小。
交互演示:改变等高线的高度
若损失函数变成:
其等高线为:
这是一条椭圆。因为沿 u₁ 方向改变相同数值时,损失增长得更快;沿 u₂ 方向,损失变化较慢。椭圆短轴对应变化较快的方向,长轴对应变化较慢的方向。当损失函数包含两个变量的交叉项时,椭圆还可能发生旋转,呈现倾斜形状。
3. 为什么梯度决定参数更新幅度?
梯度下降的公式为:
其中,η 为学习率,偏导数表示损失沿该参数方向的局部变化速度。
因此,每一步参数变化的绝对值满足:
学习率相同时,梯度绝对值越大,该参数当次更新的幅度越大。 梯度正负号决定更新方向。
考虑:
对应梯度:
从 (1,1) 出发,学习率为 0.1,更新一次得到:
两个方向的更新幅度分别为 1 和 0.1。相同学习率下,梯度的数值差异直接影响了更新幅度。
4. 为什么更新幅度差异会拖慢收敛?
在狭长椭圆对应的损失函数中,一个方向陡峭,另一个方向平缓。学习率较大时,陡峭方向可能反复跨过最优位置;学习率较小时,平缓方向又可能移动得非常慢。
对于上面的椭圆损失,梯度下降的更新公式为:
例如 η=0.18 时,w₁ 每次乘以 −0.8,在最优值两侧交替移动;w₂ 每次乘以 0.82,持续缓慢靠近中心。
对于圆形损失:
两个方向满足同一更新规律:
此时各方向以相同的比例靠近最优值,路径通常更直接。
交互演示:调节学习率和迭代次数
可以把学习率调到 0.20 以上,观察椭圆损失的更新为什么容易发散;也可以将学习率降低到 0.10 以下,观察较平缓方向的移动速度。
梯度数值决定当次更新幅度;各方向的曲率和学习率共同影响整个收敛过程。 更新速度存在差异,并不意味着一定找不到最优值。
5. 特征归一化对收敛的影响
重新考虑线性回归:
对一个样本,采用平方损失:
记预测误差 e=ŷ−y,求导得到:
假设某个样本的两个特征分别为 100 和 1,当前预测误差为 2,那么两个梯度分别是 200 和 2。这说明输入特征的数值尺度会影响对应参数的梯度。
对整个训练集而言,各样本的误差贡献还要汇总计算。若不同特征的数值尺度相差很大,损失函数在不同参数方向上的曲率也可能相差很大,形成狭长的等高线。
通过最小值—最大值缩放(Min-Max Scaling),或标准分数标准化(Z-Score Standardization),可以使特征处于较接近的数值尺度。这通常有助于改善损失函数的形状,使梯度下降更容易选择合适的学习率。
当两个参数方向的曲率相近时,等高线可能接近圆形。真实数据还受到特征相关性的影响,因此归一化后等高线仍可能呈椭圆形,收敛速度也取决于学习率等因素。
评论由 GitHub Giscus 提供。若当前网络无法加载,可 前往 GitHub Discussions 查看或参与讨论。