C.W.K.
Stream
Lesson 06 of 07 · published

Debugging 전략

~8 min · advanced

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

망가지면 거의 다섯 중 하나

학습이 망가질 땐 보통 쓸 만한 에러 메시지로 시끄럽게 터지는 게 아니라, loss 가 안 움직이거나 train-val 간극이 안 좁혀지면서 조용히 망가져. 기술은 *증상* 을 *원인* 으로 거꾸로 읽는 거야. 마주칠 것 대부분은 짧은 체크리스트에 들어와.

  • data sanity — label 매칭, normalization 범위, augmentation 이 깨뜨리는지. 1 batch 만 print 해 봐.
  • loss 매칭 — activation 과 짝 맞는지 (softmax 출력에 from_logits=True 쓰면 조용히 틀려).
  • learning rate — 너무 크면 NaN, 너무 작으면 정체.
  • vanishing / exploding gradient — layer 별 gradient norm 을 찍어보거나 NaN 감지 callback 으로 체크. exploding 이면 clipnorm 으로 막아.
  • overfitting — train ↓ val ↑ 면 augmentation / dropout / L2 추가.

먼저 tiny set 으로 overfit 시켜

scale 하기 전에 32 sample 로 100 epoch 돌려서 일부러 overfit 시켜 봐. 그것도 못 외우면 architecture 자체가 깨진 거야 — data 문제도, LR 문제도 아니고. 5 분짜리 sanity check 가 '왜 학습 안 돼요' 의 80% 를 먼저 걸러내.

Code

clipnorm gradient clipping 으로 NaN loss 막기·python
# Gradient clipping to prevent NaN
optimizer = keras.optimizers.Adam(
    learning_rate=1e-3,
    clipnorm=1.0,  # Clip gradient norm
)

External links

Exercise

동작하는 CIFAR-10 모델. 버그 3 개 (하나씩) 도입 — (a) label off-by-one, (b) loss/activation 불일치, (c) learning rate 100×. 각각 증상 메모 — failure mode library entry.

Progress

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

댓글 0

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

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