softmax函数的原理

softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内。假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值:

如下图表示:

softmax函数的原理_第1张图片

softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标。

当我们对分类的Loss进行改进的时候,我们要通过梯度下降,每次优化一个step大小的梯度。求Loss对每个权重矩阵的偏导,应用链式法则:

z4 = w41*o1+w42*o2+w43*o3   (o1,o2,o3代表是结点1,2,3的输入, z4代表结点的输出)

a_{4} = \frac{e^{z4}}{e^{z4} + e^{z5} + e^{z6}}(z4代表输入,a4代表softmax之后的输出,a4 = 1,a5=0,a6=0

训练数据的真实输出为第j个为1,其它均为0,,其中,那么形式变为,举个例子此时求w_{i}的偏导为:

\frac{\partial a4}{\partial z4} = \frac{\partial \frac{e^{z4}}{e^{z4} + e^{z5} + e^{z6}}}{\partial z4} = \frac{e^{z4} \cdot (e^{z4} + e^{z5} + e^{z6}) - e^{z4} \cdot (e^{z4})}{(e^{z4} + e^{z5} + e^{z6})^{2}} = a4 \cdot (1-a4)

\frac{\partial Loss}{\partial w_{i}} = \frac{\partial Loss}{\partial a_{i}} \cdot \frac{\partial a_{i}}{\partial z_{i}} \cdot \frac{\partial z_{i}}{\partial w_{i}} = \frac{-1}{a_{i}} \cdot a_{i}(1-a_{i}) \cdot o_{i} = (a_{i}-1) \cdot o_{i}

优点:

1. softmax是连续可导的,消除了拐点,方便求导 (a_{i}-1) \cdot o_{i}

2. 使得好结果和坏结果之间的差异更加显著

你可能感兴趣的:(机器学习,深度学习)