深度学习中常见的损失函数

devtools/2024/11/13 9:09:09/

在机器学习和深度学习中,损失函数用于衡量模型预测值与真实值之间的差异。根据任务的类型(如回归、分类等),可以使用不同的损失函数。下面列举了一些常见的损失函数:

1. 回归问题中的损失函数

回归任务的目标是预测连续值,常用的损失函数有:

  • 均方误差(Mean Squared Error, MSE)
    L MSE = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 L_{\text{MSE}} = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2 LMSE=N1i=1N(yiy^i)2

    • 这是最常用的回归损失函数之一。它对误差的平方进行加权,较大的误差对损失的贡献更大。
  • 均方根误差(Root Mean Squared Error, RMSE)
    L RMSE = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 L_{\text{RMSE}} = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2} LRMSE=N1i=1N(yiy^i)2

    • RMSE是MSE的平方根形式,通常用于更直观地表示误差。
  • 平均绝对误差(Mean Absolute Error, MAE)
    L MAE = 1 N ∑ i = 1 N ∣ y i − y ^ i ∣ L_{\text{MAE}} = \frac{1}{N} \sum_{i=1}^{N} |y_i - \hat{y}_i| LMAE=N1i=1Nyiy^i

    • MAE对误差的线性差异进行惩罚,它对异常值的影响不如MSE大。
  • Huber损失(Huber Loss)
    L δ ( a ) = { 1 2 a 2 if  ∣ a ∣ ≤ δ δ ( ∣ a ∣ − 1 2 δ ) if  ∣ a ∣ > δ L_{\delta}(a) = \begin{cases} \frac{1}{2} a^2 & \text{if } |a| \leq \delta \\ \delta (|a| - \frac{1}{2} \delta) & \text{if } |a| > \delta \end{cases} Lδ(a)={21a2δ(a21δ)if aδif a>δ

    • 这是MSE和MAE的折中,适用于存在异常值的数据集。它对小误差使用MSE,对大误差使用MAE。

2. 分类问题中的损失函数

分类任务的目标是将数据点分配到离散类别中,常用的损失函数包括:

  • 交叉熵损失(Cross Entropy Loss)

    • 对于二分类问题:
      L CE = − 1 N ∑ i = 1 N [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] L_{\text{CE}} = - \frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right] LCE=N1i=1N[yilog(y^i)+(1yi)log(1y^i)]

      • ( y_i ) $$ 是真实类别标签(0或1),( \hat{y}_i ) 是预测值(0到1之间的概率值)。
    • 对于多分类问题(Softmax交叉熵损失):
      L CE = − 1 N ∑ i = 1 N ∑ k = 1 K y i k log ⁡ ( y ^ i k ) L_{\text{CE}} = - \frac{1}{N} \sum_{i=1}^{N} \sum_{k=1}^{K} y_{ik} \log(\hat{y}_{ik}) LCE=N1i=1Nk=1Kyiklog(y^ik)

      • 这里 y i k y_{ik} yik 是类别 k k k 的真实标签(one-hot编码), y ^ i k \hat{y}_{ik} y^ik 是模型输出的类别概率。
  • Hinge Loss(用于SVM)
    L hinge = max ⁡ ( 0 , 1 − y i ⋅ y ^ i ) L_{\text{hinge}} = \max(0, 1 - y_i \cdot \hat{y}_i) Lhinge=max(0,1yiy^i)

    • 常用于支持向量机(SVM)分类器中,确保正确类别的得分与其他类别的得分相差至少1。
  • Kullback-Leibler散度(Kullback-Leibler Divergence, KL Divergence)
    D KL ( P ∣ ∣ Q ) = ∑ i P ( i ) log ⁡ ( P ( i ) Q ( i ) ) D_{\text{KL}}(P || Q) = \sum_{i} P(i) \log\left(\frac{P(i)}{Q(i)}\right) DKL(P∣∣Q)=iP(i)log(Q(i)P(i))

    • 用于衡量两个概率分布 P P P Q Q Q 之间的差异,通常用于分类任务的概率分布预测中。

3. 用于检测和分割的损失函数

这些损失函数常用于图像处理任务,如物体检测和图像分割:

  • IoU损失(Intersection over Union Loss)
    L IoU = 1 − Intersection Area Union Area L_{\text{IoU}} = 1 - \frac{\text{Intersection Area}}{\text{Union Area}} LIoU=1Union AreaIntersection Area

    • 用于目标检测,衡量预测框与真实框之间的重叠面积比例。
  • Dice损失(Dice Loss)
    L Dice = 1 − 2 ∣ A ∩ B ∣ ∣ A ∣ + ∣ B ∣ L_{\text{Dice}} = 1 - \frac{2 |A \cap B|}{|A| + |B|} LDice=1A+B2∣AB

    • 多用于图像分割任务,衡量预测与真实分割区域之间的重叠。

4. 生成模型中的损失函数

生成模型如GANs(生成对抗网络)和自编码器中使用的损失函数包括:

  • 对抗损失(Adversarial Loss)

    • GAN中用于生成器和判别器的损失。生成器的目标是“欺骗”判别器,判别器的目标是正确地区分真实数据和生成数据。
      L gen = − log ⁡ ( D ( G ( z ) ) ) L_{\text{gen}} = -\log(D(G(z))) Lgen=log(D(G(z)))
      L dis = − [ log ⁡ ( D ( x ) ) + log ⁡ ( 1 − D ( G ( z ) ) ) ] L_{\text{dis}} = -\left[\log(D(x)) + \log(1 - D(G(z)))\right] Ldis=[log(D(x))+log(1D(G(z)))]
  • 重构损失(Reconstruction Loss)

    • 常用于自编码器和变分自编码器(VAE),衡量输入数据和重构数据之间的差异,常使用MSE或交叉熵。

5. 其他常见损失函数

  • 标签平滑损失(Label Smoothing Loss)
    L smooth = − ∑ i = 1 N ∑ k = 1 K [ ( 1 − ϵ ) y i k + ϵ K ] log ⁡ ( y ^ i k ) L_{\text{smooth}} = - \sum_{i=1}^{N} \sum_{k=1}^{K} \left[(1 - \epsilon) y_{ik} + \frac{\epsilon}{K}\right] \log(\hat{y}_{ik}) Lsmooth=i=1Nk=1K[(1ϵ)yik+Kϵ]log(y^ik)

    • 在交叉熵损失中引入平滑标签,避免过拟合或过度自信的预测。
  • 对比损失(Contrastive Loss)
    L contrastive = ( 1 − y ) ⋅ 1 2 ( D w ) 2 + y ⋅ 1 2 { max ⁡ ( 0 , m − D w ) } 2 L_{\text{contrastive}} = (1 - y) \cdot \frac{1}{2} (D_w)^2 + y \cdot \frac{1}{2} \{ \max(0, m - D_w) \}^2 Lcontrastive=(1y)21(Dw)2+y21{max(0,mDw)}2

    • 常用于度量学习任务(如Siamese网络),衡量相似样本和不相似样本之间的距离。

总结

不同的损失函数适用于不同的任务,回归任务中通常使用均方误差(MSE)和绝对误差(MAE),分类任务中使用交叉熵损失,物体检测和分割中使用IoU和Dice损失,而生成模型中使用对抗损失和重构损失。根据具体任务的特点选择合适的损失函数对于模型的性能有很大影响。


http://www.ppmy.cn/devtools/112696.html

相关文章

广播与组播,超时检测

目录 一.超时检测 必要性 超时检测的设置方法 1. 通过函数自带的参数设置 2. 通过设置套接字属性进行设置 3. alarm函数与sigaction函数结合 二.广播与组播(broadcast & multicast) 1. 广播(udp) 理论&#xff1a…

什么是外贸专用路由器?

一、外贸专用路由器的显著特点 全球兼容性 外贸专用路由器支持多种国际通信标准和频段,能够无缝连接不同国家和地区的网络,从而避免因地域限制导致的网络问题。这种全球兼容性确保了外贸企业在全球范围内的网络部署更加顺畅,让企业在任何角落…

对抗性EM用于变分深度学习:在低剂量PET和低剂量CT中的半监督图像质量增强应用|文献速递--Transformer架构在医学影像分析中的应用

Title 题目 Adversarial EM for variational deep learning: Application to semi-supervised image quality enhancement in low-dose PET and low-dose CT 对抗性EM用于变分深度学习:在低剂量PET和低剂量CT中的半监督图像质量增强应用 01 文献速递介绍 医学影…

『功能项目』战士的伤害型技能【45】

我们打开上一篇44战士职业平A怪物掉血的项目, 本章要做的事情是制作技能按钮,点鼠标点击时释放对范围内怪物的伤害技能 首先双击打开资源脚本下的Canvas预制体 制作技能栏 在资源商店中下载免费资源 - 技能图片 将技能图片拖拽至技能栏的Button按钮组件…

深入理解Python中的魔法参数 *args 和 **kwargs

在Python编程中,函数的灵活性是其强大之处之一。其中,*args 和 **kwargs 是实现函数参数可变性的重要工具。 无论我们是Python初学者还是经验丰富的开发者,充分理解这两个概念都有助于编写更加灵活、高效的代码。 本文将深入探讨*args和**kw…

1、常用的数据库、表操作

基本的建表和数据库拷贝操作。 一、数据定义语言DDL show databases; # 查看全部数据库 show create database db; # 查看数据库db create database db; # 创建数据库db drop database db; # 删除数据库db use db; # 使用数据库db基本…

动态规划(算法)---03.斐波那契数列模型_最小花费爬楼梯

题目链接: 746. 使用最小花费爬楼梯 - 力扣(LeetCode)https://leetcode.cn/problems/min-cost-climbing-stairs/description/ 一、题目解析 题目: 解析: 题目说cost[i]为从某一个台阶向上爬的的费用,我们…

网络原理2-网络层与数据链路层

目录 网络层数据链路层 网络层 网络层做的工作: 1、地址管理–>IP地址 2、路由选择–>数据包传输的路径规划 网络层主要的协议就是IP协议 IP协议的报头结构: 4位版本: 有两个取值,4表示IPv4,6表示IPv6&am…