一、softmax形态
从图中可以看出,softmax层和全联接层很相似。对于softmax层来说,输入多少节点,输出多少节点,它把预测的score转化为概率(probability)结果呈现的更直观
二、为什么选择softmax?
- softmax应用广泛,因为它以概率的形式表示分类结果,更直观
- 它看起来计算复杂,但是导数(反向传播)计算方便
三、计算公式
image from https://segmentfault.com/a/1190000017320763
四、概念补充——熵
熵
1948年,香农提出了“信息熵”的概念。信息熵这个词是C.E.Shannon(香农)从热力学中借用过来的,热力学中的热熵是表示分子状态混乱程度的物理量。香农用信息熵的概念来描述信源的不确定度。
通常,一个信源发送出什么符号是不确定的,衡量它可以根据其出现的概率来度量。概率大,出现机会多,不确定性小;反之不确定性就大。
不确定性函数f是概率P的减函数;两个独立符号所产生的不确定性应等于各自不确定性之和,即f(P1,P2)=f(P1)+f(P2),这称为可加性。同时满足这两个条件的函数f是对数函数,即
百度百科-信息熵
交叉熵
交叉熵表示的是实际概率分布与期望概率分布
的差别,交叉熵结果越小,表示实际概率分布与期望概率分布差别越小。交叉体现在
(实际概率)与
期望概率
为什么是Softmax?
五、求导
对于多分类问题来说,目标函数通常选用交叉熵(cross-entropy)。首先,定义一下各变量的意义:
-
:softmax前一层网络的输出,通常为全接连层。也是softmax层的输入
-
:softmax层的输出,即输出概率
-
:实际概率,对于多分类问题,
只会有一个类别是1,其他类别都是0
softmax函数
求导
当
时:
当
时:
交叉熵作为优化的目标函数
求导
根据求导的链式法则
说明:因为softmax计算公式中,分母包含所有
(前层网络的输出),即对于
中,
也包含着
,所以要把其中的
也纳入到计算范围中
![]()
![]()
因为
要么为零,要么为1,所以梯度计算非常简单
六、softmax优缺点分析
-
快速收敛hardmax和softmax对比, from https://cloud.tencent.com/developer/article/1451437
从表格中可以看出,使用softmax可以使结果更容易达到最终目标,接近于(0,0,0,1,0)这样的one-hot形式
多分类问题中,如果类别数量固定e.g.MINST, ImageNet,那么softmax是合适的,因为训练结果会趋近于one-hot形式,如果类别不固定(趋近于无穷大,e.g. 人脸识别),那么softmax就不合适
Softmax并不要求类内紧凑和类间分离,这一点非常不适合人脸识别任务,因为训练集的1W人数,相对测试集整个世界70亿人类来说,非常微不足道,而我们不可能拿到所有人的训练样本,更过分的是,一般我们还要求训练集和测试集不重叠。
Softmax优缺点解析
梯度计算简便
结果以概率形式呈现,更直观
参考资料