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

从TensorFlow到PyTorch:AI框架十年混战,我们该站哪一队? 2015年TensorFlow开源时,没人能想到十年后AI框架会是如今的格局——曾经"Google出品,必属精品"的TensorFlow,如今要和后起之秀PyTorch分庭抗礼。作为一个从TensorFlow 1.x踩坑过来的算法工程师,看着这两个框架从"泾渭分明"到"互相借鉴",再到现在的"各有胜负",想聊聊它们的底层差异、适用场景,以及普通开发者该怎么选。 阅读详情

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 降低易分样本权重,聚焦难样本

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

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

Adam优化器原理解析:从数学公式到PyTorch实现 Adam是深度学习中最常用的自适应优化算法,其核心在于融合动量机制与梯度二阶矩估计,实现参数级自适应学习率。原理上,它通过指数加权移动平均(EWMA)分别建模梯度的一阶矩(方向趋势)和二阶矩(波动强度),再经偏差校正消除初始化偏置,最终以m̂_t/√v̂_t形式动态缩放更新步长。这一设计显著缓解了SGD的方向震荡与尺度失配问题,在CIFAR-10、MNIST等标准任务中展现出更强的收敛速度、鲁棒性与稳定性。本文聚焦Adam的数学本质与工程实现,结合数值推演与PyTorch源码逻辑,深入解析beta1、bet 阅读详情

相关推荐

现代C++手写损失函数:数值稳定性与边缘部署实战

损失函数是深度学习模型训练与优化的核心数学组件,其本质是一组可微分的标量映射,决定梯度流向与收敛行为。在工业级边缘部署场景中,通用框架封装的自动求导与GPU加速难以兼顾内存受限、低延迟(<8ms)和浮点确定性等硬约束。此时,手动实现交叉熵、MSE等损失函数成为必要选择——它要求深入理解Log-Sum-Exp技巧、Kahan求和、SIMD向量化及模板元编程等关键技术,以保障数值稳定性与跨平台一致性。本文聚焦现代C++20工程实践,覆盖ARM NEON/AVX2指令级优化、constexpr编译期校验、混合精度

weixin_30321449的博客 369

PyTorch损失函数实战:如何为你的模型选择最佳损失函数(附代码对比)

本文深入探讨了PyTorch中损失函数的实战选择策略。针对回归任务,对比分析了MSE、L1和Smooth L1(Huber)损失函数在应对异常值时的不同表现;针对分类任务,详细解析了CrossEntropyLoss与BCEWithLogitsLoss在单标签、二分类及多标签场景下的正确应用。文章通过代码对比和可视化,帮助开发者根据数据特性和任务目标,为模型选择最合适的损失函数,从而提升训练效率和模型性能。

weixin_29061425的博客 336

CTF视角下的AI安全入门:从机器学习基础到对抗样本实战

机器学习作为人工智能的核心技术,通过算法模型从数据中学习规律,实现分类、预测等任务。其核心原理在于构建从输入特征到输出结果的映射函数,通过优化损失函数来调整模型参数。这项技术的价值在于能够自动化处理复杂模式识别问题,在网络安全领域展现出巨大潜力,例如用于恶意流量检测、异常行为分析等场景。随着AI系统的广泛应用,其自身安全性也成为焦点,模型在面对精心构造的输入时可能产生误判,这引出了对抗样本攻击等安全议题。本文聚焦于AI安全入门,针对安全从业者,通过CTF实战案例解析机器学习模型的基本构成与脆弱性,特别是数据

weixin_30536513的博客 392

PyTorch实战:手写数字识别

1.背景介绍 1.1 人工智能与深度学习 在过去的十年里,人工智能(AI)和深度学习(DL)已经从理论研究领域走入了我们的日常生活。无论是语音识别的智能助手,还是图像识别的自动驾驶汽车,都离不开深度学习的支持。而在这些深度学习应用中,手写数字识别是最基础也是最重要的一环。

AI架构师小马 1116

PyTorch线性回归实战:从参数管理到GPU加速的工程化落地

线性回归是机器学习最基础的监督学习模型,其核心在于最小化预测误差并求解最优参数;在PyTorch中实现它,本质是掌握张量计算、自动微分与优化器协同工作的完整训练范式;技术价值不仅在于拟合能力,更在于构建可调试、可迁移、可扩展的深度学习工程直觉;典型应用场景包括IoT时序预测、电商GMV建模、传感器数据校准等工业级回归任务;本文聚焦PyTorch原生实现中的关键细节——nn.Module封装、梯度生命周期管理、DataLoader数据流设计及GPU加速实测,覆盖从CPU到CUDA的完整部署链路。

