损失函数的理解

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

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

如果有人问你现在有多幸福,你会如何回答呢?一般的人可能会给出诸如“还可以吧”或者“不是那么幸福”等笼统的回答。如果有人回答“我现在的幸福指数是10.23”的话,可能会把人吓一跳吧。因为他用一个数值指标来评判自己的幸福程度。
这里的幸福指数只是打个比方,实际上神经网络的学习也在做同样的事情。神经网络的学习通过某个指标表示现在的状态。然后,以这个指标为基准,寻找最优权重参数。和刚刚那位以幸福指数为指引寻找“最优人生”的人一样,神经网络以某个指标为线索寻找最优权重参数。


一、损失函数是什么?

损失函数是表示神经网络性能的“恶劣程度”的指标,即当前的神经网络对监督数据在多大程度上不拟合,在多大程度上不一致。以“性能的恶劣程度”为指标可能会使人感到不太自然,但是如果给损失函数乘上一个负值,就可以解释为“在多大程度上不坏”.即“性能有多好”。并且,“使性能的恶劣程度达到最小”和“使性能的优良程度达到最大”是等价的,不管是用“恶劣程度”还是“优良程度”,做的事情本质上都是一样的。
神经网络以某个指标为线索寻找最优权重参数。神经网络的学习中所用的指标称为损失函数(loss function)。这个损失函数可以使用任意函数但一般用均方误差和交叉熵误差等

二、常用的损失函数

1.均方误差

可以用作损失函数的函数有很多,其中最有名的是均方误差(mean squared error)。均方误差如下式所示
损失函数的理解
这里,yk是表示神经网络的输出,tk表示监督数据,k表示数据的维数。
均方误差会计算神经网络的输出和正确解监督数据的各个元素之差的平方,再求总和。现在,我们用Python来实现这个均方误差实现方式如下所示。

def mean_squared_error(y,t):
	return 0.5 * np.sum((y-t)**2)

2.交叉熵误差

除了均方误差之外,交叉熵误差(cross entropy error)也经常被用作损失函数。交叉熵误差如下式所示:
损失函数的理解
这里,log表示以e为底数的自然对数(log e)。yk是神经网络的输出,tk是正确解标签。并且,tk中只有正确解标签的索引为1,其他均为 0(one-hot 表示)因此,实际上只计算对应正确解标签的输出的自然对数。比如,假设正确解标签的索引是“2”,与之对应的神经网终的输出是0.6,则交叉熵误差是-log 0.6 = 0.51;若“2”对应的输出是0.1,则交叉误差为 -log 0.1 = 2.30.也就是说,交叉熵误差的值是由正确解标签所对应的输出结果决定的。
自然对数的图像如图所示
损失函数的理解交叉熵误差代码:

def cross_entropy_error(y,t):
	delta = le-7
	return -np.sum(t * np.log(y + delta))

这里,参数y和t是NumPy数组。函数内部在计算 np.log时,加上了一个微小值delta。这是因为,当出现np.log(0) 时,np.log(0) 会变为负无限大的 -inf,这样一来就会导致后续计算无法进行。作为保护性对策,添加一个微小值可以防止负无限大的发生。


总结

上面我们讨论了损失函数,可能有人要问:“为什么要导入损失函数呢?以数字识别任务为例,我们想获得的是能提高识别精度的参数,特意再导人一个损失函数不是有些重复劳动吗?也就是说,既然我们的目标是获得使识别精度尽可能高的神经网络,那不是应该把识别精度作为指标吗?
对于这一疑问,我们可以根据“导数”在神经网络学习中的作用来回答下一节中会详细说到,在神经网络的学习中,寻找最优参数(权重和偏置)时要寻找使损失函数的值尽可能小的参数。为了找到使损失函数的值尽可能小的地方,需要计算参数的导数(确切地讲是梯度),然后以这个导数为指引,逐步更新参数的值。
假设有一个神经网络,现在我们来关注这个神经网络中的某一个权重参数。此时,对该权重参数的损失函数求导,表示的是“如果稍微改变这个权重参数的值,损失函数的值会如何变化”。如果导数的值为负,通过使该权重参数向正方向改变,可以减小损失函数的值;反过来,如果导数的值为正.则通过使该权重参数向负方向改变,可以减小损失函数的值。不过,当导数的值为0时,无论权重参数向哪个方向变化,损失函数的值都不会改变,此时该权重参数的更新会停在此处。
在进行神经网络的学习时,不能将识别精度作为指标。因为如果以识别精度为指标,则参数的导数在绝大多数地方都会变为 0。
我们来思考另一个具体例子。假设某个神经网络正确识别出了 100 笔训练数据中的32笔,此时识别精度为32 %。如果以识别精度为指标,即使稍微改变权重参数的值,识别精度也仍将保持在32 %,不会出现变化。也就是说,仅仅微调参数,是无法改善识别精度的。即便识别精度有所改善,它的值也不会像32.0123…%这样连续变化,而是变为33 %34 %这样的不连续的、离散的值。而如果把损失函数作为指标,则当前损失函数的值可以表示为0.92543…· 这样的值。并且,如果稍微改变一下参数的值,对应的损失函数也会像0.93432·.· 这样发生连续性的变化。文章来源地址https://www.toymoban.com/news/detail-462849.html

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

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

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

