시험공부빅데이터분석
← 보드손실 함수와 옵티마이저 · 1/7

손실 함수 — 틀린 정도를 숫자 하나로 ★★★

모델이 낸 예측값(prediction)과 정답(target)이 얼마나 다른지를 숫자 하나로 요약하는 함수가 손실 함수예요. 그 숫자가 loss예요. 예측이 정답과 같으면 loss는 0이고, 많이 틀릴수록 커져요.

비유 — 오답 점수 채점

시험을 채점해서 "틀린 정도"를 점수로 매기는 채점표라고 생각하세요. 점수가 낮을수록 잘 푼 거예요. 모델은 이 점수를 줄이는 방향으로 공부해요.

회귀(숫자를 맞히는 문제)에서 가장 많이 쓰는 손실이 평균제곱오차(MSE, Mean Squared Error)예요. 순서는 세 단계예요.

  1. 오차 = 예측 − 정답
  2. 오차를 제곱해요.
  3. 모두 더해서 개수로 나눠 평균을 내요.
MSE = (1/N) × Σ (예측 − 정답)² # N은 원소 개수

왜 제곱할까요? 오차 +2와 −2를 그냥 더하면 0이 돼서 "틀리지 않았다"고 착각하게 돼요. 제곱하면 부호가 사라져서 서로 상쇄되지 않고, 큰 오차에는 더 큰 벌점이 붙어요.

prediction = torch.tensor([3.0, 4.0]) target = torch.tensor([1.0, 5.0]) squared_error = (prediction - target) ** 2 manual_loss = squared_error.mean() # 직접 계산 criterion = nn.MSELoss() # 손실 함수 객체 library_loss = criterion(prediction, target) print("직접 계산한 MSE:", manual_loss.item()) print("nn.MSELoss 결과:", library_loss.item())
직접 계산한 MSE: 2.5 nn.MSELoss 결과: 2.5
코드 줄무슨 뜻
prediction - target[3−1, 4−5] = [2, −1]. 숫자별로 빼요.
** 2제곱해서 [4, 1]이 돼요.
.mean()(4 + 1) ÷ 2 = 2.5. 평균이에요.
criterion = nn.MSELoss()MSE 계산기를 하나 만들어요. 이름 criterion은 "기준"이라는 뜻이고 loss 담당 변수로 흔히 쓰는 이름이에요.
criterion(prediction, target)계산기를 함수처럼 불러요. 순서는 (예측, 정답)이에요. 결과는 직접 계산과 같은 2.5예요.

criterion(...)처럼 객체를 함수처럼 부를 수 있는 이유는 5장에서 배운 __call__ 덕분이에요. nn.MSELoss()도 nn.Module의 자식이라서 model(x)와 같은 방식이에요.

평균은 모든 원소 개수로 나눠요. 예를 들어 예측 [[1, 2], [3, 4]], 정답 [[1, 0], [3, 2]]이면 오차는 0, 2, 0, 2이고 제곱하면 0, 4, 0, 4예요. 합 8을 원소 4개로 나눠서 2.0이에요. 과제 1에서도 "(예측 − 목표)² 전체 원소 평균"으로 loss를 구했어요.

교수님 자료에는 nn.CrossEntropyLoss(), nn.SmoothL1Loss() 같은 다른 손실 함수도 있다고 이름만 나와요. 참고로 CrossEntropyLoss는 보통 분류 문제에 써요. 시험에서는 MSE만 정확히 알면 충분해요.

이렇게 고르세요 (풀이 요령)

MSE 결과를 묻는 문제는 ① 뺀다 ② 제곱한다 ③ 평균 낸다, 순서로 손으로 풀어요. 예를 들어 예측 [1, 2, 3], 정답 [2, 2, 5]이면 오차 [−1, 0, −2] → 제곱 [1, 0, 4] → 평균 5/3 = 약 1.67이에요. "합계"가 아니라 "평균"이라서 개수로 나누는 것을 잊지 마세요.

잠깐 확인 — 예측 [3, 4], 정답 [1, 5]의 MSE는? 그리고 criterion(prediction, target)에서 두 인자 순서는?

(4 + 1) ÷ 2 = 2.5예요. 순서는 (예측, 정답)이에요.

다음 카드 → prediction과 target의 shape은 꼭 맞추기 ★★★

자료: 6·7주차 · Week04_Autograd_Loss_Optimizer · 7주차 녹취(빅데이터07)