0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习和深度学习中分类与回归常用的几种损失函数

新机器视觉 来源:新机器视觉 作者:新机器视觉 2020-10-09 16:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

机器学习中的监督学习本质上是给定一系列训练样本,尝试学习的映射关系,使得给定一个,即便这个不在训练样本中,也能够得到尽量接近真实的输出。而损失函数(Loss Function)则是这个过程中关键的一个组成部分,用来衡量模型的输出与真实的之间的差距,给模型的优化指明方向。

本文将介绍机器学习、深度学习中分类与回归常用的几种损失函数,包括均方差损失 Mean Squared Loss、平均绝对误差损失 Mean Absolute Error Loss、Huber Loss、分位数损失 Quantile Loss、交叉熵损失函数 Cross Entropy Loss、Hinge 损失 Hinge Loss。主要介绍各种损失函数的基本形式、原理、特点等方面。

目录

前言

均方差损失 Mean Squared Error Loss

平均绝对误差损失 Mean Absolute Error Loss

Huber Loss

分位数损失 Quantile Loss

交叉熵损失 Cross Entropy Loss

合页损失 Hinge Loss

总结

前言

在正文开始之前,先说下关于 Loss Function、Cost Function 和 Objective Function 的区别和联系。在机器学习的语境下这三个术语经常被交叉使用。

- 损失函数 Loss Function 通常是针对单个训练样本而言,给定一个模型输出和一个真实,损失函数输出一个实值损失

- 代价函数 Cost Function 通常是针对整个训练集(或者在使用 mini-batch gradient descent 时一个 mini-batch)的总损失

- 目标函数 Objective Function 是一个更通用的术语,表示任意希望被优化的函数,用于机器学习领域和非机器学习领域(比如运筹优化)

一句话总结三者的关系就是:A loss function is a part of a cost function which is a type of an objective function.

由于损失函数和代价函数只是在针对样本集上有区别,因此在本文中统一使用了损失函数这个术语,但下文的相关公式实际上采用的是代价函数 Cost Function 的形式,请读者自行留意。

均方差损失 Mean Squared Error Loss

基本形式与原理

均方差 Mean Squared Error (MSE) 损失是机器学习、深度学习回归任务中最常用的一种损失函数,也称为 L2 Loss。其基本形式如下

从直觉上理解均方差损失,这个损失函数的最小值为 0(当预测等于真实值时),最大值为无穷大。下图是对于真实值,不同的预测值的均方差损失的变化图。横轴是不同的预测值,纵轴是均方差损失,可以看到随着预测与真实值绝对误差的增加,均方差损失呈二次方地增加。

背后的假设

实际上在一定的假设下,我们可以使用最大化似然得到均方差损失的形式。假设模型预测与真实值之间的误差服从标准高斯分布(),则给定一个模型输出真实值的概率为

进一步我们假设数据集中 N 个样本点之间相互独立,则给定所有输出所有真实值的概率,即似然 Likelihood,为所有的累乘

通常为了计算方便,我们通常最大化对数似然 Log-Likelihood

去掉与无关的第一项,然后转化为最小化负对数似然 Negative Log-Likelihood

可以看到这个实际上就是均方差损失的形式。也就是说在模型输出与真实值的误差服从高斯分布的假设下,最小化均方差损失函数与极大似然估计本质上是一致的,因此在这个假设能被满足的场景中(比如回归),均方差损失是一个很好的损失函数选择;当这个假设没能被满足的场景中(比如分类),均方差损失不是一个好的选择。

平均绝对误差损失 Mean Absolute Error Loss

基本形式与原理

平均绝对误差 Mean Absolute Error (MAE) 是另一类常用的损失函数,也称为 L1 Loss。其基本形式如下

同样的我们可以对这个损失函数进行可视化如下图,MAE 损失的最小值为 0(当预测等于真实值时),最大值为无穷大。可以看到随着预测与真实值绝对误差的增加,MAE 损失呈线性增长

背后的假设

同样的我们可以在一定的假设下通过最大化似然得到 MAE 损失的形式,假设模型预测与真实值之间的误差服从拉普拉斯分布 Laplace distribution(),则给定一个模型输出真实值的概率为

与上面推导 MSE 时类似,我们可以得到的负对数似然实际上就是 MAE 损失的形式

MAE 与 MSE 区别

MAE 和 MSE 作为损失函数的主要区别是:MSE 损失相比 MAE 通常可以更快地收敛,但 MAE 损失对于 outlier 更加健壮,即更加不易受到 outlier 影响。

