|||
作者:蒋迅
原文:An Introduction to Error,作者:Ari Rubinsztejn
足够之好
数值方法总是关注“足够好”这个术语。
无论您是使用有限差分来近似导数,还是使用牛顿方法来寻找函数的根,我们很少得到确切的答案。 通常,我们的答案与实际情况有所不同。
我们通常不知道我们的误差是什么,但我们可以量化它的可能幅度,并且通常可以在我们的方法中调整参数以使其更小。
当我们调整我们的方法时,我们的误差有望减少,我们会收敛到真值。
有限实例
让我们回到有限差分。 我不会在这里再次讨论推导,但在前一篇文章中,我们推导出与有限差分相关的误差项是h(步长)的函数。 如果我们使用前向差分,则误差只是h的函数,但是当我们分析中心差时,它是h平方的函数。 让我们通过一个真实的例子探讨这意味着什么。
让我们看一个函数
f(x) = sin(x)
这是一个简单的函数,其导数正好是
f'(x) = cos(x)
在点pi/4,我们知道其导数是
f'(π/4) = √2 / 2
让我们引入两个新的函数,分别使用前向和中心差分来找到在此点的导数,这样它们现在只是h的函数。
Delta (f(frac{pi}{4}),h) = frac{sin(frac{pi}{4}+h)-sin(frac{pi}{4})}{h}
delta (f(frac{pi}{4}),h) = frac{sin(frac{pi}{4}+h)-sin(frac{pi}{4}-h)}{2h}
现在,对於这个问题,我们知道我们应该得到什么,所以我们可以让h变化起来,以计算我们的函数的值。
注:注意 x 轴。 h 越小,我们越靠右。
我们可以看到,当我们让h变小时,我们的误差会变小。用前向差分,误差看起来像向下倾斜的直线,所以我们称之为线性。如果我们对h取半,我们的误差也减半。用中心差分,它看起来像抛物线的一侧,所以我们将其称为二次方。。如果我们对h取半,我们的误差是原来的四分之一。显然,随著我们越来越接近该区间的末端,我们看到两者都在同一点汇聚,但是我们在对待特别小的数值,我们把图形换成log-log 尺度。
现在我们可以看到,中心差分仍然提供更好的导数估计,并且如我们理论的预期那样更快。 当以log-log 标度绘制时,两者都显示为直线,但现在斜率将确定收敛速度。 斜率越陡,收敛越快。 我们能否继续这种趋势,通过降低h来获得更好的斜率近似值? 让我们来看一看。
,进入机器精度
我们的理论说我们应该能够通过减少 h 来获得更好的近似值,但是在两组中,似乎都存在一个最佳的 h 值。 更有趣的是,当我们继续使 h 变小时,两个近似值似乎都具有相同的误差。 发生了什么?
噪音层
不幸的是,电脑不是完美的机器。
像我们一样,他们有各种各样的缺陷。它们无法处理无限长的数字,因此它们在某一点上截断这些数字以使它们只有有限长。它们对数字进行舍入,以便将它们存储在内存中。我计划将数字和错误来源的机器表示转换成一个全新的帖子,所以我不会在这里解释它们。长话短说,计算机一直都会出错,但是通常只有当我们面对两个数字之间的很大误差时,我们才能看到它们。如果你想要了解错误,计算机通常会使这本书成为一个很好的起点。
定义误差
现在我们就有限差分扩展了误差,但是我们花点时间更一般地定义误差。 如果我们要问街上的人,他们如何定义误差,他们可能会回答是不是什么东西对或错。 用等式
3x+9=0
我们可以很容易地看到x等於-3。 任何其他数字都是错误的,但是我们说我们在数学测验中给出了这个问题。 学生A给出-4的答案,学生B给出-7的答案。 他们两个都错了,但哪一个更正确? 本能地我们会说学生A.
学生A仅差了1。
B学生差了4。
4大於1。因此学生A更正确。 在这里,我们将错误定义为
误差 = -3 - (给出的解)
我们可以将此用更数学的方式写成
误差 = 实际答案 - 给出的解 = 参考数 - 实际数
那么误差最小的那个是最正确的。 但是如果我们还有两个学生,C和D,他们分别回答-3和4。
学生C差了0,学生D差了-7。 按照我们以前的方法,现在学生D的误差最低,也是最合适的。 这是没有意义的,因为学生C实际上是正确的。 让我们为误差定义一个新的度量标准,测量误差的大小而不是误差本身,并将其称为误差2。
误差2 = √ (参考数 - 实际数)2
现在定义了上述误差函数,学生A、B、C、D分别得到以下误差1、4、0、7。这意味着我们可以使用我们最初使用最小值的测试找到最合适的。 我们称之为误差2的函数通常称为均方根误差(Root Mean Square Error,RMSE)。
为什么我首先定义了不同的误差?
误差的RMSE定义允许我们轻松地对一组数字与期望值的距离进行排序,但在创建它时,我们丢失了一条重要的信息。我们失去了误差的方向。使用RMSE得到,-4和-2的解答是等效的。假设你现在驾驶在南北向的道路上,而您正试图往家开。天真的很黑,有一个新月,你住在乡下,所以很难看到你的房子,所以你打开你的GPS。如果它使用RMSE计算您离家的距离,您会发现距离您家2英里,但您不知道是否需要在当前位置向北或向南行驶。
我用右边的图说明了这一点,假的家用蓝色绘制,距离你的真实家庭相等。
另一方面,如果您的GPS使用我们原始的错误定义,您将能够弄清楚。 如果它给你一个正数,你需要向北行驶,而如果它给你一个负数,你需要向南行驶。
你的决定是由误差的符号驱动的(非常有意)。 在控制理论和大多数数值方法中,迭代方程的更新由误差驱动。 例如,在牛顿方法中,我们采用的更新步骤的大小与误差的大小成比例,而它的方向由误差的符号驱动。
你的决定是由误差的符号驱动的(双关语很有意思)。 在控制理论和大多数数值方法中,迭代方程的更新由误差驱动。 例如,在牛顿方法中,我们采用的更新步骤的大小与误差的大小成比例,而它的方向由误差的符号驱动。
这些是定义误差的仅有的两种方法吗?
不是。
您可以以任何适合你的问题的方式定义误差函数。 如果你想使某些事情更重要,您可以定义加权误差函数。 如果你在维基百科上搜索“误差函数”,可能你的第一个结果将错误函数定义为
erf(x) = 1/√π•∫-xxe-t2dt
这个误差函数与概率的重要联系超出了本文的范围。
大多数(如果不是全部)机器学习技术只是迭代方式,以最小化某些误差函数下面的约束集。
误差功能是机器学习背后的驱动力,选择错误的误差功能甚至可以使最先进的机器学习技术变得毫无价值。
从高斯/勒让德开发的简单线性回归到现代神经网络,如果你深入挖掘它们,你会发现一个误差函数。
注:似乎勒让德是第一个发布的,但它通常归因于高斯,因为他们只相隔几年。
快速回顾
好的,所以这篇文章有点过山车了。 深吸一口气。 我们开始对数值方法进行误差分析,最终得到了驱动机器学习的误差函数。
误差是不是真棒?
(哇,我刚才意识到我已经变成了对数学感到兴奋的数学老师)
这篇文章最初起源于一个月前的融合介绍。 我想把误差分析与收敛分析联系起来,但后来我意识到我已经输入了一个完整的帖子而没有提到收敛。 融合已经回到了想法箱中,我将很快再次尝试。
注:如果你已经完成了整篇博文,并且想知道何时我会谈人为误差,我将不会在这篇文章中涉及到。 但是,如果您对减少人为误差感兴趣,我推荐这本书。
注2:误差是一个如此广泛的话题,在每个学科中都会出现,所以它可以有很多不同的含义。 本文不是一个包罗万象的博文,你会发现新的和不同的方法来定义误差。 希望这篇文章激起了你的兴趣去探索其他类型的误差以及它如何阻碍我们又推动我们前进!
想要更多的Gereshes …
如果您希望每周一早上直接收到每周Gereshes博客文章到您的电子邮件,您可以在这里注册时事通讯! 不想要多收一封电子邮件? 没关系,Gereshes也有推特账号和subreddit!
如果你不能等待下周的帖子而想要更多的Gereshes博文,我推荐:
忆后记
Gereshes博客的Ari Rubinsztejn是一名航空学专业的大学生。他的博客其实就是他的读书笔记。
他还有几篇简介,也提供如下。相信他用这种学习方法一定很扎实。
顺便介绍张智民的作品:
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-8-26 13:41
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社