神经网络中的损失函数(上)——回归任务

这篇具有很好参考价值的文章主要介绍了神经网络中的损失函数(上)——回归任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

神经网络是深度学习的基础。在神经网络中,损失函数和优化函数是两个非常重要的概念,它们共同决定了模型的性能和训练效果。本文将介绍神经网络中比较常用的损失函数。

损失函数的含义

损失函数是用于量化预测值与真实值之间误差大小的一个非负函数。数值越小表示损失越小,完美预测时损失为0。不同的损失函数具有不同倾向性,在实际应用中要根据实际需要选取使用的损失函数。

我们的目标是通过优化函数来找到损失函数的最小值点,从而使得模型达到最好的效果。

神经网络完成的任务大致可分为两类,回归任务和分类任务。这两类任务中常用的损失函数不太一样。本文将介绍回归任务中常用的几个损失函数。由于篇幅原因,分类任务中的损失函数将单独拿出来讲。

回归任务中的损失函数

在回归任务中,假设有 n n n个数据,输入为 X = ( x 1 , x 2 , ⋯   , x n ) X=(x_1,x_2,\cdots,x_n) X=(x1,x2,,xn),真实值为 Y = ( y 1 , y 2 , ⋯   , y n ) Y=(y_1,y_2,\cdots,y_n) Y=(y1,y2,,yn),预测值为 Y ^ = ( y ^ 1 , y ^ 2 , ⋯   , y ^ n ) \widehat{Y}=(\widehat{y}_1,\widehat{y}_2,\cdots,\widehat{y}_n) Y =(y 1,y 2,,y n)。而损失函数的作用就是量化 Y Y Y Y ^ \widehat{Y} Y 之间的差距。

平均绝对误差(MAE)

平均绝对误差(Mean Absolute Error,MAE)的公式为 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \frac{1}{n}\sum_{i=1}^n |y_i-\widehat{y}_i| n1i=1nyiy i

这个公式可以从范数和距离两个角度来理解。

L1范数

从范数的意义上来理解平均绝对误差,忽略掉 1 n \frac{1}{n} n1,其实这个式子就是 ∣ ∣ Y − Y ^ ∣ ∣ 1 ||Y-\widehat{Y}||_1 ∣∣YY 1,即 Y − Y ^ Y-\widehat{Y} YY 的L1范数。由于这个原因,所以MAE又被称为L1 Loss。

在实际应用中,这个 1 n \frac{1}{n} n1并不重要,在有些地方有 1 n \frac{1}{n} n1,有些地方没有,但其实在效果上是几乎一样的,故不作严格区分。

曼哈顿距离

考虑两个向量之间的差距,可以用两个向量间的距离来表示。而平均绝对误差的形式则与曼哈顿距离非常像。 Y Y Y Y ^ \widehat{Y} Y 的曼哈顿距离定义为

d ( Y , Y ^ ) = ∑ i = 1 n ∣ y i − y ^ i ∣ d(Y,\widehat{Y})=\sum_{i=1}^n |y_i-\widehat{y}_i| d(Y,Y )=i=1nyiy i

优点

无论对于什么样的输入值,都有着稳定的梯度,不会导致梯度爆炸问题,具有较为稳健性的解。

缺点

MAE训练过程中梯度始终很大,且在0点连续但不可导,这意味着模型学习速度慢,同时会导致使用梯度下降训练模型是,在结束时可能会遗漏全局最小值。

均方误差(MSE)

均方误差(Mean Squared Error,MSE)的公式为 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \frac{1}{n}\sum_{i=1}^n (y_i-\widehat{y}_i)^2 n1i=1n(yiy i)2

均方误差家族

均方误差有几个兄弟姐妹,这里也简单提一提。

均方根误差(Root Mean Squared Error,RMSE)的公式为 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \sqrt{\frac{1}{n}\sum_{i=1}^n (y_i-\widehat{y}_i)^2} n1i=1n(yiy i)2

残差平方和(Square residual sum,RSS)的公式为 ∑ i = 1 n ( y i − y ^ i ) 2 \sum_{i=1}^n (y_i-\widehat{y}_i)^2 i=1n(yiy i)2

平方损失函数的公式为 1 2 ∑ i = 1 n ( y i − y ^ i ) 2 \frac{1}{2}\sum_{i=1}^n (y_i-\widehat{y}_i)^2 21i=1n(yiy i)2

