关键词:Softmax梯度,Softmax求导
softmax函数定义
- 对于输入向量 \( x = [x_1, x_2, \dots, x_n] \),softmax函数将其映射为概率分布:
$$
\sigma(x)_i = \frac{e^{x_i} }{\sum_{j=1}^n e^{x_j} }
$$- 其中 \( \sigma(x)_i \) 表示第 \( i \) 个元素的输出,满足 \( \sum_{i=1}^n \sigma(x)_i = 1 \)
求导推导(分情况讨论)
- 设 \( s_i = \sigma(x)_i \),目标是计算 \( \frac{\partial s_i}{\partial x_j} \),分两种情况
情况1:\( i = j \)(自变量对自身求导)
- 展开表达式:
$$
s_i = \frac{e^{x_i} }{\sum_{k=1}^n e^{x_k} } = \frac{e^{x_i} }{S}, \quad \text{其中 } S = \sum_{k=1}^n e^{x_k}
$$ - 利用商数法则求导:
$$
\frac{\partial s_i}{\partial x_i} = \frac{e^{x_i} \cdot S - e^{x_i} \cdot e^{x_i} }{S^2} = \frac{e^{x_i}(S - e^{x_i})}{S^2} = \frac{e^{x_i} }{S} \cdot \frac{S - e^{x_i} }{S} = s_i(1 - s_i)
$$
情况2:\( i \neq j \)(自变量对其他元素求导)
- 此时 \( x_j \) 出现在分母 \( S \) 中,分子与 \( x_j \) 无关:
$$
\frac{\partial s_i}{\partial x_j} = \frac{0 \cdot S - e^{x_i} \cdot e^{x_j} }{S^2} = -\frac{e^{x_i} e^{x_j} }{S^2} = -\frac{e^{x_i} }{S} \cdot \frac{e^{x_j} }{S} = -s_i s_j
$$
矩阵形式(向量求导)
- 若输入为向量 \( \mathbf{x} \),输出为向量 \( \mathbf{s} = \sigma(\mathbf{x}) \),则其雅可比矩阵为:
$$
\frac{\partial \mathbf{s} }{\partial \mathbf{x}^T} = \left[ \frac{\partial s_i}{\partial x_j} \right] = \mathbf{S} - \mathbf{s s}^T
$$- \( \mathbf{S} \) 是对角矩阵,对角线元素为 \( s_i \);
- \( \mathbf{s s}^T \) 是外积矩阵
- 对角矩阵 \(\mathbf{S}\) :
$$
\mathbf{S} = \begin{bmatrix}
s_1 & 0 & \cdots & 0 \\
0 & s_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & s_n
\end{bmatrix}
$$ - 外积矩阵 \(\mathbf{s s}^T\) :
$$
\mathbf{s s}^T =
\begin{bmatrix}
s_1 \\
s_2 \\
\vdots \\
s_n
\end{bmatrix}
\begin{bmatrix}
s_1 & s_2 & \cdots & s_n
\end{bmatrix} =
\begin{bmatrix}
s_1 s_1 & s_1 s_2 & \cdots & s_1 s_n \\
s_2 s_1 & s_2 s_2 & \cdots & s_2 s_n \\
\vdots & \vdots & \ddots & \vdots \\
s_n s_1 & s_n s_2 & \cdots & s_n s_n
\end{bmatrix}
$$ - 最终梯度形式 :
$$
\frac{\partial \mathbf{s} }{\partial \mathbf{x}^T} = \mathbf{S} - \mathbf{s s}^T = \begin{bmatrix}
s_1 & 0 & \cdots & 0 \\
0 & s_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & s_n
\end{bmatrix} -
\begin{bmatrix}
s_1 s_1 & s_1 s_2 & \cdots & s_1 s_n \\
s_2 s_1 & s_2 s_2 & \cdots & s_2 s_n \\
\vdots & \vdots & \ddots & \vdots \\
s_n s_1 & s_n s_2 & \cdots & s_n s_n
\end{bmatrix}
$$
一些总结
- softmax 函数的矩阵形式导数可表示为 对角矩阵与外积矩阵的差
- 核心结论:“对角线元素为 \(s_i-s_i s_i\),非对角线元素为 \(-s_i s_j\)”的规律
- 越接近 one-hot 的预估,其梯度越接近于 0