深度学习中常见的loss函数汇总

2023-11-08

  损失函数(Loss Function)分为经验风险损失函数结构风险损失函数,经验风险损失函数反映的是预测结果和实际结果之间的差别,结构风险损失函数则是经验风险损失函数加上正则项(L1或L2)。深度学习中的损失函数被用于模型参数的估计,通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。
  机器学习任务中的损失函数可以大体分为两种类型:回归损失分类损失。在此基础上,在深度学习任务中又发展了很多不同的损失函数,由于在网络训练过程中损失函数指导着网络的学习,因此选择合适的损失函数也很重要。常见的有下面几种:

  • 回归损失:平均绝对误差(MAE/L1损失),平均平方误差(MSE/L2损失),smooth L1 loss,Huber损失,log cosh loss,quantile loss;
  • 分类损失:0-1损失,logistic loss(对数损失),hinge loss(铰链损失),exponential loss(指数损失),KL散度;
  • 识别、检测和分割常用的损失:softmax cross-entropy loss,weighted cross-entropy loss,focal loss,OHEM,center loss,triplet loss,contrastive loss,L-softmax,LMCL,IOU loss,GIOU loss,DIOU loss,CIOU loss,dice loss。

回归损失

  1. MAE/L1 loss
    M A E = 1 n ∑ i = 1 n ∣ f ( x i ) − y i ∣ MAE = \frac1n\sum \limits_{i=1}^{n}|f(x_i)-y_i| MAE=n1i=1nf(xi)yi
    平均绝对误差(Mean Absolute Error,MAE)是对估计值和真实值之差取绝对值的平均值。由上图可以看出,(1)MAE曲线连续,但是在 f ( x i ) − y i = 0 f(x_i)-y_i=0 f(xi)yi=0 处不可导,求解效率低;(2)梯度较为稳定,但是即使损失很小梯度仍然保持不变,不利于模型的收敛;(3)对异常值更鲁棒(相比于L2 loss)。由于神经网络的问题较为复杂,因此很少使用,但是可以利用L1进行正则化,即将L1损失(权重1范数的和)加在其他损失的后面,作为正则项。正规化是防止过拟合的一种重要技巧,L1正则项的好处是能保持解的稀疏性,即为了使损失最小化,一些影响小的权重参数经过学习设置为0,可以用于特征选择。
  2. MSE/L2 loss
    M S E = 1 n ∑ i = 1 n ( f ( x i ) − y i ) 2 MSE = \frac1n\sum \limits_{i=1}^{n}(f(x_i)-y_i)^2 MSE=n1i=1n(f(xi)yi)2
    均方误差(Mean Square Error,MSE)是对估计值和真实值之差取平方和的平均值。由上图可以看出,(1)MSE是平滑函数、处处可导,因此在求解优化问题时有利于误差梯度的计算;(2)随着误差的减小,梯度也在减小,因此使用固定的学习速率,也能较快的收敛到最小值;(3)通过平方计算放大了估计值和真实值的距离,因此对于异常值带来很大的惩罚,从而降低正常值的预测效果;(4)误差很大时梯度也很大,在训练初期不稳定,容易梯度爆炸。L2进行正则化可以防止过拟合,在正则化后的梯度下降迭代公式中,会给权重参数乘以一个小于1的因子 1 − α λ m 1-\alpha\frac{\lambda}m 1αmλ,其中 λ \lambda λ为正则化参数,因此权重值减小,从而得到的模型越平滑。
  3. Smooth L1 loss
    S m o o t h   L 1 = 1 n ∑ i = 1 n { 0.5 ( f ( x i ) − y i ) 2 i f   ∣ f ( x i ) − y i ∣ < 1 ∣ f ( x i ) − y i ∣ − 0.5 o t h e r w i s e Smooth\space L1 = \frac1n\sum \limits_{i=1}^{n}\left\{ \begin{array}{rcl} 0.5(f(x_i)-y_i)^2 & &if \space {|f(x_i)-y_i| <1}\\ |f(x_i)-y_i|-0.5 & & {otherwise}\\ \end{array} \right. Smooth L1=n1i=1n{ 0.5(f(xi)yi)2f(xi)yi0.5if f(xi)yi<1otherwise
    Smooth L1 是L1和L2两种损失的结合,目前多用于目标检测中(例如Faster RCNN)的边框回归损失,能从两个方面限制梯度:(1)当预测框与 ground truth 差别过大时,梯度值不至于过大;(2)当预测框与 ground truth 差别很小时,梯度值足够小。
  4. Huber loss
    H u b e r   l o s s = 1 n ∑ i = 1 n { 1 2 ( f ( x i ) − y i ) 2 i f   ∣ f ( x i ) − y i ∣ ≤ δ δ ∣ f ( x i ) − y i ∣ − 1 2 δ 2 o t h e r w i s e Huber \space loss = \frac1n\sum \limits_{i=1}^{n}\left\{ \begin{array}{rcl} \frac12(f(x_i)-y_i)^2 & &if \space {|f(x_i)-y_i| \leq \delta}\\ \delta|f(x_i)-y_i|- \frac12\delta^2 & & {otherwise}\\ \end{array} \right. Huber loss=n1i=1n{ 21(f(xi)yi)2δf(xi)yi21δ2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习中常见的loss函数汇总 的相关文章

随机推荐

  • Python运算符重载及其可重载运算符

    每个类型都有其独特的操作方法 例如列表类型支持直接做加法操作实现添加元素的功能 字符串类型支持直接做加法实现字符串的拼接功能 也就是说 同样的运算符对于不同序列类型的意义是不一样的 这是怎么做到的呢 其实在 Python 内部 每种序列类型
  • AJAX面试题

    1 什么是AJAX 为什么要使用Ajax 请谈一下你对Ajax的认识 什么是ajax AJAX是 Asynchronous JavaScript and XML 的缩写 他是指一种创建交互式网页应用的网页开发技术 Ajax包含下列技术 基于
  • 蓝桥杯备赛Day8——队列

    大家好 我是牛哥带你学代码 本专栏详细介绍了蓝桥杯备赛的指南 特别适合迎战python组的小白选手 专栏以天作为单位 定期更新 将会一直更新 直到所有数据结构相关知识及高阶用法全部囊括 欢迎大家订阅本专栏 队列也属于基础数据结构 队列概念
  • C#串口通信三步走

    第一步 实例化串口通讯类 SerialPort sp new SerialPort 第二步 设置串口信息并打开串口 串口设置 public void SetSP string PortName string BaudRate string
  • 项目开发总结报告(GB8567——88)(转载)

    项目开发总结报告 GB8567 88 1引言1 1编写目的说明编写这份项目开发总结报告的目的 指出预期的阅读范围 1 2背景说明 a 本项目的名称和所开发出来的软件系统的名称 b 此软件的任务提出者 开发者 用户及安装此软件的计算中心 1
  • unity3D 巡逻兵

    游戏要求 创建一个地图和若干巡逻兵 使用动画 每个巡逻兵走一个3 5个边的凸多边型 位置数据是相对地址 即每次确定下一个目标位置 用自己当前位置为原点计算 巡逻兵碰撞到障碍物 则会自动选下一个点为目标 巡逻兵在设定范围内感知到玩家 会自动追
  • UPC思维题--移动

    题目描述 考虑333的立方体 有六个面 每个面有九个正方形 染色方法如下 角上的方格是red 中心是green 其他为blue 初始有一个机器人站在立方体顶面中心 面朝一个blue方格 它将接受到一系列如下指令 L 左转90度 R 右转90
  • gzip 命令

    NAME gzip compression decompression tool using Lempel Ziv coding LZ77 SYNOPSIS gzip cdfhkLlNnqrtVv S suffix file file gu
  • SQL Server连接字符串句法

    Application Name 应用程序名称 应用程序的名称 如果没有被指定的话 它的值为 NET SqlClient Data Provider 数据提供程序 AttachDBFilename extended properties 扩
  • ts总结 之 ts中的类型

    其他内容 ts中的类型 编译选项 webpack打包 类 文章目录 ts是什么 ts增加了什么 TypeScript中的基本类型 字面量 number boolean string any unknown 类型断言 void never o
  • (一)(C语言)实现顺序表(静态分配)的基本操作(初始化、判断是否为空,打印表,插入和删除等)讲解(含相关C语言代码讲解及运行结果)

    一 C语言 实现顺序表 静态分配 的基本操作 初始化 查找 打印表 插入和删除等 讲解 含C语言完整代码讲解及运行结果 文章目录 一 顺序表 二 顺序表相关操作 1 初始化 2 插入 3 删除 4 打印表 5 查找 三 完整代码讲解 C语言
  • 如何在chrome浏览器调试JS代码

    文章目录 资源 Sources 面板 控制台 Console 断点 Breakpoints debugger 命令 暂停并查看 日志记录 总结 参考文献 在编写更复杂的代码前 让我们先来聊聊调试吧 调试是指在一个脚本中找出并修复错误的过程
  • 如何解决merge conflict的方法

    如何解决merge conflict的方法 首先在pull的时候加上rebase 解决conflict 最后push git pull rebase origin remote if there is conflict clean it a
  • 3月份的字节跳动面经

    本人2本毕业 目前工作四年 一直是Android 做的都是些二线公司 没做过一线 四年跳了三家公司 在家休息了几个月 今年3月份开始面试 由于跳槽过多而且已经是现在Android市场的原因 内推的我的字节哥们儿 推了不知道多少个部门 才把我
  • Python轻松搞定免费语音合成,利用百度AI为短视频配音

    1 创建百度AI账号 1 1 点击进入百度AI 左上角 开放能力 gt 语音合成 gt 立即使用 如果是试用 可以直接点击在线语音合成 不过语音不能下载 要下载还得用下面方式 调用百度AI的API 1 2 然后登录百度云账户 进入管理中心
  • qemu-virtio基本原理

    virtio是相当复杂的 网上写virtio原理解析的文章也不少 这里我想通过最简练易懂的方式来解释一下virtio的原理 一方面也完善一下自己对virtio的理解 文中含有大量个人理解 如果发现有错误的地方欢迎与我交流 virtio整体流
  • 掌财社:掌握CCI指标捕捉爆发牛股

    什么是CCI指标 CCI指标又叫顺势指标 其英文全名为 Commodity Channel Index 是由美国股市分析家唐纳德R 兰伯特 Donald r Lambert 于20世纪80年代所创 是指导股市投资的一种中短线指标 CCI指标
  • linuxas3+apache2+mysql5+php5+discuz5+zend3.3+supesite.docx

    最近领导要装个supesite discuz 方便公司内部用 对于公司内部用来说是大了点 感觉有些大财小用了 但如果考虑以后做成门户 还是很值得的 于是就动手配置 出于linux系统的稳定与安全 选择linux作为平台 本配置所用系统与软件
  • 认识glBegin

    初学OpenGL的时候总有很多函数或者函数的参数不会用 不明白其作用 今天主要总结一下关于glBegin 中的参数用法 一 glBegin glBegin表示一组用于定义一个或者多个图元的顶点的开始 此函数通常与glEnd函数联用 在glB
  • 深度学习中常见的loss函数汇总

    损失函数 Loss Function 分为经验风险损失函数和结构风险损失函数 经验风险损失函数反映的是预测结果和实际结果之间的差别 结构风险损失函数则是经验风险损失函数加上正则项 L1或L2 深度学习中的损失函数被用于模型参数的估计 通常作