【深度学习】(3)--损失函数

news2024/11/14 14:52:00

文章目录

  • 损失函数
    • 一、L1Loss损失函数
      • 1. 定义
      • 2. 优缺点
      • 3. 应用
    • 二、NLLLoss损失函数
      • 1. 定义与原理
      • 2. 优点与注意
      • 3. 应用
    • 三、MSELoss损失函数
      • 1. 定义与原理
      • 2. 优点与注意
      • 3. 应用
    • 四、BCELoss损失函数
      • 1. 定义与原理
      • 2. 优点与注意
      • 3. 应用
    • 五、CrossEntropyLoss损失函数
      • 1. 定义与原理
      • 2. 优点与注意
      • 3. 应用
  • 总结

损失函数

损失函数(Loss Function)是机器学习和深度学习中非常重要的一个概念,它用于评估模型的预测值与实际值之间的差异程度。在训练过程中,损失函数作为优化的目标,通过最小化损失函数的值来调整模型参数,从而提高模型的预测准确性。

具体来说,损失函数将模型的预测输出(例如,一个分类任务中的类别概率分布)与真实标签(或真实值)进行比较,并计算出一个表示差异的数值。这个数值越大,表示模型的预测越不准确;数值越小,表示模型的预测越接近真实情况。

接下来,我们介绍几个常用的损失函数。

一、L1Loss损失函数

L1Loss损失函数,也被称为平均绝对误差(Mean Absolute Error, MAE),是深度学习和机器学习中常用的一种损失函数,特别是在回归任务中。

1. 定义

L1Loss计算的是模型预测值f(x)与真实值y之间差的绝对值的平均值。其数学表达式为:

在这里插入图片描述

其中,n是样本数量,yi是第i个样本的真实值,f(xi)是模型对第i个样本的预测值。

2. 优缺点

  • 优点
  1. 稳定性:L1Loss对于所有输入值都有稳定的梯度,不会导致梯度爆炸问题,因此具有较为稳健的解。
  2. 鲁棒性:L1Loss对于噪声和异常值(离群点)具有相对较强的鲁棒性,因为它不会因个别异常值而产生过大的误差。
  3. 稀疏性:L1Loss能够产生稀疏的特征权重,即很多无用或影响较小的特征的权重会被置为0,有助于特征选择和模型简化。
  • 缺点
  1. 不可导性:在0点处,L1Loss的梯度不存在(因为绝对值函数在0点不可导),这可能导致在优化过程中,当权重恰好接近0时,梯度下降法无法继续进行。
  2. 收敛速度:与L2Loss相比,L1Loss在误差较大时,其梯度是恒定的,这可能导致在接近最优解时收敛速度较慢。

3. 应用

  1. L1Loss通常用于回归任务中,特别是当模型需要处理的数据集存在较多噪声或异常值。
  2. 或者希望模型具有稀疏特征时。

然而,由于神经网络通常解决的是复杂问题,且L1Loss在0点不可导的缺点,它在神经网络中的应用相对较少,尤其是在需要精细调整权重的情况下。

二、NLLLoss损失函数

NLLLoss损失函数,全称为Negative Log Likelihood Loss(负对数似然损失),是深度学习中常用的一种损失函数,尤其在处理分类问题时表现出色。

1. 定义与原理

NLLLoss衡量的是模型预测概率分布与真实标签之间差异的损失。在PyTorch等深度学习框架中,它通常用于多分类任务。具体来说,NLLLoss计算的是对数概率的负值与真实标签之间的交叉熵损失。这样做的目的是通过最小化损失来优化模型参数,使得模型的预测结果更加接近真实标签。

2. 优点与注意

NLLLoss损失函数的优点在于它能够直接反映模型预测的概率分布与真实标签之间的差异,且计算过程相对简单高效。然而,在使用时需要注意以下几点:

  1. 输入要求:NLLLoss要求输入的对数概率必须是通过log_softmax函数计算得到的,而不能直接使用softmax函数的输出。
  2. 目标标签:目标标签需要是整数类型,表示每个样本的真实类别索引。
  3. 权重调整:如果需要对不同类别的损失进行权重调整,可以在NLLLoss函数中设置相应的权重参数。
  4. 数值稳定性:由于NLLLoss涉及对数运算,因此需要注意数值稳定性问题。通过先应用log_softmax函数可以避免直接计算softmax时可能出现的上溢或下溢问题。

3. 应用

NLLLoss损失函数在多分类问题中广泛应用,包括但不限于自然语言处理(NLP)中的语言模型、情感分类等任务。在这些任务中,模型需要将输入序列映射到输出标签,而NLLLoss能够评估模型预测的概率分布与真实标签之间的差异,从而指导模型的优化方向。

