为什么 softmax 计算时要先减去最大值

根据 softmax 最基本的定义,计算公式如下所示:

$$S_i=\frac{e^{x_i}}{\sum_j e^{x_j}}$$

原理也很简单,将原向量变为分布的形式(和为1)。

看似很美好,但是有致命缺点,当 $x_i$ 的值比较大的情况下,由于 $e^x$ 呈指数增长,因可能会发生溢出。

解决方法:$x_i=x_i-x_{max}\;x_{max}=max(x)$。

 

posted @ 2022-10-18 19:30  MetaZ  阅读(270)  评论(0)    收藏  举报