深度学习_神经网络_损失函数基础

🎯 一、什么是损失函数(Loss Function)

损失函数(Loss Function)用于衡量模型预测值与真实值之间的差距。

它是模型训练中优化器(如 SGD、Adam)调整参数的依据。

👉 简单理解:

  • 模型预测越准 → Loss 越小。
  • 模型预测越差 → Loss 越大。

训练目标就是 让 Loss 最小化 (minimize loss)


🧩 二、回归任务的常见损失函数

回归任务(Regression)目标是预测连续值(如房价、温度、销量等)。最常用的损失函数是:

1️⃣ 均方误差(MSE, Mean Squared Error)------ L2 Loss

💡 定义公式:

L MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 L_{\text{MSE}} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 LMSE=n1i=1∑n(yi−y^i)2

  • y i y_i yi: 真实值
  • y ^ i \hat{y}_i y^i: 模型预测值
  • n n n: 样本数

🧠 含义解释:

计算所有样本预测误差的平方的平均值。平方项让"大误差"惩罚更重,对异常值(outlier)敏感。

特点总结:

优点 缺点
数学性质好(可导、平滑) 对离群点敏感(平方放大误差)
常用于梯度下降训练 不适合有较多异常点的数据

💻 PyTorch 实现:

python 复制代码
import torch
import torch.nn as nn

loss_fn = nn.MSELoss()
y_pred = torch.tensor([2.5, 0.0, 2.1])
y_true = torch.tensor([3.0, -0.5, 2.0])
loss = loss_fn(y_pred, y_true)
print(loss.item())

2️⃣ 平均绝对误差(MAE, Mean Absolute Error)------ L1 Loss

💡 定义公式:

L MAE = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ L_{\text{MAE}} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| LMAE=n1i=1∑n∣yi−y^i∣

🧠 含义解释:

取预测值与真实值的绝对差的平均值。

特点总结:

优点 缺点
对异常值更鲁棒(不受平方放大影响) 不可导点在 0 处(梯度不连续)
更关注整体误差的平衡 收敛速度慢,优化不稳定

💻 PyTorch 实现:

python 复制代码
import torch
import torch.nn as nn

loss_fn = nn.L1Loss()
y_pred = torch.tensor([2.5, 0.0, 2.1])
y_true = torch.tensor([3.0, -0.5, 2.0])
loss = loss_fn(y_pred, y_true)
print(loss.item())

⚖️ L1 vs L2 对比总结:

项目 L1(MAE) L2(MSE)
公式 平均绝对误差 平均平方误差
对异常值敏感度 低(鲁棒)
导数连续性 不连续(0处) 连续、平滑
收敛速度 较慢 较快
常见应用 噪声大、异常点多 噪声小、平滑优化

🔹 在实际应用中,也常用 Huber Loss 作为折中方案(小误差用 L2,大误差用 L1)。


🧠 三、分类任务的常见损失函数

分类任务(Classification)目标是预测类别标签(如猫/狗、0/1、A/B/C 等)。最常用的是 交叉熵损失 (Cross-Entropy Loss)

1️⃣ 交叉熵损失(Cross-Entropy Loss)

💡 定义背景:

交叉熵 (Cross Entropy) 来自信息论,用来衡量两个概率分布之间的差距。

在分类任务中:

  • 模型输出的是 预测概率分布 ( y ^ \hat{y} y^)(通过 Softmax/Sigmoid)
  • 真实标签是 真实分布 ( y y y)(独热编码 one-hot)

💡 数学定义:

对于多分类问题:
L CE = − ∑ i = 1 C y i log ⁡ ( y ^ i ) L_{\text{CE}} = - \sum_{i=1}^{C} y_i \log(\hat{y}_i) LCE=−i=1∑Cyilog(y^i)

  • C C C: 类别数
  • y i y_i yi: 真实标签(one-hot)
  • y ^ i \hat{y}_i y^i: 模型预测概率

在二分类时可简化为:
L BCE = − [ y log ⁡ ( y ^ ) + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] L_{\text{BCE}} = -[y \log(\hat{y}) + (1 - y) \log(1 - \hat{y})] LBCE=−[ylog(y^)+(1−y)log(1−y^)]

