机器学习中的数值计算
机器学习算法通常需要大量的数值计算,即通过迭代求解近似值而非求得解析解。这些算法通常包括最优化和线性方程组的求解,在计算机中要通过有限位来表示各种浮点数是具有一定误差的,需要通过一些方法来保证我们的计算精度。
上溢与下溢
上溢(overflow)是具有破坏力的,当大量级的数被近似为 −∞ − ∞ 或者 ∞ ∞ 时会发生上溢,这会导致在下一步的计算中,数字变成非数字。
下溢(underflow)同样也是毁灭性的,即当浮点数很小时被四舍五入为0,有时候0和非0具有完全不同的性质,这样可能会导致分母为0等错误现象的发生。
可以通过softmax函数来避免上溢与下溢的发生:
softmax(x⃗ )i=exp(xi)∑nj=1exp(xj) s o f t m a x ( x → ) i = e x p ( x i ) ∑ j = 1 n e x p ( x j )
为了方便讨论,假设 x⃗ x → 中的每个元素 <