神经网络——常见的回归损失函数

机器学习(一)逻辑回归(损失函数、决策边界) 逻辑回归 LogisticRegression一、什么是逻辑回归二、逻辑回归的损失函数三、逻辑回归损失函数的梯度四、实现逻辑回归算法五、决策边界六、在逻辑回归中使用多项式特征七、sklearn中的逻辑回归八、OvR与OvO 一、什么是逻辑回归 逻辑回归:解决分类问题,将样本的特征和样本发生的概率联系起来 逻辑回归的函数y^=f(x)\hat{y} = f(x)y^​=f(x),对于线性回归来说,可变换为y^=θT⋅xb\hat{y} = θ^T \cdot{x_b}y^​=θT⋅xb​,y^\hat{y}y 阅读详情

GIoU Loss 在 IoU Loss 的基础上解决了边界框不重合的问题;

DIoU Loss 在 IoU 和 GIoU Loss 上加入了边界框中心点的信息;

CIoU Loss 在 DIoU Loss 的基础上加入了边界框宽高比的尺度信息。

  • L1 Loss、L2 Loss 和 Smooth L1 Loss

三个损失函数的图像公式如上,分别对其求导:

公式中的 x 都是 bounding box 四个坐标点与 ground truth 四个坐标点的差值,四个点分别计算 Loss 再相加,得到这个 bbox 的回归损失。

L1 Loss 在训练后期当 x 值较小时,梯度依然固定不变,会导致模型在最优解附近振荡。L2 Loss 在训练初期 x 较大时,梯度也过大,导致训练不稳定。smooth L1 Loss 避免了上述两个 Loss 存在的问题,x 较小时梯度依然小,x 较大时梯度固定而不至于过大。

而 VOC 和 COCO 上检测任务的评价指标都是基于 IoU 的,多个 bbox 可能有相同的 smooth L1 Loss,但 IoU 差别可能很大,于是引入了基于 IoU 的一系列 Loss。smooth L1 Loss 的缺点:对于尺度不具有不变性;同样通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性。

  • IoU Loss

将两个框的 IoU 取 -ln,直接作为损失函数,将 bbox 看作一个整体进行回归。通常情况下 IoU Loss = 1-IoU。

  • GIoU Loss

但是 IoU Loss 的缺点是当 IoU 的值为0时,其 Loss 为无穷并且不可导(针对取 -ln 的情况)。更重要的是 IoU 无法反映两个框是如何相交的,下图中,三种不同相对位置的框拥有相同的 IoU=0.33 值,但是拥有不同的 GIoU=0.33,0.24,-0.1,当框的对齐方向更好一些时GIoU的值会更高一些。

对于 bbox 和 gt,我们要找到一个 bbox 和 gt 最小外接矩形 C,然后计算 C 中没有覆盖 bbox 和 gt 的面积占 C 总面积的比例,然后用 bbox 和 gt 的 IoU 值减去这个比值。

对于 IoU Loss 的两个缺点,由于 IoU 取值范围为0~1所以 GIoU 的取值范围为-1~1。 同时由于 GIoU 引入了框 C,所以当 bbox 和 gt 不重合时也同样可以计算。最终的 GIoU Loss = 1-GIoU。

  • DIoU Loss 和 CIoU Loss

好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。在2020 AAAI 上有文章指出了 IoU Loss 和 GIoU Loss 的两个改进方向:一是为了加快收敛速度,使损失函数为最小化 bbox 和 gt 之间的归一化距离。因此提出了 DIoU Loss,该 Loss 考虑了重叠面积和中心点距离,相对于 GIoU Loss 收敛更快;二是当 gt 完全包裹 bbox 时能更精确更快地惩罚模型,因为当 gt 完全包裹 bbox 的时候,其 IoU 和 GIoU 的值都一样,此时 GIoU 退化为 IoU, 无法区分其相对位置关系,如下图。因此提出了 CIoU Loss,考虑到了所有的几何因素,相对于 GIoU Loss 精度更高。

通常基于 IoU 的 Loss 符合范式:Loss = 1-IoU+惩罚项,惩罚项定义为 bbox 和 gt 的惩罚项。DIoU Loss 中惩罚项为:

就是说 DIoU=IoU-惩罚项。其中 b 为 bbox 和 gt 的中心点,ρ 为欧式距离,c 为 bbox 和 gt 最小外接矩形对角线的长度,如下图:

