02 Bias(偏差)与 Variance(方差)
02 Bias(偏差)与 Variance(方差)
一、核心概念:偏差与方差
在机器学习中,模型的泛化误差(Generalization Error)可分解为三部分:
\[\text{总误差} = \text{偏差}^2 + \text{方差} + \text{不可约误差(噪声)}\]- 偏差(Bias) :模型对训练数据的拟合能力不足,即“欠拟合”(Underfitting)。
- 方差(Variance) :模型对训练数据过度敏感,导致在新数据上表现差,即“过拟合”(Overfitting)。
- 不可约误差(Irreducible Error) :由数据本身的噪声决定,无法通过模型消除。
在理想情况下(人类性能接近 0% 错误),我们假设最优误差(Bayes Error 或 Base Error)≈ 0%,此时可通过训练误差和开发集误差判断偏差与方差。
二、如何诊断偏差与方差?
假设条件:
- 训练集与开发集(Dev Set)来自同一分布;
- 最优误差(Base Error)≈ 0%(例如人类几乎能完美分类猫图)。
诊断指标:
- 训练误差(Train Error) → 反映偏差
- 开发集误差(Dev Error) → 结合训练误差反映方差
| 情况 | 训练误差 | 开发误差 | 诊断 |
|---|---|---|---|
| 1 | 很低(如 1%) | 显著更高(如 11%) | 高方差(过拟合) |
| 2 | 很高(如 15%) | 略高(如 16%) | 高偏差(欠拟合) |
| 3 | 很高(15%) | 更高(30%) | 高偏差 + 高方差(最差情况) |
| 4 | 很低(0.5%) | 很低(1%) | 低偏差 + 低方差(理想) |
✅ 关键判断逻辑:
- 若 训练误差高 → 高偏差;
- 若 开发误差远高于训练误差 → 高方差。
三、可视化理解(2D 示例)
- 高偏差:用线性模型拟合非线性数据(如直线拟合弯曲边界)→ 欠拟合。
- 高方差:用极复杂模型(如深度神经网络)完美拟合训练点,但决策边界扭曲 → 过拟合。
- “Just Right” :中等复杂度模型,合理拟合数据趋势。
💡 在高维空间无法可视化,因此依赖 训练/开发误差数值分析。
四、特殊情况:当 Base Error 不为 0
若任务本身困难(如图像极度模糊),人类也无法准确判断,则 Base Error 可能较高(如 15%) 。
此时判断标准需调整:
- 若训练误差 ≈ Base Error → 偏差低
- 若开发误差 ≈ 训练误差 → 方差低
例如:Base Error = 15%,训练误差 = 15%,开发误差 = 16% → 实际是良好模型,而非高偏差!
⚠️ 此时不能直接用绝对误差值判断,而应看 相对于 Base Error 的差距。
五、高偏差 + 高方差的混合情况
虽然在 2D 中看起来“人为构造”,但在高维真实场景中确实存在:
- 模型整体过于简单(如线性)→ 高偏差
- 但在某些局部区域过度拟合噪声或异常点 → 高方差
例如:一个大致线性的分类器,却在中间区域“绕弯”去拟合两个离群点。
这说明:偏差和方差不是互斥的,一个模型可能同时存在两种问题。
六、实践启示:下一步该怎么做?
根据诊断结果,采取不同策略:
| 问题类型 | 可能的解决方案 |
|---|---|
| 高偏差(欠拟合) | - 增加模型容量(更深/更宽网络) - 改进特征工程 - 减少正则化 - 训练更长时间 |
| 高方差(过拟合) | - 获取更多训练数据 - 正则化(L2、Dropout) - 减少模型复杂度 - 数据增强 |
| 高偏差 + 高方差 | - 需要平衡:先解决偏差(提升模型能力),再控制方差(加正则化/更多数据) |
🔜 吴恩达将在下一节介绍 “机器学习基本配方”(Basic Recipe for ML) ,系统化指导调优流程。
七、重要前提回顾
- 训练集与开发集同分布:否则误差比较无意义;
- Base Error 已知或可估计:通常用人 类性能近似;
- 误差指标一致:如都用分类错误率。
若这些前提不成立,需更复杂的分析(后续课程讲解)。
总结口诀(便于记忆)
- 训练错得多 → 偏差高(模型太弱)
- 训练好、开发差 → 方差高(模型太飘)
- 两者都差 → 又弱又飘(最糟)
- 两者都好 → 刚刚好(目标)
本文由作者按照 CC BY 4.0 进行授权