为什么成本函数使用平方误差?


73

我刚刚开始进行一些机器学习,直到现在我一直在处理一个变量的线性回归。

我了解到有一个假设,即:

hθ(x)=θ0+θ1x

要了解好值的参数θ 1,我们希望尽量减少计算结果和我们的测试数据的实际结果之间的差别。所以我们减去θ0θ1

hθ(x(i))y(i)

1m的所有。因此,我们计算该差的总和,然后将总和乘以1来计算平均值i1m。到现在为止还挺好。这将导致:1m

1mi=1mhθ(x(i))y(i)

但这不是建议。相反,该课程建议采用差的平方值,然后乘以。因此公式为:12m

12mi=1m(hθ(x(i))y(i))2

这是为什么?为什么在这里使用平方函数,为什么要乘以而不是112m1m



还可以看看Chris McCormick对goo.gl/VNiUR5
vimdude

因为这是布雷格曼的分歧
安德鲁(Andrew)

Answers:


41

你的损失函数是行不通的,因为它刺激行为设置θ1到任何有限值和θ0

我们称r(x,y)=1mi=1mhθ(x(i))y残留h

您的目标是使r 尽可能接近零而不仅仅是使它最小化。高负值与高正值一样糟糕。

编辑:您可以通过人为限制参数空间应对这种Θ(例如,你想|θ0|<10)。在这种情况下,最佳参数将位于参数空间边界上的某些点上。见https://math.stackexchange.com/q/896388/12467。这不是您想要的。

为什么使用平方损失

平方误差迫使h(x)y匹配。它的最小化,以便u=v,如果可能的话,并且总是0,因为它是实数的平方uv

|uv|对于(uv)2n也可以实现上述目的,其中n一些正整数。其中第一个实际使用(这就是所谓的1流失;你也可能碰到2的损失,这是误差平方的另一个名字)。

那么,为什么平方损失比这些更好呢?这是一个与频率论贝叶斯推理之间的联系有关的深层问题。简而言之,平方误差与高斯噪声有关

如果你的数据不适合所有点,即h(x)y是一些点不为零,不管是什么θ您选择(如将始终在实践中发生的),这可能是因为噪音。在任何复杂的系统还会有很多小的独立你之间的差异会导致模型 h现实 y:测量误差,环境因素等,由中心极限定理(CLT),总噪声将被分配通常根据,即高斯分布。我们想选择最合适的θ考虑到这种噪声分布。假设R=h(X)Y,部分y您的模型不能解释,下面的高斯分布N(μ,σ)。我们使用大写字母是因为我们现在正在谈论随机变量。

高斯分布具有两个参数,平均值μ=E[R]=1mihθ(X(i))Y(i))和方差σ2=E[R2]=1mi(hθ(X(i))Y(i)))2。请参阅此处以更好地理解这些术语。

  • 考虑μ,这是我们测量的系统误差。使用h(x)=h(x)μ来校正系统误差,从而使μ=E[R]=0(锻炼的阅读器)。这里没什么可做的。

  • σ表示随机误差,也称为噪声。一旦我们在前面的点照顾系统性噪声成分的如,当获得最佳预测σ2=1mi(hθ(X(i))Y(i)))2的最小化。换句话说,最好的预测器是在预测值附近分布最紧密(最小方差)的预测器,即最小方差。最小化最小平方损失与最小化方差相同!这就解释了为什么最小平方损失适用于各种各样的问题。由于CLT,潜在的噪声通常是高斯噪声,因此将平方误差最小化是正确的选择!

为了同时考虑均值和方差,我们在分类器中包括一个偏差项(以处理系统误差μ),然后最小化平方损失。

后续问题:

  • 最小二乘损失=高斯误差。其他所有损失函数是否也对应于某些噪声分布?是。例如,1的损失(减少绝对值代替平方误差)对应于拉普拉斯分布(看看公式在信息框的PDF -它只是与高斯|xμ|代替(xμ)2)。概率分布的普遍损失是KL散度。-由于中心极限定理,高斯分布受到很好的激励,我们之前已经讨论过。拉普拉斯分布何时才是正确的噪声模型?有一些情况,其中谈到关于自然,但它更常用的正则执行稀疏:在1的损失是最小凸所有凸损失之一。

    • 1
  • hθH

12

