pytorch——损失函数之nn.L1Loss()和nn.SmoothL1Loss()

news/2024/12/19 20:27:14/

文章目录

  • 【回归损失函数】L1(MAE)、L2(MSE)、Smooth L1 Loss详解
    • 1. L1 Loss(Mean Absolute Error,MAE)
      • 1.1 数学定义
      • 1.2 、使用场景与问题
      • 1.3 、如何使用
    • 2. L2 Loss(Mean Squared Error,MSE)
    • 3. Smooth L1 Loss
      • 3.2 使用场景与问题

今天讨论下:对称损失函数:symmetric regression function such as L1 or L2 norm,注意说说L1

【回归损失函数】L1(MAE)、L2(MSE)、Smooth L1 Loss详解

1. L1 Loss(Mean Absolute Error,MAE)

1.1 数学定义

平均绝对误差(MAE)是一种用于回归模型的损失函数。MAE 是目标变量和预测变量之间绝对差值之和,因此它衡量的是一组预测值中的平均误差大小,而不考虑它们的方向,范围为 0~∞。
在这里插入图片描述
上图为平均绝对误差函数图,其中目标真值为 100,预测范围在-10000 到 10000 之间,均方 误差损失(Y 轴)在预测值(X 轴)=100 处有最小值,范围为 0~∞。

主要问题:
导数为常数,在 Loss 函数最小值处容易震荡,导致难以收敛到最优值。

1.2 、使用场景与问题

https://atcold.github.io/pytorch-Deep-Learning/en/week11/11-1/

Use Case: L1 loss is more robust against outliers and noise compared to L2 loss. In L2, the errors of those outlier/noisy points are squared, so the cost function gets very sensitive to outliers.

Problem: The L1 loss is not differentiable at the bottom (0). We need to be careful when handling its gradients (namely Softshrink). This motivates the following SmoothL1Loss.

1.3 、如何使用

L1范数损失 L1Loss,计算 output 和 target 之差的绝对值。

torch.nn.L1Loss(reduction='mean')

参数:

    reduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean。

2. L2 Loss(Mean Squared Error,MSE)

均方误差(MSE)是最常用的回归损失函数,它是目标变量和预测值的差值平方和。查看这篇文章pytorch——损失函数之nn.MSELoss,(Mean Squared Error,MSE) 均方误差(MSE)(squared L2 norm,平方L2范数)。它也被称为L2 Loss。

3. Smooth L1 Loss

从损失函数对 x 的导数可知,L1 损失函数对 x 的导数为常数,在训练后期,x 很小时, 如果学习率不变,损失函数会在最优值附近波动,很难收敛到最高的精度。L2 损失对 x 的 导数在 x 值很大时,其导数也非常大,在训练初期不稳定。Smooth L1 Loss 结合了 L1 和 L2 的优点:早期使用 L1,梯度稳定,快速收敛,后期使用 L2,逐渐收敛到最优解。

函数的临界点:absolute element-wise error falls below 1。
This function uses L2 loss if the absolute element-wise error falls below 1 and L1 loss otherwise.

在这里插入图片描述

Smooth L1 Loss 结合了 L1 和 L2 的优点:早期使用 L1,梯度稳定,快速收敛,后期使用 L2,逐渐收敛到最优解。

3.2 使用场景与问题

This is advertised by Ross Girshick (Fast R-CNN). The Smooth L1 Loss is also known as the Huber Loss or the Elastic Network when used as an objective function,.

Use Case: It is less sensitive to outliers than the MSELoss and is smooth at the bottom. This function is often used in computer vision for protecting against outliers.

Problem: This function has a scale (0.50.5 in the function above).


http://www.ppmy.cn/news/60014.html

相关文章

SPSS如何制作基本统计分析报表之案例实训?

文章目录 0.引言1.制作在线分析处理报告2.制作个案摘要报告3.制作行形式摘要报告4.制作列形式摘要报告 0.引言 因科研等多场景需要进行数据统计分析,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记…

GO实现RSA 、AES加解密

GO实现RSA 、AES加解密 实现思路RSAAES测试用例 实现思路 只有加解密两个函数,抽象出一个接口,使用门面和策略模式,对外开放加解密接口,由于密码比较场景使用率较高,再对外开放一个比较的接口,接口最少有两…

Python并发编程之进程操作

前言 本文介绍一下如何在python中开启进程。 查看进程 一台计算机上面运行着很多进程,计算是如何区分并管理这些进程服务端的呢:计算机会给每一个运行的程序即进程分配一个PID号。 windows系统电脑进入cmd后输入tasklist即可查看所有进程的进程号&am…

上班摸鱼在群里吹牛B,逮到一个阿里10年老测试开发,聊过之后收益良多...

老话说的好,这人呐,一单在某个领域鲜有敌手了,就会闲得蛋疼。前几天我在上班摸鱼刷群的时候认识了一位阿里测试开发大佬,在华为工作了10年,因为本人天赋比较高,平时工作也兢兢业业,现在企业内有…

Golang 包使用注意事项

1)在给一个文件打包时,该包对应一个文件夹,比如这里的utils文件夹对应的包名就是utils,文件的包名通常和文件所在的文件夹名一致,一般为小写字母。 2)当一个文件要使用其它包函数或变量时,需要…

分享kubernetes部署:cachecloud部署说明

cachecloud部署 cachecloud是搜狐视频(sohutv)Redis私有云平台 已省略~ 挑选一台服务器部署cachecloud-web 将cachecloud-web打成war包,可以在服务器上打包,也可以在本地打包,这里举一个在服务器上打包的例子。 将源代码下载到/opt下 已省略~…

十一、MyBatis的逆向工程

文章目录 十一、MyBatis的逆向工程11.1 (清新简洁版)创建逆向工程的步骤11.2 (奢华尊享版)创建逆向工程的步骤11.3 说明尊享版和简洁版的区别 本人其他相关文章链接 十一、MyBatis的逆向工程 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库…

Java中的StringBuffer 和 StringBuilder 类

Java StringBuffer 和 StringBuilder 类 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。 StringBuil…