🧠 含义解释:

当模型预测的概率越接近真实标签(比如真实为"猫",预测猫=0.99),损失越小。当预测概率偏离真实标签(比如真实为"猫",预测猫=0.1),损失急剧增大。

特点总结:

优点 缺点
对概率输出 (Softmax) 天然匹配 对错误预测惩罚较大
数学性质良好、可导 对于极端预测 (0 或 1) 易产生数值不稳定
可清晰度量分类置信度 需要概率化输出(如 Sigmoid / Softmax)

💻 PyTorch 实现:

(1) 二分类(Binary CrossEntropy)

python 复制代码
import torch
import torch.nn as nn

loss_fn = nn.BCELoss()  # 输出需经过Sigmoid
y_pred = torch.tensor([0.9, 0.2, 0.8])
y_true = torch.tensor([1.0, 0.0, 1.0])
loss = loss_fn(y_pred, y_true)
print(loss.item())

⚠️ 若模型输出未经 Sigmoid,则使用 BCEWithLogitsLoss()(更稳定,内部自带 Sigmoid)。

(2) 多分类(CrossEntropyLoss)

python 复制代码
import torch
import torch.nn as nn

loss_fn = nn.CrossEntropyLoss()
y_pred = torch.tensor([[2.0, 0.5, 0.1], [0.3, 2.1, 0.2]])  # logits
y_true = torch.tensor([0, 1])  # 标签索引
loss = loss_fn(y_pred, y_true)
print(loss.item())

说明:CrossEntropyLoss 内部会自动执行 Softmax。

🔢 举个例子直观理解:

类别 真实标签 y y y 预测概率 (猫/狗) Loss 值
样本 1 猫 (1,0) (0.9, 0.1) 很小(预测准)
样本 2 猫 (1,0) (0.3, 0.7) 较大(预测错)
样本 3 狗 (0,1) (0.4, 0.6) 较小(预测对)

🧮 四、回归 vs 分类的损失函数对比

任务类型 常用损失函数 适用场景 备注
回归 MSE / MAE / Huber 连续数值预测 预测误差的"距离"
分类 Cross-Entropy / BCE 离散标签预测 概率分布差距

🧭 五、扩展:Huber Loss(平衡 L1 与 L2)

KaTeX parse error: Expected 'EOF', got '&' at position 60: ... - \\hat{y})^2 &̲ \\text{if } |y...

当误差小于阈值 δ \delta δ 时使用平方误差(平滑优化),当误差大于 δ \delta δ 时使用绝对误差(抗异常)。


📌 总结一句话:

  • 回归问题: 衡量预测值与真实值之间的"距离差"。
  • 分类问题: 衡量预测概率分布与真实标签分布之间的"相似度差"。

优化目标:损失越小,模型预测越接近真实。

相关推荐
oak隔壁找我2 小时前
Spring AI 实现MCP简单案例
java·人工智能·后端
星光一影2 小时前
SpringBoot+Vue3无人机AI巡检系统
人工智能·spring boot·websocket·mysql·intellij-idea·mybatis·无人机
hxj..2 小时前
如何进行AI作图(架构图,流程图等)
人工智能·ai·ai作画
飞哥数智坊2 小时前
初级岗正在消失!1.8亿岗位数据让我看清:AI协同时代已经来了
人工智能
Mintopia2 小时前
☁️ Cloud Code 模型演进的优势:从“本地编译”到“云端智能协作”
前端·人工智能·aigc
abcd_zjq3 小时前
VS2026+QT6.9+ONNX+OPENCV+YOLO11(目标检测)(详细注释)(附测试模型和图像)
c++·人工智能·qt·目标检测·计算机视觉·visual studio
Altair澳汰尔3 小时前
成功案例丨平衡性能与安全的仿真:Altair助力 STARD 优化赛车空间车架设计
大数据·人工智能·仿真·fea·有限元分析·cae
思绪漂移3 小时前
CodeBuddy AI IDE :Skills 模式
ide·人工智能