matlabsoftmax求导
时间: 2023-08-02 22:09:28 浏览: 178
假设 $y_i = \frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}}$ 为 softmax 函数的第 $i$ 个输出值,其中 $x_1, x_2, \cdots, x_n$ 是 softmax 函数的输入值。
我们来求 $\frac{\partial y_i}{\partial x_j}$,其中 $j \in [1, n]$。
当 $i \neq j$ 时,有:
$$
\begin{aligned}
\frac{\partial y_i}{\partial x_j} &= \frac{\partial}{\partial x_j} \frac{e^{x_i}}{\sum_{k=1}^n e^{x_k}} \\
&= \frac{0 - e^{x_i} e^{x_j}}{(\sum_{k=1}^n e^{x_k})^2} \\
&= -\frac{e^{x_i}}{\sum_{k=1}^n e^{x_k}} \cdot \frac{e^{x_j}}{\sum_{k=1}^n e^{x_k}} \\
&= -y_i y_j
\end{aligned}
$$
当 $i = j$ 时,有:
$$
\begin{aligned}
\frac{\partial y_i}{\partial x_j} &= \frac{\partial}{\partial x_j} \frac{e^{x_i}}{\sum_{k=1}^n e^{x_k}} \\
&= \frac{e^{x_j}(\sum_{k=1}^n e^{x_k}) - e^{x_i} e^{x_j}}{(\sum_{k=1}^n e^{x_k})^2} \\
&= \frac{e^{x_j}}{\sum_{k=1}^n e^{x_k}} \cdot \frac{\sum_{k=1}^n e^{x_k} - e^{x_i}}{\sum_{k=1}^n e^{x_k}} \\
&= y_i(1-y_i)
\end{aligned}
$$
综上所述,可以得到:
$$
\frac{\partial y_i}{\partial x_j} =
\begin{cases}
-y_i y_j, & i \neq j \\
y_i(1-y_i), & i = j
\end{cases}
$$
阅读全文