본문 바로가기
C.W.K.
Stream
Lesson 02 of 06 · published

손실 함수: 우리가 최적화하는 자

~10 min · loss, MSE, MAE, cross-entropy

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

학습이 줄이려는 숫자

손실함수는 예측과 목표의 차이를 최적화 가능한 숫자로 바꿔. 모델은 우리가 고른 손실을 줄일 뿐이므로, 손실 선택은 무엇을 좋은 예측으로 볼지 정하는 설계 결정이야.

손실공식성질
MSE큰 잔차를 제곱해 강하게 벌줘. 이상치에 민감해.
MAE잔차 크기에 선형으로 반응해 MSE보다 이상치 영향이 작아.
교차엔트로피분류에서 정답 분포와 예측분포의 차이를 로그확률로 재.

손실에는 통계적 가정이 숨어 있어

조건부 평균을 예측하고 가우시안 오차를 가정하면 MSE가 자연스럽고, 조건부 중앙값과 라플라스 오차를 생각하면 MAE가 이어져. 어떤 손실이 ‘더 좋다’기보다 목표와 오류 비용에 맞는지가 중요해.

교차엔트로피를 최소화하면 올바른 조건에서 참 조건부 확률을 목표로 하는 proper scoring rule이 되지만, 유한 데이터와 모형 불일치, 규제, 분포 변화 때문에 신경망의 확률이 자동으로 잘 보정되는 건 아니야. 정확도와 별도로 신뢰도 그림이나 Brier score, 온도 보정 같은 검사가 필요할 수 있어.

손실은 모델에게 무엇을 아파하라고 가르치는 자야. 최적화가 잘 됐다는 사실과 현실의 비용을 제대로 반영했다는 사실은 따로 검증해.

Code

이상치가 있는 자료에서 MSE와 MAE 비교하기·python
import numpy as np

y_true = np.array([1.0, 2.0, 3.0, 4.0, 100.0])      # 마지막 = 이상치
y_pred = np.array([1.1, 1.9, 3.2, 3.8, 5.0])

mse = np.mean((y_true - y_pred) ** 2)
mae = np.mean(np.abs(y_true - y_pred))
print(f"MSE: {mse:.3f}")    # 거대 — 이상치 지배
print(f"MAE: {mae:.3f}")    # 큰데 catastrophic 안 함
분류용 교차엔트로피·python
import torch
import torch.nn.functional as F

logits = torch.tensor([[2.0, 1.0, 0.5]])       # raw 점수
target = torch.tensor([0])                      # 정답 클래스

# Cross-entropy 손실 — 분류용
ce = F.cross_entropy(logits, target)
print(ce.item())                                # ~0.42

External links

Exercise

이상치가 있는 회귀 자료를 만들고 MSE와 MAE를 최소화한 직선의 기울기와 절편을 비교해. MSE에는 numpy.linalg.lstsq, MAE에는 scipy.optimize.minimize를 사용해.
Hint
제곱오차는 큰 잔차의 영향을 빠르게 키우고 절대오차는 선형으로 키워. MAE 회귀도 선형계획법 등으로 풀 수 있으므로 ‘해가 없다’가 아니라 최소제곱과 같은 단순한 정규방정식이 없다고 이해해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.