그냥 단순하게 생각했었다...
정말로 그렇게 생각했었다...

그런데... 그냥 왜 굳이? `MSE` 로도 충분히 손실 값을 구할 수 있지 않을까? 라는 물음이 시작되었는데. 이러한 갈증을 해결 하기 위해서, 단순 연산 값에 대입시키면서 왜 분류 문제에는 `BCE` (이진)를 사용하는지에 대해서 정리를 해 보았다.
분류는 어떻게 보면 확률분포
그렇다! 우리가 활성화 함수를 분석하거나 번역 모델을 설계할 때도, 입력값이 정답에 얼마나 가까운지를 명확한 수치로 알기는 어렵다. 그래서 대부분의 경우, 입력값이 정답에 가까울 확률을 예측하는 방식으로 설계하게 된다.
상황을 가정해서 생각해보자.
- \(sigmoid\) 함수를 통과한 입력 값이 0.6일 경우를 생각해보자
$$
f(y) =
\begin{cases}
1, & \text{if } y \geq 0 \
0, & \text{if } y < 0
\end{cases}
$$
0.5 임계 값을 통해 True(1)로 출력 되는 것은 맞지만 결국 틀린 양으로 계산해보았을 때 1 - 0.6 = 0.4 만큼 틀린 경우라고 볼 수 있다.

결국 이런 예측 값을 기반으로 손실 값을 정리할 때 생각해야 하는 것이 얼만큼 예민하고 정밀하게 계산하는지에 대해서 들여다봐야 한다고 생각한다.
만약, 단순 손실계산 기반인 `MSE`를 통해 손실값을 계산한다고 가정해보자.
| 샘플 | 실제 레이블 | 예측 확률 |
|---|---|---|
| 1 | 1 | 0.9 |
| 2 | 0 | 0.2 |
| 3 | 1 | 0.4 |
1. `MSE` 기반을 통한 계산
$$
\text{MSE} = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2
$$
- 수식 설명은 저번에 정리 했으므로 자세한 설명은 생략하고 단순하게 실제 값과 예측값을 뺀 나머지 값을 제곱하는 식(음수 방지)
- 샘플 1
\(y_1 = 1, \quad \hat{y}_1 = 0.9\)
$$
\text{MSE}_1 = (1 - 0.9)^2 = 0.01
$$
- 샘플 2
\(y_2 = 0, \quad \hat{y}_2 = 0.2\)
$$
\text{MSE}_2 = (0 - 0.2)^2 = 0.04
$$
- 샘플 3
\(y_3 = 1, \quad \hat{y}_3 = 0.4\)
$$
\text{MSE}_3 = (1 - 0.4)^2 = 0.36
$$
- 전체 MSE 계산
$$
\text{MSE} = \frac{1}{3} (0.01 + 0.04 + 0.36) \approx \frac{1}{3} \times 0.41 \approx 0.137
$$
2. `BCE`를 통한 계산
$$
\text{BCE} = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(p_i) + (1 - y_i) \log(1 - p_i) \right]
$$
- 수식도 저번에 설명하긴 했지만 결국 \(P_i\)는 클래스가 예측한 값일 확률(0,1) 을 통해 샘플 수 만큼 실제 레이블과 실제 클래스 확률 값을 뺀 나머지를 모두 더한 값을 구하는식
- 샘플 1
\(y_1 = 1, \quad p_1 = 0.9\)
$$
\text{BCE}_1 = -\left[1 \times \log(0.9) + (1 - 1) \times \log(1 - 0.9)\right] = -\log(0.9) \approx 0.1054
$$
- 샘플 2
\(y_2 = 0, \quad p_2 = 0.2\)
$$
\text{BCE}_2 = -\left[0 \times \log(0.2) + (1 - 0) \times \log(1 - 0.2)\right] = -\log(0.8) \approx 0.2231
$$
- 샘플 3
\(y_3 = 1, \quad p_3 = 0.4\)
$$
\text{BCE}_3 = -\left[1 \times \log(0.4) + (1 - 1) \times \log(1 - 0.4)\right] = -\log(0.4) \approx 0.9163
$$
- 전체 BCE 계산
$$
\text{BCE} = -\frac{1}{3} (0.1054 + 0.2231 + 0.9163) \approx -\frac{1}{3} \times 1.2448 \approx 0.415
$$
결국 단순 비교를 통해 결과를 따져봤을 때
| 샘플 | 레이블 값 | 예측값 | BCE | MSE |
|---|---|---|---|---|
| 1 | 1 | 0.9 | 0.1054 | 0.01 |
| 2 | 0 | 0.2 | 0.2231 | 0.04 |
| 3 | 1 | 0.4 | 0.9163 | 0.36 |
| 평균 | - | - | 0.415 | 0.137 |
실제 예측값이 레이블 값에 실제로 다다른지 아닌지를 낮은 수치값 ↔︎ 큰 수치값을 통해 직관적으로 비교시키는 BCE와는 다르게 MSE는 단순 실제-예측값을 비교한 값으로 실제 분류 값에는 적합하지 않다는 것을 알 수 있다.
시각적으로도 봤을 때도 유의미한 차이가 있다는 것을 알 수 있다.
비교 차트

신경망 안에서의 학습
그림으로 이해해보자


인용 : https://www.youtube.com/watch?v=t6WIGyz0tD8&list=PLRUS1nW-CfnfWT3ORO0ZmjgUQaCkRhEZM&index=55
소프트웨어 꼰대라는 채널을 운영하시는 청주대학교 노기섭 교수님의 자료를 많이 참조하였는데,
모델 학습 코드를 작성했을 때 몰랐던 기초적인 이론(확률, 선형대수, 미분)에 대해서
알차게 설명해주셔서 이론 공부에 필요할 것 같아 첨부한다.
'딥러닝, 논문 리뷰' 카테고리의 다른 글
| [딥러닝, 논문리뷰] 엘모(Embeddings from Language Model, ELMo) (1) | 2025.01.02 |
|---|---|
| [딥러닝, 논문리뷰] Efficient Estimation of Word Representations in Vector Space(Word2Vec) - 2 (3) | 2025.01.01 |
| [딥러닝] Word2Vec 논문 리뷰 전 분석 - 1 (4) | 2025.01.01 |
| [딥러닝] 단층 퍼셉트론의 한계(XOR 게이트)와 비선형함수의 등장 (1) | 2024.12.27 |
| [딥러닝] RNN, LSTM, GRU Sequence - 1 (2) | 2024.12.27 |