文章

32 Softmax 回归

32 Softmax 回归

一、问题背景:从二分类到多分类

  • Logistic 回归适用于二分类(输出为 0 或 1)。
  • 当面对 $C$ 个类别($C \geq 2$)的分类任务时(如猫、狗、小鸡、“其他”),需要使用 Softmax 回归——这是 Logistic 回归在多分类场景下的自然推广。

💡 类别编号通常为 $0, 1, 2, \dots, C-1$。例如 $C=4$ 时,类别为 {0: 其他, 1: 猫, 2: 狗, 3: 小鸡}。


二、Softmax 回归的核心思想

  目标:给定输入 $x$,模型输出一个 概率分布向量 $\hat{y} \in \mathbb{R}^C$,其中:

  • $\hat{y}_i = P(y = i \mid x)$,
  • 所有元素非负且和为 1:$\sum_{i=0}^{C-1} \hat{y}_i = 1$。

三、Softmax 激活函数的数学定义

  设神经网络最后一层(第 $L$ 层)的线性输出为:

\[z^{[L]} = W^{[L]} a^{[L-1]} + b^{[L]} \in \mathbb{R}^C\]

  然后通过 Softmax 激活函数将其转换为概率分布:

步骤 1:对每个元素取指数

\[t_i = e^{z^{[L]}_i}, \quad \text{for } i = 0, 1, \dots, C-1\]

步骤 2:归一化(使总和为 1)

\[a^{[L]}_i = \hat{y}_i = \frac{e^{z^{[L]}_i}}{\sum_{j=0}^{C-1} e^{z^{[L]}_j}}\]

✅ 这就是 Softmax 函数的标准形式:

\[\boxed{ \text{Softmax}(z)_i = \frac{e^{z_i}}{\sum_{j=0}^{C-1} e^{z_j}} }\]

⚠️ 注意:Softmax 是向量到向量的函数(与 Sigmoid/ReLU 不同,后者是标量到标量)。


四、直观示例

  假设:

\[z^{[L]} = \begin{bmatrix} 5 \\ 2 \\ -1 \\ 3 \end{bmatrix} \Rightarrow t = \begin{bmatrix} e^5 \\ e^2 \\ e^{-1} \\ e^3 \end{bmatrix} \approx \begin{bmatrix} 148.4 \\ 7.4 \\ 0.4 \\ 20.1 \end{bmatrix}\]

  归一化分母:$148.4 + 7.4 + 0.4 + 20.1 = 176.3$

  则输出概率为:

\[\hat{y} = a^{[L]} \approx \begin{bmatrix} 148.4 / 176.3 \\ 7.4 / 176.3 \\ 0.4 / 176.3 \\ 20.1 / 176.3 \end{bmatrix} \approx \begin{bmatrix} 0.842 \\ 0.042 \\ 0.002 \\ 0.114 \end{bmatrix}\]
  • 表示:84.2% 概率为“其他”,11.4% 为“小鸡”,等等。

五、Softmax 作为输出层

  • 输出层有 $C$ 个神经元,对应 $C$ 个类别。
  • 最终输出 $\hat{y} = a^{[L]} = \text{Softmax}(z^{[L]})$ 是一个 合法的概率分布
  • 预测类别为:$\arg\max_i \hat{y}_i$

六、决策边界特性(无隐藏层时)

  • 若直接将输入 $x$ 接入 Softmax 层(即无隐藏层的单层网络),则:

    • 每两类之间的决策边界是 线性的
    • 整体可将输入空间划分为 $C$ 个凸多面体区域(由超平面分割)。

📌 示例:$C=3$ 时,形成三个由直线(2D)或超平面(高维)围成的区域。

  • 若加入隐藏层,网络可学习非线性决策边界,处理更复杂的多分类问题。

七、Softmax 与 Logistic 回归的关系

  • 当 $C = 2$ 时,Softmax 退化为 Logistic 回归:

    • 只需输出一个概率(另一个为 $1 - p$),
    • Softmax 的两个输出冗余,等价于 Sigmoid。

因此,Softmax 是 Logistic 回归在多类情况下的推广


八、关键要点总结

项目内容
适用场景多类别分类($C \geq 2$)
输出形式概率分布 $\hat{y} \in \mathbb{R}^C$,$\sum \hat{y}_i = 1$
激活函数$\displaystyle \hat{y}_i = \frac{e^{z_i}}{\sum_j e^{z_j}}$
输入要求向量 $z \in \mathbb{R}^C$
决策规则$\hat{y}_{\text{pred}} = \arg\max_i \hat{y}_i$
边界性质无隐藏层 → 线性边界;有隐藏层 → 非线性边界
与 Logistic 关系$C=2$ 时等价

九、后续步骤提示(课程预告)

  • 下一步将学习如何训练含 Softmax 层的神经网络,包括:

    • 定义多分类交叉熵损失函数(Categorical Cross-Entropy Loss)
    • 使用反向传播计算梯度
    • 更新参数 $W^{[L]}, b^{[L]}$

损失函数形式(预告):

\[\mathcal{L}(\hat{y}, y) = -\sum_{i=0}^{C-1} y_i \log(\hat{y}_i)\]

  其中 $y$ 是 one-hot 编码的真实标签。

本文由作者按照 CC BY 4.0 进行授权