모두의 AI
머신러닝AI논문
로딩 중…

배우기

🏅내 업적

Ch.05

손실 함수 (MSE·크로스엔트로피·R²): 정답과 예측의 오차 재기

손실 함수는 모델이 얼마나 틀렸는지를 한 숫자로 재는 도구입니다. 회귀(연속값 예측)에서는 예측 y^\hat yy^​와 실제 yyy의 차이를 제곱해 평균 낸 평균 제곱 오차(MSE)가 대표적입니다. 분류(범주·확률)에서는 정답 클래스에 대한 예측 확률이 얼마나 빗나갔는지를 크로스엔트로피로 잽니다. 아래 도식은 손실 함수 중 회귀 예시로 MSE가 어떻게 줄어드는지 보여 줍니다.

챕터별 머신러닝 도식화

챕터를 선택하면 아래 도식이 해당 챕터 내용으로 바뀌어요. 머신러닝 흐름을 한눈에 보세요.

회귀 손실 예시: 예측값 y^\hat yy^​와 실제값 yyy의 오차를 제곱해 평균 낸 것이 MSE입니다. (분류에서는 크로스엔트로피를 씁니다.)

xy오차 제곱 = 넓이 (한 변 = |잔차|)0.85SSE = 4.25   →   MSE = SSE ÷ 5MSE = 0.85

MSE =1n∑i(yi−y^i)2= \frac{1}{n}\sum_i (y_i - \hat y_i)^2=n1​∑i​(yi​−y^​i​)2 — 손실이 작을수록 직선이 데이터에 잘 맞습니다.

손실 함수 (MSE·크로스엔트로피·R²): 정답과 예측의 오차 재기

회귀: MSE로 오차를 재기
모델이 얼마나 틀렸는지를 한눈에 보여 주는 성적표가 필요합니다.
- 잔차 — 실제값 yyy에서 예측값 y^\hat yy^​를 뺀 값.
- SSE — 각 점의 (y−y^)2(y-\hat y)^2(y−y^​)2을 모두 더한 오차 제곱합(Sum of Squared Errors).
- MSE — SSE를 데이터 개수 nnn으로 나눈 평균 제곱 오차.
MSE=1n∑(y−y^)2=SSE/n\text{MSE} = \frac{1}{n}\sum (y - \hat y)^2 = \text{SSE}/nMSE=n1​∑(y−y^​)2=SSE/n — 값이 작을수록 모델이 데이터에 잘 맞습니다.
왜 그냥 더하지 않고 제곱할까요?
- 오차 +5+5+5와 −5-5−5는 방향만 다를 뿐 같은 크기의 틀림입니다. 그냥 더하면 000으로 상쇄될 수 있습니다.
- 제곱하면 항상 양수가 되어 크기만 비교할 수 있습니다.
- 큰 오차에는 더 큰 벌점(페널티)가 가해져, 모델이 큰 실수를 피하도록 유도합니다.
선형 회귀의 목표
직선 y^=wx+b\hat y = wx + by^​=wx+b가 데이터를 잘 대변한다는 것은, SSE를 nnn으로 나눈 MSE가 최소가 되도록 기울기 www와 절편 bbb를 고른다는 뜻입니다.
경사 하강법은 이 MSE를 줄이는 방향으로 www, bbb를 조금씩 업데이트합니다.
회귀: MSE는 잔차의 제곱 평균
MSE는 잔차(오차) yi−y^iy_i-\hat y_iyi​−y^​i​를 제곱해 평균으로 만든 오차 점수입니다. 예측이 실제에 가까울수록 잔차가 줄어 MSE도 작아집니다.
MSE 수식을 풀어 읽기
MSE=1n∑i(yi−y^i)2\text{MSE} = \frac{1}{n}\sum_i (y_i - \hat y_i)^2MSE=n1​∑i​(yi​−y^​i​)2
- iii — 데이터 번호(몇 번째 점인지).
- yiy_iyi​ — 그 점의 실제값.
- y^i\hat y_iy^​i​ — 그 점의 예측값.
- yi−y^iy_i - \hat y_iyi​−y^​i​ — 잔차.
- (yi−y^i)2(y_i - \hat y_i)^2(yi​−y^​i​)2 — 그 점의 제곱 오차.
- ∑i\sum_i∑i​ — 모든 점을 더하면 SSE.
- 1n\frac{1}{n}n1​ — 평균을 내어 MSE.
예측이 실제에 가까울수록 잔차와 MSE가 작아집니다.

