常用损失函数-交叉熵损失函数、MAE、MSE、smoothL1

news2024/9/26 3:27:35

目录标题

    • 常见的损失函数
      • 1、分类任务
        • 1.1 多分类任务
        • 1.2 二分类任务
      • 2、 回归任务
        • 2.1 MAE损失
        • 2.2 MSE损失
        • 2.3 smooth L1损失
      • 总结

常见的损失函数

损失函数:衡量模型参数的质量的函数,衡量方式是比较网络输出和真实输出的差异。ybar与y 之间的差异
损失函数、代价函数、目标函数、误差函数 虽然叫法不同,但都是一样的。

1、分类任务

在分类任务中最多使用的是交叉熵损失函数,下面分多分类和二分类来讨论交叉熵

1.1 多分类任务

在多分类任务中,使用softmax将logits转换为概率的形式,所以多分类的交叉熵损失也叫做softmax损失
在这里插入图片描述
交叉熵损失:最小化正确类别所对应的预测概率的对数的负值

在tf.keras 中使用CategoricalCrossentropy
代码实现:

#交叉熵损失
import tensorflow as tf
#设置真实值和预测值
y_true = [[0,1,0],[0,0,1]]
y_pre1 = [[0.05,0.9,0.05],[0.3,0.2,0.5]]
y_pre2 = [[0.05,0.9,0.05],[0.05,0.05,0.9]]
#实例化交叉熵损失
cce = tf.keras.losses.CategoricalCrossentropy()
#计算损失结果
cce(y_true,y_pre1)  #输出结果为0.39925
cce(y_true,y_pre2)  #输出结果为0.10536

在这里插入图片描述
越接近真实值,交叉熵损失值越小

1.2 二分类任务

二分类任务中,不再使用softmax激活函数,而是使用sigmoid激活函数,所以损失函数也相应调整
在这里插入图片描述
在tf.keras 中使用BinaryCrossentropy()

import tensorflow as tf
#设置真实值和预测值
y_true = [[0],[1]]
y_pre1 = [[0.4],[0.6]]
y_pre2 = [[0.1],[0.9]]
#实例化交叉熵损失
bce = tf.keras.losses.BinaryCrossentropy()
#计算损失结果
bce(y_true,y_pre1)  #输出结果为0.5108254
bce(y_true,y_pre2)  #输出结果为0.10536041

同样地,越接近真实值,交叉熵损失值越小

2、 回归任务

2.1 MAE损失

MAE损失也称为L1 Loss ,是以绝对误差作为距离
特点:L1 Loss 具有稀疏性,为了惩罚较大的值,常常将其作为正则项添加到其他loss中作为约束,最大问题是梯度在零点不平滑,导致会跳过极小值

在这里插入图片描述

在tf.keras 中使用MeanAbsoluteError()

import tensorflow as tf
#设置真实值和预测值
y_true = [[0.],[1.]]
y_pre1 = [[1.],[0.]]
y_pre2 =  [[0.],[1.]]
#实例化MAE损失
mae = tf.keras.losses.MeanAbsoluteError()
#计算损失结果
mae(y_true,y_pre1)  #输出结果为1.0
mae(y_true,y_pre2)  #输出结果为0

2.2 MSE损失

MSE损失又称为L2 loss ,欧式距离,以误差的平方和作为距离
L2 loss 也称为正则项,当预测值和目标值相差很大时,梯度容易爆炸
在这里插入图片描述
在tf.keras 中使用MeanSquaredError()

import tensorflow as tf
#设置真实值和预测值
y_true = [[0.],[1.]]
y_pre1 = [[1.],[0.]]
y_pre2 =  [[0.],[1.]]
#实例化MAE损失
mae = tf.keras.losses.MeanSquaredError()
#计算损失结果
mae(y_true,y_pre1)  #输出结果为1.0
mae(y_true,y_pre2)  #输出结果为0

越接近真实值,损失函数越小

L2损失用在正则化

2.3 smooth L1损失

