AI损失函数:数学公式 + PyTorch API + 使用场景

L1 损失(平均绝对误差 MAE)

数学公式

单个样本:

L_1(y,\hat y) = |y - \hat y|

批次平均:

\mathcal{L}_{MAE} = \frac{1}{N}\sum_{i=1}^N |y_i - \hat y_i|

PyTorch API
import torch
import torch.nn as nn
​
# 1. 类形式(推荐)
criterion = nn.L1Loss()
loss = criterion(pred, target)
​
# 2. 函数形式
loss = torch.nn.functional.l1_loss(pred, target)
使用场景
  • 回归任务、数据含较多异常值/离群点(鲁棒性强)

  • 图像去噪、超分、预测波动较大的连续值

  • 缺点:梯度恒定,极值点处梯度不连续,收敛慢

L2 损失(均方误差 MSE)

数学公式

单个样本:

L_2(y,\hat y) = (y - \hat y)^2

批次平均:

\mathcal{L}_{MSE} = \frac{1}{N}\sum_{i=1}^N (y_i - \hat y_i)^2

PyTorch API
criterion = nn.MSELoss()
loss = criterion(pred, target)
​
# 函数形式
loss = torch.nn.functional.mse_loss(pred, target)
使用场景
  • 标准回归任务(房价预测、流量预测、坐标回归)

  • 误差越大惩罚越重,对离群点敏感

  • 梯度平滑,收敛速度快

Smooth L1 损失(平滑L1)

结合 L1、L2 优点,广泛用于目标检测

数学公式

\text{SmoothL1}(x) = \begin{cases} \displaystyle \frac{1}{2}x^2, & |x| < 1 \\[4pt] |x| - \displaystyle \frac{1}{2}, & |x| \ge 1 \end{cases} \mathcal{L} = \frac{1}{N}\sum_{i=1}^N \text{SmoothL1}(y_i - \hat y_i)

PyTorch API
criterion = nn.SmoothL1Loss()
loss = criterion(pred, target)
​
# 函数形式
loss = torch.nn.functional.smooth_l1_loss(pred, target)
使用场景
  • 目标检测:边框回归(YOLO、Faster R-CNN)

  • 误差小时用 MSE、误差大时用 L1,兼顾收敛与鲁棒性

二元交叉熵

BCE (Binary Cross Entropy)

数学公式

单个样本:

\mathcal{L}_{BCE} = - \big[ y\log(\hat y) + (1-y)\log(1-\hat y) \big]

\hat y \in (0,1)  (Sigmoid 输出), y\in{0,1}

PyTorch API
# 输入:pred 经过 sigmoid,target 是 0/1 标签
criterion = nn.BCELoss()
loss = criterion(torch.sigmoid(pred), target)
​
# 函数形式
loss = torch.nn.functional.binary_cross_entropy(torch.sigmoid(pred), target)
使用场景
  • 标准单标签二分类(正负样本区分)

  • 图像二分类、判断是否存在目标、简单二分类任务

BCEWithLogitsLoss

(BCE + Sigmoid 合并)

内部集成 Sigmoid,数值更稳定。

数学公式

等价于先 Sigmoid 再 BCE:

输入线性调整后的数据 z

\sigma(z) = \frac{1}{1+e^{-z}}

\mathcal{L} = - \big[ y\log(\sigma(z)) + (1-y)\log(1-\sigma(z)) \big]

PyTorch API
# 无需手动加 sigmoid!内部自带
criterion = nn.BCEWithLogitsLoss()
loss = criterion(pred_logits, target)  # pred_logits: 网络原始输出
使用场景
  • 二分类首选(数值稳定性 > 手动 Sigmoid + BCELoss)

  • 多标签分类、语义分割(逐像素二分类)、样本不均衡二分类

  • 支持 pos_weight 解决正负样本不均衡

交叉熵损失 CrossEntropyLoss

多分类标准损失,CrossEntropyLoss = LogSoftmax + NLLLoss

CrossEntropyLoss(z,y)=NLLLoss(LogSoftmax(z),y)

数学公式

设模型原始输出 z_i,真实类别为 y

\hat p_{y_i} = \text{Softmax}(z_i )= \frac{e^{z_i}}{\sum_j e^{z_j}}

\mathcal{L}_{CE} = -\log(\hat p_{y_i})

批次平均:

\mathcal{L} = -\frac{1}{N}\sum_{i=1}^N \log(\hat p_{y_i})

PyTorch API
# 输入:pred_logits(网络原始输出),target(类别索引,shape=[N])
criterion = nn.CrossEntropyLoss()
loss = criterion(pred_logits, target)
使用场景
  • 单标签多分类(图像分类、文本分类、手写数字识别)

  • 网络最后一层不额外加 Softmax,函数内部自动计算

DiceLoss Dice损失(分割不均衡)

公式

\text{DiceCoeff} = \frac{2|X\cap Y|}{|X|+|Y|},\quad \mathcal{L}=1-\text{DiceCoeff}

PyTorch(无原生层,自定义)
class DiceLoss(nn.Module):
    def __init__(self, smooth=1):
        super().__init__()
        self.smooth = smooth
    def forward(self, pred, target):
        intersection = (pred * target).sum()
        union = pred.sum() + target.sum()
        dice = (2.*intersection + self.smooth)/(union + self.smooth)
        return 1 - dice
使用场景

医学图像分割(前景像素极少,类别极度不均衡)

FocalLoss 聚焦损失(分类/分割不均衡)

核心公式(基于CE改进)

\mathcal{L} = -(1-p_t)^\gamma \log(p_t)

\gamma>0 降低易分样本权重,聚焦难样本

使用场景
  • 目标检测:前景框极少、背景海量

  • 小目标分割、不均衡多分类

内容概要:本文介绍了一个关于三相桥式全控整流及有源逆变电路的实验仿真模型,重点研究三相整流器与逆变器在Simulink环境下的建模与仿真技术。内容涵盖电力电子变换器的工作原理、控制策略设计、系统动态响应分析,并进一步扩展至10kV配电网中不同中性点接地方式(中性点不接地、经小电阻接地、经消弧线圈接地)下的单相、两相短路接地及相间短路故障的仿真研究,全面呈现了电力系统典型故障的暂态特性。此外,文档还整合了丰富的科研资源,涵盖电力系统优化、新能源并网、故障诊断、微电网调度等多个前沿方向,充分体现了Matlab/Simulink在电气工程仿真中的核心地位和广泛应用价值。; 适合人群:电气工程、自动化、电力电子等相关专业的高校学生、科研人员及工程技术人员,具备一定的电路理论基础和仿真软件操作经验者更佳。; 使用场景及目标:①用于教学实验中帮助理解三相整流与逆变电路的工作机制;②支撑科研项目中对电力系统故障特性的建模与分析;③作为开发新型控制算法(如PWM控制、低电压穿越等)的仿真验证平台;④辅助完成毕业设计、课题研究或工程方案评估; 阅读建议:此资源以Simulink仿真实现为核心,强调理论与实践结合,建议读者在学习过程中同步搭建模型,动手调试参数,深入理解各模块功能与系统整体行为,同时可参考文中提供的完整资源链接拓展研究视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值