Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Python

  • MLTutorials

    • 机器学习基础

      • 机器学习术语
      • 单变量线性回归
      • 归一化和标准化
      • 正则化
      • 多变量线性回归
      • 逻辑回归
      • 调试策略
      • 激活函数
      • Embedding
      • GCN
      • GAT
      • BayesClassifier
      • 距离函数
      • 损失函数
        • Loss Function/Cost Function
        • Mean Square Error(MSE)
        • Mean Absolute Error(MAE)
        • Huber Loss
        • 0-1 loss
        • Quadratic Loss
        • Logarithmic Loss
        • Hinge Loss
        • perceptron loss
        • Cross-entropy loss
        • Exponential Loss
        • Modified Huber Loss
        • References
      • 强化学习
      • 线性判别分析LDA
      • Sequence2sequence
      • Network Compression
      • 机器学习算法集锦从贝叶斯到深度学习及各自优缺点
      • 各种机器学习算法的应用场景
      • 数据集
      • HashLearning
      • 经典网络
      • 感知机
    • 模型与算法

    • 模型优化

  • 卷积神经网络

  • 循环神经网络

  • Transformer

  • VisionTransformer

  • 扩散模型

  • 计算机视觉

  • PTM

  • MoE

  • LoRAMoE

  • LongTailed

  • 多模态

  • 知识蒸馏

  • PEFT

  • 对比学习

  • 小样本学习

  • 迁移学习

  • 零样本学习

  • 集成学习

  • Mamba

  • PyTorch

  • CL

  • CIL

  • 小样本类增量学习FSCIL

  • UCIL

  • 多模态增量学习MMCL

  • LTCIL

  • DIL

  • 论文阅读与写作

  • 分布外检测

  • GPU

  • 深度学习调参指南

  • AINotes
  • MLTutorials
  • 机器学习基础
Geeks_Z
2022-08-16
目录
Loss Function/Cost Function
Mean Square Error(MSE)
Mean Absolute Error(MAE)
Huber Loss
0-1 loss
Quadratic Loss
Logarithmic Loss
Hinge Loss
perceptron loss
Cross-entropy loss
Exponential Loss
Modified Huber Loss
References

损失函数

Loss Function/Cost Function

损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。

  1. 损失函数(loss function)或代价函数(cost function) 损失函数定义为给定输入X 预测值f(X)和真实值Y之间的非负实值函数,记作L(Y,f(X))

  2. 风险函数(risk function)或期望损失(expected loss) 这个和模型的泛化误差的形式是一样的 Rexp(f)=Ep[L(Y,f(X))]=∫X×YL(y,f(x))P(x,y)dxdy 模型f(X) 于联合分布P(X,Y) 平均意义下的损失(期望损失),但是因为P(X,Y) 未知的,所以前面的用词是期望,以及平均意义下的。

    这个表示其实就是损失的均值,反映了对整个数据的预测效果的好坏,P(x,y) 换成ν(X=x,Y=y)N 容易直观理解, 可以参考CH09,6.2.2 节的部分描述来理解,但是真实的数据 N 是无穷的。

  3. 经验风险(empirical risk)或经验损失(empirical loss) Remp(f)=1N∑i=1NL(yi,f(xi)) 模型f 于训练样本集的平均损失 根据大数定律,当样本容量 N 趋于无穷大时,经验风险趋于期望风险

  4. 结构风险(structural risk) Rsrm(f)=1N∑i=1NL(yi,f(xi))+λJ(f) J(f) 模型复杂度, λ⩾0​ 是系数,用以权衡经验风险和模型复杂度。

Mean Square Error(MSE)

均方误差指的就是模型预测值f(x) 样本真实值y 间距离平方的平均值。

MSE=1m∑i=1m(yi−f(xi))2

其中,yi f(xi) 别表示第 i 样本的真实值和预测值,m 样本个数。 为了简化讨论,忽略下标i,m=1,以y−f(x)​ 为横坐标,MSE 为纵坐标,绘制其损失函数的图 形:

特点

MSE 曲线的特点是光滑连续、可导,便于使用梯度下降算法,是比较常用的一种损失函数。而且,MSE 随着误差的减小,梯度也在减小,这有利于函数的收敛,即使固定学习因子,函数也能较快取得最小值。平方误差有个特性,就是当 yi 与 f(xi) 的差值大于 1 时,会增大其误差;当 yi 与f(xi) 的差值小于 1 时,会减小其误差。这是由平方的特性决定的。也就是说, MSE 会对误差较大(>1)的情况给予更大的惩罚,对误差较小(<1)的情况给予更小的惩罚。从训练的角度来看,模型会更加偏向于惩罚较大的点,赋予其更大的权重。 如果样本中存在离群点,MSE 会给离群点赋予更高的权重,但是却是以牺牲其他正常数据点的预测效果为代价,这最终会降低模型的整体性能。

Mean Absolute Error(MAE)

MAE=1m∑i=1m|yi−f(xi)|

为了简化讨论,忽略下标i,m=1,以 y−f(x)​ 为横坐标,MAE 为纵坐标,绘制其损失函数的图 形:

image-20210904205551904

直观上来看,MAE 的曲线呈 V 字型,连续但在 y−f(x)=0​ 处不可导,计算机求解导数比较困难。而且 MAE 大部分情况下梯度都是相等的,这意味着即使对于小的损失值,其梯度也是大的。这不利于函数的收敛和模型的学习。 值得一提的是,MAE 相比 MSE 有个优点就是 MAE 对离群点不那么敏感,更有包容性。因为 MAE 计算的是误差 y−f(x) 的绝对值,无论是 y−f(x)>1 是y−f(x)<1​,没有平方项的作用,惩罚力度都是一样的,所占权重一样。实际应用中,我们应该选择 MSE 还是 MAE 呢?从计算机求解梯度的复杂度来说,MSE 要优于 MAE,而且梯度也是动态变化的,能较快准确达到收敛。但是从离群点角度来看,如果离群点是实际数据或重要数据,而且是应该被检测到的异常值,那么我们应该使用 MSE。另一方面,离群点仅仅代表数据损坏或者错误采样,无须给予过多关注,那么我们应该选择 MAE 作为损失。

