AI 수학 로드맵 노트 9 — 손실함수 MSE, 얼마나 틀렸나를 숫자 하나로

표 3 · 도식 1작성 Rhymbro

제1원리 질문. 모델이 ‘잘하고 있는지’를 왜 숫자 하나로 줄여야 하는가. 경사하강법은 하나의 값을 내려가는 방법이라, 데이터마다 흩어진 수많은 오차를 먼저 하나의 점수로 모아야 ‘내려갈 산’이 생기기 때문이다.

오차, 제곱, 평균의 세 단계를 거쳐 MSE 하나의 숫자를 만드는 흐름도
개념도 — MSE를 만드는 세 단계. 본문 내용을 바탕으로 자체 제작

핵심 — 세 단계로 만든 숫자 하나

로드맵은 45주차를 “‘얼마나 틀렸나’를 숫자 하나로”라고 요약한다. MSE(Mean Squared Error, 평균 제곱 오차)는 이름 그대로 오차를 구하고, 제곱하고, 평균 낸 값이다. MSE = (1/n) Σ(ŷi − yi)2. 3편의 시그마가 여기서 그대로 쓰인다.

단계 하는 일 이유
오차 예측 − 정답 얼마나 빗나갔나
제곱 오차2 부호 제거 + 큰 오차를 더 크게
평균 합 / 개수 데이터 개수와 무관한 점수

데이터별 제곱 오차네 건 중 한 건이 손실의 대부분을 차지한다1번 (오차 −0.5)0.252번 (오차 0)04번 (오차 0.5)0.253번 (오차 1.0)1.00

아래 코드의 가정 데이터로 계산했다. 제곱 오차의 합은 1.5, 평균(MSE)은 0.375다.

코드로 번역하기

import numpy as np

y_true = np.array([3.0, 5.0, 7.0, 9.0])   # 정답 (가정 값)
y_pred = np.array([2.5, 5.0, 8.0, 9.5])   # 모델 예측 (가정 값)

err = y_pred - y_true            # 오차
print(err)                       # [-0.5  0.   1.   0.5]
print(err ** 2)                  # 제곱: 부호 제거 + 큰 오차 강조
mse = np.mean(err ** 2)          # 평균 -> 숫자 하나
print(mse)                       # 0.375

# 오차 하나가 2배가 되면 손실 기여는 4배
print((2 * 1.0) ** 2 / 1.0 ** 2)   # 4.0

실행 결과

[-0.5  0.   1.   0.5]
[0.25 0.   1.   0.25]
0.375
4.0

사례 적용 — 제곱이 만드는 성격

그래프에서 보듯 오차가 0.5인 데이터 두 건은 각각 0.25만 기여하지만, 오차가 1.0인 한 건은 1.0을 기여한다. 오차가 2배면 손실 기여는 4배다. 그래서 MSE를 줄이려는 학습은 크게 틀린 데이터부터 우선 고치려는 성격을 갖는다. 작은 실수 여러 번보다 큰 실수 한 번을 더 엄하게 보는 채점 기준인 셈이다.

또 제곱 덕분에 MSE를 가중치에 대한 식으로 쓰면 12주차에서 본 포물선(골짜기) 모양이 된다. 로드맵이 이차함수를 ‘손실함수 형태의 예고편’이라고 부른 이유가 여기서 이어진다. 골짜기 모양이면 8편의 경사하강법으로 바닥을 찾아 내려갈 수 있다.

1분 개념 체크

로드맵 교재 템플릿의 ‘1분 개념 체크’ 형식을 빌려 스스로 확인할 문제 두 개를 만들었다.

질문 답 근거
오차가 (1, −1, 2)일 때 MSE는? 2 (1 + 1 + 4) / 3
오차가 3배가 되면 그 데이터의 제곱 오차는 몇 배가 되는가? 9배 32

내 해석 — Rhymbro가 읽은 것

MSE의 ‘큰 오차를 더 엄하게’ 성격은 공차 관리 감각과 비교해 볼 만했다. 치수 검사에서도 공차를 살짝 벗어난 부품 여러 개보다 크게 벗어난 부품 하나가 조립 불량으로 이어지기 쉽다. 오차를 제곱해서 모으는 방식은 그런 ‘큰 벗어남’에 더 민감한 지표라고 이해했다.

반대로 측정 실수로 생긴 이상치 하나가 MSE를 크게 끌어올릴 수 있다는 점도 같이 기억해 둔다. 지표의 성격을 알고 써야 한다는 점에서 품질 지표를 고르는 일과 비슷하다.

한계로, MSE는 이상치 하나에 크게 흔들리고 분류 문제에는 잘 맞지 않아서, 문제의 성격에 따라 다른 손실함수를 고르는 판단이 필요하다.

요약

항목 정리
정의 MSE = 오차 제곱의 평균
제곱의 효과 부호 제거, 큰 오차 강조 (2배 → 4배)
코드 np.mean((y_pred − y_true) ** 2)
연결 MSE의 골짜기를 경사하강법으로 내려감

그래서 나는 무엇을 하기로 했나

이번 주는 같은 가정 데이터에 이상치 하나(오차 5.0)를 추가했을 때 MSE가 얼마나 바뀌는지 계산하고, 오차 절댓값의 평균과 나란히 비교해 보기로 했다.

주제와 순서는 개인 학습용으로 정리한 104주 AI 수학 로드맵 목차를 따랐고, 설명과 예제는 그 목차를 바탕으로 내 언어로 다시 썼다. 코드는 Python 3 + NumPy 2.x에서 실행해 출력을 확인했으며, 예시 수치는 설명용 가정 값이다.

함께 읽기: AI 수학, 네 기둥만 먼저 세운다 — 내가 잡은 로드맵

같은 카테고리에서 함께 읽기

강의자료 121편

2개의 댓글

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다