MSE 通常比 MAE 可以更快地收敛。当使用梯度下降算法时,MSE 损失的梯度为,而 MAE 损失的梯度为,即 MSE 的梯度的 scale 会随误差大小变化,而 MAE 的梯度的 scale 则一直保持为 1,即便在绝对误差很小的时候 MAE 的梯度 scale 也同样为 1,这实际上是非常不利于模型的训练的。当然你可以通过在训练过程中动态调整学习率缓解这个问题,但是总的来说,损失函数梯度之间的差异导致了 MSE 在大部分时候比 MAE 收敛地更快。这个也是 MSE 更为流行的原因。

MAE 对于 outlier 更加 robust。我们可以从两个角度来理解这一点:

第一个角度是直观地理解,下图是 MAE 和 MSE 损失画到同一张图里面,由于MAE 损失与绝对误差之间是线性关系,MSE 损失与误差是平方关系,当误差非常大的时候,MSE 损失会远远大于 MAE 损失。因此当数据中出现一个误差非常大的 outlier 时,MSE 会产生一个非常大的损失,对模型的训练会产生较大的影响。

第二个角度是从两个损失函数的假设出发,MSE 假设了误差服从高斯分布,MAE 假设了误差服从拉普拉斯分布。拉普拉斯分布本身对于 outlier 更加 robust。参考下图(来源:Machine Learning: A Probabilistic Perspective 2.4.3 The Laplace distribution Figure 2.8),当右图右侧出现了 outliers 时,拉普拉斯分布相比高斯分布受到的影响要小很多。因此以拉普拉斯分布为假设的 MAE 对 outlier 比高斯分布为假设的 MSE 更加 robust。

Huber Loss

上文我们分别介绍了 MSE 和 MAE 损失以及各自的优缺点,MSE 损失收敛快但容易受 outlier 影响,MAE 对 outlier 更加健壮但是收敛慢,Huber Loss 则是一种将 MSE 与 MAE 结合起来,取两者优点的损失函数,也被称作 Smooth Mean Absolute Error Loss 。其原理很简单,就是在误差接近 0 时使用 MSE,误差较大时使用 MAE,公式为

上式中是 Huber Loss 的一个超参数,的值是 MSE 和 MAE 两个损失连接的位置。上式等号右边第一项是 MSE 的部分,第二项是 MAE 部分,在 MAE 的部分公式为是为了保证误差时 MAE 和 MSE 的取值一致,进而保证 Huber Loss 损失连续可导。

下图是时的 Huber Loss,可以看到在的区间内实际上就是 MSE 损失,在和区间内为 MAE损失。

Huber Loss 的特点

Huber Loss 结合了 MSE 和 MAE 损失,在误差接近 0 时使用 MSE,使损失函数可导并且梯度更加稳定;在误差较大时使用 MAE 可以降低 outlier 的影响,使训练对 outlier 更加健壮。缺点是需要额外地设置一个超参数。

分位数损失 Quantile Loss

分位数回归 Quantile Regression 是一类在实际应用中非常有用的回归算法,通常的回归算法是拟合目标值的期望或者中位数,而分位数回归可以通过给定不同的分位点,拟合目标值的不同分位数。例如我们可以分别拟合出多个分位点,得到一个置信区间,如下图所示(图片来自笔者的一个分位数回归代码 demo Quantile Regression Demo)

分位数回归是通过使用分位数损失 Quantile Loss 来实现这一点的,分位数损失形式如下,式中的 r 分位数系数。

我们如何理解这个损失函数呢?这个损失函数是一个分段的函数 ,将(高估) 和(低估) 两种情况分开来,并分别给予不同的系数。当时,低估的损失要比高估的损失更大,反过来当时,高估的损失比低估的损失大;分位数损失实现了分别用不同的系数控制高估和低估的损失,进而实现分位数回归。特别地,当时,分位数损失退化为 MAE 损失,从这里可以看出 MAE 损失实际上是分位数损失的一个特例 — 中位数回归(这也可以解释为什么 MAE 损失对 outlier 更鲁棒:MSE 回归期望值,MAE 回归中位数,通常 outlier 对中位数的影响比对期望值的影响小)。

下图是取不同的分位点 0.2、0.5、0.6 得到的三个不同的分位损失函数的可视化,可以看到 0.2 和 0.6 在高估和低估两种情况下损失是不同的,而 0.5 实际上就是 MAE。

交叉熵损失 Cross Entropy Loss

上文介绍的几种损失函数都是适用于回归问题损失函数,对于分类问题,最常用的损失函数是交叉熵损失函数 Cross Entropy Loss。

二分类

考虑二分类,在二分类中我们通常使用 Sigmoid 函数将模型的输出压缩到 (0, 1) 区间内,用来代表给定输入,模型判断为正类的概率。由于只有正负两类,因此同时也得到了负类的概率。

将两条式子合并成一条

假设数据点之间独立同分布,则似然可以表示为

对似然取对数,然后加负号变成最小化负对数似然,即为交叉熵损失函数的形式

