为什么 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)$。
根据 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)$。