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