热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

smoothl1函数_PyTorch中的损失函数L1Loss/L2Loss/SmoothL1Loss

L1Loss也就是L1Loss了,它有几个别称:L1范数损失最小绝对值偏差(LAD)最小绝对值误差(LAE)最常看到的MAE也是指L1Loss损失函数。

L1Loss

也就是L1 Loss了,它有几个别称:L1 范数损失

最小绝对值偏差(LAD)

最小绝对值误差(LAE)

最常看到的MAE也是指L1 Loss损失函数。 它是把目标值

与模型输出(估计值)

做绝对值得到的误差。

什么时候使用?回归任务

简单的模型

由于神经网络通常是解决复杂问题,所以很少使用。

L2Loss

也就是L2 Loss了,它有几个别称:L2 范数损失

最小均方值偏差(LSD)

最小均方值误差(LSE)

最常看到的MSE也是指L2 Loss损失函数,PyTorch中也将其命名为torch.nn.MSELoss

它是把目标值

与模型输出(估计值)

做差然后平方得到的误差

什么时候使用?回归任务

数值特征不大

问题维度不高

SmoothL1Loss

简单来说就是平滑版的L1 Loss。

原理

SoothL1Loss的函数如下:

仔细观察可以看到,当预测值和ground truth差别较小的时候(绝对值差小于1),其实使用的是L2 Loss;而当差别大的时候,是L1 Loss的平移。SooothL1Loss其实是L2Loss和L1Loss的结合,它同时拥有L2 Loss和L1 Loss的部分优点。

1. 当预测值和ground truth差别较小的时候(绝对值差小于1),梯度不至于太大。(损失函数相较L1 Loss比较圆滑)

2. 当差别大的时候,梯度值足够小(较稳定,不容易梯度爆炸)。

什么时候使用?回归

当特征中有较大的数值

适合大多数问题

size_average=True or False

在pytorch中,所有的损失函数都带这个参数,默认设置为True。

当size_average为True的时候,计算出来的结果会对mini-batch取平均。反之,为False的时候,那算出来的绝对值不会除以n。



推荐阅读
author-avatar
oko123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有