下图是对二分类的交叉熵损失函数的可视化,蓝线是目标值为 0 时输出不同输出的损失,黄线是目标值为 1 时的损失。可以看到约接近目标值损失越小,随着误差变差,损失呈指数增长。

多分类

在多分类的任务中,交叉熵损失函数的推导思路和二分类是一样的,变化的地方是真实值现在是一个 One-hot 向量,同时模型输出的压缩由原来的 Sigmoid 函数换成 Softmax 函数。Softmax 函数将每个维度的输出范围都限定在之间,同时所有维度的输出和为 1,用于表示一个概率分布。

其中表示 K 个类别中的一类,同样的假设数据点之间独立同分布,可得到负对数似然为

由于是一个 one-hot 向量,除了目标类为 1 之外其他类别上的输出都为 0,因此上式也可以写为

其中是样本的目标类。通常这个应用于多分类的交叉熵损失函数也被称为 Softmax Loss 或者 Categorical Cross Entropy Loss。

Cross Entropy is good. But WHY?

分类中为什么不用均方差损失?上文在介绍均方差损失的时候讲到实际上均方差损失假设了误差服从高斯分布,在分类任务下这个假设没办法被满足,因此效果会很差。为什么是交叉熵损失呢?有两个角度可以解释这个事情,一个角度从最大似然的角度,也就是我们上面的推导;另一个角度是可以用信息论来解释交叉熵损失:

假设对于样本存在一个最优分布真实地表明了这个样本属于各个类别的概率,那么我们希望模型的输出尽可能地逼近这个最优分布,在信息论中,我们可以使用 KL 散度 Kullback–Leibler Divergence 来衡量两个分布的相似性。给定分布和分布, 两者的 KL 散度公式如下

其中第一项为分布的信息熵,第二项为分布和的交叉熵。将最优分布和输出分布带入和得到

由于我们希望两个分布尽量相近,因此我们最小化 KL 散度。同时由于上式第一项信息熵仅与最优分布本身相关,因此我们在最小化的过程中可以忽略掉,变成最小化

我们并不知道最优分布,但训练数据里面的目标值可以看做是的一个近似分布

这个是针对单个训练样本的损失函数,如果考虑整个数据集,则

可以看到通过最小化交叉熵的角度推导出来的结果和使用最大 化似然得到的结果是一致的。

合页损失 Hinge Loss

合页损失 Hinge Loss 是另外一种二分类损失函数,适用于 maximum-margin 的分类,支持向量机 Support Vector Machine (SVM) 模型的损失函数本质上就是 Hinge Loss + L2 正则化。合页损失的公式如下

下图是为正类, 即时,不同输出的合页损失示意图

可以看到当为正类时,模型输出负值会有较大的惩罚,当模型输出为正值且在区间时还会有一个较小的惩罚。即合页损失不仅惩罚预测错的,并且对于预测对了但是置信度不高的也会给一个惩罚,只有置信度高的才会有零损失。使用合页损失直觉上理解是要找到一个决策边界,使得所有数据点被这个边界正确地、高置信地被分类。

总结

本文针对机器学习中最常用的几种损失函数进行相关介绍,首先是适用于回归的均方差损失 Mean Squared Loss、平均绝对误差损失 Mean Absolute Error Loss,两者的区别以及两者相结合得到的 Huber Loss,接着是应用于分位数回归的分位数损失 Quantile Loss,表明了平均绝对误差损失实际上是分位数损失的一种特例,在分类场景下,本文讨论了最常用的交叉熵损失函数 Cross Entropy Loss,包括二分类和多分类下的形式,并从信息论的角度解释了交叉熵损失函数,最后简单介绍了应用于 SVM 中的 Hinge 损失 Hinge Loss。本文相关的可视化代码在 这里。

受限于时间,本文还有其他许多损失函数没有提及,比如应用于 Adaboost 模型中的指数损失 Exponential Loss,0-1 损失函数等。另外通常在损失函数中还会有正则项(L1/L2 正则),这些正则项作为损失函数的一部分,通过约束参数的绝对值大小以及增加参数稀疏性来降低模型的复杂度,防止模型过拟合,这部分内容在本文中也没有详细展开。读者有兴趣可以查阅相关的资料进一步了解。That’s all. Thanks for reading.