这几个公式其实非常像,无非就是乘除一个常数,开个根号的区别而已。但其实我们知道,这些操作是不会改变最小值点的,所以这些公式的最小值点都是一样的,只是在面对不同的优化函数时各有各的优势。均方根误差在量纲上跟平均绝对误差保持一致,可以在数值上与平均绝对误差作为对比。平方损失函数的 1 2 \frac{1}{2} 21并不会带来本质的区别,但是对其求导,常数的系数为1,在形式上稍微简单一些。而且在最小二乘法中使用的损失函数就是平方损失函数。

最小二乘法在历史上相当出名。据说,大名鼎鼎的高斯当年就是运用最小二乘法成功预言了谷神星出现的位置,从此他的名声传遍了全世界。

均方误差是有着严格理论推导的科学方法。在高斯噪声的假设下,最小化均方误差等价于对线性模型的极大似然估计(证明在下面)。也就是说,对于一个线性模型,如果噪声项是高斯噪声,那么均方误差作为损失函数就是最优的。

至于为什么均方误差在均方误差家族的众多函数中脱颖而出,可能也是大量实验的结果。这些函数在本文中并不做严格区分。

L2范数

从范数的意义上来理解,其实残差平方和就是 ∣ ∣ Y − Y ^ ∣ ∣ 2 ||Y-\widehat{Y}||_2 ∣∣YY 2,即 Y − Y ^ Y-\widehat{Y} YY 的L2范数。均方误差又被称为L2 Loss。

欧氏距离

从距离的角度来看,这跟欧几里得距离很像。 Y Y Y Y ^ \widehat{Y} Y 的欧几里得距离定义为

d ( Y , Y ^ ) = ∑ i = 1 n ( y i − y ^ i ) 2 d(Y,\widehat{Y})=\sqrt{\sum_{i=1}^n (y_i-\widehat{y}_i)^2} d(Y,Y )=i=1n(yiy i)2

极大似然估计

我们从极大似然的角度来推导一下均方误差的公式。我们来考虑线性回归,假设真实值满足 y = w x + b + ϵ y=wx+b+\epsilon y=wx+b+ϵ ϵ \epsilon ϵ为噪声项,假设其服从 N ( 0 , σ ) N(0,\sigma) N(0,σ),即均值为0,标准差为 σ \sigma σ的正态分布。我们希望拟合出的函数为 y = w x + b y=wx+b y=wx+b

我们现在可以写出通过给定的 x x x观测到特定 y y y的似然(likelihood):

P ( y ∣ x ) = 1 2 π σ 2 e x p { − 1 2 σ 2 ( y − w x − b ) 2 } P(y|x)=\frac{1}{\sqrt{2\pi \sigma^2}}exp\{-\frac{1}{2\sigma^2}(y-wx-b)^2\} P(yx)=2πσ2 1exp{2σ21(ywxb)2}

现在,根据极大似然估计法,参数 w w w b b b的最优值是使整个数据集的似然最大的值:

P ( Y ∣ X ) = ∏ i = 1 n P ( y i ∣ x i ) = ( 1 2 π σ 2 ) n e x p { ∑ i = 1 n − 1 2 σ 2 ( y i − w x i − b ) 2 } P(Y|X)=\prod_{i=1}^n P(y_i|x_i)=(\frac{1}{\sqrt{2\pi \sigma^2}})^n exp\{\sum_{i=1}^n -\frac{1}{2\sigma^2}(y_i-wx_i-b)^2\} P(YX)=i=1nP(yixi)=(2πσ2 1)nexp{i=1n2σ21(yiwxib)2}

根据极大似然估计法选择的估计量称为极大似然估计量。 虽然使许多指数函数的乘积最大化看起来很困难, 但是我们可以在不改变目标的前提下,通过最大化似然对数来简化。 由于历史原因,优化通常是说最小化而不是最大化。 我们可以改为最小化负对数似然 − l n P ( Y ∣ X ) -ln P(Y|X) lnP(YX)。由此可以得到的数学公式是

− l n P ( Y ∣ X ) = n 2 l n ( 2 π σ ) + ∑ i = 1 n 1 2 σ 2 ( y i − w x i − b ) 2 -ln P(Y|X)=\frac{n}{2}ln(2\pi\sigma)+\sum_{i=1}^n \frac{1}{2\sigma^2}(y_i-wx_i-b)^2 lnP(YX)=2nln(2πσ)+i=1n2σ21(yiwxib)2

现在我们只需要假设 σ \sigma σ是某个固定常数就可以忽略第一项, 因为第一项不依赖于 w w w b b b 1 σ 2 \frac{1}{\sigma^2} σ21是常数,也可以忽略。于是公式变成了