靓靓软件工作室 437

多模态AI入门:掌握线性代数、概率论与向量几何,从数学基础到模型实践

多模态人工智能(AI)是当前AI领域的重要发展方向,它旨在让机器能够理解和处理文本、图像、音频等多种类型的数据。其核心原理在于将不同模态的信息映射到统一的数学空间,并通过向量、矩阵等数学工具进行表示、对齐和交互。这背后离不开扎实的数学基础,尤其是线性代数、概率论与向量几何。线性代数为模型参数、注意力机制提供了矩阵运算的框架;概率论是理解生成模型(如扩散模型)不确定性和去噪过程的理论基石;向量几何则是实现图文对齐(如CLIP模型)和多模态检索的关键技术。掌握这些数学知识,不仅能帮助开发者深入理解多模态AI的底

weixin_33922670的博客 466

[人工智能-大模型-75]:模型层技术 - 模型训练六大步:④损失函数:计算迭代误差,量化差距,找出差距 - 主要功能与对应的组成函数

你也可以自己写损失函数,实现特定目标。任务最基本组成函数二分类BCELoss多分类回归MSELossL1LossHuberLoss'mse''mae'多标签✅掌握这8个核心损失函数,你就能应对99%的AI任务。

文火冰糖(王文兵)的博客 1208

PyTorch深度学习框架

作者:禅与计算机程序设计艺术 1.简介 PyTorch是Facebook AI Research开发的一个基于Python语言的机器学习工具包,它是一个开源项目,由前NVIDIA研究员、Facebook员工以及众多贡献者共同开发维护。PyTorch具有以下特性: GPU加速计算

AI天才研究院 904

Pixyz深度解析:基于PyTorch的高效生成模型开发框架

Pixyz是一个基于PyTorch的高层次深度生成模型库,旨在以更简洁、直观和可扩展的方式开发深度生成模型。在当今生成式AI蓬勃发展的时代,Pixyz为研究人员和工程师提供了一个统一的框架,能够轻松实现各种复杂的深度生成模型,包括变分自编码器、流式模型和生成对抗网络等。 ## 🎯 设计理念与核心价值 Pixyz的核心设计理念是**"像写数学公式一样编写代码"**。传统的深度生成模型实现往往需

gitblog_00496的博客 888

深度学习的框架:TensorFlow与PyTorch

"深度学习的框架:TensorFlow与PyTorch" 作者:禅与计算机程序设计艺术 1. 背景介绍 深度学习作为当前人工智能领域最为热门和前沿的技术之一,在计算机视觉、自然语言处理、语音识别等诸多领域取得了突破性进展。作为支撑深度学

AI天才研究院 1116

机器学习工具kits:TensorFlow与PyTorch

机器学习工具kits: TensorFlow与PyTorch 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍 1.1 问题的由来

AI天才研究院 774

2026年AI学习路线:从零基础到PyTorch实战的完整指南

机器学习作为人工智能的核心技术,通过算法让计算机从数据中学习规律并做出预测。其原理基于统计学和优化理论,通过构建模型来识别数据中的模式。在工程实践中,PyTorch框架因其动态计算图和简洁API成为深度学习首选工具,极大提升了模型开发效率。计算机视觉和自然语言处理是机器学习的重要应用场景,涉及图像识别、目标检测、文本分析等关键技术。本文基于2026年技术趋势,为零基础转行者提供涵盖数学基础、编程技能、算法原理到项目实战的系统学习路径,帮助开发者避开常见误区,高效掌握AI开发核心能力。

weixin_34150830的博客 423

深度学习框架:TensorFlow与PyTorch

1. 背景介绍 1.1 深度学习的崛起 深度学习是近年来人工智能领域最热门的研究方向,它在图像识别、语音识别、自然语言处理等领域取得了显著的成果。深度学习的核心是神经网络,特别是深度神经网络,通过模拟人脑神经元的连接和计算方式,实现对大量数据的自动学习和特征提取。

AI天才研究院 165

人工智能入门指南:从机器学习到AIGC的实战解析

机器学习作为人工智能的核心技术,通过让计算机从数据中自动学习规律,实现了从感知到决策的智能化。其核心原理基于算法模型对海量数据的训练与优化,通过反向传播等机制调整参数以最小化预测误差。这项技术的价值在于能够处理人类难以直接编码的复杂模式,在图像识别、自然语言处理、智能推荐等场景中展现出强大能力。随着深度学习与神经网络的发展,特别是大模型的出现,人工智能在AIGC(人工智能生成内容)领域实现了突破,催生了AI绘画、智能写作等创新应用。本文通过情感分析等实战案例,结合Hugging Face等工具,展示了如何快

