深圳Yolo 视觉
深圳
立即加入
词汇表

损失函数

探索损失函数如何引导模型训练。学习如何Ultralytics 最小化物体检测等任务的误差,并优化AI性能。

损失函数如同数学指南针,引导着人工神经网络及其他机器学习算法的训练过程。其本质是量化模型预测输出与训练数据中实际"真实值"标签之间的误差。 可将其视作评分系统:分数越低代表性能越优。训练过程中,核心目标是通过迭代方式最小化该损失值。这种最小化机制促使模型调整内部参数,使其预测结果更贴近现实——该过程Adam 随机梯度下降(SGD)优化算法驱动。

损失函数在模型训练中的作用

人工智能的学习机制高度依赖于损失函数生成的反馈循环。当模型处理完一批数据后,损失函数会计算出一个数值误差值,该值代表预测结果与目标值之间的距离。 通过称为反向传播的技术,系统计算损失函数对模型中每个权重的梯度。这些梯度如同地图,指示着减少误差所需调整的方向与幅度。学习率则控制着更新过程中调整步长的大小,确保模型收敛至最优解而不致过度调整。

不同的机器学习任务需要特定类型的损失函数。对于以预测房价等连续值为目标的回归分析,均方误差(MSE)是标准选择。相反,对于涉及分类数据的图像分类任务,通常采用交叉熵损失来衡量预测概率与真实类别之间的差异。高级目标检测模型(如YOLO26)采用复合损失函数,通过结合局部定位指标(IoU交并IoU)与类别置信度专用公式(如分布焦点损失DFL或变焦损失实现多目标同步优化。

实际应用

损失函数是几乎所有人工智能应用可靠性的核心驱动力,确保系统能在复杂环境中安全运行。

Python :计算交叉熵损失

Ultralytics 等高级框架能在训练过程中自动处理损失计算,但理解底层数学原理对调试非常有帮助。以下示例使用PyTorch(Ultralytics 的后端)计算预测值与目标值之间的损失。

import torch
import torch.nn as nn

# Define the loss function (CrossEntropyLoss includes Softmax)
loss_fn = nn.CrossEntropyLoss()

# Mock model output (logits) for 3 classes and the true class (Class 0)
# A high score for index 0 indicates a correct prediction
predictions = torch.tensor([[2.5, 0.1, -1.2]])
ground_truth = torch.tensor([0])

# Calculate the numerical loss value
loss = loss_fn(predictions, ground_truth)
print(f"Calculated Loss: {loss.item():.4f}")

区分相关概念

区分损失函数与机器学习管道中使用的其他指标至关重要。

  • 损失函数与评估指标:损失函数具有可微性,用于训练过程中更新权重评估指标 如准确率精确率和平均平均精度(mAP)在训练后使用,以人类可读的形式评估模型性能。 若损失函数与实际目标存在偏差,模型即便有效最小化了损失,仍可能出现准确率低下问题。
  • 损失函数与正则化:损失函数引导模型趋向正确预测,而正则化技术(如L1或L2惩罚项)被添加至损失方程中以防止过拟合。正则化通过惩罚过大的权重来抑制模型过度复杂化,从而帮助系统更好地泛化至未见过的测试数据
  • 损失函数与奖励函数: 在强化学习中,智能体通过最大化累积“奖励”而非最小化损失来学习。虽然二者在概念上互为对立,但都作为驱动优化过程的目标函数。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入