三、MSELoss损失函数

MSELoss损失函数,全称为Mean Squared Error Loss(均方误差损失函数),是深度学习中常用的一种回归损失函数

1. 定义与原理

MSELoss通过计算预测值与真实值之间差的平方的平均值来衡量模型的性能。具体来说,对于每个样本,它计算预测值与真实值之差的平方,然后对所有样本的平方误差求和并取平均,得到最终的损失值。这种损失函数旨在通过最小化预测值与真实值之间的差异来优化模型参数,从而提高模型的预测准确性。

对于单个样本,假设预测值为 y^,真实值为 y,则该样本的均方误差为 (y^−y)2。对于包含 n 个样本的数据集,MSELoss的计算公式为:

在这里插入图片描述

2. 优点与注意

  • 优点
  1. 优化景观:MSE结果是一个平滑且凸的优化景观,这有助于使用基于梯度的算法(如梯度下降)进行高效优化。
  2. 唯一极小值:MSE具有唯一的全局极小值,这简化了优化过程,并在某些情况下可以获得解析解。
  3. 可微性:MSE在任何地方都是可微的,这使得在训练过程中可以使用基于梯度的优化方法。
  4. 广泛适用性:MSE是回归问题的标准且广泛使用的损失函数,适用于预测连续的数值。
  • 注意
  1. 对异常值敏感:由于MSE计算的是误差的平方,因此它对异常值非常敏感。当数据集中存在极端值时,这些异常值可能会对损失值产生不成比例的影响,从而导致模型性能下降。
  2. 非直观的尺度:MSE的尺度受到平方差的影响,这可能导致其解释性较差。特别是在与原始数据的尺度相比时,MSE可能难以直观地反映模型预测的准确性。

3. 应用

MSELoss在多种回归任务中表现出色,包括但不限于房价预测、股票价格预测、气温预测等。在这些任务中,模型需要输出一个连续的数值预测结果,而MSELoss能够有效地评估模型预测结果与实际值之间的差异,并指导模型的优化方向。

四、BCELoss损失函数

BCELoss损失函数,全称为Binary Cross Entropy Loss(二元交叉熵损失函数),是深度学习中常用于二分类问题的一种损失函数。

1. 定义与原理

BCELoss通过计算模型预测的概率分布与实际标签之间的交叉熵损失来评估模型的性能。在二分类问题中,每个样本的真实标签是0或1,而模型输出的是一个介于0和1之间的概率值,表示该样本属于正类的概率。BCELoss通过比较这两个值之间的差异,为模型提供一个损失值,该值越大表示模型预测越不准确。

对于单个样本,BCELoss的数学公式为:

在这里插入图片描述

其中,y 是实际标签(0 或 1),p 是模型输出的概率值(预测为正类的概率),log 是自然对数。

  • y=1 时,损失函数简化为 −log(p),此时如果 p 越接近 1,则损失越小;
  • y=0 时,损失函数简化为 −log(1−p),此时如果 p 越接近 0,则损失越小。

对于一批样本,BCELoss通常是对所有样本的BCELoss求和后取平均值。

2. 优点与注意

  • 优点
  1. 直观性:BCELoss能够直观地反映模型预测的概率分布与实际标签之间的差异,从而指导模型的优化方向。
  2. 鲁棒性:在二分类问题中,BCELoss对正负样本的预测误差都进行了考虑,使得模型在训练过程中能够同时关注到正负样本的分类情况。
  3. 易于实现:在深度学习框架(如PyTorch、TensorFlow等)中,BCELoss通常作为内置函数提供,易于实现和使用。
  • 注意
  1. 输入要求:在使用BCELoss时,需要注意模型输出的概率值应该经过Sigmoid函数或其他适当的激活函数处理,以确保其值在0和1之间。
  2. 标签要求:BCELoss要求真实标签必须是二值化的(0或1),而不是其他形式的标签(如类别索引、独热编码等)。
  3. 数值稳定性:在计算BCELoss时,需要注意数值稳定性问题。例如,当预测概率 p 非常接近0或1时,log(p) 或 log(1−p) 的值可能会变得非常大或非常小,导致计算过程中出现数值问题。为了避免这种情况,可以对 p 进行一些平滑处理(如添加一个小的正数 ϵp 和 1−p 中)。

3. 应用

