损失函数

损失函数

参考文章

鲁棒性和泛化能力_-CSDN博客

交叉熵损失函数_用交叉熵计算经验风险-CSDN博客

损失函数定义

损失函数(loss function)是用来估量模型的预测值与真实值的不一致程度,它是一个非负函数。

一般来说,损失函数越小,模型的鲁棒性越好。

鲁棒性是指模型在面对噪声、异常数据或不确定性时仍然能够维持其性能的能力。

在实际应用中,数据通常是不完美的,可能包含噪声、缺失值或异常情况。一个鲁棒的模型能够在这些情况下依然保持较好的性能,不会轻易受到干扰。例如,在图像识别中,鲁棒的模型能够正确识别经过轻微扭曲、遮挡或光照变化的图像。

损失函数分为经验风险损失函数结构风险损失函数

  • 经验风险损失函数表示预测值与真实值之间的差异

  • 结构风险损失函数是指经验风险损失函数加上正则化。

降低损失函数的办法就是调整和输入参数相关的权重(就是上面的参数解),调整权重实际上相当于在每个点调整改点的斜率

有哪些损失函数

从学习任务的类型出发,可以从广义上将损失函数分为两大类——回归损失和分类损失

  • 回归问题处理的是连续值的预测问题,例如给定房屋面积、房间数量以及房间大小,预测房屋价格。
  • 分类任务中,我们要从类别值有限的数据集中预测输出,比如给定一个手写数字图像的大数据集,将其分为 0~9 中的一个。

这里介绍几个常用的损失函数

  1. 交叉熵(Cross Entroy)损失函数
  2. 描述概率分布的Sigmoid函数与softmax回归
  3. 均方误差损失函数

交叉熵(Cross Entroy)损失函数

在深度学习领域,交叉熵是用来刻画两个概率分布方向向量之间的距离的,是分类问题中使用比较广的一种损失函数。距离越小,函数越精确。

我们以MNIST手写数字识别为例,详细跟大家介绍一下交叉熵的分类方式:

手写体识别问题可以被归纳为一个十分类问题,主要是判断一张图片中的阿拉伯数字是0-9中的哪一个。

解决对分类问题最常用的方法是设置n个网络的输出节点,节点的个数要与类别的个数一致对于网络输入的每一个样本,神经网络的输出都是一个n维的向量,向量中的每一个结果都对应n个类别中的某一类别的概率值。

例如,在理想情况下,如果一个样本属于类别k,那么这个类别所对应的输出节点的输出值应该为1,其他节点的输出值均为0.以手写体识别数字1为例,网络模型的输出结果可能是【0.1,0.8,0.1,.0,.0,.0,.0,.0,.0,.0】或者【0.2,0.5,0.2,0.1,.0,.0,.0,.0,.0,.0,】。根据输出结果,我们的直觉是选择其中概率最大的那个作为最终答案,所以这两个结果都能判断出数字的结果为1.

最理想的情况是【.0,1.0,.0,.0,.0,.0,.0,.0,.0,.0】,那么如何判断一个输出向量有多接近于期望的向量输出呢?我们会选用一个损失函数来刻画输出向量能达到的精度,例如交叉熵损失函数

image-20240927164442289

交叉熵可以理解为概率分布Q对概率分布P估计的准确程度,所以在使用交叉熵损失函数时,一般设定P代表的是正确答案(例如上面的理想情况),Q代表预测的结果值。

损失函数需要一步一步的被减小,才能使得预测答案接近真实答案。针对Q最小化交叉熵可以等价于最小化KL散度。

这个公式具体怎么来的我没看