∑ i = 1 n ( y i − w x i − b ) 2 \sum_{i=1}^n (y_i-wx_i-b)^2 i=1n(yiwxib)2

w w w b b b是我们需要预测的值,有 y ^ i = w x + b \widehat{y}_i=wx+b y i=wx+b。于是,公式就变成了

∑ i = 1 n ( y i − y ^ i ) 2 \sum_{i=1}^n (y_i-\widehat{y}_i)^2 i=1n(yiy i)2

再乘上常数 1 n \frac{1}{n} n1即为均方误差。

这里只是以一次函数作为例子,但其实换成任意函数都可以,只要满足 ϵ \epsilon ϵ~ N ( 0 , σ ) N(0,\sigma) N(0,σ),即噪声项为高斯噪声,上式都是成立的。

因此,在高斯噪声的假设下,最小化均方误差等价于对线性模型的极大似然估计。

优点

各点都连续光滑,方便求导,具有较为稳定的解。均方误差也是在实际应用中较为常用的一种损失函数。高斯噪声假设在实际情况中是一个比较合理的假设,所以均方误差这样一个有着严格理论推导的损失函数效果也比较好。

缺点

不是特别的稳健,因为当函数的输入值距离中心值较远的时候,使用梯度下降法求解的时候梯度很大,可能导致梯度爆炸。

由于平方的关系,异常值对于函数的影响非常大,所以该函数往往会更倾向于异常值。对于一些要忽略明显异常值的情况则不适用。

smooth L1 Loss

smooth L1 Loss是基于L1 Loss和L2 Loss的一个损失函数。其公式为

