首页技术huber函数 Faulhaber公式

huber函数 Faulhaber公式

编程之家2026-06-10661次浏览

大家好,今天来为大家解答huber函数这个问题的一些问题点,包括Faulhaber公式也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

huber函数 Faulhaber公式

Huber损失——平滑平均绝对误差

Huber损失——平滑平均绝对误差

Huber损失是一种用于回归问题的损失函数,它结合了平均绝对误差(MAE)和均方误差(MSE)的特点,旨在提供一种对局外点(outliers)不敏感且可微的损失度量。

一、Huber损失的定义

Huber损失是一个连续可微的分段函数,其表达式如下:

[L_delta(a)= begin{cases}frac{1}{2}a^2& text{if}|a| leq delta delta(|a|- frac{1}{2}delta)& text{if}|a|> deltaend{cases}]

其中,(a= y- hat{y})表示真实值(y)与预测值(hat{y})之间的残差,(delta)是一个超参数,用于调节误差的阈值。

huber函数 Faulhaber公式

二、Huber损失的特性

对局外点不敏感:与MSE相比,Huber损失在残差较大时(即(|a|> delta))采用L1损失的形式,这有助于减少局外点对损失函数的影响,从而提高模型的鲁棒性。

可微性:与MAE相比,Huber损失在残差较小时(即(|a| leq delta))采用L2损失的形式,这使得损失函数在这一点上是可微的,有助于使用梯度下降等优化算法进行模型训练。

超参数δ的调节:超参数(delta)的选择对Huber损失的行为有重要影响。当(delta)趋向于0时,Huber损失退化为MAE;当(delta)趋向于无穷时,则退化为MSE。因此,通过调整(delta)的值,可以在模型的鲁棒性和精度之间取得平衡。

三、Huber损失的应用

Huber损失在回归问题中得到了广泛应用,特别是在处理含有局外点的数据集时。由于它结合了MAE和MSE的优点,因此能够在保持损失函数可微的同时,对局外点具有更好的鲁棒性。

huber函数 Faulhaber公式

四、Huber损失与MAE、MSE的比较

MAE(平均绝对误差):

优点:对局外点不敏感,因为每个误差项的权重都是相同的。

缺点:在误差较小时,梯度保持不变,可能导致模型在最优解附近收敛速度较慢。

MSE(均方误差):

优点:在误差较小时,梯度随误差减小而减小,有助于模型在最优解附近快速收敛。

缺点:对局外点敏感,因为较大的误差项会被平方放大。

Huber损失:

优点:结合了MAE和MSE的优点,既对局外点不敏感,又在误差较小时具有较快的收敛速度。

缺点:需要精心选择超参数(delta),以平衡模型的鲁棒性和精度。

五、Huber损失的超参数选择

超参数(delta)的选择对Huber损失的性能有重要影响。在实际应用中,可以通过交叉验证等方法来选择合适的(delta)值。一般来说,较小的(delta)值会使模型对局外点更加鲁棒,但可能导致模型在最优解附近的收敛速度较慢;而较大的(delta)值则会使模型在误差较小时具有较快的收敛速度,但可能对局外点更加敏感。

六、Huber损失的示例

以下是一个Huber损失的示例图,展示了不同(delta)值下Huber损失函数的变化情况:

从图中可以看出,当(delta)值较小时,Huber损失在残差较大时更接近MAE;而当(delta)值较大时,Huber损失在残差较小时更接近MSE。

综上所述,Huber损失是一种结合了MAE和MSE优点的回归损失函数,通过精心选择超参数(delta),可以在模型的鲁棒性和精度之间取得平衡。在实际应用中,Huber损失在处理含有局外点的数据集时表现出色,是一种值得尝试的损失函数。

【概念理解】Huber Loss

Huber Loss是一种结合平方误差与线性误差特性的损失函数,主要用于鲁棒回归(Robust Regression),通过参数δ控制对异常值的敏感度。其核心逻辑如下:

公式定义:

