标准机器学习算法,如线性回归或具有固定结构的神经网络,其优化通常涉及为预定义模型结构 $f(x; \theta)$ 寻找最佳的 参数 $\theta$ 集合。梯度下降等方法被用来迭代更新这些参数,以最小化在训练数据上平均的损失函数 $L(y, f(x; \theta))$。更新规则通常是 $\theta_{new} = \theta_{old} - \eta \nabla_{\theta} L$,其中 $\nabla_{\theta} L$ 是损失函数关于参数的梯度。梯度提升机(GBM)从不同的角度进行优化。GBM 不在固定的模型结构中优化参数,而是迭代地构建模型本身。我们优化的“参数”是表示集成模型的整个函数 $F(x)$。我们要在可能的函数空间中寻找一个函数,使其能最大程度最小化训练数据上的总损失。这种优化过程可以被视为在函数空间中执行梯度下降。函数空间中的优化设想一个高维空间,其中每个点都对应一个特定函数 $F$。我们的目标是在此空间中找到函数 $F^*$,使其最小化数据集 $(x_i, y_i)$ 在 $i=1, \dots, N$ 上的总损失:$$ L_{total}(F) = \sum_{i=1}^{N} L(y_i, F(x_i)) $$就像在参数空间中一样,我们希望迭代地改进当前对最优函数的估计。设 $F_{m-1}(x)$ 是经过 $m-1$ 次提升迭代后的当前集成模型。我们希望找到一个新的函数 $h_m(x)$(我们的基学习器,通常是决策树),将其添加到当前模型能使我们更接近最小损失。也就是说,我们希望:$$ F_m(x) = F_{m-1}(x) + \eta h_m(x) $$其中 $\eta$ 是步长(学习率),且 $h_m(x)$ 指向一个能降低总损失 $L_{total}$ 的方向。梯度方向在标准梯度下降中,负梯度 $-\nabla_{\theta} L$ 指示了在参数空间中能够带来损失最陡峭下降的方向。那么在函数空间中,与之对应的是什么呢?我们可以将每个训练样本 $i$ 的预测值 $F(x_i)$ 视为定义当前在函数空间中位置的“坐标”。总损失 $L_{total}$ 关于这些坐标的梯度是一个向量,其中第 $i$ 个分量是单个损失项 $L(y_i, F(x_i))$ 关于模型预测值 $F(x_i)$ 的偏导数,在当前模型 $F_{m-1}$ 处进行评估:$$ g_{im} = \left[ \frac{\partial L(y_i, F(x))}{\partial F(x)} \right]{F(x) = F{m-1}(x_i)} $$这个向量 $(g_{1m}, g_{2m}, \dots, g_{Nm})$ 表示在由 $F_{m-1}$ 定义的函数空间点上,总损失最陡峭上升的方向。伪残差:基学习器的目标为了最小化损失,我们需要沿着与梯度相反的方向移动。我们定义负梯度分量,通常被称为伪残差,用于迭代 $m$ 中的每个样本 $i$:$$ r_{im} = - g_{im} = - \left[ \frac{\partial L(y_i, F(x))}{\partial F(x)} \right]{F(x) = F{m-1}(x_i)} $$这些伪残差 $r_{im}$ 表示我们的下一个基学习器 $h_m(x)$ 应该去近似的目标值。为什么叫“伪残差”?考虑使用平方误差损失的回归情况:$L(y, F(x)) = \frac{1}{2}(y - F(x))^2$。 梯度分量为: $$ \frac{\partial L(y_i, F(x))}{\partial F(x)} = \frac{\partial}{\partial F(x)} \left( \frac{1}{2}(y_i - F(x))^2 \right) = -(y_i - F(x)) $$ 在 $F_{m-1}(x_i)$ 处评估此式得到 $-(y_i - F_{m-1}(x_i))$。 因此,负梯度为: $$ r_{im} = - [-(y_i - F_{m-1}(x_i))] = y_i - F_{m-1}(x_i) $$ 在这种特定情况下,伪残差恰好是普通的残差(真实值与当前模型预测值之间的差异)。对于其他损失函数,$r_{im}$ 并非简单的残差,但它仍表示当前模型 $F_{m-1}$ 最需要改进的方向(在函数空间中逐点评估)。执行步进我们不能直接将伪残差向量 $(r_{1m}, \dots, r_{Nm})$ “添加”到我们的函数 $F_{m-1}(x)$。相反,我们拟合一个基学习器 $h_m(x)$,以根据输入特征 $x_i$ 来预测这些伪残差:$$ h_m = \arg \min_{h} \sum_{i=1}^{N} (r_{im} - h(x_i))^2 $$这个基学习器 $h_m(x)$ 提供了在整个输入域上所需的负梯度步长的近似,不仅限于训练点。最后,我们通过添加这个新的学习器并按学习率 $\eta$ 进行缩放来更新集成模型:$$ F_m(x) = F_{m-1}(x) + \eta h_m(x) $$这种更新在函数空间中执行近似的梯度下降步骤。通过基于当前集成模型的误差迭代计算伪残差,并用新的基学习器拟合这些伪残差,GBM 算法逐步最小化总损失函数。这种函数梯度视角提供了一个有力的统一框架,有助于理解梯度提升如何在不同损失函数和基学习器下工作。