Softmax
Softmax是指数标准化函数,又称为归一化指数函数,将多个神经元的输出,映射到 (0,1) 范围内,并且归一化保证和为1,从而使得多分类的概率之和也刚好为1。其公式如下:
Softmax
?
(
z
i
)
=
exp
?
(
z
i
)
∑
j
exp
?
(
z
j
)
\operatorname{Softmax}\left(\boldsymbol{z}_{i}\right)=\frac{\exp \left(z_{i}\right)}{\sum_{j} \exp \left(z_{j}\right)}
Softmax(zi?)=∑j?exp(zj?)exp(zi?)?
通常情况下,计算softmax函数值不会出现什么问题。但是,以下两种情况例外:
-
z
j
z_{j}
zj? 极其大,导致计算
e
z
j
e^{z_{j}}
ezj? 时上溢出(解说float取值范围计算过程)
-
z
j
z_{j}
zj? 为负数,且
∣
z
j
∣
|z_{j}|
∣zj?∣ 很大,此时
e
z
j
e^{z_{j}}
ezj? 的分母是一个极小的正数,有可能被四舍五入为0,导致下溢出
为了解决naive softmax的溢出问题,log_softmax被提出。