当预测偏差|y- f(x)|≤δ时,采用平方误差:Lδ(y, f(x))= 0.5×(y- f(x))2

当预测偏差|y- f(x)|>δ时,采用线性误差:Lδ(y, f(x))=δ×(|y- f(x)|- 0.5×δ)

其中,y为真实值,f(x)为预测值,δ为阈值参数。

特性分析:

对异常值的鲁棒性:最小二乘法(平方误差)对异常值敏感,因偏差平方会放大极端误差。而 Huber Loss在偏差超过δ后转为线性误差,限制了异常值的惩罚上限,从而降低其对模型的影响。

图中可见,Huber Loss在偏差较大时斜率减小,避免过度拟合异常点。

连续性与可微性:在δ附近,Huber Loss保持连续且一阶可导,便于梯度下降等优化算法使用。

参数δ的作用:

δ较小:更接近平方误差,对异常值敏感,适用于数据质量高、异常少的场景。

δ较大:更接近绝对误差(MAE),鲁棒性增强,但可能低估正常数据的误差。

选择方法:通常通过交叉验证或基于数据分布的统计量(如中位数绝对偏差)确定。

应用场景:

回归问题:如线性回归、神经网络回归任务,尤其当数据包含噪声或离群点时。

对比其他损失函数:平方误差(MSE):对异常值敏感,但梯度稳定。

绝对误差(MAE):鲁棒但梯度不连续(在 0点)。

Huber Loss:平衡两者,兼顾效率与鲁棒性。

总结:Huber Loss通过动态调整误差计算方式,在保持正常数据拟合效率的同时,减少异常值对模型的干扰,是回归任务中常用的鲁棒损失函数。

(4)损失函数

损失函数用来表示输出与实际值的差距。常用的损失函数为0-1损失函数、平方损失函数、绝对损失函数、对数损失函数、交叉熵损失函数。

损失函数计算得到的损失又叫期望损失。学习的目标就是选择期望风险最小的模型。

期望风险=经验风险+结构风险

期望风险是模型关于联合概率分布的期望损失;经验风险是模型关于训练样本集的损失,结构风险时在经验风险的基础上加上正则化。

根据大数定理,当N趋近于无穷时,经验风险时趋近于期望风险的。

当样本数量足够大时,经验风险最小化能保证很好的学习效果。极大似然估计就是经验风险最小化的例子。

ANN的设计目的之一是为了使机器可以像人一样学习知识。人在学习分析新事物时,当发现自己犯的错误越大时,改正的力度就越大。比如投篮:当运动员发现自己的投篮方向离正确方向越远,那么他调整的投篮角度就应该越大,篮球就更容易投进篮筐。同理,我们希望:ANN在训练时,如果预测值与实际值的误差越大,那么在反向传播训练的过程中,各种参数调整的幅度就要更大,从而使训练更快收敛。

(1)均方差损失函数

然而,如果使用二次代价函数训练ANN,看到的实际效果是,如果误差越大,参数调整的幅度可能更小,训练更缓慢。

以一个神经元的二类分类训练为例,进行两次实验(ANN常用的激活函数为sigmoid函数,该实验也采用该函数):输入一个相同的样本数据x=1.0(该样本对应的实际分类y=0);两次实验各自随机初始化参数,从而在各自的第一次前向传播后得到不同的输出值,形成不同的代价(误差):

在实验1中,随机初始化参数,使得第一次输出值为0.82(该样本对应的实际值为0);经过300次迭代训练后,输出值由0.82降到0.09,逼近实际值。而在实验2中,第一次输出值为0.98,同样经过300迭代训练,输出值只降到了0.20。

从两次实验的代价曲线中可以看出:实验1的代价随着训练次数增加而快速降低,但实验2的代价在一开始下降得非常缓慢;直观上看,初始的误差越大,收敛得越缓慢。、

