跳到正文
格致开物MATHWIKI

前向误差与后向误差

前向误差比较算法输出与正确输出,后向误差衡量怎样扰动输入,才能使算法输出成为扰动后问题的精确答案。两者关注的位置不同:一个在输出端,一个在输入端。

设问题为 y=f(x),定义域为 D,算法返回 y^。选定输入、输出所用的范数后,绝对前向误差为 efwd=‖y^−f(x)‖. 把同时满足以下两个条件的输入扰动 Δx 组成集合 ℰ: x+Δx∈D,f(x+Δx)=y^. 绝对后向误差定义为 ηabs=infΔx∈ℰ‖Δx‖. 若最小值能够取得,下确界就是最小值;若 ℰ 为空,这里约定误差为正无穷。明确哪些输入允许改变、是否必须保持结构,是后向误差定义的一部分。

输入和正确输出都非零时,可以分别除以 ‖x‖、‖f(x)‖,得到对应的相对后向、前向误差;分母为零时,这种相对定义不能直接使用,接近零时也可能变得很大。

开平方的一次近似

精确输入 x=4,问题取非负输入上的主平方根 f(x)=x,正确输出为二。若算法给 y^=2.001,绝对前向误差为 0.001。这个答案的平方是 x′=2.0012=4.004001. 由于主平方根单调,只有这一个可行输入,所以绝对后向误差为 0.004001。相对误差则是 erel=0.0012=0.0005,ηrel=0.0040014=0.00100025. 两种绝对误差的单位不同:前者是“根”的单位,后者是“被开方数”的单位,不能只比较数值大小。上例中相对前向误差约为相对后向误差的一半,对应平方根在正输入处的相对条件数 1/2。

变式。 对问题 f(t)=t2,原输入为一,近似答案为 0.81。可行的新输入有 0.9 和 −0.9,输入扰动分别为 −0.1、−1.9。因此绝对后向误差是 0.1,并非随意找到一个扰动后就报告它的大小;输出端的绝对误差则是 0.19。

小后向误差与输入敏感性

看减法问题 f(a,b)=a−b,取 a=1.000001,b=1,正确结果为 10−6。若输入 a 被略微扰动为一,计算得到零;输入的相对变化约百万分之一,但输出的相对误差为百分之百。原因是被减两数接近时,问题本身对相对输入误差敏感。

在适当可微条件与小扰动范围内,前向误差可由局部条件数和后向误差联系起来。条件数刻画问题,后向稳定性刻画算法:若算法误差能解释为很小的输入扰动,仍要看问题会把这个扰动放大多少,才知道输出是否准确。

线性方程组给出一个可逐项核验的例子。取 A=(10010−6),b=(110−6). 真解为 x=(1,1)T。假设近似解为 x^=(1,0)T,则 r=b−Ax^=(0,10−6)T,Ax^=b−r=(1,0)T. 若固定 A、只允许改变右端,所需扰动正好为 Δb=−r。二范数下,相对右端扰动约为 10−6,但解的相对前向误差为 1/2≈0.7071。矩阵的二范数条件数为 106,解释了小残差仍可对应大解误差。若同时允许扰动 A,需要另行定义允许的扰动尺度,不能把这一右端误差原样当成所有后向误差。

可行输入与下确界的边界

对主平方根问题,若算法竟返回 −2,无论如何改变非负输入,都得不到这个输出。此时 ℰ 为空,后向误差按上述约定为无穷;前向误差仍是可算的四。并非每个近似答案都能解释成邻近输入的精确答案。

一般问题还不保证最小扰动一定存在。例如取 f(t)=1(t>0),f(t)=0(t≤0),原输入为零而近似输出为一。可行扰动是所有正数,其大小能任意接近零,却没有最小的正数;下确界为零且不能取得。这个不连续例子说明定义中使用下确界的原因,也说明“小后向误差推出输出接近”需要问题自身的连续性与敏感度条件。

参考资料与相关词条