机器学习速成·逻辑回归(2/2):损失与正则化——为什么用对数损失
本文参考 Google 机器学习速成课程 - 逻辑回归:损失和正则化(Loss and Regularization) 模块撰写,承接上一篇,讲清逻辑回归训练时的两大核心差异:为什么用对数损失函数、以及为什么正则化至关重要。
一、逻辑回归的训练流程
逻辑回归模型的训练过程和线性回归一样(用梯度下降迭代找最优权重),但有两点主要区别:
- 损失函数不同:用对数损失函数,而不是平方损失函数。
- 正则化至关重要:必须用正则化防止过拟合。
下面分别展开。
二、区别一:为什么不用平方损失,而用对数损失?
2.1 平方损失在线性”恒定变化率”下很好用
线性回归用平方损失(L₂)效果好,是因为线性模型的变化率是恒定的:
例如线性模型 y′ = b + 3x₁:每次把 x₁ 增加 1,输出 y′ 就增加 3——变化是均匀的。
2.2 但逻辑回归的 sigmoid 变化率不恒定
逻辑回归的输出经过 S 型函数,是非线性的 S 形曲线,变化率一直在变:
- 当 z 靠近 0 时,z 的小幅增加会让 y 产生很大变化;
- 当 z 是较大的正数或负数时,同样幅度的 z 变化,y 的变化微乎其微。
看 S 型函数在两端的行为:
| 输入 | logistic 输出 | 需要记录的精度位数 |
|---|---|---|
| 5 | 0.993 | 3 |
| 7 | 0.999 | 3 |
| 8 | 0.9997 | 4 |
| 9 | 0.9999 | 4 |
| 10 | 0.99998 | 5 |
越接近 0 或 1,输出变化越细小——如果用平方损失在 S 型函数上算误差,就得用更多内存去记录这些接近 0/1 的微小差异,既不准确又不划算。
2.3 对数损失:衡量”变化量”而不是”距离”
正因为此,逻辑回归改用对数损失函数。它不是衡量”预测与实际的距离”,而是返回变化幅度的对数:
$$\text{对数损失} = -\frac{1}{N}\sum_{i=1}^{N}\left[, y_i\log(y’_i) + (1-y_i)\log(1-y’_i) ,\right]$$
各符号含义:
- N:带标签的样本数量;
- i:样本下标(如第 3 个样本记作 (x₃, y₃));
- yᵢ:第 i 个样本的标签。因为是逻辑回归,yᵢ 只能是 0 或 1;
- y′ᵢ:模型对第 i 个样本的预测值(介于 0~1 之间)。
2.4 为何要用”平均”对数损失
上面公式是对所有样本的对数损失求平均。实践中,**用平均(而非总和)**是有益的,因为:
平均对数损失可以把批次大小和学习速率的调整分离开——改批次时不需要跟着调学习率。
三、区别二:为什么正则化至关重要?
3.1 问题根源:不正则化 → 损失趋向 0 → 过拟合
正则化是一种在训练期间惩罚模型复杂性的机制。在逻辑回归中它极其重要,因为:
当模型有大量特征时,逻辑回归的渐近性质(sigmoid 逼近 0/1)会让损失不断趋向 0——模型开始死记硬背训练数据,而不是概括规律,这就是过拟合。
3.2 两种主流降复杂度的策略
多数逻辑回归模型会采用以下两种策略之一:
| 策略 | 做法 |
|---|---|
| L₂ 正则化 | 在损失中加入对权重平方和的惩罚,迫使模型的权重尽量小、更简单 |
| 早停法(Early Stopping) | 限制训练步数,在损失仍在下降时提前停止,避免训练过头 |
正则化的详细内容(L1/L2、早停法背后的原理)会在本课程的**“数据集、泛化和过拟合”**模块中深入讲解。
四、关键术语速查
- 损失函数(Loss Function):衡量预测与实际的偏差。
- 对数损失(Log Loss):逻辑回归采用的损失函数,衡量变化幅度。
- 平方损失(L₂ Loss):线性回归采用的损失函数。
- 梯度下降法:训练中迭代更新权重的算法。
- 过拟合(Overfitting):模型过度贴合训练数据,缺乏泛化。
- 正则化(Regularization):惩罚模型复杂性以防止过拟合。
- 早停法(Early Stopping):提前停止训练的降复杂度策略。
五、小结
| 维度 | 线性回归 | 逻辑回归 |
|---|---|---|
| 变化率 | 恒定 | 不恒定(sigmoid S 形) |
| 损失函数 | 平方损失(L₂) | 对数损失 |
| 正则化 | 可选 | 至关重要(特征多时损失会趋向 0) |
| 防过拟合手段 | — | L₂ 正则化 / 早停法 |
一句话:逻辑回归不像线性回归那样”匀速”,所以要用衡量变化幅度的对数损失;又因为特征一多损失就疯狂趋近 0,所以必须靠正则化(L₂ 或早停)给它”踩刹车”,才不会过拟合。