其实,误差大导致训练缓慢的原因在于使用了二次代价函数。二次代价函数的公式如下:其中,C表示代价,x表示样本,y表示实际值,a表示输出值,n表示样本的总数。为简单起见,同样一个样本为例进行说明,此时二次代价函数为:,a为神经元的实际输出【 a=σ(z), where z=wx+b】。

目前训练ANN最有效的算法是反向传播算法。简而言之,训练ANN就是通过反向传播代价,以减少代价为导向,调整参数。参数主要有:神经元之间的连接权重w,以及每个神经元本身的偏置b。调参的方式是采用梯度下降算法(Gradient descent),沿着梯度方向调整参数大小。w和b的梯度推导w为

其中,z表示神经元的输入,表示激活函数。从以上公式可以看出,w和b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,w和b的大小调整得越快,训练收敛得就越快。而神经网络常用的激活函数为sigmoid函数,该函数的曲线如下所示:

因为sigmoid函数的性质,导致σ′(z)在z取大部分值时会很小(如下图标出来的两端,几近于平坦),这样会使得w和b更新非常慢(因为η* a*σ′(z)这一项接近于0)。

如图所示,实验2的初始输出值(0.98)对应的梯度明显小于实验1的输出值(0.82),因此实验2的参数梯度下降得比实验1慢。这就是初始的代价(误差)越大,导致训练越慢的原因。与我们的期望不符,即:不能像人一样,错误越大,改正的幅度越大,从而学习得越快。

可能有人会说,那就选择一个梯度不变化或变化不明显的激活函数不就解决问题了吗?那样虽然简单粗暴地解决了这个问题,但可能会引起其他更多更麻烦的问题。而且,类似sigmoid这样的函数(比如tanh函数)有很多优点,非常适合用来做激活函数。

(2)交叉熵损失函数

交叉熵损失函数可以认为是真实输出与预测输出等结果分布等距离。其损失函数与softmax损失函数的区别在于一个标签是否是one-hot。与二次代价函数相比,它能更有效地促进ANN的训练。

其公式为

其中,x表示样本,n表示样本的总数。那么,重新计算参数w的梯度:

这里

由于。可证

w的梯度公式中原来的被消掉了,表示输出值与实际值之间的误差。所以,当误差越大,梯度就越大,参数w调整得越快,训练速度也就越快。

同理可得,b的梯度表示。实际情况证明,交叉熵代价函数带来的训练效果往往比二次代价函数要好。

那么交叉熵损失函数是如何提出的呢?

以偏置b的梯度计算为例,推导出交叉熵代价函数:

在均方误差计算中

可以得到;想要消除,即得到;等式两边求积分得到

二、损失函数的分类

(1)分类问题

1、0-1损失函数

0-1损失函数表示当预测不正确的时候取值为1,否则取值为0。该损失函数能够直观的刻画分类的错误率,但是由于其非凸、非光滑的特点,使得算法很难直接对该函数进行优化。

2、Hinge损失

Hinge损失函数是0-1损失函数相对紧的凸上界,且当预测小于1的时候,该函数不对其做任何处罚。由于Hinge损失在f.y=1处不可导,因此不能使用梯度下降算法优化,而是使用次梯度下降法。

3、Logistic损失函数

Logistic损失函数也是0-1损失函数的凸上界,且该函数处处光滑,因此可以使用梯度下降法进行优化。但是,该函数对所有样本点都做惩罚,因此对异常点更为敏感。

4、Cross Entropy

(2)回归问题

1、均方差损失函数

当预测值距离真实值越远时,平方损失函数的惩罚力度越大,因此对异常点比较敏感。

2、绝对值损失函数

绝对损失函数对异常点更鲁棒。但是,绝对损失函数在f=y处无法求导。

3、Huber损失

Huber损失函数在|f-y|较小时为平方损失,在|f-y|较大的时采用线性损失,处处可导,且对异常点鲁棒。

好了,文章到此结束,希望可以帮助到大家。

2021无限火力时间表,2019进九时间表aion y报价,广汽埃安AION Y Younger上市 售11.98万元