可以将 DIoU 替换 NMS 算法中的 IoU,即论文提出的 DIoU-NMS,实验结果表明有一定的提升。DIoU Loss 可以直接优化2个框直接的距离,比 GIoU Loss 收敛速度更快,对于 gt 包裹 bbox 的这种情况,DIoU Loss 可以收敛的很快,而 GIoU Loss 此时退化为 IoU Loss 收敛速度较慢。

CIoU 的惩罚项是在 DIoU 的惩罚项基础上加了一个影响因子,这个因子用来拟合 bbox 和 gt 的长宽比。

α 是用来做 trade-off 的参数:

v 是衡量长宽比一致性的参数:

CIoU=IoU-(DIoU 的惩罚项+CIoU 的惩罚项)。CIoU Loss 定义为:

常见回归和分类损失函数比较 文章转自知乎作者wdmad,更多内容建议阅读原文:https://zhuanlan.zhihu.com/p/36431289 本博文属于阅读笔记,融合了个人观点。 1. 损失函数 损失函数的一般表示为L(y,f(x)),用以衡量真实值 y和预测值 f(x)之间不一致的程度,一般越小越好。为了便于不同损失函数的比较,常将其表示为单变量的函数,在回归问题中这个变量为[y-f(x)] :残差表... 阅读详情

相关推荐

神经网络训练:激活函数与损失函数的选择,一篇干到底!

激活函数决定神经元怎么响应输入,是“反应力”损失函数决定模型往哪儿学,是“学习目标”激活函数选错,模型没法表达复杂关系损失函数选错,模型学错方向实战中,ReLU + 合适的损失函数是黄金组合。

zyh252609的博客 1357

【损失函数】深度学习回归任务中你必须了解的三种损失函数,绝对误差损失(L1 Loss、MAE)均方误差损失(L2 Loss、MSE)以及平滑L1损失(Huber Loss)(2024最新整理)

是预测值和真实值之差的绝对值的总和。其中,是样本数量,是第个样本的真实值,是第个样本的预测值。

Next_SummerAgain的博客 1万+

神经网络系列之三 -- 损失函数

系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力。 第3章 损失函数 3.0 损失函数概论 3.0.1 概念 在各种材料中经常看到的中英文词汇有:误差,偏差,Error,Cost,Loss,损失,代价......意思都差不多,在本书中,使用“损失函数”和“Loss Function”这两个词汇,...

HuaZi_Myth的博客 1766

回归模型三种损失函数

无论在机器学习还是深度领域中,损失函数都是一个非常重要的知识点。损失函数(Loss Function)是用来估量模型的预测值 f(x) 与真实值 y 的不一致程度。我们的目标就是最小化损失函数,让 f(x) 与 y 尽量接近。通常可以使用梯度下降算法寻找函数最小值。 损失函数有许多不同的类型,没有哪种损失函数适合所有的问题,需根据具体模型和问题进行选择。一般来说,损失函数大致可以分成两类:回归(Regression)和分类(Classification)。今天,红色石头将要总结回归问题中常用的 3 .

张欣的博客 1万+

【深度学习】002-损失函数:MSE、交叉熵、铰链损失函数(Hinge Loss)

本文将主要讨论三种常见的损失函数:均方(MSE)损失、交叉熵损失和铰链损失。这些损失函数是在传统机器学习和深度学习模型中最常用的函数,所以本文清楚地讨论了每一个损失函数模型背后的基本理论,以及何时选择使用它们。

m0_52447591的博客 7387

损失函数(Loss Function)一文详解-回归问题常见损失函数Python代码实现+计算原理解析

损失函数无疑是机器学习和深度学习效果验证的核心检验功能,用于评估模型预测值与实际值之间的差异。我们学习机器学习和深度学习或多或少都接触到了损失函数,但是我们缺少细致的对损失函数进行分类,或者系统的学习损失函数在不同的算法和任务中的不同的应用。因此有必要对整个损失函数体系有个比较全面的认识,方便以后我们遇到各类功能不同的损失函数有个清楚的认知,而且一般面试以及论文写作基本都会对这方面的知识涉及的非常深入。故本篇文章将结合实际Python代码实现损失函数功能,以及对整个损失函数体系进行深入了解。

master_hunter的博客 1万+

神经网络:损失函数