분류: 크로스엔트로피
크로스엔트로피는 분류에서 "정답 클래스일 확률"을 기준으로 손실을 매기는 방법입니다.
이진 분류는 아래 이진 크로스엔트로피 수식을 풀어 읽기에서 ℓ\ellℓ을 구성 요소별로 해석합니다.
이진 크로스엔트로피 수식을 풀어 읽기
ℓ=−(ylog⁡p^+(1−y)log⁡(1−p^))\ell = -\big(y\log\hat p + (1-y)\log(1-\hat p)\big)ℓ=−(ylogp^​+(1−y)log(1−p^​))
- y∈{0,1}y \in \lbrace 0,1 \rbracey∈{0,1} — 정답 라벨.
- p^\hat pp^​ — 클래스 1일 확률(0~1).
- log⁡\loglog — 보통 자연로그.
y=1y=1y=1일 때 — (1−y)log⁡(1−p^)=0(1-y)\log(1-\hat p)=0(1−y)log(1−p^​)=0이므로 ℓ=−log⁡p^\ell = -\log\hat pℓ=−logp^​만 남습니다. p^\hat pp^​가 1에 가까울수록 손실이 작습니다.
y=0y=0y=0일 때 — ylog⁡p^=0y\log\hat p=0ylogp^​=0이므로 ℓ=−log⁡(1−p^)\ell = -\log(1-\hat p)ℓ=−log(1−p^​). 1−p^1-\hat p1−p^​는 클래스 0일 확률에 해당합니다.
ylog⁡p^y\log\hat pylogp^​와 (1−y)log⁡(1−p^)(1-y)\log(1-\hat p)(1−y)log(1−p^​) 중 항상 한쪽만 살아 있어, 정답 쪽 확률을 키우도록 유도합니다.
다중 클래스 — 정답 클래스 kkk에 대해 보통
ℓ=−log⁡p^k\ell = -\log \hat p_kℓ=−logp^​k​
(일반적으로 소프트맥스 확률을 사용). 정답 클래스의 예측 확률 p^k\hat p_kp^​k​가 낮을수록 손실이 커지고, 학습은 그 확률을 높이는 방향으로 가중치를 움직입니다.

R2R^2R2 (결정계수): '평균으로 찍기' 대비 얼마나 나아졌나
회귀에서는 MSE/RMSE로 오차의 크기를 보지만, 이보다 한 단계 더 나아가 "내 모델이 기준선(평균 예측)보다 얼마나 더 잘 설명했는가"를 보고 싶을 때 R2R^2R2를 함께 봅니다.
R2=1−∑i(yi−y^i)2∑i(yi−yˉ)2=1−SSESSTR^2 = 1 - \frac{\sum_i (y_i-\hat y_i)^2}{\sum_i (y_i-\bar y)^2} = 1 - \frac{\text{SSE}}{\text{SST}}R2=1−∑i​(yi​−yˉ​)2∑i​(yi​−y^​i​)2​=1−SSTSSE​
기호부터 정리
- yiy_iyi​: iii번째 데이터의 실제값
- y^i\hat y_iy^​i​: iii번째 데이터의 예측값
- yˉ\bar yyˉ​: 전체 yiy_iyi​의 평균
- SSE = ∑i(yi−y^i)2\sum_i (y_i-\hat y_i)^2∑i​(yi​−y^​i​)2 : 모델이 낸 오차 제곱합(작을수록 좋음)
- SST = ∑i(yi−yˉ)2\sum_i (y_i-\bar y)^2∑i​(yi​−yˉ​)2 : "평균 yˉ\bar yyˉ​만 찍는다"고 가정했을 때의 오차 제곱합(기준선)
계산 순서(초간단)
1. 먼저 yˉ\bar yyˉ​를 구합니다(실제값 평균).
2. 기준선 오차인 SST = ∑i(yi−yˉ)2\sum_i (y_i-\bar y)^2∑i​(yi​−yˉ​)2를 계산합니다.
3. 모델 오차인 SSE = ∑i(yi−y^i)2\sum_i (y_i-\hat y_i)^2∑i​(yi​−y^​i​)2를 계산합니다.
4. R2=1−SSE/SSTR^2 = 1 - \text{SSE}/\text{SST}R2=1−SSE/SST 입니다.
해석 가이드(가장 중요)
- R2=1R^2 = 1R2=1이면: SSE=0 → 예측이 실제와 거의 완벽하게 일치
- R2=0R^2 = 0R2=0이면: SSE=SST → 평균만 찍는 수준과 비슷
- R2<0R^2 < 0R2<0이면: SSE>SST → 평균만 찍는 기준선보다 더 못함
즉, R2R^2R2는 "오차 제곱합을 기준선 대비 얼마나 줄였는지"를 비율로 보여주는 지표입니다.
짧은 숫자 예시
실제값이 y=[3,5,7]y=[3,5,7]y=[3,5,7]이고 평균 yˉ=5\bar y=5yˉ​=5라고 해봅시다.
- 기준선(평균만 찍기): 오차 제곱합
SST=(3−5)2+(5−5)2+(7−5)2=4+0+4=8\text{SST}=(3-5)^2+(5-5)^2+(7-5)^2=4+0+4=8SST=(3−5)2+(5−5)2+(7−5)2=4+0+4=8
- 모델 예측이 y^=[4,5,6]\hat y=[4,5,6]y^​=[4,5,6]일 때:
SSE=(3−4)2+(5−5)2+(7−6)2=1+0+1=2\text{SSE}=(3-4)^2+(5-5)^2+(7-6)^2=1+0+1=2SSE=(3−4)2+(5−5)2+(7−6)2=1+0+1=2
따라서
R2=1−2/8=0.75R^2 = 1 - 2/8 = 0.75R2=1−2/8=0.75
→ 모델이 평균 예측보다 오차를 제법 줄여서 분산(변동)을 75% 정도 설명한 셈으로 해석할 수 있습니다.
주의: R2R^2R2를 혼자만 믿지 않기
- R2R^2R2는 "비율"이라서, 데이터가 다르면 숫자를 그대로 비교하기가 애매할 수 있습니다.
- 실무에서는 보통 RMSE + R2R^2R2(오차 크기 + 설명력)를 함께 보면서 모델을 판단합니다.

