Softmax function
Softmax 함수는 아래와 같이 정의된다.
$$p_i = \frac{\exp(z_i)}{\sum_{j=1}^{n} \exp(z_j)}$$
- $p_i$ : class $i$에 대한 Softmax output
- $z_i$ : class $i$에 대한 logit
- $n$ : class의 총 개수
Softmax function derivative
1. $i = k$인 경우
이때, $z_i = z_k$이다.
$$
\frac{\partial p_k}{\partial z_k} = \frac{\partial}{\partial z_k} \left( \frac{\exp(z_k)}{\sum_{j=1}^{n} \exp(z_j)} \right)
$$
곱의 미분 규칙과 합성 함수의 미분을 사용하여,
$$
\frac{\partial p_k}{\partial z_k} = \frac{\exp(z_k) \cdot \sum_{j=1}^{n} \exp(z_j) - \exp(z_k) \cdot \exp(z_k)}{\left(\sum_{j=1}^{n} \exp(z_j)\right)^2}
$$
위 식을 정리하면,
$$
\frac{\partial p_k}{\partial z_k} = \frac{\exp(z_k) \left(\sum_{j=1}^{n} \exp(z_j) - \exp(z_k)\right)}{\left(\sum_{j=1}^{n} \exp(z_j)\right)^2}
$$
$\sum_{j=1}^{n} \exp(z_j)$은 Softmax의 분모이므로, 이를 $p_k$로 대체할 수 있다.
$$
\frac{\partial p_k}{\partial z_k} = p_k \left(1 - p_k\right)
$$
즉, $i = k$인 경우, Softmax 함수의 미분은 출력 확률 $p_k$에 대해 아래와 같이 정리된다.
$$
\frac{\partial p_k}{\partial z_k} = p_k (1 - p_k)
$$
2. $i \neq k$인 경우
이때, $z_i \neq z_k$이다.
$$
\frac{\partial p_i}{\partial z_k} = \frac{\partial}{\partial z_k} \left( \frac{\exp(z_i)}{\sum_{j=1}^{n} \exp(z_j)} \right)
$$
분자의 미분은 0이 되므로, 분모의 미분을 계산하면,
$$
\frac{\partial p_i}{\partial z_k} = \frac{- \exp(z_i) \cdot \exp(z_k)}{\left(\sum_{j=1}^{n} \exp(z_j)\right)^2}
$$
이를 다시 Softmax 출력 확률 $p_i$와 $p_k$로 표현하면 Softmax 함수의 미분은 아래와 같이 정리된다.
$$
\frac{\partial p_i}{\partial z_k} = - p_i \cdot p_k
$$
정리하면, 아래와 같이 표현할 수 있다.
$$\frac{\partial p_i}{\partial z_k} =
\begin{cases}
p_i (1 - p_i) & \text{if } i = k \\
-p_i p_k & \text{if } i \neq k
\end{cases}$$
'Deep Learning' 카테고리의 다른 글
Posterior collapse (0) | 2024.10.26 |
---|---|
Coupling Layer (0) | 2024.09.25 |
Norm,L1,L2 (0) | 2024.08.17 |
AUROC Random Detector (0) | 2024.08.09 |
Cross Entropy Loss and gradient (0) | 2024.08.08 |