softmax的缺点:
Softmax是指数标准化函数,又称为归一化指数函数,将多个神经元的输出,映射到 (0,1) 范围内,并且归一化保证和为1,从而使得多分类的概率之和也刚好为1。其公式如下:
试想最后一层的输出向量有三个单元Z=[z1=3、z2=1、z3=-3], 此时做softmax,exp(z1)=20、exp(z2)=2.7、exp(z3)=0.05, 根据公式得到各个单元的概率 :exp(z1)/∑exp(zi)=0.88 、exp(z1)/∑exp(zi)=0.12、exp(z1)/∑exp(zi)≈0 。当上一层输出z过大或者过小时,很容易上/下溢出float的表示范围。
这时候log_Softmax能够很好的解决溢出问题,且可以加快运算速度,提升数据稳定性。
log-softmax:
log_Softmax其实就是对Softmax取对数,数学表达式如下所示:
尽管,数学上log_Softmax是对Softmax取对数,但是,实际操作中是通过下面的式子来实现的:
其中,M=max(zi),i=(1,…,K),在加快运算速度的同时,保证数据的稳定性。