Softmax激活函数

有一种 logistic 回归的一般形式,叫做 Softmax 回归,能进行多种分类中的一个,不只是识别两个分类,在神经网络的最后一层,你将会像往常一样计算各层的线性部分,𝑧[𝑙]是最后一层的𝑧 变量,和往常一样,计算方法是𝑧[𝑙] = 𝑊[𝑙]𝑎[𝐿−1] + 𝑏[𝑙] 。算出了𝑧之后,需要应用 Softmax 激活函数,假设是4 种类型,j=[1,4]。输出的𝑎[𝑙]
image.png
image.png
image.png
我们的激活函数都是接受单行数值输入,例如 Sigmoid ReLu 激活函数,输入一个实数,输出一个实数。Softmax 激活函数的特殊之处在于,因为需要将所有可能的输出归一化,就需要输入一个向量,最后输出一个向量。

python实现-Softmax

  1. import numpy as np
  2. def softmax( X):
  3. X = np.array(X)
  4. X = X - X.max(axis=1)
  5. # X = X - X.max() 也行
  6. print(np.sum(np.exp(X), axis=1, keepdims=True).shape)
  7. print(np.sum(np.exp(X), axis=1).shape)
  8. return np.exp(X) / np.sum(np.exp(X), axis=1, keepdims=True) #在第二维度上求和
  9. a=[[5,2,-1,3]] #[1,4]
  10. print(softmax(a))
  11. >>>
  12. (1, 1)
  13. (1,)
  14. [[0.84203357 0.04192238 0.00208719 0.11395685]]

训练一个 Softmax 分类器

需要用什么损失函数来训练这个神经网络,首先假设有一个图片分类的样本,且图片的真实label是猫,也就是image.png,在 Softmax 分类中,我们一般用到的损失函数是image.png,假设一共有四类,image.png是预测值,image.png是真实label,在这个样本中𝑦1 = 𝑦3 = 𝑦4 = 0,因为这些都是 0,只有𝑦2 = 1,
所以,image.pngimage.png,使它变小的唯一方式就是使image.png尽可能大。最终就是使对应label的概率越大,损失函数越小,符合我们的训练优化目标。整个训练集的损失函数就是
image.png
其实初始化反向传播推导过程可见下面链接,一般更重要的是记住结论,如下表达式:
image.pngimage.png
关于推导:
https://zhuanlan.zhihu.com/p/374921739