Huber Loss

Lδ(y,f(x))={12(y−f(x))2∣y−f(x)∣≤δδ∣y−f(x)∣−12δ2∣y−f(x)∣>δ

Huber Loss 是对二者(MSE/MAE)的综合,包含了一个超参数δ。δ 的大小决定了 Huber Loss 对 MSE 和 MAE 的侧重性, 当 ∣y−f(x)∣≤δ 时, 变为 MSE; 当 ∣y−f(x)∣>δ 时, 则变成类似于 MAE,因此 Huber Loss 同时具备了 MSE 和 MAE 的优点,减小了对离群点的敏感度问题,实现了处处可导的功能。通常来说,超参数 δ​ 可以通过交叉验证选取最佳值。下面,分别取 δ=0.1、δ=10​,绘制相应的 Huber Loss,如下图所示:

image-20210904210855521

Huber Loss 在∣y−f(x)∣>δ 时,梯度一直近似为δ,能够保证模型以一个较快的速度更新参数。当 ∣y−f(x)∣≤δ 时,梯度逐渐减小,能够保证模型更精确地得到全局最优值。因此,Huber Loss 同时具备了前两种损失函数的优点。

0-1 loss

L(Y,f(X))={1,Y≠f(X)0,Y=f(X)

特点:

(1)0-1 损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用.

(2)感知机就是用的这种损失函数。但是相等这个条件太过严格,因此可以放宽条件,即满足∣Y−f(X)∣<T​​ 时认为相等,

L(Y,f(X))={1,∣Y−f(X)∣≥T0,∣Y−f(X)∣<T

Quadratic Loss

L(Y,f(X))=(Y−f(X))2

特点:

经常应用与回归问题

Logarithmic Loss

L(Y,P(Y|X))=−log⁡P(Y|X)

这里P(Y|X)⩽1,对应的对数是负值,所以对数损失中包含一个负号.

(1) log 对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。

(2)健壮性不强,相比于 hinge loss 对噪声更敏感。

(3)逻辑回归的损失函数就是 log 对数损失函数。

Hinge Loss

在机器学习中,hinge loss作为一个损失函数(loss function),通常被用于最大间隔算法(maximum-margin),而最大间隔算法又是 SVM(支持向量机 support vector machines)用到的重要算法。Hinge loss 用于二分类问题,标签值y=±1​​​,预测值y^∈R​​​。当y​​​ 和y^​​​ 同号,且∣y^∣≥1​​​ ,此时l(y)=0​​​;而当预测∣y^∣<1​​​​​ 时,分类器对分类结果不确定,loss 不为 0。

l(y)=max(0,1−y^y)

y^y≥1​​​,损失为 0;

y^y<1,损失为1−y^y

特点:

  • hinge 损失函数表示如果被分类正确,损失为 0,否则损失就为1−y^y 。SVM就是使用这个损失函数。

  • 健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释。

perceptron loss

感知损失函数的标准形式如下:

L(y,f(x))=max(0,−f(x))

特点:

是 Hinge 损失函数的一个变种,Hinge loss 对判定边界附近的点(正确端)惩罚力度很高。而 perceptron loss只要样本的判定类别正确的话,它就满意,不管其判定边界的距离。它比 Hinge loss 简单,因为不是 max-margin boundary,所以模型的泛化能力没 hinge loss 强。

Cross-entropy loss

分布差异度量方式 (opens new window)

Exponential Loss

Exponential Loss,又称指数损失,其表达式如下:

L=e−ys

image-20210904221305171

Exponential Loss 与交叉熵 Loss 类似,但它是指数下降的,因此梯度较其它 Loss 来说,更大一些。Exponential Loss 一般多用于 AdaBoost 中。因为使用 Exponential Loss 能比较方便地利用加法模型推导出 AdaBoost 算法。

Modified Huber Loss

在之前介绍回归损失函数,我们介绍过 Huber Loss,它集合了 MSE 和 MAE 的优点。Huber Loss 也能应用于分类问题中,称为 Modified Huber Loss,其表达是如下:

L(y,s)={max(0,1−ys)2,ys≥−1−4ys,ys<−1

image-20210904221651667

从表达式和 Loss 图形上看,Modified Huber Loss 结合了 Hinge Loss 和 交叉熵 Loss 的优点。一方面能在ys>1 时产生稀疏解提高训练效率;另一方面对于 ys<−1​ 样本的惩罚以线性增加,这意味着受异常点的干扰较少。scikit-learn 中的 SGDClassifier 就使用了 Modified Huber Loss。

References

机器学习基础(四十二)—— 常用损失函数的设计(multiclass SVM loss & hinge loss)_https://space.bilibili.com/59807853-CSDN 博客 (opens new window)

常见的损失函数(loss function)总结 - 知乎 (zhihu.com) (opens new window)

常见回归和分类损失函数比较 - massquantity - 博客园 (cnblogs.com) (opens new window)

#机器学习教程
上次更新: 2025/07/06, 13:25:25
距离函数
强化学习

← 距离函数 强化学习→

最近更新
01
优化器
07-04
02
weight_decay
07-03
03
帮助信息查看
06-08
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式