《深度学习》—— PyTorch的神经网络模块中常用的损失函数

文章目录

  • 前言
  • 一、回归模型中常用的损失函数
    • 1、平均绝对误差损失(L1Loss)
    • 2、均方误差损失(MSELoss也称L2Loss)
    • 3、SmoothL1Loss
  • 二、分类模型中常用的损失函数
    • 1、负对数似然损失(NLLLoss)
    • 2、二元交叉熵损失(BCELoss)
    • 3、交叉熵损失(CrossEntropyLoss)

前言

  • 在神经网络中,损失函数(Loss Function)扮演着至关重要的角色,它是衡量模型预测值实际值之间差异的关键工具

  • 损失函数,顾名思义,是用来量化模型预测结果“损失”或“误差”大小的函数。在神经网络训练过程中,损失函数通过将预测值与实际值进行比较,计算出一个数值(通常为非负实数),该数值反映了模型在当前状态下的预测性能。这个数值越小,表示模型的预测结果越接近真实值,即模型的性能越好。

  • 在PyTorch的nn(神经网络模块)中提供了很多的损失函数,如下:

    from torch import nn  # 导入神经网络模块
    __all__ = ['L1Loss', 'NLLLoss', 'NLLLoss2d', 'PoissonNLLLoss', 'GaussianNLLLoss', 'KLDivLoss',
               'MSELoss', 'BCELoss', 'BCEWithLogitsLoss', 'HingeEmbeddingLoss', 'MultiLabelMarginLoss',
               'SmoothL1Loss', 'HuberLoss', 'SoftMarginLoss', 'CrossEntropyLoss', 'MultiLabelSoftMarginLoss',
               'CosineEmbeddingLoss', 'MarginRankingLoss', 'MultiMarginLoss', 'TripletMarginLoss',
               'TripletMarginWithDistanceLoss', 'CTCLoss']
    # 调用方法 ——> nn.损失函数名
    

一、回归模型中常用的损失函数

1、平均绝对误差损失(L1Loss)

  • L1 Loss,也称为平均绝对误差(Mean Absolute Error, MAE),是深度学习中常用的一种损失函数,主要用于衡量模型预测结果与真实标签之间的平均绝对误差。以下是关于L1 Loss的详细解释:
  • 定义与公式
    • L1 Loss定义为模型预测值与真实值之间差的绝对值的平均。对于一个大小为 N 的样本集合,L1 Loss的公式如下:
      在这里插入图片描述
  • 特点与优势
    • 1.鲁棒性:与 L2 Loss(均方误差)相比,L1 Loss对于异常值(outliers)的容忍性更高,因此在某些需要考虑异常值的任务中,如目标检测、人脸识别等领域,L1 Loss被广泛应用。
    • 2.稳定梯度:L1 Loss的梯度在误差较小时较为稳定,不会因误差的微小变化而导致梯度的大幅波动,这有助于模型的稳定训练。
    • 3.稀疏性:在某些情况下,L1 Loss更容易得到稀疏解,即更多的预测值为0,这在特征选择等任务中可能具有优势。
  • 应用场景:L1 Loss主要用于回归任务中,是监督学习中衡量模型预测性能的重要指标之一

2、均方误差损失(MSELoss也称L2Loss)

  • 定义与公式

    • MSELoss通过计算预测值与真实值之间差异的平方的平均值来衡量模型的预测性能。其数学表达式为:
      在这里插入图片描述
  • 优点与局限性

  • 优点:

    • 1.简单直观:MSELoss的计算方式简单,易于理解和实现。
    • 2.优化友好:在梯度下降等优化算法中,MSELoss的梯度计算也相对简单,有助于模型的快速收敛。
  • 局限性:

    • 1.对异常值敏感:由于MSE Loss是平方误差,因此当数据中存在异常值时,这些异常值可能会对损失函数产生较大的影响,从而导致模型性能下降。
    • 2.不考虑误差方向:MSELoss只考虑误差的大小,而不考虑误差的方向,这可能导致在某些情况下模型的预测结果偏离真实值的方向。
  • 应用场景:MSELoss因其简单直观的特点,在多种回归问题中得到了广泛应用,例如:房价预测、股票价格预测、时间序列预测等

3、SmoothL1Loss

  • SmoothL1Loss是一种在深度学习中常用的损失函数,特别是在目标回归问题中。它结合了L1 Loss和L2 Loss的优点,提供了一种平滑的损失度量方式。
  • SmoothL1Loss的公式过于复杂,只需要记住它是结合了L1 Loss和L2 Loss两个损失函数
  • 特点与优势
    • 1.平滑性:SmoothL1Loss在差异较小时采用L2 Loss的平方形式,这使得损失函数在这一点附近更加平滑,有助于模型的稳定训练。
    • 2.鲁棒性:当差异较大时,SmoothL1Loss采用L1 Loss的形式,这有助于减少异常值(离群点)对模型训练的影响,使得模型更加鲁棒。
    • 3.平衡性:SmoothL1Loss通过结合L1 Loss和L2 Loss的优点,既能在差异较小时提供稳定的梯度(如L2 Loss),又能在差异较大时保持较小的梯度(如L1 Loss),从而在两者之间取得平衡。
  • 应用场景
    • SmoothL1Loss广泛应用于目标检测边界框回归等任务中。在这些任务中,预测值和真实值之间的差异可能很大,同时需要模型对异常值具有一定的鲁棒性。SmoothL1Loss正好满足了这些需求,因此在这些领域得到了广泛应用。

