数值计算中的上溢和下溢

数值计算中的上溢和下溢利用计算机实现数值计算,指的通常是利用迭代过程更新解来解决数学问题,而不是通过解析过程推到数学公式求解。常见得数值计算主要包括优化问题求解和解线性方程组。上溢和下溢通常实数在计算机内不能精确保存,利用计算机保存实数时,几乎总会引入一些近似误差。在许多情况下,这仅仅是舍入误差,舍入误差会导致一些问

大家好,欢迎来到IT知识分享网。数值计算中的上溢和下溢

利用计算机实现数值计算,指的通常是利用迭代过程更新解来解决数学问题,而不是通过解析过程推到数学公式求解。常见得数值计算主要包括优化问题求解和解线性方程组。

 

上溢和下溢

通常实数在计算机内不能精确保存,利用计算机保存实数时,几乎总会引入一些近似误差。在许多情况下,这仅仅是舍入误差,舍入误差会导致一些问题。特别是在一些复合操作下, 理论上可行的算法,如果在实际中没有考虑到舍入误差的累积,在实际算法运用过程中也会导致算法的失效。

 

其中一种情况就是下溢。即有些逼近零的数,如零除或者对零取对数时,得到-,如果对负无穷进一步运算,则会得到非数字;

 

还有一种情况就是上溢。即大量级的数被近似为正负无穷时,发生上溢。发生上溢后,这些数值也会变为非数值。

 

解决数值上溢和下溢方法的一个实例是使用softmax函数。

定义为:

考虑一下,当所有xi都等于一个常数C。则softmax函数的值为1/n。

如果C很大,exp(c)的上溢会导致整个表达式未定义;

如果C是一个很小的负数,exp(c)会下溢;

解决方法,计算softmax(z)

如此,上溢的问题可以得到解决。下溢的情况也由于分母不为零解决。

But,有个小问题,当计算Log(softmax(z))时,softmax(z)可能为0,从而导致不可解。

解决方法,使用相同的技巧来解log(softmax(z))。

 

不过在多数情况下,可以简单地依赖保证数值稳定地底层库。当需要自己实现算法的时候,则需要考虑数值稳定性的问题。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32929.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信