728x90
반응형

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}$$

728x90
반응형

'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