二、分类模型中常用的损失函数

1、负对数似然损失(NLLLoss)

  • 定义与公式
    • NLLLoss用于度量模型预测的类别概率分布与实际类别分布之间的差距。对于每个样本,NLLLoss计算预测的类别的概率与真实类别的概率的负对数似然值,最终将所有样本的损失值求平均得到总损失。其计算公式如下:
      在这里插入图片描述
  • 特点与优势
    • 直观性:NLLLoss直接反映了模型预测的概率分布与实际分布之间的差异,损失值越小,说明模型预测越准确。
    • 适用性:NLLLoss特别适用于多分类问题,能够很好地衡量模型在多个类别上的预测性能。
    • 灵活性:在PyTorch等深度学习框架中,NLLLoss可以通过设置不同的参数来适应不同的需求,如是否对损失值进行平均或求和等。
  • 应用场景:NLLLoss广泛应用于各种深度学习任务中,特别是多分类问题

2、二元交叉熵损失(BCELoss)

  • 定义与公式
    • BCELoss通过计算模型输出的概率分布与实际标签之间的交叉熵损失来评估模型的性能。对于每个样本,BCELoss的公式如下:
      在这里插入图片描述
  • 特点与优势
    • 适用于二分类问题:BCELoss特别适用于处理只有两个类别的分类问题,如文本情感分析(积极/消极)、病患诊断(患病/未患病)等。
    • 直接优化分类准确率:BCELoss直接衡量预测概率与真实标签之间的差异,通过最小化该差异来优化模型的分类性能。
    • 平滑且易于求导:BCELoss的函数曲线平滑,求导过程相对简单,有利于在训练过程中使用梯度下降等优化算法进行参数更新。
  • 应用场景:BCELoss广泛应用于各类二分类任务中,例如:
    • 文本分类:如情感分析、垃圾邮件检测等。
    • 图像识别:如医学影像分析中的病患诊断。
    • 生物信息学:如基因表达数据的分类等。

3、交叉熵损失(CrossEntropyLoss)

  • 定义与公式

    • 对于多分类问题,假设有C个类别,CrossEntropyLoss的公式可以表示为:
      在这里插入图片描述
  • 特点与优势

    • 1.直观性:交叉熵损失函数直接衡量了预测概率分布与真实概率分布之间的差异,具有直观性。
    • 2.优化友好:交叉熵损失函数的梯度计算相对简单,有助于在训练过程中使用梯度下降等优化算法进行参数更新。
    • 3.适用于多分类问题:交叉熵损失函数是处理多分类问题的标准方法,与softmax激活函数结合使用,能够有效地提高模型的分类性能。
  • 应用场景:CrossEntropyLoss广泛应用于各类分类任务中, 例如:

    • 图像分类:如手写数字识别、物体识别等。
    • 自然语言处理:如文本分类、情感分析等。
    • 生物信息学:如基因序列分类等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/879421.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络封装分用

目录 1,交换机 2,IP 3,接口号 4,协议 分层协议的好处: 5,OSI七层网络模型. 6,TCP/IP五层网络模型(主流): [站在发送方视角] [接收方视角] 1,交换机 交换机和IP没有关系,相当于是对路由器接口的扩充,这时相当于主机都与路由器相连处于局域网中,把越来越多的路由器连接起…

8-----手机机型维修工具助手 功能较全 涵盖解锁 刷机 修复等选项 维修推荐

上图是一款功能较全的维修加密狗。目前可以无限制 任何人使用。看图片可以了解其中涵盖刷机 解锁 修复分区 查看短接图 安装驱动 修复基带等等选项。而且其中有针对各个机型型号的对应功能操作。以及一些rec5.0相关的操作选项。 通过此博文了解 ★★★★★此工具涵盖的一些…

论文解读《NewsBench:一个评估中文新闻大型语言模型编辑能力的系统评估框架》

引言:感觉这篇文章,对 LLMs 的新闻编辑能力做了一个详细的实验和分析,而且还贡献了一个宝贵的中文新闻数据集,蛮不错的,后面或许可以用起来,就拜读了一下。 这篇博客的题目说是解读,其实大部分…

Java发邮件:如何配置SMTP服务器实现发信?

Java发邮件功能实现的教程?Java发邮件的方式有哪些? 无论是用于用户注册确认、密码重置,还是系统通知,Java发邮件都是不可或缺的一部分。AokSend将详细介绍如何配置SMTP服务器,以便在Java发邮件时能够顺利发送邮件。 …

如何创建和编辑抖音百科词条,不会的找我们代创建!

