赞
踩
损失函数(Loss Function):是定义在单个样本上的,是指一个样本的误差,度量模型一次预测的好坏。
代价函数(Cost Function)=成本函数=经验风险:是定义在整个训练集上的,是所有样本误差的平均,也就是所有损失函数值的平均,度量平均意义下模型预测的好坏。
目标函数(Object Function)=结构风险=经验风险+正则化项=代价函数+正则化项:是指最终需要优化的函数,一般指的是结构风险。正则化项(regularizer)=惩罚项(penalty term)。
一种常用的回归损失函数。它衡量的是模型预测值与真实值之差的平方的平均值。平方损失函数对于大的误差给予了更大的惩罚,这使得它成为许多回归任务中首选的损失函数之一。
平方损失函数的公式(MSE):
import torch # 创建一个包含从 0.0 到 4.0(包括0.0和4.0)的浮点数的一维张量 x x = torch.arange(5.0) # 注意这里的 5.0,它确保了 x 是浮点类型 # 创建一个与 x 形状相同但所有元素都是 1.0 的浮点类型张量 Y Y = torch.ones_like(x, dtype=torch.float32) # 显式指定 dtype 为 torch.float32 # 创建一个 MSELoss 的实例 MSE = torch.nn.MSELoss() # 计算 x 和 Y 之间的均方误差,并将结果存储在变量 a 中 a = MSE(x, Y) # 打印结果 print(a) # 输出:tensor(3.),表示 x 和 Y 之间的均方误差 print(x) # 输出:tensor([0., 1., 2., 3., 4.]),x 的值 print(Y) # 输出:tensor([1., 1., 1., 1., 1.]),Y 的值
L1 Loss损失函数的公式(MAE):
L1 Loss通常用于回归任务,尤其是在需要模型的权重具有稀疏性的场景下。然而,由于其在0点处的不可导性,L1 Loss在神经网络等复杂模型中的直接使用较少。相反,Smooth L1 Loss(平滑L1损失)作为L1 Loss和L2 Loss的结合,既保留了L1 Loss的鲁棒性,又解决了其在0点处不可导的问题,因此在目标检测等任务中得到了广泛应用。
# x = tensor([0., 1., 2., 3., 4.])
# y = tensor([1., 1., 1., 1., 1.])
# 计算差的绝对值
abs_diff = torch.abs(x - y)
# 输出: tensor([1., 0., 1., 2., 3.])
# 计算L1损失(平均绝对误差)
L1loss = torch.nn.L1Loss()
a = L1loss(x, y)
# 或者直接计算平均值,不使用torch.nn.L1Loss()
# a = torch.mean(abs_diff)
# 输出L1损失
print(a) # 应该是 (1 + 0 + 1 + 2 + 3) / 5 = 1.4
是深度学习中常用的一种损失函数,尤其在处理回归问题时表现出色。它是L1损失和L2损失的结合体,旨在减少对异常值的敏感性,并在优化过程中提供更加稳定的梯度。
SmoothL1Loss在目标检测、物体跟踪、姿态估计等需要精确回归的任务中得到了广泛应用。特别是在目标检测的Bounding Box回归中,SmoothL1Loss能够有效地计算预测框与真实框之间的误差,并帮助模型优化预测结果。
在PyTorch的torch.nn.SmoothL1Loss类中,reduction和beta是两个重要的参数,它们分别用于控制损失值的计算和平滑转换点的设置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。