mθ

  • 12

    • 在编写代码或算法时,我们通常更关注渐变,因此有助于保持简洁。您可以仅通过检查梯度范数来检查进度。有时会从代码中省略损失函数本身,因为它仅用于验证最终答案。
  • mm

    • 我碰到的这个问题之前,我有一个小点的数量的测试代码,它工作正常,但是当你与整个数据集测试存在的精度损失,有时过/欠流,即你的斜率变naninf。为了避免这种情况,只需标准化数据点的数量即可。
  • mλm


您说,“当您使用导数时,表达式更漂亮,因为2从平方项中抵消了2”。但是为什么我们要采用它的导数?
DrGeneral

我们通常使用梯度下降来优化损耗,这需要采用导数。我没有提到这一点,因为从这个问题的上下文中应该很清楚。
严苛的

1
严厉,原谅我的天真,但为什么不使用绝对值而不是平方?
亚历山大·苏拉菲尔

1
绝对误差也可以工作,但是在这种情况下,您将回归到预期的中位数而不是均值。列举一小部分数字,然后通过移动您的估计值(平方误差和绝对误差)来查看损失有何不同
Jan van der Vegt

@AlexanderSuraphel对不起回答的延迟:)我已经在上面添加了一段,以解决该问题
Harsh

25

1/2系数只是为了方便起见;它使实际上正在优化的函数的导数看起来更好。1 / m更基本;这表明我们对方误差感兴趣。这使您可以在更改样本大小时进行公平的比较,并防止溢出。所谓的“随机”优化器使用数据集的子集(m'<m)。引入正则化器(目标函数的加法项)时,使用1 / m因子可以使正则化器使用相同的系数,而与样本大小无关。

至于为什么平方而不是仅求差的问题:您是否不希望低估与高估一样受到惩罚?平方消除了错误符号的影响。取绝对值(L1范数)也可以,但是在原始位置未定义其导数,因此使用时需要更多的技巧。L1规范有其用途,因此请记住这一点,并可能问老师是否要涵盖它。


4
L2LpL2

6

损失函数中的误差度量是“统计距离”;与此形成鲜明对比的是,对欧几里得空间中两个向量之间的距离的普遍的初步了解。通过“统计距离”,我们试图将估计模型和最优模型之间的“不相似性”映射到欧几里得空间。

关于“统计距离”的表述没有严格的规定,但是如果选择合适,则在优化过程中逐渐减小该“距离”将转化为逐步改善的模型估计。因此,“统计距离”或误差度量的选择与基础数据分布有关。

实际上,对于不同类别的统计分布,有几种定义明确的距离/误差度量。建议根据现有数据的分布选择误差度量。碰巧的是,高斯分布无处不在,因此与之相关的距离测度L2范数是最受欢迎的误差测度。但是,这不是规则,存在现实世界中的数据,对于这些数据,“高效” *优化实现将采用与L2-范数不同的误差度量。

考虑布雷格曼散度的集合。该散度测度的标准表示是L2范数(平方误差)。它还包括相对熵(Kullback-Liebler散度),广义欧几里得距离(Mahalanobis度量)和Itakura-Saito函数。您可以在有关函数Bregman发散和贝叶斯分布估计的文章中了解更多信息。

总结:L2范数具有一组有趣的属性,这使其成为错误度量的常用选择(此处的其他答案已提及其中一些,足以解决此问题),并且平方误差将是适当的大多数时候选择。但是,当需要进行数据分发时,可以选择其他错误度量,并且选择很大程度上取决于优化例程的制定。

*“适当的”误差度量将使损失函数凸出优化,这非常有用,这与损失函数不具凸性且因此非常困难的其他误差度量相反。


5

除了其他人提出的要点外,使用平方误差会更着重于较大的误差(平方误差与3/2相乘时会变成1/2)。

如果有一个算法可以移动小数部分误差,可能会导致正确的分类或估计值与基本事实之间的很小差异(如果将其保留为零),而又将大误差保留为大误差或错误分类,则不是理想的特性。一种算法。

使用平方误差会将误差用作隐含的重要性权重,以调整预测。


那么,什么是任意错误
jeza

3

在您的公式中,您尝试从观测数据中获得近似值的平均偏差。

如果您的近似值的平均值接近或等于观测数据的平均值(某些近似方案经常会发生这种情况是很理想的事情),那么您得出的结果将为零或可忽略,因为正误差会补偿负值错误。这可能会得出这样的结论:在每个观察到的样本中,您的近似效果都很好,而事实并非如此。这就是为什么在每个样本上使用误差的平方,然后将它们加起来(将每个误差转为正数)的原因。

当然,这只是一个可行的解决方案,因为您可以使用L1范数(每个样本的误差的绝对值)或其他很多方法来代替L2范数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.