🎯 学习目标

  • 理解损失函数的作用
  • 掌握常用损失函数的特点
  • 学会根据任务选择损失函数
  • 了解PyTorch中的损失函数实现
损失函数概念图

什么是损失函数

损失函数(Loss Function)衡量模型预测值与真实值之间的差异。 训练目标是最小化损失函数,使模型预测更准确。

📊 常用损失函数

回归任务

# MSE (均方误差) L = 1/n Σ(y - ŷ)² # MAE (平均绝对误差) L = 1/n Σ|y - ŷ|
  • MSE对异常值敏感
  • MAE对异常值鲁棒
  • Huber Loss结合两者优点

分类任务

# 交叉熵损失 L = -Σy log(ŷ) # 二分类交叉熵 L = -[y log(p) + (1-y) log(1-p)]
  • 交叉熵用于分类
  • 配合Softmax使用
  • 关注正确类别的概率

💻 PyTorch实现

import torch.nn as nn # 回归损失 mse_loss = nn.MSELoss() mae_loss = nn.L1Loss() huber_loss = nn.HuberLoss() # 分类损失 ce_loss = nn.CrossEntropyLoss() # 多分类 bce_loss = nn.BCELoss() # 二分类 bce_with_logits = nn.BCEWithLogitsLoss() # 数值更稳定 # 使用示例 criterion = nn.CrossEntropyLoss() loss = criterion(outputs, labels)

⚖️ 损失函数选择指南

任务类型 损失函数 适用场景
回归 MSE 一般回归任务
回归 MAE 存在异常值
二分类 BCEWithLogitsLoss 二分类任务
多分类 CrossEntropyLoss 多分类任务
序列标注 CTCLoss 语音识别等
💡
CrossEntropyLoss已包含Softmax

nn.CrossEntropyLoss内部已包含Softmax操作,模型输出层不需要再加Softmax层,直接输出logits即可。

损失函数
图:损失函数指导模型优化方向

📝 本节小结

  • • 损失函数衡量预测与真实值的差异
  • • 回归任务常用MSE或MAE
  • • 分类任务使用交叉熵损失
  • • CrossEntropyLoss已包含Softmax,无需重复