DEV Community

Cover image for 손실 함수와 학습 — 모델이 데이터에서 배우는 방식의 직관
HyunSeok Jeong
HyunSeok Jeong

Posted on • Originally published at blog.trysitely.com

손실 함수와 학습 — 모델이 데이터에서 배우는 방식의 직관

"모델이 학습한다"의 안에서 무엇이 일어나는지 한 번도 안 들여다보면, 머신러닝은 늘 신비로 남습니다. 사실 그 안에는 단 한 가지 흐름이 있습니다 — "오차를 정의하고, 그 오차를 줄이는 방향으로 모델을 조정한다." 이 한 줄이 손실 함수와 학습의 본질입니다. 마케터·운영자가 머신러닝을 다룰 때의 두 번째 기초 체력.

1. 학습의 한 줄 정의

머신러닝의 학습을 한 줄로:

모델 예측과 실제 답의 차이를 작게 만들도록 모델 파라미터를 조정한다.

이 한 줄에 세 가지 요소가 들어 있습니다.

  • 예측 — 모델이 출력하는 값
  • 실제 답 — 학습 데이터의 정답
  • 차이 — 손실 함수(loss function)로 측정

학습은 손실 함수의 값을 작게 만드는 방향으로 파라미터를 조정하는 과정. 모델이 처음엔 엉터리로 예측해도 반복하면서 점차 나아짐.

손실 함수가 학습 반복마다 줄어드는 곡선과 gradient descent 다이어그램
학습은 손실 함수 곡면에서 가장 낮은 자리(=최소 오차)로 내려가는 과정. 매 step마다 기울기 방향으로 파라미터 조정.

📌 이 글에서 다루는 것

이 글은 학습 알고리즘의 수학 디테일(미분·역전파)을 다루지 않습니다. "오차를 어떻게 줄이나"의 직관·운영적 의미·자주 보이는 손실 함수에 집중. 이 직관이 잡히면 overfitting 글·회귀·분류 글이 자연스럽게 이어집니다.

2. 손실 함수 — 오차의 단위와 자주 만나는 5가지

손실 함수의 한 줄 정의:

예측이 정답에서 얼마나 어긋났나를 한 숫자로 표현.

가장 단순한 회귀 손실 — Mean Squared Error (MSE):

MSE=1ni=1n(yiy^i)2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat y_i)^2

직관: 각 데이터의 예측 오차를 제곱하고 평균. 제곱하는 이유는 양수·음수 오차가 상쇄되지 않도록(절댓값 효과), 그리고 큰 오차에 더 큰 페널티를 주기 위해서입니다.

분류 손실 — Cross-Entropy:

CE=iyilogy^i \text{CE} = -\sum_i y_i \log \hat y_i

직관: 진짜 답( yi=1y_i = 1 )에 대해 모델이 낮은 확률( y^i\hat y_i )을 예측했으면 큰 손실. 모델이 자신 있게 틀리면 큰 페널티.

손실 함수 선택은 모델의 동작 자체를 결정합니다. 같은 피처·같은 아키텍처라도 손실 함수가 다르면 전혀 다른 모델이 됩니다. 자주 만나는 5가지:

MSE (Mean Squared Error) — 회귀의 표준. 큰 오차에 페널티 큼. outlier에 민감. LTV·매출 예측의 기본값이지만, 상위 5% 고가치 유저에 모델이 끌려가는 부작용 있음.

MAE (Mean Absolute Error) — 절대 오차의 평균. outlier에 강함. 매출 long-tail 데이터에서 MSE보다 안정적. "outlier 한 명이 모델을 망치지 않게" 하고 싶을 때.

Cross-Entropy — 분류의 표준. 다중 분류에도 자연스럽게 확장. 클릭·전환·이탈 예측의 운영 표준.

Huber Loss — MSE·MAE의 결합. 작은 오차는 MSE처럼, 큰 오차는 MAE처럼 처리. 운영 안정성이 좋음. outlier가 있지만 MSE 완전 포기가 아쉬울 때.

Focal Loss — 클래스 불균형 분류에 특화. 이미 잘 분류된 데이터의 가중치를 줄이고 어려운 소수 클래스에 집중. 이탈률 5% 같은 자리에서 Cross-Entropy보다 recall이 눈에 띄게 높아집니다.

손실 함수 가족 자주 쓰는 자리 특이점
MSE 회귀 LTV·매출 예측 outlier에 민감
MAE 회귀 outlier 큰 자리 미분 불연속(0)
Cross-Entropy 분류 이탈·클릭·전환 운영 표준
Huber 회귀 운영 안정성 δ 파라미터 조정 필요
Focal 분류 클래스 불균형 γ=2가 실용 기본값

3. Gradient Descent — 손실을 줄이는 방향

손실 함수가 정의되면 학습은 단순합니다 — 손실을 작게 하는 방향으로 파라미터 조정. 이 과정의 표준 도구가 gradient descent.

직관적 비유: 안개 낀 산에서 가장 낮은 자리로 내려가기. 발 끝에서 기울어진 방향(gradient)을 느끼고 그 방향으로 한 발씩.

수식으로:

θt+1=θtηθL \theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta L
  • θ\theta — 모델 파라미터
  • θL\nabla_\theta L — 손실 함수의 기울기(gradient)
  • η\eta — learning rate (한 발의 크기)

매 반복(epoch)마다 모든 데이터 또는 일부 데이터의 gradient 계산해 파라미터 업데이트. 손실이 충분히 작아지거나 더 안 줄어들면 멈춤.

3-1. Learning Rate의 운영적 의미

  • 너무 크면 — 한 발이 너무 커서 골짜기를 넘어갔다 와 (불안정)
  • 너무 작으면 — 학습이 너무 느림
  • 표준 — 0.001~0.01

운영자가 직접 만질 일은 적지만 모델 학습이 안 수렴할 때 첫 점검 자리.

3-2. Stochastic·Mini-batch

  • Stochastic GD — 한 데이터씩 업데이트 (빠르지만 노이지)
  • Batch GD — 모든 데이터 한 번에 (안정적이지만 느림)
  • Mini-batch GD — 32~256개씩 (운영 표준)

운영 환경의 ML 모델은 거의 다 mini-batch.

4. 학습 과정의 시각화

학습이 잘 되고 있는지의 표준 시각화 — Training Loss Curve.

  • 가로축 — epoch (학습 반복 횟수)
  • 세로축 — 손실 함수 값

좋은 학습:

  • 처음엔 빠르게 감소 (큰 패턴 학습)
  • 점점 평탄화 (디테일 학습)
  • 마지막엔 거의 평행 (수렴)

문제 패턴:

  • 줄지 않음 — learning rate 너무 작거나 모델 부적합
  • 흔들림 — learning rate 너무 큼
  • 처음엔 줄다가 다시 증가 — overfitting (다음 글)

python
Enter fullscreen mode Exit fullscreen mode

Top comments (0)