BCELoss广泛应用于各类二分类任务中,如文本情感分析(积极/消极)、垃圾邮件检测(垃圾邮件/非垃圾邮件)、病患诊断(患病/未患病)等。在这些任务中,模型需要输出一个二分类的概率预测结果,而BCELoss能够有效地评估模型预测的准确性,并指导模型的优化方向。

五、CrossEntropyLoss损失函数

CrossEntropyLoss损失函数,也称为交叉熵损失函数,是深度学习中用于分类问题的一种常用损失函数。它衡量的是模型预测的概率分布与真实标签的概率分布之间的差异。尽管它通常与多分类问题相关联,但也可以用于二分类问题(在这种情况下,它等价于二元交叉熵损失,即BCELoss的特例)。

1. 定义与原理

交叉熵损失函数通过比较模型对每个类别的预测概率和真实的标签(通常是独热编码形式)来计算损失。如果模型对某个样本的预测概率分布与真实标签越接近,则交叉熵损失越小;反之,损失越大。

对于多分类问题,假设有C个类别,对于每个样本,交叉熵损失的计算公式如下:

在这里插入图片描述

其中,yc 是样本的真实标签中第 c 类的值(在独热编码中,只有一个元素为1,其余为0),pc 是模型预测的第 c 类的概率。

注意,在实际计算中,由于 yc 是独热编码的,所以上式中的求和实际上只涉及一个非零项,即真实标签对应类别的预测概率的对数的负值。

2. 优点与注意

  • 优点
  1. 直观性:交叉熵损失能够直观地反映模型预测的概率分布与真实标签之间的差异。
  2. 易于优化:由于交叉熵损失函数是凸函数(在模型输出为softmax概率的情况下),因此可以使用梯度下降等优化算法来有效地最小化损失。
  3. 鲁棒性:交叉熵损失对预测概率的微小变化敏感,这有助于模型在训练过程中更准确地逼近真实标签。
  • 注意
  1. 输入要求:在使用交叉熵损失函数时,需要确保模型输出的是概率值(通常通过softmax函数进行转换),而真实标签是独热编码形式的。
  2. 数值稳定性:当预测概率接近0时,log(p) 的值会趋于负无穷,这可能导致数值问题。为了解决这个问题,可以在计算对数之前对预测概率进行平滑处理(例如,添加一个小的正数 ϵ 到预测概率中)。
  3. 权重平衡:在处理类别不平衡的数据集时,可以为不同类别的损失分配不同的权重,以改善模型的性能。

3. 应用

交叉熵损失函数广泛应用于多分类问题中,如图像分类、文本分类等。在这些任务中,模型需要输出每个类别的概率预测,而交叉熵损失函数能够有效地评估模型预测的准确性,并指导模型的优化方向。

总结

本篇介绍了部分损失函数,损失函数有很多,这些是较为常用的,其余可以自行了解哦~

  1. L1Loss损失函数:通常用于回归任务中。
  2. NLLLoss损失函数:在多分类问题中广泛应用。
  3. MSELoss损失函数:在多种回归任务中表现出色。
  4. BCELoss损失函数:广泛应用于各类二分类任务中
  5. CrossEntropyLoss交叉熵损失函数:广泛应用于多分类问题中。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++(Qt)软件调试---断点高级用法(20)

C(Qt)软件调试—断点高级用法(20) 文章目录 C(Qt)软件调试---断点高级用法(20)[toc]1、概述2、断点高级用法1.1 条件断点1.2 日志断点/记录点/消息追踪点1.3 函数断点1.4 命中次数断点1.5 异常断点1.6 等待断点/触发断点1.7 临时断…

一台 Linux 同时 安装配置多个 python3 环境( 3.7 - 3.12 )

很多粉丝来信说:安装新 python3 环境,要卸载操作系统原来自带的 python。。。 博主再次声明:不需用搞复杂了,相反可以同时具备多个环境,也不需用配置环境变量 无图无真相,且看此图: 详情操作&am…

Android IME输入法启动显示隐藏流程梳理

阅读Android AOSP 12版本代码,对输入法IME整体框架模块进行学习梳理,内容包含输入法框架三部分IMM、IMMS、IMS的启动流程、点击弹出流程、显示/隐藏流程,以及常见问题和调试技巧。 1. IME整体框架​​​​​​​ IME整体分为三个部分&#xf…

python怎么打开文件对话框

