Bias-Variance Tradeoff
偏差-方差权衡将期望预测误差分解为偏差、方差和噪声,解释了为什么过于简单和过于复杂的模型都会失效。
偏差—方差权衡描述了模型在新数据上的预期误差如何分为两部分,而这两部分会随着模型复杂度的变化朝相反方向变化。偏差是由过于简单、无法捕捉真实规律的假设造成的误差,会导致欠拟合。方差是模型对特定训练数据过于敏感而产生的误差,会导致过拟合。提高模型灵活性通常会降低偏差、提高方差,因此总误差最低点位于中等复杂度。Stuart Geman、Elie Bienenstock 和 René Doursat 在 1992 年的论文《神经网络与偏差—方差困境》中,将这一概念引入机器学习。
误差分解#
该分解考察同一类模型多次训练的情况,每次都使用从同一来源抽取的新训练集。对于平方误差,某个输入的预期误差恰好可以分解为三项。偏差平方是所有这些训练集上的平均预测值与真实值之间的平方差;拟合弯曲关系的线性回归无论看到多少数据,偏差都很高。方差衡量不同训练集产生的预测值围绕其平均值的离散程度;深层决策树和大型、未正则化的神经网络方差都很高。第三项是不可约噪声,也就是标签本身的随机性,任何模型都无法消除。
重复拟合可以直接测量这两项。下面的 NumPy 示例从正弦波中抽取 1,000 个训练集,每个训练集包含 20 个带噪点,并分别拟合 1、3 和 12 次多项式:
import numpy as np
rng = np.random.default_rng(0)
x = np.linspace(0, 1, 20) # 20 training inputs, evenly spaced
x_test = np.linspace(0, 1, 200)
true_curve = np.sin(2 * np.pi * x_test)
for degree in [1, 3, 12]:
# Fit the same polynomial degree to 1,000 training sets that differ only in their label noise
predictions = []
for _ in range(1000):
y = np.sin(2 * np.pi * x) + rng.normal(0, 0.3, x.size)
predictions.append(np.polyval(np.polyfit(x, y, degree), x_test))
predictions = np.array(predictions)
# Bias^2: squared gap between the average fit and the truth; variance: spread of fits around their average
bias_sq = np.mean((predictions.mean(axis=0) - true_curve) ** 2)
variance = np.mean(predictions.var(axis=0))
print(f"Degree {degree:2d}: bias^2 = {bias_sq:.3f}, variance = {variance:.3f}")直线的偏差平方为 0.205,方差仅为 0.008。三次多项式的平均预测几乎与正弦曲线完全吻合,偏差平方降至 0.005,方差则翻倍至 0.016。12 次多项式没有可测量的偏差,但方差为 0.074,因为它会弯曲以拟合每个样本中的噪声。三次多项式的总误差最低,而每个模型还都受到 0.09 的不可约噪声方差影响。
诊断偏差与方差#
训练误差和验证误差可以揭示哪一项占主导地位。两者都很高,说明偏差较高;训练误差低而验证误差高得多,则说明方差较高。绘制训练和验证误差随训练数据量变化的学习曲线,可以区分这两种情况:随着数据增加,高方差模型的误差差距会缩小;而高偏差模型的两条曲线会较早在高误差处汇合,并保持不变。在 Ultralytics YOLO 训练中,fraction 参数会让模型使用训练划分的一部分进行训练,例如 fraction=0.25 表示使用前四分之一的图像,而验证仍使用完整的验证划分。因此,可以通过以递增比例运行几次 YOLO26 训练,为自定义数据集绘制学习曲线。
控制权衡#
增加数据、进行数据增强、采用权重衰减和丢弃法等正则化、提前停止,以及对多个模型求平均,都能降低方差;集成学习中的装袋法和随机森林就是这样做的。增大模型、丰富特征工程、减弱正则化、延长训练时间和使用提升法都能降低偏差;提升法会添加模型来纠正当前集成的错误。超参数调优和交叉验证则用于选择能让这两项在留出数据上达到平衡的设置。
测试误差随复杂度变化的经典 U 形曲线适用于固定模型系列,例如次数逐渐增加的多项式。参数过多的神经网络可能超出这种情况:随着模型接近能够完美拟合每个训练点的规模,测试误差会先上升;模型继续增大后,测试误差又会下降,这种现象称为双重下降。此时偏差和方差仍然相加构成误差,但方差不再随着参数量持续增长。
统计偏差与其他类型的偏见#
此处权衡中的偏差,是学习算法在特定任务上的属性。AI 偏见指对特定人群的系统性不公平;数据集偏差则指训练数据无法准确反映实际部署环境,例如夜间交通影像不足。模型的统计偏差可以很低,但仍然不公平,因为它可能精准拟合有偏的数据集,包括其中的偏差。










