今天,我们来一起学习一下传说中的Softmax算法。
Introduction 引入
拿目标检测或者图像识别来说。
比方说我们要识别小猫,小狗和小鸡,分别用数字“1”,“2”,“3”来表示,其他类别的用“0”来表示。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
我们用大写的C来表示类别的数目:
C=#class=4 C=\#class=4 C=#class=4
在我们这个例子中,有4个类别,我们将搭建一个输出层神经元数目为4的神经网络,如下图所示:
最后一层,也就是输出层,其神经元数目,我们用n[L]n^{[L]}n[L]来表示,因为输出结果有4个类别,所以n[L]=4n^{[L]}=4n[L]=4。
用红色框起来的输出层,每一个圆圈代表一个输出神经元。
我们可以假设第一个神经元是其他类型“0”,在给定X的输入下的输出:其他类型用P(其他∣X)P(其他|X)P(其他∣X)表示,第二个是小猫P(小猫∣X)P(小猫|X)P(小猫∣X),第三个是小猫P(小狗∣X)P(小狗|X)P(小狗∣X),第四个是小猫P(小鸡∣X)P(小鸡|X)P(小鸡∣X)。
输出y^\hat{y}y^是一个4×14\times14×1的向量。
Softmax Layer 柔性最大值传输函数层
现在,我们假设最后一层是L层,那么利用《神经网络和深度学习——迈克尔尼尔逊》中的关于权值和阈值的线性运算操作,我们可以得到:
z[L]=ω[L]a[L]+b[L]z^{[L]}=ω^{[L]}a^{[L]}+b^{[L]}z[L]=ω