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

🎯 一、什么是损失函数(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 δ 时使用绝对误差(抗异常)。


📌 总结一句话:

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

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

相关推荐
ElfBoard30 分钟前
ElfBoard技术贴|如何在【RK3588】ELF 2开发板实现GPIO功能复用
linux·人工智能·单片机·嵌入式硬件·物联网·机器人
SUPER52664 小时前
本地开发环境_spring-ai项目启动异常
java·人工智能·spring
上进小菜猪8 小时前
基于 YOLOv8 的智能车牌定位检测系统设计与实现—从模型训练到 PyQt 可视化落地的完整实战方案
人工智能
AI浩8 小时前
UNIV:红外与可见光模态的统一基础模型
人工智能·深度学习
GitCode官方8 小时前
SGLang AI 金融 π 对(杭州站)回顾:大模型推理的工程实践全景
人工智能·金融·sglang
木头左9 小时前
LSTM模型入参有效性验证基于量化交易策略回测的方法学实践
人工智能·rnn·lstm
找方案9 小时前
我的 all-in-rag 学习笔记:文本分块 ——RAG 系统的 “信息切菜术“
人工智能·笔记·all-in-rag
亚马逊云开发者9 小时前
让 AI 工作空间更智能:Amazon Quick Suite 集成博查搜索实践
人工智能
腾讯WeTest9 小时前
「低成本、高质高效」WeTest AI翻译限时免费
人工智能
Lucas555555559 小时前
现代C++四十不惑:AI时代系统软件的基石与新征程
开发语言·c++·人工智能