weixin_34221036的博客 496

AI原生应用领域模型蒸馏的性能提升策略

随着GPT-4、PaLM等千亿参数大模型的普及,AI应用正从“调用API”向“原生嵌入模型”演进(即AI原生应用)。但手机、智能家居、车载终端等设备的算力/内存限制(如手机GPU内存通常≤16GB,边缘设备CPU算力≤10TOPS),要求模型体积需从GB级压缩到MB级,同时保持90%以上的原模型性能。本文聚焦“如何通过模型蒸馏技术实现这一目标”,覆盖理论原理、策略优化、实战案例三大方向。用“老师教学生”的故事引出模型蒸馏核心概念;拆解蒸馏性能的三大关键影响因素(教师、学生、知识传递);

大数据洞察的博客 896

【保研面试】线性代数面试复习

线性相关和无关 有向量组A,a1,a2…an , 如果存在不是全为0的k1,k2…kn,满足 a1 * k1 + a2 * k2… an * kn = 0 则向量组A称为线性相关(可以跟向量组A共面联系,即可以通过几个向量,表示出另外几个向量,故称为线性相关) 极大线性无关组 设有向量组A a1,a2…an(本身为线性相关) :若选出r个向量,满足以下条件 (1)向量组 r : 线性无关; (2) 向量组A中任意r+1个向量(若有的话)都线性相关, 则向量组r 是向量组A的一个极大线性无关组(简称为

云端筑梦师 6311

Markdown生成PDF技术文档包含PyTorch公式

通过整合PyTorch-CUDA容器与支持公式的Markdown系统,实现从实验到文档的同步演进。利用Docker镜像确保环境一致性,结合Jupyter与LaTeX公式记录设计决策,形成可复现、可追溯的知识体系,提升团队协作效率与项目可持续性。

weixin_32252929的博客 361

psasp和matlab,PSASP与Matlab/SimPowerSystems联合仿真接口方法研究

[1]李亚楼,吴中习.Matlab模型接入PSASP暂态稳定计算模块的方法[J].电网技术,2008,32(19):31-36.Li Yalou,Wu Zhongxi.An Approach to Interface Matlab Model with PSASP Transient Stability Module [J].Power System Technology,2008,32(19):...

weixin_39636245的博客 1082

告别语言纠结:AI 项目选择 Python 的五个关键决策依据

选择 Python 作为 AI 项目的开发语言,非一时潮流,而是基于其库生态、语法简洁性、社区支持、数据处理力和集成灵活性这五大核心依据。这些优势协同作用,帮助开发者规避语言选择的困惑,直接切入创新本质。无论您是初学者还是资深工程师,拥抱 Python 意味着拥抱更高效、更可靠的 AI 开发之旅。立即行动,让您的项目从理论迈向实践!

yhgjhjfhkjkl的博客 661

告别重复劳动:用Python+pywinauto打造你的微信个人助理(自动回复/收款/定时发消息)

本文介绍如何利用Python和pywinauto库构建微信个人助手,实现自动回复、定时消息、智能收款等功能,告别重复劳动。通过详细的代码示例和配置指南,帮助开发者快速掌握微信自动化技术,提升工作效率。

weixin_42568801的博客 332

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

本文内容参考Joseph Perl 的线上会议,视频详情可见于,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。

fy方的博客 7606

Pixyz深度学习框架的架构设计与实现原理解析

Pixyz是一个基于PyTorch构建的高层次深度生成模型库,专为简化复杂生成模型的实现而设计。该框架通过统一API抽象,使研究人员和开发者能够以数学公式般简洁的方式实现变分自编码器、生成对抗网络、流模型等多种深度生成模型,显著提升模型开发效率。 ## 技术背景与应用场景 深度生成模型已成为人工智能领域的重要研究方向,但模型复杂度的增加使得实现和复现变得困难。Pixyz旨在解决这一痛点,为研究

gitblog_00044的博客 362

3D Slicer隐藏技巧:这样玩转医学影像分割与3D建模(含DICOM处理)

本文深入探讨3D Slicer在医学影像分割与3D建模中的高级应用技巧,包括多模态分割策略、三维可视化优化及DICOM数据处理。通过专业配置和Python脚本示例,帮助医疗AI开发者和影像科医师提升工作效率,实现精准的医学图像分析与建模。

weixin_28559803的博客 435
上一篇: 超详细!CUDA安装图文教学,cuda安装教程(超详细),避免踩坑
下一篇: CrossEntropy Loss(交叉熵损失)和 NLLLoss(负对数似然损失):数学公式 + 代码示例
王_teacher
博客等级 码龄9年 118粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值