본문 바로가기
C.W.K.
Stream
Lesson 06 of 07 · published

디버깅 전략

~8 min · advanced

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

조용한 실패는 대개 다섯 범주 안에 있어

학습 실패는 유용한 오류 메시지로 터지기보다 손실이 움직이지 않거나 학습·검증 간격이 줄지 않는 형태로 숨어 나타나. 증상에서 원인을 거꾸로 좁히는 습관이 필요해. 대부분은 다음 점검표에 들어와.

  • 자료 건전성 — 레이블 대응, 정규화 범위, 이미지 증강이 의미를 깨는지 확인하고 배치 하나를 직접 출력해 봐.
  • 손실 함수 대응 — 활성화와 손실이 맞는지 확인해. softmax 출력에 from_logits=True를 쓰면 조용히 잘못돼.
  • 학습률 — 너무 크면 NaN이 생기고 너무 작으면 학습이 정체돼.
  • 그래디언트 소실과 폭주 — 레이어별 그래디언트 노름이나 NaN 감지 콜백을 확인하고, 폭주할 때는 clipnorm을 사용해.
  • 과적합 — 학습 손실은 내려가고 검증 손실은 오르면 이미지 증강, Dropout, L2 규제를 추가해.

먼저 아주 작은 자료를 외우게 해

규모를 키우기 전에 표본 32개로 100에포크 학습해 일부러 과적합시켜 봐. 이 작은 자료조차 외우지 못하면 모델 구조나 학습 설정이 깨졌을 가능성이 커. 5분짜리 건전성 검사가 '왜 학습되지 않지?' 문제의 80%를 일찍 걸러내.

Code

clipnorm 그래디언트 클리핑으로 NaN 손실 막기·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 모델에 세 오류를 하나씩 넣어 봐: 레이블 색인 1칸 어긋남, 손실 함수와 활성화 불일치, 학습률 100배 증가. 각 증상을 기록해 실패 유형 자료집의 항목으로 만들어.

Progress

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

댓글 0

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

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