softmax
Last updated
Last updated
除了使用交叉熵来解决学习缓慢的问题外,还可以使用基于柔性最大值(softmax)神经元层。
柔性最大值的想法其实就是为神经网络定义一种新式的输出层。开始时和和S型层一样,首先计算带权输入
然后应用 softmax 函数在上,根据这个函数,第个神经元的激活值就是
其中分母的求和是在所有的输出神经元上进行的。而且所有输出的激活值加起来正好为1,同样保证输出激活值都是正数。而且柔性最大值层的输出可以被看做是一个概率分布。
下面计算对的导数
如果:
其对数似然损失函数为:
这个代价的简单含义是:只有一个神经元对应了该样本的正确分类,若这个神经元的输出概率越高,则其产出的代价越小,反之则代价越高。
则计算损失函数对权重和偏置的偏导数:
同样可得:
因此可以确保不会遇到学习缓慢的问题。事实上把一个具有对数似然代价的柔性最大值输出层,看作与一个具有交叉熵代价函数的S型输出层非常相似。在很多应用场景中,这两种方式的效果都不错。
如果:
其中为第个神经元的输出值,表示第个神经元的真实值,取值为或。