版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Flying_sfeng/article/details/80927098
直观的解释是为了平衡概率分布,同时避免出现概率为0的情况(使得模型可以不用再做平滑化处理)。
从反向传播的角度推导一波:
softmax函数的形式为:
P(y=i)=eWiX∑Nj=1eWjX
目标函数为:
L=−∑ktklogP(y=k) (tk表示目标类为1,其它类为0)
令
Vi=WiX
,则:
∂L∂Vi=−tk1P(y=k)⋅∂P(y=k)∂Vi=−tk1P(y=k)⋅eWiX⋅∑Nj=1eWjX−eWiX⋅eWiX(∑Nj=1eWjX)2=−tk1P(y=k)⋅[P(y=k)−(P(y=k))2]=−tk∗(1−P(y=k))(452)(453)(454)(455)
由上式第一个等式可以知道,当我们使用一般的归一化方法时(如min_max归一化),当
P(y=k)
很小时,梯度将变得很大(梯度爆炸),而softmax函数把它约去了,因此不会出现这个问题。
参考:多类分类下为什么用softmax而不是用其他归一化方法?
如何理解softmax(柔性最大),为什么不用别的归一化的函数?