Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Regularization

正则化会在训练过程中约束模型,使其能够泛化,而不是记住噪声。涵盖 L1、L2、权重衰减、dropout 和提前停止。

正则化是指对模型训练方式进行的任何调整,目的是降低模型在新数据上的误差,即使模型在训练数据上的误差有所上升。正则化可以抑制过拟合:当模型容量足够大时,模型会记住所见样本中的噪声和细微特征。正则化通过惩罚较大的权重、注入噪声、增加多样化数据或提前停止训练,来限制模型的有效复杂度。从偏差-方差的角度来看,正则化会接受少许额外偏差,以换取方差的大幅降低。

L1 和 L2 惩罚#

经典形式是在损失函数中加入权重惩罚项:总损失 = 数据损失 + λ × 惩罚项。L2 正则化惩罚权重平方和 Σw²,按权重大小将每个权重拉向零;在线性模型中,这称为岭回归。L1 正则化惩罚权重绝对值之和,其恒定的拉力会将许多权重精确地推至零,因此,带 L1 惩罚的线性回归(即套索回归)也可用于特征选择。弹性网络结合了两者。惩罚强度 λ 在 scikit-learn 中称为 alpha,它是一个超参数:值太小,模型仍会过拟合;值太大,模型则会欠拟合。用 12 个来自正弦波的带噪点拟合 9 次多项式,能展示这两种失效情形:

import numpy as np
from sklearn.linear_model import Ridge
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures

rng = np.random.default_rng(0)

# 12 noisy training points from a sine wave, plus clean test points
x_train = rng.uniform(0, 1, (12, 1))
y_train = np.sin(2 * np.pi * x_train[:, 0]) + rng.normal(0, 0.2, 12)
x_test = np.linspace(0, 1, 200)[:, None]
y_test = np.sin(2 * np.pi * x_test[:, 0])

# The same degree-9 polynomial, fit with a growing L2 penalty on its coefficients
for alpha in (0.0, 1e-4, 1e-2, 1.0):
    model = make_pipeline(PolynomialFeatures(9), Ridge(alpha=alpha)).fit(x_train, y_train)
    train_mse = np.mean((model.predict(x_train) - y_train) ** 2)
    test_mse = np.mean((model.predict(x_test) - y_test) ** 2)
    weight_norm = np.linalg.norm(model[-1].coef_)
    print(f"alpha {alpha:g}: train MSE {train_mse:.4f}, test MSE {test_mse:.4f}, |w| {weight_norm:.1f}")

不加惩罚项时,多项式会随着噪声弯曲:其系数范数达到约 425,000,训练误差为 0.0148,测试误差为 0.1859。惩罚项设为 0.0001 时,系数范数降至 20.8,测试误差降低了 11 倍,达到 0.0170,而训练误差升至 0.0334。当 alpha 为 1 时,惩罚项占主导,模型出现欠拟合,测试误差为 0.3998。

神经网络中的权重衰减和 Dropout#

在神经网络中,L2 正则化通常采用权重衰减的形式:每次更新时,也会按一定比例缩小每个权重。对于普通的随机梯度下降,两者是等价的。对于 Adam 等自适应优化器,加到梯度上的 L2 项会被 Adam 的逐参数缩放系数除,因此梯度较大的权重几乎不会受到正则化。解耦权重衰减则直接进行权重缩减,由此得到的 AdamW 优化器是 Transformer 的标准选择。

Dropout 层在每个训练步骤中,以概率 p 将每个单元的输出置零,并将保留的输出乘以 1/(1 − p),这样网络就无法依赖任何单个单元;实际上,这相当于训练许多共享权重的精简子网络。推理时,每个单元都会保持激活状态。最初的实验发现,对于隐藏单元,将丢弃概率设为 0.5,在各种网络和任务中都接近最优。

Ultralytics YOLO 训练提供了这两项设置:weight_decay 默认值为 0.0005,仅作用于卷积层和线性层的权重,不作用于偏置和归一化层参数;dropout 默认值为 0.0,作用于 YOLO26分类模型最终线性层之前。

from ultralytics import YOLO

# 加载预训练的 YOLO26n 分类模型
model = YOLO("yolo26n-cls.pt")

# 在分类头中使用 dropout,并采用更强的权重衰减进行训练
results = model.train(data="mnist160", epochs=10, dropout=0.2, weight_decay=0.001)

其他正则化技术#

  • 数据增强:翻转、裁剪、缩放、颜色偏移和马赛克增强了训练图像的多样性,因此模型能在比原始数据集所包含的更多条件下观察每个对象。
  • 标签平滑:用略微平滑的目标值替代 one-hot 分类目标,使模型不再将 logits 推向极端置信度。
  • 隐式正则化:批归一化带来的小批次训练梯度噪声和批次间噪声,都能在没有显式正则项的情况下发挥正则化作用。

提前停止通过限制训练时长来实现正则化。它会在每个轮次后使用验证数据评估模型,并在分数连续若干轮次(称为耐心值)没有提升时停止训练,同时保留迄今为止表现最佳的权重:

  • 归一化:重新缩放输入或激活值,以加快并稳定训练。批归一化仅作为副作用发挥正则化作用。
  • 超参数调优:搜索正则化设置的合适取值,例如 λ、dropout 概率和耐心值,以及其他所有超参数。
  • 模型集成:对多个独立训练模型的预测取平均,以降低方差。Dropout 在单个网络中近似实现了这种集成:训练时从指数数量的精简子网络中采样,而测试时让所有单元保持激活状态并运行完整网络,近似于对所有子网络的预测取平均。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来