将L!和L2损失结合起来,smooth L1损失是最常用的损失函数
下面公式中,x指真实值与预测值之间的差值
在这里插入图片描述
实际上是一个分段函数,[-1,1]区间之间是L2损失,解决了L1的不光滑问题,在[-1,1]区间之外是L1损失,解决了离群点梯度爆炸的问题

在tf.keras 中使用Huber()

import tensorflow as tf
#设置真实值和预测值
y_true = [[0.],[1.]]
y_pre = [[0.2],[0.6]]
#实例化MAE损失
mae = tf.keras.losses.Huber()
#计算损失结果
mae(y_true,y_pre)  #输出结果为0.0499

深度学习一般用于分类任务

总结

多分类问题用多分类的交叉熵函数
二分类问题用二分类的交叉熵函数
回归问题用smooth L1损失

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

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

相关文章

Jtag_To_AXI的简单使用

文章目录基本操作其他基本操作 搭建的bd文件如下所示, 对tcl命令进行封装后,测试结果如下, 其他 网上看到JTAG to AXI Master的API函数读写操作这篇文章,试着复现一下,没成功,VS工程下的log文件显示打…

量子应用与未来市场:浅谈一下未来的发展方向

量子通信和量子网络 量子信息科学领域探索的是如何在量子系统中国将信息编码,包括量子力学的相关统计、存在的局限性和独特的可解释性,量子信息科学领域是量子计算、量子通信、量子传感的基础。量子通信的研发重点是在对信息进行量子编码之后&#xff0…

Long和Integer相互转换

目录一、int和long互相转换(一)long转化为int(1)类型强制转换(2)利用BigDecimal强制转换(二)int转化为long(1)类型强制转换(2)利用Big…

【go语言http2.0client源码分析】

go语言之http2.0client源码分析client.GetNewRequestdo requesthttp2.Transport.RoundTripGetClientConnnewClientConnReadFrameprocessHeaderswrite request上一篇分析了http2.0的实现之后,这里分析一下client的实现。 package mainimport ("crypto/tls""cryp…

第二层:对象的初始化和清理

文章目录前情回顾对象特性——对象的初始化和清理构造函数和析构函数什么是构造函数和析构函数构造函数构造函数的语法构造函数的分类按照参数分类按照类型分类拷贝构造函数拷贝函数的调用时机深拷贝和浅拷贝构造函数的调用方法括号法显示法隐式转换法构造函数规则析构函数析构…

DM8:达梦数据库DEM--dmagent监控服务器代理部署(详细步骤)

DM8:达梦数据库DEM部署dmagent代理环境(详细步骤)1 dmagent代理下载部署1.1通过web DEM下载代理包1.2 从数据库服务器目录直接拷贝dmagent2 部署JDK环境2.1 使用数据库自带的JDK包2.2 配置服务器JDK环境变量3 配置agent.ini文件3.1 103 节点 &#xff0c…

C语言——运算符与表达式

一、赋值运算符 运算符描述实例将右边操作数的值赋给左边操作数AB,即将B的值赋给A加法赋值运算符,将右边操作数加上左边操作数的结果赋值给左边操作数B A 等价于 B B A-减法赋值运算符,将左边操作数减去右边操作数的结果赋值给左边操作数B - A 等价于…

擎创动态 | 酸了酸了,这年会也忒燃了吧

前言:受疫情影响的这一年里,擎创科技逆流勇上,汇聚点点星火,点亮新的征程。擎创的服务随之正式遍及全国,北起重工业基地的东三省,南至改革开放最早的粤港澳大湾区,东起经济中心的大本营上海&…

数据开发面试问题记录

因作者近期正在投递数据开发岗位,所以会在此记录一些面试过程中的问题,持续更新,直到入职新公司为止 1. 数仓建模的三范式理论 所谓的范式,就是我们在关系建模的时候所遵从的一些规范,而三范式,指的就是三…

QML工程之初始工程代码分析

接着上一讲&#xff0c;当建立完工程之后&#xff0c;IDE 会呈现如下的界面下面的代码是main.cpp&#xff0c;工程起始运行的代码段&#xff0c;具体的函数说明都在代码段里面进行了标注。#include <QGuiApplication> //主要是ui进程运行头函数&#xff0c;包含事件循环&…

寻找数组的中心下标

Python-寻找数组的中心下标 题目 给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因…

佳讯频传!安全狗多项能力获信通院认可

近期&#xff0c;信通院发布了其主导的《基于云的工作负载保护平台能力要求》标准以及《零信任产业图谱》。 作为国内云原生安全领导厂商&#xff0c;安全狗也凭借自身综合且突出的安全能力获得信通院认可。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&a…

【SpringBoot高级篇】SpringBoot集成RocketMQ消息队列]