왜 중요한지

학습의 나침반 — 머신러닝 모델은 학습할 때 '어디로 가야 할지'를 모릅니다. 회귀에서 손실이 MSE일 때, MSE가 '이 값이 작아지는 쪽으로 가라'고 방향을 알려줍니다. MSE가 줄어드는 방향이 곧 (회귀에서) 모델이 나아가야 할 방향입니다.
MSE: 미분하기 좋은 부드러운 곡선 — 제곱 함수(x2x^2x2)는 그래프로 그리면 밥그릇처럼 매끄러운 곡선 모양이 됩니다. 뾰족한 부분이 없어서 미분(기울기 계산)이 아주 쉽습니다. 덕분에 경사 하강법을 적용하여 최저점(오차가 가장 적은 곳)을 찾기에 수학적으로 가장 유리합니다.
RMSE로 단위 되찾기 — MSE는 오차를 제곱해서 평균을 내기 때문에 단위가 'yyy의 제곱'이 됩니다(예: 가격 예측인데 단위가 '원²'). 실무에서는 "평균적으로 몇 원, 몇 도 틀리나요?"처럼 원래 단위로 말하고 싶을 때가 많습니다. 이때 MSE에 루트(\sqrt{}​)를 씌운 RMSE(Root Mean Squared Error, 제곱근 평균 제곱 오차)를 씁니다. RMSE =MSE= \sqrt{\text{MSE}}=MSE​ 이므로, MSE를 이해하면 RMSE도 자연스럽게 이해할 수 있습니다.
문제 유형에 맞는 손실 — 연속값이면 MSE가 자연스럽고, 클래스·확률이면 크로스엔트로피가 최대우도추정과 잘 맞아 분류·딥러닝에서 표준입니다. Ch.05 로지스틱 회귀에서는 시그모이드로 나온 확률 p^\hat pp^​와 이 손실이 어떻게 연결되는지 이어서 다룹니다.

어떻게 쓰이는지

수치 예측(회귀) 모델 훈련 — 아파트 가격, 내일의 기온, 주식 가격 등 연속된 숫자를 맞히는 문제에서 가장 기본적으로 MSE를 씁니다.
모델 간 성능 비교 (회귀) — A 모델과 B 모델 중 누가 더 일을 잘하는지 모를 때, 두 모델의 MSE를 계산해봅니다. MSE 숫자가 더 작은 모델이 더 우수한 모델로 선정됩니다.
딥러닝 회귀 출력층 — 인공신경망이 숫자를 예측하는 문제를 풀 때도 출력층에서 정답과의 거리를 재기 위해 MSE를 자주 사용합니다.
분류·확률 예측 — 로지스틱 회귀, 소프트맥스 분류, 신경망의 클래스 확률을 학습할 때는 크로스엔트로피를 최소화하는 설정이 일반적입니다.