可以使用tkinter.filedialog模块中的askopenfilename函数来实现,tkinter是python自带的GUI,通过askopenfilename函数打开选择文件对话框,代码如下: import tkinter.filedialog fntkinter.filedialog.askopenfilename(title选择一个…

HT366 具有防破音功能的免电感滤波2x20W D类立体声音频功放

特点 输出功率(BTL模式) 2x22W (VDD14V,RL4Ω,THDN10%) 输出功率(PBTL模式) 34W(VDD16V,RL4Ω,THDN10%) 单电源系统,4.5V-16V宽电压输入范围 ACF防破音功能可选 超过90%效率,无需散热器 可选输出模式:BD和ISPW 扩频功能,免电感滤波 模拟差分…

TMC4671——硬件矢量控制的伺服电机控制芯片

Trinamic研发的TMC4671为永磁同步电机、直流无刷电机、音圈电机、直流有刷电机和2相步进电机提供磁场定向控制,是一款完全集成伺服控制的芯片TMC4671凭借在牢固稳定的状态机中嵌入全部必要的控制回路来处理这大幅度降低能耗一市场需求的问题。 一. 嵌入式运动控制…

【机器学习】OpenCV高级图像处理

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 OpenCV高级图像处理图像滤波线性滤波高斯滤波均值滤波双边滤波 非线性滤波中值滤…

AD域控服务器

1.AD域控服务器安装 2.客户端Windows10加入域环境 3.组织单位OU和域用户创建 目的是分部门管理用户和使用域用户登录客户端 4.域用户安全策略 5.当客户端密码锁住了,管理员解锁账户。 6.只允许域用户使用自己的电脑

链动 2+1 模式 S2B2C 商城小程序源码与营销策略创新

摘要:本文探讨了营销策略在产品营销中的重要性,阐述了如何从产品的目标客群、主张价值和盈利模式出发制定各种价格运营策略以及品牌影响力策略,以实现“让用户心甘情愿掏口袋”的目标。引入“链动 21 模式 S2B2C 商城小程序源码”&#xff0c…

Linux 查看磁盘 df -h 已经查看目录大小 du -sh ./*

使用df -h 命令可以查看磁盘信息 df -h 如下图所示: 获取当前目录 每个目录大小 du -sh ./* du -sh ./* 如果文件比较多 我们想获取文件大小最大的前10个 可以运行如下命令: du -ah | sort -rh | head -n 10 du -ah:显示当前目录及其子目录的所有文件和目录的…

寻呼机爆炸,炸醒通讯安全警惕心

据央视新闻报道:当地时间17日下午,黎巴嫩首都贝鲁特以及黎巴嫩东南部和东北部多地发生寻呼机爆炸事件。黎巴嫩公共卫生部长阿卜亚德称,爆炸已造成9人死亡,约有2800人受伤,其中约200人伤情危重。 来源:央视新…

JavaWeb笔记整理——Redis

目录 Redis数据类型 各种数据类型的特点 Redis常用命令 字符串操作命令 哈希操作命令 列表操作命令 集合操作命令 有序集合操作命令 通用命令 在Java中操作Redis Spring Data Redis的使用方式 操作字符串类型的数据 ​编辑操作hash类型的数据 ​编辑 操作列表类…

连续18年全球第一,三星电视持续引领科技浪潮

作者 | 曾响铃 文 | 响铃说 对于很多80、90年代的人来说,电视机一定都是童年生活中必不可少的存在,是不少美好回忆的载体。 但与过去单纯地看电视不同,如今的电视机产品正在承担更多价值。就比如电视产品开始从单纯的功能性消费品&#xf…

无公网IP远程访问内网部署的OpenMediaVault NAS

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

PCIe扫盲(九)

系列文章目录 PCIe扫盲(一) PCIe扫盲(二) PCIe扫盲(三) PCIe扫盲(四) PCIe扫盲(五) PCIe扫盲(六) PCIe扫盲(七&#xff09…

支持异步线程自动传递上下文(例如当前请求)的工具类(支持自定义上下文传递逻辑,支持拦截所有异步操作)

文章目录 支持异步线程自动传递上下文(例如当前请求)的工具类(支持自定义上下文传递逻辑,支持拦截所有异步操作)使用示范ContextSupportedAsyncUtil .java自动拦截所有异步线程池操作ContextSupportedExecutorAspect.j…

【Python基础】Python文件处理

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、打开文件三、读取文件内容四、写入文件内容五、高级文件操作六、总结 一、前言 ​ 在Python中&am…

VMware安装飞牛私有云fnOS并挂载小雅Alist实现异地远程访问

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

地平线4登录xbox后提示需要登录档案怎么解决

这个游戏是真nt(在联机上),典型搞联机2小时游玩半小时,多半时间都花费在联机上了,不是为了联机和朋友跑车,早给他卸载了。 本人的游戏问题:看了一些视频感觉没什么作用,我的现象就是…