주제: 1-2 손실함수 기초 (MSE vs Cross-Entropy)
문제 설정
신경망 학습의 목표는 모델이 만든 예측값과 실제 정답의 차이를 줄이는 것입니다. 이 차이를 수치로 측정하는 함수가 손실함수(loss function)입니다.
w <- w - eta * grad(L)
모델은 손실 L이 작아지는 방향으로 파라미터를 업데이트합니다.
직관 비유
- 정답 y: 실제 값
- 예측 y_hat: 모델이 예측한 값
- 손실 L: 예측과 정답의 차이
차이가 크면 손실이 커지고, 차이가 작으면 손실이 작습니다.
1. Mean Squared Error (MSE)
MSE는 예측값과 정답의 차이를 제곱하여 평균을 계산합니다.
기호 의미
- y: 실제 값
- y_hat: 모델 예측
- N: 데이터 개수
직관 설명
예측과 정답의 차이가 클수록 손실이 빠르게 증가합니다.
예시
| 정답 | 예측 | 오차 | 제곱 |
|---|---|---|---|
| 3 | 2 | 1 | 1 |
| 5 | 7 | 2 | 4 |
왜 필요한가
연속값을 예측하는 회귀 문제에서 주로 사용됩니다.
주의점
큰 오차에 매우 민감합니다.
2. Cross-Entropy
Cross-Entropy는 확률 분포 간의 차이를 측정하는 손실입니다.
기호 의미
- y: 실제 분포(정답)
- y_hat: 모델 예측 확률
직관 설명
정답 클래스의 확률이 높을수록 손실이 작아집니다.
예시
| class | 정답 y | 예측 y_hat |
|---|---|---|
| cat | 1 | 0.8 |
| dog | 0 | 0.2 |
왜 필요한가
분류 문제에서 모델이 정답 확률을 높이도록 학습합니다.
주의점
정답 클래스 확률이 0에 가까워지면 손실이 매우 커집니다.
3. MSE vs Cross-Entropy
| 항목 | MSE | Cross-Entropy |
|---|---|---|
| 문제 유형 | 회귀 | 분류 |
| 출력 형태 | 실수 값 | 확률 |
| 학습 방식 | 오차 최소화 | 정답 확률 최대화 |
4. Cross-Entropy와 로그우도
Cross-Entropy는 다음 식과 직접 연결됩니다.
즉 모델이 정답 클래스 확률을 높이도록 학습하는 과정입니다.
왜 필요한가
확률 모델 학습의 핵심 목표인 Maximum Likelihood와 직접 연결됩니다.
주의점
분류에서는 보통 softmax 기반 출력과 함께 사용합니다.
코드-수식 연결
| 수식 | PyTorch 코드 | 설명 |
|---|---|---|
| MSE | nn.MSELoss() | 회귀 손실 |
| -log P(y|x) | nn.CrossEntropyLoss() | 분류 손실 |
| softmax(x) | torch.softmax(x, dim=-1) | 확률 계산 |
자주 하는 오해 5개
- MSE를 분류 문제에 그대로 써도 된다고 생각한다
- Cross-Entropy를 단순 공식 암기로만 이해한다
- softmax 없이도 Cross-Entropy를 동일하게 사용할 수 있다고 생각한다
- 손실이 낮으면 항상 정확도가 높다고 생각한다
- 모든 문제에 하나의 손실함수가 최선이라고 생각한다
체크리스트 (스스로 설명 가능해야 하는 질문)
- MSE는 어떤 문제에서 사용하는가?
- Cross-Entropy는 왜 분류 문제에 적합한가?
- Cross-Entropy와 로그우도는 어떤 관계인가?
- softmax와 Cross-Entropy를 함께 쓰는 이유는 무엇인가?
- 회귀 문제와 분류 문제의 손실 선택 기준은 무엇인가?