损失函数在神经网络中扮演着至关重要的角色,选择合适的损失函数对于模型的训练效果和最终性能都有直接影响。理解不同类型损失函数的应用场景和特性,有助于进阶到更复杂的模型和任务时做出明智的选择。

Wei_sx的博客 1657

【深度学习的灵魂】非线性回归和逻辑回归(附神经网络图详细解释)

【通俗易懂说模型】线性回归(附深度学习、机器学习发展史)-优快云博客通过前面的文章, 猫猫希望友友们对机器学习、深度学习等基础概念,以及发展历史有一个宏观的理解。同时对线性回归有一个深入的认识。然后接下来,就让我们收拾收拾行囊,准备出发!下一站——非线性回归和逻辑回归如果想要学习更多深度学习知识,大家可以点个关注并订阅,持续学习、天天进步。

十二月的猫 2497

【深度学习|学习笔记】神经网络中有哪些损失函数?(二)

【深度学习|学习笔记】神经网络中有哪些损失函数?(二)

2401_89898861的博客 794

安川机器人SOCKET 通讯

命令 功能 参数 示例 返回 SelectJob 选择程序 JobName LineNo SelectJob TEST 0 #SelectJob,Ok StartJob 启动程序 JobName StartJob TEST #StartJob,Ok Pause 暂停当前程序 - Pause #Pause,Ok Continue 继续当前程序 - Continue #Continue,Ok ServoOn 伺服上电 - ServoOn #ServoOn,Ok ServoOf...

记录学习内容 8285

告别UI字体臃肿!详解TextMeshPro字体AssetBundle打包优化技巧(Unity 2022实测)

本文详细解析了Unity 2022中使用TextMeshPro时字体资源AssetBundle打包的优化技巧,特别针对中日文等多语言场景下的字体臃肿问题。通过公共资源标记、依赖关系分析和实战案例,帮助开发者有效减少包体体积和内存占用,提升游戏性能。

weixin_33725722的博客 419

神经网络—损失函数

损失函数在神经网络中充当核心导航者,通过量化预测与真实值的差异,为模型训练明确优化目标(如最小化误差)。它不仅评估当前性能,还通过反向传播计算梯度,指导参数调整方向,确保任务适配(如分类用交叉熵、回归用均方误差),并可通过正则化项控制模型复杂度,防止过拟合,是驱动整个学习过程的关键机制。损失函数在神经网络中反映的是模型预测结果与真实标签之间的差异程度,损失函数将模型的预测(如分类概率、回归值)与真实标签(Ground Truth)的差异转化为数值形式。

jdjhcn的博客 2330

AXI4协议之AXI4-Lite接口详解及实战

本文首先对AXI4总线协议进行了一个简单的介绍,然后使用vivado提供的模板创建了一个AXI4-Lite Master的接口,并生成了一个具有Master和Slave的代码实例,阅读该示例代码,进行修改后用于自己的项目。

高阶近似的博客 2万+

pytorch学习——线性神经网络——1线性回归

概要:线性神经网络是一种最简单的神经网络模型,它由若干个线性变换和非线性变换组成。线性变换通常表示为矩阵乘法,非线性变换通常是一个逐元素的非线性函数。线性神经网络通常用于解决回归和分类问题。

weixin_48637535的博客 2133

手把手教你学Simulink——基于Simulink的多用户MIMO系统仿真建模示例

多用户MIMO概述在多用户MIMO系统中,基站配备多个天线,可以同时与多个用户进行通信。利用空间复用技术,不同用户的信号被分配到不同的空间流上,从而实现频谱资源的高效利用。多用户MIMO的核心挑战包括信道估计、波束成形设计以及干扰管理。关键技术点波束成形:通过调整发射信号的相位和幅度,在特定方向上增强信号强度并减少干扰。信道估计:获取每个用户的信道状态信息(CSI),用于优化波束成形矩阵。调制与解调:选择合适的调制方式(如QPSK、16-QAM等)以适应不同用户的信道条件。干扰消除。

MHD0815的博客 270

(八)DDR_PHY架构及功能——(PUB组成、初始化及Training流程、Clock关系)