责任编辑:YYX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136231
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123901
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何深度学习机器视觉的应用场景

    深度学习视觉应用场景大全 工业制造领域 复杂缺陷检测:处理传统算法难以描述的非标准化缺陷模式 非标产品分类:对形状、颜色、纹理多变的产品进行智能分类 外观质量评估:基于
    的头像 发表于 11-27 10:19 49次阅读

    如何在机器视觉中部署深度学习神经网络

    人士而言往往难以理解,人们也常常误以为需要扎实的编程技能才能真正掌握并合理使用这项技术。事实上,这种印象忽视了该技术为机器视觉(乃至生产自动化)带来的潜力,因为深度学习并非只属于计算机科学家或程序员。 从头开始:什么
    的头像 发表于 09-10 17:38 692次阅读
    如何在<b class='flag-5'>机器</b>视觉中部署<b class='flag-5'>深度</b><b class='flag-5'>学习</b>神经网络

    深度学习对工业物联网有哪些帮助

    深度学习作为人工智能的核心分支,通过模拟人脑神经网络的层级结构,能够自动从海量工业数据中提取复杂特征,为工业物联网(IIoT)提供了从数据感知到智能决策的全链路升级能力。以下从技术赋能、场景突破
    的头像 发表于 08-20 14:56 757次阅读

    自动驾驶中Transformer大模型会取代深度学习吗?

    [首发于智驾最前沿微信公众号]近年来,随着ChatGPT、Claude、文心一言等大语言模型在生成文本、对话交互等领域的惊艳表现,“Transformer架构是否正在取代传统深度学习”这一话题一直被
    的头像 发表于 08-13 09:15 3916次阅读
    自动驾驶中Transformer大模型会取代<b class='flag-5'>深度</b><b class='flag-5'>学习</b>吗?

    任正非说 AI已经确定是第四次工业革命 那么如何从容地加入进来呢?

    ,TensorFlow、PyTorch用于构建和训练神经网络。以Python为例,通过编写简单的程序来处理数据,如读取数据集、进行数据清洗和预处理,这是进入AI领域的基本技能。 学习机器学习深度
    发表于 07-08 17:44

    嵌入式AI技术之深度学习:数据样本预处理过程中使用合适的特征变换对深度学习的意义

      作者:苏勇Andrew 使用神经网络实现机器学习,网络的每个层都将对输入的数据做一次抽象,多层神经网络构成深度学习的框架,可以深度理解数
    的头像 发表于 04-02 18:21 1281次阅读

    如何排除深度学习工作台上量化OpenVINO™的特定层?

    无法确定如何排除要在深度学习工作台上量化OpenVINO™特定层
    发表于 03-06 07:31

    SLAMTEC Aurora:把深度学习“卷”进机器人日常

    在人工智能和机器人技术飞速发展的今天,深度学习与SLAM(同步定位与地图构建)技术的结合,正引领着智能机器人行业迈向新的高度。最近科技圈顶流DeepSeek简直杀疯了!靠着逆天的
    的头像 发表于 02-19 15:49 723次阅读

    军事应用中深度学习的挑战与机遇

    人工智能尤其是深度学习技术的最新进展,加速了不同应用领域的创新与发展。深度学习技术的发展深刻影响了军事发展趋势,导致战争形式和模式发生重大变化。本文将概述
    的头像 发表于 02-14 11:15 818次阅读

    机器学习模型市场前景如何

    当今,随着算法的不断优化、数据量的爆炸式增长以及计算能力的飞速提升,机器学习模型的市场前景愈发广阔。下面,AI部落小编将探讨机器学习模型市场的未来发展。
    的头像 发表于 02-13 09:39 619次阅读

    BP神经网络与深度学习的关系

    ),是一种多层前馈神经网络,它通过反向传播算法进行训练。BP神经网络由输入层、一个或多个隐藏层和输出层组成,通过逐层递减的方式调整网络权重,目的是最小化网络的输出误差。 二、深度学习的定义与发展 深度
    的头像 发表于 02-12 15:15 1340次阅读

    嵌入式机器学习的应用特性与软件开发环境

    作者:DigiKey Editor 在许多嵌入式系统中,必须采用嵌入式机器学习(Embedded Machine Learning)技术,这是指将机器学习模型部署在资源受限的设备(如微
    的头像 发表于 01-25 17:05 1209次阅读
    嵌入式<b class='flag-5'>机器</b><b class='flag-5'>学习</b>的应用特性与软件开发环境

    xgboost在图像分类中的应用

    和易用性,在各种机器学习任务中得到了广泛应用,包括分类回归和排序问题。在图像分类领域,尽管深度
    的头像 发表于 01-19 11:16 1558次阅读

    传统机器学习方法和应用指导

    用于开发生物学数据的机器学习方法。尽管深度学习(一般指神经网络算法)是一个强大的工具,目前也非常流行,但它的应用领域仍然有限。与深度
    的头像 发表于 12-30 09:16 1981次阅读
    传统<b class='flag-5'>机器</b><b class='flag-5'>学习</b>方法和应用指导

    如何选择云原生机器学习平台

    当今,云原生机器学习平台因其弹性扩展、高效部署、低成本运营等优势,逐渐成为企业构建和部署机器学习应用的首选。然而,市场上的云原生机器
    的头像 发表于 12-25 11:54 699次阅读