趋近智
训练神经网络 (neural network)需要尽量减少其预测值与实际目标值之间的差异。对于回归问题,其目标是预测连续数值(例如预测房价或股票价值),为此任务设计的特定损失函数 (loss function)至关重要。两种主要的函数是:均方误差 (MSE) 和平均绝对误差 (MAE)。
均方误差,通常称为 MSE 或 L2 损失,可能是回归中最广泛使用的损失函数 (loss function)。它衡量预测值与真实值之间误差平方的平均值。
数学上,对于 个数据点,其中 是第 个数据点的真实目标值, 是预测值,MSE 定义为:
为什么要平方差值?
MSE 的单位是目标变量单位的平方(例如,如果预测价格,单位是美元的平方)。尽管这可能看起来不太直观,但均方根误差 (RMSE),即 ,由于与目标变量具有相同的单位,因此常用于解释。然而,由于其有利的数学特性,MSE 通常在训练期间被最小化。
平均绝对误差,也称为 MAE 或 L1 损失,为衡量回归误差提供了另一种视角。MAE 不对差值进行平方,而是计算预测值与真实值之间绝对差值的平均值。
MAE 的公式是:
MAE 的特点:
MSE 和 MAE 之间的选择取决于具体问题和数据特点。
以下是 MSE 和 MAE 如何惩罚误差的视觉比较:
基于预测误差的 MSE(蓝色)和 MAE(绿色)损失值比较。请注意 MSE 的二次方增长与 MAE 的线性增长。
实践中,由于其数学特性与梯度下降 (gradient descent)高度契合,MSE 通常是默认选择。然而,如果异常值是一个主要问题,尝试使用 MAE(或 Huber 损失等其他鲁棒损失函数 (loss function),它结合了两者的特点)是值得的。
这是一个使用 PyTorch 计算两种损失的快速示例:
import torch
import torch.nn as nn
# 示例预测和目标
predictions = torch.tensor([2.5, 0.0, 1.8, 9.1])
targets = torch.tensor([3.0, -0.5, 2.0, 8.0])
# 计算 MSE 损失
mse_loss_fn = nn.MSELoss()
mse_loss = mse_loss_fn(predictions, targets)
# 计算 MAE 损失(PyTorch 中的 L1Loss)
mae_loss_fn = nn.L1Loss()
mae_loss = mae_loss_fn(predictions, targets)
print(f"预测值: {predictions.numpy()}")
print(f"目标值: {targets.numpy()}")
print(f"误差: {(targets - predictions).numpy()}")
print(f"平方误差: {((targets - predictions)**2).numpy()}")
print(f"绝对误差: {torch.abs(targets - predictions).numpy()}")
print("-" * 30)
print(f"MSE 损失: {mse_loss.item():.4f}") # 平均值:[0.25, 0.25, 0.04, 1.21] = 1.75 / 4 = 0.4375
print(f"MAE 损失: {mae_loss.item():.4f}") # 平均值:[0.5, 0.5, 0.2, 1.1] = 2.3 / 4 = 0.5750
这种简单的计算表明,与 MAE 相比,MSE 中的平方运算如何赋予较大误差(1.1)更大的权重 (weight)。了解这些差异对于选择合适的损失函数以引导模型训练过程、从而做出准确预测非常重要。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•