文章目录一、DDR_PHY结构组成1.1、DDR Memory子系统1.2、DDR_PHY架构组成1.3、PUB模块功能实现流程1.3.1、DDR系统初始化流程1.3.2、PLL初始化流程 一、DDR_PHY结构组成 1.1、DDR Memory子系统   Memory子系统主要由DDR Controller和DDR_PHY(含DDR_IO)两个部分组成。DDR Controller主要承担其它子系统(如CPU)与Memory子系统进行数据交互时的传输效率及调度,DDR_PHY主要负责数据交互过程中的传输速

Mr.翟的博客 1万+

从认识AI开始-----回归任务损失

本文深入解析了回归任务及其常用损失函数。回归任务输出连续值(如房价、温度),核心在于逼近真实值减少误差。文章详细介绍了MSE、MAE、RMSE、R²、Huber和SmoothL1等损失函数的特点:MSE对大误差惩罚更重但对离群点敏感;MAE鲁棒性强但收敛慢;Huber结合二者优势,通过阈值控制切换。最后通过PyTorch实现了一个房价预测模型,演示了MSE损失函数在神经网络中的应用。文章强调应根据数据特性(离群点、梯度稳定性)选择合适损失函数,为AI实践提供了实用指导。

weixin_48222697的博客 1531

RK3588开发笔记-PCIE接口2.5G网卡RTL8125调试记录

在RK3588平台上调试2.5G网卡(Realtek RTL8125)时,我们会用到PCIE接口,这篇文章记录了从硬件连接、内核驱动到最终实现网络通信的整个调试过程,包括可能遇到的问题和解决方案。Realtek RTL8125是为高带宽需求设计的一款高性价比2.5G以太网控制器。它不仅提供了高达2.5Gbps的网络传输速率,还具备良好的节能特性、硬件卸载引擎和广泛的操作系统支持。无论是在家庭网络、企业NAS,还是游戏和云计算等场景中,RTL8125都能为用户提供更快速、更稳定的网络连接。

flypig has a dream! 3680

人工智能之深度学习_[4]-神经网络入门

人工神经网络(ArtificialNeuralNetwork,简写为ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的计算模型。它由多个互相连接的人工神经元(也称为节点)构成,可以用于处理和学习复杂的数据模式,尤其适合解决非线性问题。人工神经网络是机器学习中的一个重要模型,尤其在深度学习领域中得到了广泛应用。人脑可以看做是一个生物神经网络,由众多的神经元连接而成。各个神经元传递复杂的电信号,树突接收到输入信号,然后对信号进行处理,通过轴突输出信号。

weixin_45423893的博客 1300

32、通用处理器通信平台发展与5G开源社区技术解析

本文探讨了基于通用处理器(GPP)的通信平台在5G技术中的发展现状与挑战,详细介绍了多个开源平台和硬件架构,并分析了软件加速方法和未来发展方向。文章指出,尽管GPP具有灵活性和开放性优势,但在实时信号处理和功耗等方面仍存在瓶颈,需要通过核心技术研发、标准化协作和应用拓展推动5G技术的实际应用。

orange的博客 128

【虚幻引擎UE】UE5 可编辑动态样条线轨迹及AI跟随路径移动(含工程源码)

【虚幻引擎UE】可编辑动态样条线轨迹及AI跟随路径移动

灵境引路人 6227

神经网络中的损失函数:常见类型与应用场景(代码演示)

本文介绍了神经网络中三种常用的损失函数及其应用场景。均方误差(MSE)适用于回归问题,通过计算预测值与真实值误差平方的平均值来评估模型性能。交叉熵损失函数主要用于分类任务,衡量预测概率分布与真实标签的差异。Huber损失函数结合了MSE和绝对误差,对异常值更鲁棒,适合存在离群点的回归问题。文章通过Python代码示例演示了各损失函数的计算方式,并强调根据任务特点选择合适的损失函数对提升模型性能的重要性。

fykam的博客 999

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

神经网络的优化(0)----损失函数 loss

一、均方误差损失函数 点击此处返回总目录 二、自定义损失函数 三、交叉熵损失函数 损失函数loss 就...

liupc的学习笔记 1488

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

深度学习入门:探索神经网络、感知器与损失函数

深度学习通过构建复杂的神经网络,能够自动从数据中学习并提取有用的特征,解决各种复杂的实际问题

2401_84670644的博客 2545

损失函数/代价函数

损失函数的定义与常见的损失函数

Weber's blog 1322
上一篇: 神经网络——IoU & NMS & 正负样本均衡
下一篇: 度量学习——总结
不说话装高手H
博客等级 码龄7年 43粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值