Softmax函数将多个标量映射为一个概率分布,其输出的每一个值范围在(0,1)。公式如下图

softmax函数经常用在神经网络的最后一层,作为输出层,进行多分类。此外,softmax在增强学习领域内,softmax经常被用作将某个值转化为激活概率,这类情况下,softmax的公式如下:

其中,T被称为是温度参数(temperature parameter)。当T很大时,即趋于正无穷时,所有的激活值对应的激活概率趋近于相同(激活概率差异性较小);而当T很低时,即趋于0时,不同的激活值对应的激活概率差异也就越大。这个结论很重要,Hinton在2015年的一篇paper中重点阐释了如何根据温度参数来soften神经网络的输出,从而提出了distillation的思想和方法。



1.前向传播
该过程比较简单,对输入的每个节点进行softmax(x)计算。但是需要注意的是,由于存在指数函数exp,对于输入很大的实数会softmax数值越界,导致预想不到的结果。所以在做softmax之前,需要将数据做简单的预处理,即:找出输入节点的最大值,然后让每个节点减去该最大值,使得输入节点都是小于等于0的,这样就能避免数值越界。
2.反向传播
softmax层的导数要分两种情况:1)该节点是输出类别 (i = j);2)该节点不为输出类别(i != j)

网友评论