通俗易懂的Softmax

作为有年头的炼丹师,现在来写softmax讲解多少还是有点羞耻的。不过有炼丹经验以后,看初级的算法可以有更清晰的见解。

我们带着2个问题看文章:

1. 什么是softmax

2. 为什么用softmax


Softmax

softmax往往加在神经网络的输出层,用于加工神经网络的输出结果:把微弱程度不同的信号整理成概率值,这便是机器学习模型对分类任务的置信度confidence。

图片来自:https://www.cnblogs.com/zongfa/p/8971213.html

用一句话来描述上图:softmax对神经元的输出信号进行加工,输出为分类的概率值

举个二分类的例子,机器需要分类A和B。那么,机器的输出只可能是A或B,不可能到C。最后两个神经元的输出为(0.1, 0.1)和(100, 100)没有区别,因为机器对这两种分类的confidence依然是各50%。这样,无论神经元最后输出的结果是什么,它都是可以进行置信度量化的。

通过上图,应该可以完全理解softmax是怎么操作的。

为什么使用softmax

softmax有2个无法抗拒的优势:1. softmax作为输出层,结果可以直接反映概率值,并且避免了负数和分母为0的尴尬;

2. softmax求导的计算开销非常小,简直就是送的

对于第1个优势,用负数和0代入公式就可以发现,输出总是(0,1)之间的有理数。

对于第2个优势,我们动笔算一算。先看Softmax的基本公式:

softmax(x)=\frac{e^{x_a}}{\sum e^{x_i}}    式(1)

看着费劲的话,我用三分类情况下的softmax简化一下:

softmax(x_0)=\frac{e^{x_0}}{e^{x_0}+e^{x_1}+e^{x_2}}    式(2)

x0,x1,x2分别是输出层神经元输出的信号, 式(2)是x0的softmax函数值。神经网络反向传播的过程中,对x0求偏导,可以把其他看作常数等价于:

[softmax(x_0)]'=[\frac{e^{x_0}}{e^{x_0}+C}]'  式(3)

用大学的知识,很容易求出式(3)的结果,推导如下:

每次计算softmax偏导值,只需做一个减法和一个乘法。在梯度反传过程中,给链式法则中的“那条链”造成的负担特别低。

这也就是softmax为何如此popular的原因了。

 

 

  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木盏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值