【SpringBoot高级篇】SpringBoot集成RocketMQ消息队列]RocketMQ简介技术架构基本概念Docker环境安装RocketMQrocketmq-client消息发送基本样例消息发送发送同步消息发送异步消息单向发送消息消费消息负载均衡模式广播模式顺序消息顺序消息生产顺序消费消息延时消息启动消息消费…

基于M实现的JWT解决方案

文章目录基于M实现的JWT解决方案简介现状原理JWT 组成结构头部Header有效载荷Payload哈希签名SignatureJWT完整结果JWT基于M的使用流程总结完整代码基于M实现的JWT解决方案简介JWT 英文名是 Json Web Token &#xff0c;是一种用于通信双方之间传递安全信息的简洁的、URL安全的…

2023年,PMP认证考试的心得分享

对于刚开始要准备参加PMP考试的人&#xff0c;大多应该都是不知道怎么去考试复习好的。PMP认证考试虽是美国的考试&#xff0c;但其实这跟国内其它的考试复习也差不多&#xff0c;没有什么很特别之处&#xff0c;只是多了一个中英互译&#xff0c;再就是学习的内容不一样&#…

windows系统中环境系统变量和用户变量的区别

前言 -- 什么是环境变量一般我们安装软件之后&#xff0c;为了能够在cmd命令行运行软件&#xff0c;一般都需要设置一下环境变量&#xff0c;否则就会出现找不相关命令的错误提示。所谓环境变量&#xff0c;可以简单理解为就是给操作系统定义的一些路径和名称。比如使用最常使用…

个人对粗糙集的一些理解和简单举例

文章目录1、 数据价值密度低的解决方案1.1 粗糙集中对应的概念&#xff1a;属性约简1.2 属性约简的好处1.3 粗糙集的应用2、粗糙集的简介--->原理2.1 粗糙集的概念2.2 从例子看粗糙集2.3 粗糙集模型的分类及其评估标准3、粗糙集的主要研究方向3.1 模型创新3.2 属性约简3.3 提…

浅析正则表达式+范围规则校验表达式+js从字符串中截取数字

平时项目中经常需要用到正则表达式&#xff0c;可惜之前太懒(当然最主要是太菜也不会写)都是直接网上搜。之前用的也简单&#xff0c;无非是校验手机号码格式、校验邮箱格式、偶尔有校验密码这种&#xff0c;网上一搜一大堆&#xff0c;根本不用自己写&#xff0c;结果前段时间…

【ONE·C || 函数与数组】

总言 C语言&#xff1a;函数、数组初步认识。 文章目录总言1、函数1.1、是什么1.1.1、基本介绍1.1.2、库函数使用演示(strcpy、memset)1.1.3、自定义函数使用演示1.2、函数参数、传值调用和传址调用1.3、相关练习1.3.1、写一个函数&#xff1a;可以判断一个数是不是素数1.3.2、…

集成学习-理论概述

1、集成学习概述集成学习(ensemble learning)本身不是一个单独的机器学习算法&#xff0c;而是通过构建并结合多个机器学习器来完成学习任务。集成学习的特点&#xff1a;集成方法是一种将几种机器学习技术组合成一个预测模型的元算法&#xff0c;以减小方差&#xff08;baggin…