深度学习关于数值计算的学习笔记

1、上溢和下溢

由于计算机是用有限数量的位模式表现无限多可能的实数,所以计算机表示实数会带有一定的误差(特别是浮点数的运算)。因此多次计算中不断地产生的误差累加起来可能会导致算法的失效
(1) 下溢:由于数值精度不够导致接近零的数被四舍五入或截断为零(在某些算法中会直接导致算法失效,例如除数上有0,或者对数取0等,使得算数运算变为非数字。)
(2)上溢:由于某种数据类型的数值精度不够,在记录一些超出了该数据类型的表示范围的数值时会导致上溢。(例如C语言中的int类型赋值100000000时)

2.解决上溢和下溢问题

对于Softmax函数:
在这里插入图片描述
当xi很小的时候,exp(xi)会下溢,softmax函数的分母会是0
在这里插入图片描述
所以怎样所以怎样规避这些问题呢?我们可以用同一个方法解决他们:
令 M = max(xi), i =1,2,3,….,n,即M为所有xi 中最大的值,那么我们只需要计算f(xi - M)的值,就可以解决上溢出、下溢出的问题了,并且,计算结果理论上仍然和f(xi) 保持一致。
举个实例:还是以前面的图为例,本来我们计算 f(z2)是用“常规”方法来算的:
在这里插入图片描述
在这里插入图片描述
其中,
M=3是z1,z2,z3中的最大值。可见计算结果并未改变。
通过这样的变换,对任何一个 xi,减去M之后,e 的指数的最大值为0,所以不会发生上溢出;同时,分母中也至少会包含一个值为1的项,所以分母也不会下溢出(四舍五入为0)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值