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

Neural Network 의 Overfitting

~18 min · overfitting, generalization, capacity

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

Overfitting 의 실제 모양

Overfitting 은 training loss 가 계속 내려가는데 validation loss 가 올라가기 시작하는 것. Model 이 held-out data 에 transfer 안 되는 training set 특정 패턴을 외우는 거야. 큰 neural network 는 pure noise 도 fit 가능 (Zhang et al., 2017) — capacity 는 거의 bottleneck 아냐. Art 는 model 정직하게 유지하는 거.

Loss curve 그림에서 읽어야 할 신호 3 개: (1) train 과 val loss 사이 gap, (2) gap 열린 후 val loss 의 slope, (3) gap 이 epoch 1 에 나타나는지 (data leak / regularization 없음) epoch 30 에 나타나는지 (capacity 가 dataset size 따라잡음).

팁: Train 과 val loss 를 step 0 부터 같은 axis 에 그려. Gap 모양이 뭘 fix 할지 알려줘: epoch 1 부터 거대한 gap = leak 또는 capacity 과잉, epoch 20 후 자라는 gap = regularization 더, gap 없고 loss 높음 = underfitting / 잘못된 architecture.

표준 regularization toolbox

  • Weight decay (L2 / AdamW) — 큰 weight penalize, 가장 싼 default.
  • Dropout — training 중 random unit zero, gradient noise 부드럽게.
  • Data augmentation — training set synthetically 확장 (있을 때 가장 leverage 높은 수).
  • Early stopping — val loss 개선 멈추면 training stop.
  • Smaller model — 가끔 올바른 답.

'그냥 data 더 줘' 답

Overfitting 의 가장 신뢰할 수 있는 약은 더 (좋은) data. Augmentation 이 싼 버전. 관련 도메인에 pretraining 이 중간 버전. 어려운 example label 하는 active learning 이 비싼 버전. 셋 다 영리한 regularizer 보다 이김.

원칙: Overfitting 은 modeling 문제로 변장한 data 문제. 더 (좋은) data 부터 reach. Regularization knob 이 둘째. Model shrink 는 둘 다 실패할 때만.

Code

Diagnose overfitting from a loss curve·python
import matplotlib.pyplot as plt

train_losses = []   # one per step
val_losses   = []   # one per epoch
val_steps    = []   # the step at which each val_loss was measured

# ... after training ...
plt.plot(range(len(train_losses)), train_losses, label="train", alpha=0.5)
plt.plot(val_steps, val_losses, label="val", marker="o")
plt.xlabel("step"); plt.ylabel("loss"); plt.legend(); plt.show()
# Read the shape:
# - val rising while train falling -> overfitting, regularize or stop
# - both flat and high -> underfitting, more capacity / longer schedule
# - both falling, modest gap -> healthy

External links

Exercise

같은 task 에 model 두 개 train: 하나 weight_decay=0 dropout=0, 다른 하나 weight_decay=0.01 dropout=0.1. 같은 chart 에 train 과 val loss 그려. Val curve 가 언제 (그리고 갈라지는지) 봐.

Progress

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

댓글 0

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

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