C.W.K.
Stream
Lesson 02 of 10 · published

Loss Curve 읽기

~18 min · debugging, loss-curves

Level 0Curious
0 XP0/73 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

Loss curve 는 장식이 아니라 진단

좋은 loss curve plot 은 보는 첫 30 초에 training 의 뭐가 잘못됐는지 알려줘. Junior engineer 는 loss 를 장식으로 그려, senior engineer 는 청진기처럼 읽어. 각 모양이 뭘 의미하는지 배우는 시간 써.

흔한 8 모양

  • 둘 다 초기값에 flat — model 이 아예 학습 안 함. Loss function, data normalization, learning rate 확인.
  • 둘 다 부드럽게 같이 떨어짐 — 건강한 training. 계속 가.
  • Train 떨어지는데 val 어느 점 후 올라감 — classic overfitting. Regularize 또는 early stop.
  • Train 과 val 둘 다 떨어지다가 plateau — converge. 더 큰 model 또는 다른 architecture 시도.
  • Loss 가 NaN 으로 explode — exploding gradient 또는 numerical 문제. Clipping 추가, lr 낮추기, div-by-zero 체크.
  • Loss 가 wildly zig-zag — learning rate 너무 높거나 batch size 너무 작음. 하나 또는 둘 다 낮추기.
  • Val loss 가 주기적으로 spike — 보통 evaluation noise, 가끔 val set data 손상.
  • Train loss 가 val loss 보다 높음 — 보통 dropout 이 train 에 on, eval 에 off (정상), 또는 loss 가 mode 마다 다른 reduction.
팁: Training 시작 전에 loss curve 모양 어떨지 한 문장 print. Training 후 비교. Mismatch 가 metric 자체보다 더 informative 자주.

Smoothing 중요

Step 당 training loss 는 noisy. Raw 값 위에 smoothed running average (α=0.99 EMA OK) 를 overlay. Validation loss 는 epoch 당 한 번, raw 그리기.

원칙: Loss curve 가 본인의 가장 싼 디버깅 도구. Curve 못 읽으면 model tune 못 해. 모양에 일찍 fluent 해져.

Code

EMA smoothing for noisy training loss·python
def ema_smooth(values, alpha=0.99):
    out, ema = [], None
    for v in values:
        ema = v if ema is None else alpha * ema + (1 - alpha) * v
        out.append(ema)
    return out

import matplotlib.pyplot as plt
plt.plot(train_losses, alpha=0.3, label="train (raw)")
plt.plot(ema_smooth(train_losses, 0.99), label="train (EMA 0.99)")
plt.plot(val_steps, val_losses, label="val", marker="o")
plt.legend(); plt.show()

External links

Exercise

마지막 training run 가져와. Train 과 val loss 를 smoothing 으로 그려. 위 8 모양 중 어느 거에 닮았는지 식별. 다음 어떤 knob 을 tune 할지 한 문장으로 적어, 왜인지도.

Progress

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

댓글 0

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

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