如何创建和编辑抖音百科词条,不会的找我们代创建! 如何创建抖音百科个人词条,个人抖音百科的创建 #抖音百科 #百科 #推广 做过百度百科的老板们注意了,等一下别划走。 2024 年品宣新风口出现了,抖音百科正在替代百度…

Flask-JWT-Extended登录验证

1. 介绍 """安装:pip install Flask-JWT-Extended创建对象 初始化与app绑定jwt JWTManager(app) # 初始化JWTManager设置 Cookie 的选项:除了设置 cookie 的名称和值之外,你还可以指定其他的选项,例如:过期时间 (max_age)&…

erlang学习:mnesia数据库与ets表1

Mnesia 和 ETS 都是 Erlang 提供的表管理工具,用于存储和检索数据,但它们之间有一些重要的区别和共同点。 共同点 都是Erlang提供的表存储机制:ETS 和 Mnesia 都允许你在内存中创建表,并且可以用来存储键值对或者更复杂的数据结…

VC++以资源方式打开可执行文件

刚看一个资料说可以在VC中,以资源方式打开可执行文件,然后它如果包含对话框一些资源,会呈现出来,可以把其他程序界面上的控件直接拷贝到自己程序; 但是操作了一下没有成功, 先新建一个空对话框准备拷贝东…

Modbus_tcp

目录 一:modbus起源 1.起源 2. 分类: 3. 优势: 4. 应用场景: 5.ModbusTCP特点(掌握): 二、 ModbusTCP的协议 1. 报文头 2. 寄存器 1. 线圈(Coils) 2. 离…

【无标题】rocket

rocketMQ集群双主双从同步模式(2m-2s-sync)搭建-CSDN博客 集群架构概念 在部署的时候首先要将nameserver启动起来,之后就是将broker启动起来,broker启动起来会将自己的信息注册到nameserver上面。之后再去创建topic,因为发消息的逻辑和收消…

虹科方案 | 精准零部件测试!多路汽车开关按键功能检测系统

欢迎关注虹科,为您提供最新资讯! #LIN/CAN总线 #零部件测试 #CAN数据 导读 在汽车制造业中,零部件的安全性、功能性和可靠性是确保车辆整体性能的关键。虹科针对车辆零部件的LIN/CAN总线仿真测试,提出了基于虹科Baby-LIN系列产…

【教程】鸿蒙ARKTS 打造数据驾驶舱---前序

鸿蒙ARKTS 打造数据驾驶舱 ​ 前面2章我介绍了如何通过定义View绘制箭头以及圆形进度,初步了解了鸿蒙如何进行自定义View。接下来我将通过我最近在带的一个VUE的项目,简单实现了几个鸿蒙原生页面。帮助大家快速上手纯血鸿蒙开发. 本项目基于Api11Stage模…

Qt 弹出菜单右键菜单 QMenu 设置不同颜色的子项

概述 在Qt中,可以使用样式表(StyleSheet)来自定义 QMenu 的外观,包括其子项(如菜单项QAction)的颜色。但是,这通常可以设置 QMenu 的整体样式,而不能单独设置某个子项的颜色。不过&…

Cobalt Strike的下载与基本用法

CobaltStrike4.8 链接:百度网盘 请输入提取码 提取码:tgf3 what Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器。Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个&…

第六部分:1---进程间通信,匿名管道

目录 进程间通信 进程间通信的目的: 进程间通信的本质: 管道: 管道的定义: 匿名管道 单向通信的管道通路: 进程和文件之间的解耦: 单向管道的读写端回收问题: 管道通信主要实现动态数…

Java多线程-(线程的创建,线程安全,线程状态)

第一章.创建线程的方式 1.第一种方式_extends Thread 1.定义一个自定义线程类继承Thread 2.重写run方法(run方法是用于设置线程任务的) 3.创建自定义线程类对象 4.调用Thread类中的start方法(start方法:开启线程,jvm自动执行run方法) public class MyThread extends Thread{…

MacOS安装MAT教程

MAT下载地址MAT下载地址MAT下载地址MAT下载地址 如果不知道你的芯片类型, 可以执行如下命令 uname -m

VMware中安装win7和kail等虚拟机

主要内容 第一部分 安装win 7第二部分 安装kali第三部分 安装UbuntuUbuntu22.04上安装PwntoolsUbuntu上安装vim 第四部分 安装win 10office Word全套安装教程 第一部分 安装win 7 1.打开安装好的虚拟机 参考链接:虚拟机VMware安装windows7 64位操作系统&#x…

(娱乐)魔改浏览器-任务栏图标右上角加提示徽章

一、目标: windows中,打开chromium,任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角,加上"有1条新消息"的小提示图标,也叫徽章(badge)注意:本章节纯属娱乐,有需要…

阿里巴巴搜索API返回值:电商市场竞争的新武器含

阿里巴巴搜索API返回值在电商市场竞争中扮演着至关重要的角色,它为企业提供了深入了解市场、分析竞争对手的宝贵资源。以下是对阿里巴巴搜索API返回值及其在电商市场竞争中应用的详细解析,并附上示例代码。 一、阿里巴巴搜索API返回值概述 阿里巴巴搜索…