오차는 예측값(Y_hat)과 실제값(Y) 간의 차이를 나타내며, 신경망이 얼마나 잘못 예측했는지를 나타낸다.
Softmax 함수는 출력층에서 사용되며, 각 클래스에 속할 확률로 해석될 수 있으며, 모든 출력의 합은 1이 된다.
Softmax 함수는 다음과 같다.
$$
⁍ $$
출력층에서의 오차를 계산하려면, 예측값(Y_hat)과 실제값(Y)을 비교해야 합니다. 이를 위해 크로스 엔트로피 손실 함수를 자주 사용한다.
크로스 엔트로피 손실 함수는 다음과 같다.
$$
⁍ $$
$y_i$는 실제 클래스 레이블(원-핫 인코딩), $\hat{y}_i$는 예측된 클래스 확률이다. 이 함수는 모델이 실제 클래스에 대해 예측 확률이 낮을수록 더 큰 손실을 부과한다.
출력층에서의 오차 dZ2는 다음과 같이 계산된다.
dZ2 = Y_hat - Y
이 오차는 두 가지 중요한 미분 값의 조합으로 설명될 수 있다:
Softmax 함수의 미분
Softmax는 다음과 같이 정의된다.
$$ \hat{y}i = \frac{e^{z_i}}{\sum{j=1}^{C} e^{z_j}} $$
Softmax 함수의 미분을 $z_j$에 대해 계산하면 다음과 같은 형태를 얻게 된다.
$$ \frac{\partial \hat{y}_i}{\partial z_j} = \hat{y}i (\delta{ij} - \hat{y}_j) $$
$δ_{ij}$는 크로네커 델타 함수로, i=j일 때 1이고, 그 외에는 0이다.
$i=j$일 때, 즉 같은 클래스일 때의 미분 값은 $\hat{y}_i (1 - \hat{y}_i)$이다
$i≠j$ 일 때, 즉 서로 다른 클래스 간의 상호작용 항목이 $-\hat{y}_i \hat{y}_j$로 나타난다.
크로스 엔트로피 손실 함수의 미분
크로스 엔트로피 손실 함수는 다음과 같이 정의된다.
$$
⁍ $$
$y_i$는 실제 레이블로, $y_i$가 1인 곳은 정답 클래스이며, 나머지는 0. $\hat{y}_i$는 Softmax 함수의 출력, 즉 예측 확률이다.
크로스 엔트로피 손실 함수의 미분을 Softmax의 출력 $\hat{y}_i$에 대해 계산하면 다음과 같다.
$$ \frac{\partial \text{Loss}}{\partial \hat{y}_i} = -\frac{y_i}{\hat{y}_i} $$
Softmax와 크로스 엔트로피 손실 함수의 결합
Softmax 함수와 크로스 엔트로피 손실 함수를 결합하여 $z_j$에 대한 전체 손실의 미분을 구하려고 한다. 손실 함수 $\text{Loss}$에 대해 $z_j$의 미분을 구하는 과정은 연쇄 법칙(chain rule)을 사용해 계산한다.
$$ \frac{\partial \text{Loss}}{\partial z_j} = \sum_{i=1}^{C} \frac{\partial \text{Loss}}{\partial \hat{y}_i} \cdot \frac{\partial \hat{y}_i}{\partial z_j} $$
앞에서 계산한 Softmax와 크로스 엔트로피의 미분을 대입해보면 다음과 같다:
$$ \frac{\partial \text{Loss}}{\partial z_j} = \sum_{i=1}^{C} \left( -\frac{y_i}{\hat{y}_i} \right) \cdot \left( \hat{y}i (\delta{ij} - \hat{y}_j) \right) $$
$$ \frac{\partial \text{Loss}}{\partial z_j} = -\sum_{i=1}^{C} y_i (\delta_{ij} - \hat{y}_j) $$
원-핫 인코딩 적용
원-핫 인코딩에서는 정답 클래스 위치에서만(i=j인 경우) $y_i = 1$, $δ_{ij}=1$이고, 나머지 클래스(i≠ji인 경우)에서는 $y_i = 0$.
$$ \frac{\partial \text{Loss}}{\partial z_j} = -y_j (1 - \hat{y}j) + \sum{i \neq j} y_i \hat{y}_j $$
$$ \frac{\partial \text{Loss}}{\partial z_j} = -y_j (1 - \hat{y}j) + \sum{i \neq j} (0) \cdot \hat{y}_j $$
$$ \frac{\partial \text{Loss}}{\partial z_j} = −y_j \cdot (1−\hat{y_j}) $$
이 식에서 $y_j=1$이므로,
$$ \frac{\partial \text{Loss}}{\partial z_j} = -(1−\hat{y_j}) = \hat{y_j} -1 $$
원-핫 인코딩 특성상 y_j = 1, $\hat{y}_j$는 예측 확률이다.
$$ \frac{\partial \text{Loss}}{\partial z_j} = \hat{y}_j - y_j $$