Softmax激活函数
有一种 logistic 回归的一般形式,叫做 Softmax 回归,能进行多种分类中的一个,不只是识别两个分类,在神经网络的最后一层,你将会像往常一样计算各层的线性部分,𝑧[𝑙]是最后一层的𝑧 变量,和往常一样,计算方法是𝑧[𝑙] = 𝑊[𝑙]𝑎[𝐿−1] + 𝑏[𝑙] 。算出了𝑧之后,需要应用 Softmax 激活函数,假设是4 种类型,j=[1,4]。输出的𝑎[𝑙]


我们的激活函数都是接受单行数值输入,例如 Sigmoid 和 ReLu 激活函数,输入一个实数,输出一个实数。Softmax 激活函数的特殊之处在于,因为需要将所有可能的输出归一化,就需要输入一个向量,最后输出一个向量。
python实现-Softmax
import numpy as npdef softmax( X):X = np.array(X)X = X - X.max(axis=1)# X = X - X.max() 也行print(np.sum(np.exp(X), axis=1, keepdims=True).shape)print(np.sum(np.exp(X), axis=1).shape)return np.exp(X) / np.sum(np.exp(X), axis=1, keepdims=True) #在第二维度上求和a=[[5,2,-1,3]] #[1,4]print(softmax(a))>>>(1, 1)(1,)[[0.84203357 0.04192238 0.00208719 0.11395685]]
训练一个 Softmax 分类器
需要用什么损失函数来训练这个神经网络,首先假设有一个图片分类的样本,且图片的真实label是猫,也就是
,在 Softmax 分类中,我们一般用到的损失函数是
,假设一共有四类,
是预测值,
是真实label,在这个样本中𝑦1 = 𝑦3 = 𝑦4 = 0,因为这些都是 0,只有𝑦2 = 1,
所以,
,使它变小的唯一方式就是使
尽可能大。最终就是使对应label的概率越大,损失函数越小,符合我们的训练优化目标。整个训练集的损失函数就是
其实初始化反向传播推导过程可见下面链接,一般更重要的是记住结论,如下表达式:

关于推导:
https://zhuanlan.zhihu.com/p/374921739
