softmax防止上下溢出问题

防止上溢

上溢(Overflow)是指在计算过程中,数值超过了计算机能够表示的最大值,导致结果不准确。在使用softmax函数时,如果输入值 zi​ 非常大,那么 ezi 会迅速增长,可能超过计算机的浮点数最大表示范围,从而引发上溢。

为了解决这个问题,我们可以从每个 zi中减去一个常数 C,这个常数 C 可以选择为输入向量中的最大值。这样,新的函数变为:

由于 max(z) 是最大的输入值,减去它之后,所有的 zi−max⁡(z)都会小于或等于0,因此 ezi−max⁡(z)的值会小于或等于1,从而避免了上溢。

防止下溢

下溢(Underflow)是指在计算过程中,数值变得太小,低于计算机能够表示的最小值,导致结果为0。由于指数函数 ex 对于任何实数 x 都是正的,所以即使 zi−C 是一个很大的负数,ezi−C 也不会是0,因此不会出现分母为0的情况,从而避免了下溢。

举例说明

假设我们有一个输入向量 z=[100,101,102],我们想要计算其softmax值。

通过减去最大值102,我们避免了上溢,并且由于 e−2,e−2 和1都是正数,不会出现下溢。这样,我们就得到了一个有效的概率分布。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值