l o s s ( y i , y ^ i ) = { 1 2 ( y i − y ^ i ) 2 ∣ y i − y ^ i ∣ < 1 ∣ y i − y ^ i ∣ − 1 2 ∣ y i − y ^ i ∣ ≥ 1 loss(y_i,\widehat{y}_i)=\begin{cases} \frac{1}{2}(y_i-\widehat{y}_i)^2&|y_i-\widehat{y}_i|<1\\ |y_i-\widehat{y}_i|-\frac{1}{2}&|y_i-\widehat{y}_i|\geq1 \end{cases} loss(yi,y i)={21(yiy i)2yiy i21yiy i<1yiy i1

这个损失函数将L1 Loss和L2 Loss结合起来,从而规避了两个损失函数的短板。该函数在0点处可导,规避了L1 Loss的缺点。离群点对于该函数的影响也没有那么大,从而规避了L2 Loss的缺点。

Huber

Huber函数的公式是

L δ ( y i , y ^ i ) = { 1 2 ( y i − y ^ i ) 2 ∣ y i − y ^ i ∣ < δ δ ∣ y i − y ^ i ∣ − 1 2 δ 2 ∣ y i − y ^ i ∣ ≥ δ L_{\delta}(y_i,\widehat{y}_i)=\begin{cases} \frac{1}{2}(y_i-\widehat{y}_i)^2&|y_i-\widehat{y}_i|<\delta\\ \delta|y_i-\widehat{y}_i|-\frac{1}{2}\delta^2&|y_i-\widehat{y}_i|\geq\delta \end{cases} Lδ(yi,y i)={21(yiy i)2δyiy i21δ2yiy i<δyiy iδ

smooth L1 Loss其实就是Huber函数在 δ = 1 \delta=1 δ=1时的特殊情况。他具有L1 Loss,L2 Loss的优点,但是由于涉及到超参数 δ \delta δ的选取,我们还需要通过不断迭代,来确定 δ \delta δ的具体取值。它对异常值的偏好介于L1 Loss和L2 Loss之间,当你想照顾到异常值,又不想让异常值对模型训练产生太大的影响时,它可以作为一种折中的选择。

总结

我写这篇博客其实非常艰难。一边试图从理论的角度来理解这些函数,一边又发现无法完全通过理论来理解。计算机这门学科还是带有实验性质的一门学科,可能有些函数确实在一些实际情况中表现较好,虽然有很多凑的成分,但也被后人拿来用了。我在搜集资料的过程中,还发现网上对于一些名词的解释有些不同。这也可以理解,有些细节由于各种原因可能会产生细微的不同,但是总体不会相差太远。我这里选取了一些能够自圆其说的说法。其实作为一门实验学科,很难做到如教科书般严谨的阐述。在文章中,也加入了很多自己的理解,可能有些内容比较主观,也请大家批评指正!文章来源地址https://www.toymoban.com/news/detail-803517.html

到了这里,关于神经网络中的损失函数(上)——回归任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 神经网络 05(损失函数)

    在深度学习中, 损失函数是用来 衡量模型参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异,损失函数在不同的文献中名称是不一样的,主要有以下几种命名方式: 损失函数 (loss function) 代价函数(cost function) 目标函数(objective function) 误差函数(error

    2024年02月09日
    浏览(21)
  • yolov5目标检测神经网络——损失函数计算原理

    前面已经写了4篇关于yolov5的文章,链接如下: 1、基于libtorch的yolov5目标检测网络实现——COCO数据集json标签文件解析 2、基于libtorch的yolov5目标检测网络实现(2)——网络结构实现 3、基于libtorch的yolov5目标检测网络实现(3)——Kmeans聚类获取anchor框尺寸 4、C++实现Kmeans聚类算法获

    2024年02月02日
    浏览(35)
  • 机器学习回归任务指标评价及Sklearn神经网络模型评价实践

    机器学习回归模型评价是指对回归模型的性能进行评估,以便选择最佳的回归模型。其中,MAE、MSE、RMSE 用于衡量模型预测值与真实值之间的误差大小,R² 用于衡量模型对数据的拟合程度。在实际应用中,我们可以使用这些指标来评估回归模型的性能,并对模型进行优化。

    2024年02月05日
    浏览(36)
  • 神经网络基础-神经网络补充概念-08-逻辑回归中的梯度下降算法

    逻辑回归是一种用于分类问题的机器学习算法,而梯度下降是优化算法,用于更新模型参数以最小化损失函数。在逻辑回归中,我们使用梯度下降算法来找到最优的模型参数,使得逻辑回归模型能够更好地拟合训练数据。

    2024年02月12日
    浏览(25)
  • 一种基于注意机制的快速、鲁棒的混合气体识别和浓度检测算法,配备了具有双损失函数的递归神经网络

    提出一个由注意力机制组成的电子鼻系统。首先采用端到端的编码器译码器,提供处理可变长度输入的灵活性。然后提供一种新的门控循环单元网络,方便从时间动态中提取特征,在此基础上注意力机制动态分配气体特征的权重向量。最后采用双损失函数,利用同一网络实现

    2024年02月09日
    浏览(36)
  • 1、动手学深度学习——线性神经网络:线性回归的实现(从零实现+内置函数实现)

    回归(regression)是能为一个或多个自变量与因变量之间关系建模的一类方法。 在自然科学和社会科学领域, 回归经常用来表示输入和输出之间的关系 。 给定一个数据集,我们的目标是 寻找模型的权重和偏置 , 使得根据模型做出的预测大体符合数据里的真实价格。 输出的

    2024年02月11日
    浏览(38)
  • 回归预测 | MATLAB实现WOA-RBF鲸鱼优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图)

    效果一览 基本介绍 回归预测 | MATLAB实现WOA-RBF鲸鱼优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图),输入多个特征,输出单个变量,多输入单输出回归预测; 多指标评价,代码质量极高;excel数据,方便替换,运行环境2018及以上。 程序设计 完整源

    2024年02月11日
    浏览(36)
  • 回归预测 | MATLAB实现PSO-RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图)

    效果一览 基本介绍 回归预测 | MATLAB实现PSO-RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图),输入多个特征,输出单个变量,多输入单输出回归预测; 多指标评价,代码质量极高;excel数据,方便替换,运行环境2018及以上。 评价指标MAE、

    2024年02月12日
    浏览(43)
  • IDCNN(迭代扩张卷积神经网络)在NLP-NER任务中的应用

    IDCNN(迭代扩张卷积神经网络)在NLP-NER任务中的应用 IDCNN(Iterated Dilated Convolutional Neural Network)是一种特别设计的卷积神经网络(CNN),用于处理自然语言处理(NLP)中的序列标注问题,例如命名实体识别(NER)。IDCNN的关键特点是使用了扩张卷积(Dilated Convolution),这是一

    2024年01月23日
    浏览(37)
  • 逻辑回归中的损失函数

            逻辑回归中的损失函数通常采用的是交叉熵损失函数(cross-entropy loss function)。在逻辑回归中,我们通常使用sigmoid函数将线性模型的输出转换为概率值,然后将这些概率值与实际标签进行比较,从而计算损失。         在逻辑回归解决二分类问题的学习中,我

    2024年01月22日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包