相关文章

  • 损失函数——Dice Loss损失函数

    Dice Loss 是一种用于图像分割任务的损失函数,它的基本思想是计算预测结果和真实结果的重叠部分,通过最小化两者的差异来优化模型。Dice Loss被广泛用于医学图像分割任务中。 Dice Loss的计算公式如下:  其中,N是像素总数,pi​是模型预测的第i个像素的值,gi​是真实标

    2024年02月07日
    浏览(44)
  • 损失函数——感知损失

    感知损失(Perceptual Loss)是一种基于深度学习的图像风格迁移方法中常用的损失函数。与传统的均方误差损失函数(Mean Square Error,MSE)相比,感知损失更注重图像的感知质量,更符合人眼对图像质量的感受。 感知损失的计算方式通常是将输入图像和目标图像分别通过预训练

    2024年02月12日
    浏览(37)
  • 损失函数篇 | YOLOv8 更换损失函数之 MPDIoU | 《2023 一种用于高效准确的边界框回归的损失函数》

    论文地址:https://arxiv.org/pdf/2307.07662v1.pdf 边界框回归(Bounding Box Regression,BBR)在目标检测和实例分割中得到了广泛应用,是目标定位的重要步骤。然而,对于边界框回归的大多数现有损失函数来说,当预测的边界框与真值边界框具有相同的长宽比,但宽度和高度的值完全不

    2024年02月15日
    浏览(46)
  • 损失函数——感知损失(Perceptual Loss)

    感知损失(Perceptual Loss) 是一种基于深度学习的图像风格迁移方法中常用的损失函数。与传统的均方误差损失函数(Mean Square Error,MSE)相比,感知损失更注重图像的感知质量,更符合人眼对图像质量的感受。 感知损失是通过预训练的神经网络来计算两张图片之间的差异。通

    2024年02月04日
    浏览(46)
  • 机器学习5:基于线性回归理解减少“损失”的方法

    在上节《机器学习4:基本术语》中,笔者介绍了“损失(Loss)”的定义,在训练模型时,减少损失(Reducing Loss)是极为关键的,只有“损失”足够小的机器学习系统才有实用价值。 在本节中,笔者将基于线性回归(Linear Regression)来介绍减少损失的具体方法。 目录 1.线性回

    2024年02月11日
    浏览(47)
  • 【深度学习】002-损失函数:MSE、交叉熵、铰链损失函数(Hinge Loss)

    目录 前言 一、均方误差损失函数(The Mean-Squared Loss)       1.1、从线性回归模型导出均方误差函数       1.2、均方误差函数的使用场景       1.3、均方误差函数的一些讨论 2、交叉熵损失函数(The Cross-Entropy Loss)       2.1、从softmax运算到交叉熵       2.2、信息论

    2024年02月05日
    浏览(46)
  • CVPR 2023 | 清华&美团提出稀疏Pairwise损失函数!ReID任务超已有损失函数!

    点击下方 卡片 ,关注“ CVer ”公众号 AI/CV重磅干货,第一时间送达 点击进入— 【ReID】微信技术交流群 研究概述: ReID任务的目的是从海量图像中检索出与给定query相同ID的实例。 Pairwise损失函数在ReID 任务中发挥着关键作用。现有方法都是基于密集采样机制,即将每个实例

    2024年02月04日
    浏览(38)
  • YOLOv5改进 | 损失函数篇 | InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数

    本文给大家带来的是YOLOv5最新改进,为大家带来最近新提出的InnerIoU的内容同时用Inner的思想结合SIoU、WIoU、GIoU、DIoU、EIOU、CIoU等损失函数 , 形成 InnerIoU、InnerSIoU、InnerWIoU等新版本损失函数,同时还结合了Focus和AIpha思想 , 形成的新的损失函数,其中Inner的主要思想是:引入

    2024年01月25日
    浏览(41)
  • 损失函数(Loss Function)一文详解-分类问题常见损失函数Python代码实现+计算原理解析

    目录 前言 一、损失函数概述 二、损失函数分类 1.分类问题的损失函数

    2023年04月26日
    浏览(44)
  • 损失函数——对数损失(Logarithmic Loss,Log Loss)

    对数损失(Logarithmic Loss,Log Loss) 是一种用于衡量分类模型的损失函数。它通常用于二元分类问题,但也可以用于多元分类问题。 在二元分类问题中,Log Loss 基于预测概率和实际标签的对数误差来计算损失。对于一个样本 i,假设它的实际标签是 yi​(取值为 0 或 1),模

    2024年02月15日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包