什么是softmax
Softmax,又称作归一化指数函数。主要用于分类任务,降多分类的结果以概率的形式展现
下图展示softmax计算方法
softmax本质上是归一化网络,目的是将多个标量映射为一个概率分布,其输出的每一个值范围在(0,1)。
举例
1)将预测结果转化为非负数
y1 = exp(x1) = exp(-3) = 0.05
y2 = exp(x2) = exp(1.5) = 4.48
y3 = exp(x3) = exp(2.7) = 14.88
2)各种预测结果概率之和等于1
z1 = y1/(y1+y2+y3) = 0.05/(0.05+4.48+14.88) = 0.0026
z2 = y2/(y1+y2+y3) = 4.48/(0.05+4.48+14.88) = 0.2308
z3 = y3/(y1+y2+y3) = 14.88/(0.05+4.48+14.88) = 0.7666
总结一下softmax如何将多分类输出转换为概率,可以分为两步:
1)分子:通过指数函数,将实数输出映射到零到正无穷。
2)分母:将所有结果相加,进行归一化。
干货
Softmax主要是用于训练中。因为我们使用交叉熵损失函数的时候,实际做的的是最大似然估计MLE,即要求你的预测标签分布要与one-hot给的GT标签越贴近越好,既然是比较分布,那自然得通过softmax或者sigmoid做概率化操作。
推理阶段是否需要softmax,需要视实际需求而定。
(1)业务要求输出topN结果时,可以采用softmax讲预测结果转化为概率;
(2)业务可以考虑网络的拒识情况。假设一个二分类问题,如果你采用softmax会发现两类的概率其实都在0.5附近,差别不是很大,这个时候就可以判定拒识,机器不能识别这张图片的类别,交给其他算法或者人工判别。
参考文献
softmax层的使用_Petersburg的博客-CSDN博客
为什么神经网络的推理通常不使用 Softmax层,而神经网络的学习阶段则需要 Softmax层? - 知乎