오늘 끝나면

정규화

  • 정규화의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 정규화이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

Dropout·BatchNorm·초기화 — 딥러닝이 드디어 ‘잘 되기’ 시작한 이유 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

AI · Day 4 / 지도학습 · 생성 DL

정규화

손실도 옵티마이저도 골랐는데 학습이 안 됨. 범인은 대개 숫자의 스케일임. 자릿수만 맞춰도 풀림.

P.01AI · Day 4

자릿수가 다르면 학습이 흔들린다

집값 예측 예시. 입력은 방 개수(2~5) 면적(50~200)임. 한쪽은 한 자리, 한쪽은 세 자리임.

그럼 손실 지형이 길쭉한 골짜기로 찌그러짐. 한 방향은 가파르고 한 방향은 완만함. 경사하강이 벽을 지그재그로 튕기며 내려감. 학습률 조금만 키워도 발산함.

왜 그럼? 가중치 갱신량이 입력 크기에 비례해서임. 자릿수를 맞추면 지형이 둥근 그릇에 가까워짐. 같은 학습률로도 곧장 바닥으로 감.

입력 스케일 · 손실 지형의 변형
정규화 Lab · 스케일이 손실 지형을 찌그러뜨린다
지형 종횡비 6.0:1
step 0
w1
-2.00
w2
2.50
손실 L
0.000
길쭉한 골짜기 — 벽을 지그재그로 튕김
재생을 눌러 굴려 보자
P.02AI · Day 4

평균 0, 분산 1로 줄 세우기

가장 기본은 표준화(standardization)임. 각 특징에서 평균 빼고 표준편차로 나눔.

수식은 한 줄임. z = (x − μ) / σ. 그럼 모든 특징이 평균 0, 분산 1이라는 같은 운동장에 섬. 면적이든 방 개수든 같은 자로 잰 값이 됨.

한 가지 함정

μσ는 반드시 학습 데이터로만 구해야 함.

테스트 통계까지 끌어다 쓰면 미래 정보가 새는 데이터 누수가 됨. 학습에서 구한 값을 테스트에 그대로 적용하면 됨.

표준화 · z = (x − μ) / σ
원본 xz=(x−μ)/σ평균 0 · 분산 1

치우치고 길쭉한 분포를 원점 둘레로 다시 세움

P.03AI · Day 4

이제 층 안쪽까지 정규화한다

입력만 맞추면 끝? 아님. 깊은 망에서는 중간 층 분포가 학습 중에 계속 출렁임. 앞 층이 바뀌면 뒤 층이 보는 입력 분포도 바뀜.

그래서 2015년 배치 정규화(BatchNorm)가 나옴. 층 출력을 미니배치 단위로 표준화함. 그다음 학습 가능한 γ(스케일)와 β(이동)로 다시 풀어줌. 정규화하되 표현력은 안 잃음.

효과 큼. 큰 학습률 써도 안정적임. 수렴 빨라짐. 약한 규제 효과까지 따라옴. 오른쪽이 핵심 4줄임.

배치 정규화 · 미니배치 통계
mu  = x.mean(axis=0)      # 배치 평균
var = x.var(axis=0)       # 배치 분산
x_hat = (x - mu) / sqrt(var + eps)
y = gamma * x_hat + beta  # 다시 스케일·이동
층 출력 x표준화γ·x̂ + βy

정규화하되 γ·β로 표현력은 되돌려 줌

P.04AI · Day 4

배치냐, 층이냐 — 상황이 답을 정한다

정규화는 종류 많음. 핵심은 무엇을 기준으로 평균을 내느냐임.

BatchNorm은 배치 축으로 평균을 냄. 배치 작으면 통계가 흔들려 불안정함.

LayerNorm은 한 샘플 안 특징들로 평균을 냄. 배치 크기와 무관함. 그래서 시퀀스 길이가 제각각인 트랜스포머는 LayerNorm을 씀.

실무 감각

  • 이미지 CNN, 배치 충분 → BatchNorm
  • 트랜스포머·RNN, 배치 1~수개 → LayerNorm
  • 스타일 변환·생성 → InstanceNorm 계열
정규화 기법 비교표
기법평균 기준주 용도
BatchNorm배치 축CNN
LayerNorm특징 축트랜스포머
InstanceNorm채널별생성·스타일
GroupNorm그룹별작은 배치

배치 크기에 의존해서 BatchNorm은 불안정해짐

P.05AI · Day 4

작은 줄 세우기가 만드는 큰 차이

현장에서 “모델은 좋은데 학습이 안 돼요”라는 말 많음. 열에 일곱은 정규화 누락이 원인임.

제조 센서 데이터 보면 온도(수십)·압력(수천)·진동(소수점)이 한 테이블에 섞여 있음. 그대로 넣으면 모델은 압력만 보고 진동은 무시함. 표준화 한 줄이 숨은 신호를 살림.

Q. BatchNorm 추론할 때 배치 통계를 그대로 씀?아님. 추론은 보통 한 건씩 들어와서 배치 통계가 의미 없음. 학습 중에 모아둔 이동평균 μ, σ를 고정해 씀. 그래서 코드에서 model.eval()을 꼭 호출해야 함.
현장 체크리스트
정규화 체크리스트
  • μ, σ는 학습 데이터로만 계산했음?
  • 같은 통계를 테스트·운영에도 그대로 적용했음?
  • 스케일 다른 특징을 한 테이블에 안 섞었음?
  • 추론 전 model.eval() 호출했음?
  • 트랜스포머면 BatchNorm 말고 LayerNorm 맞음?
다섯 줄 점검이 학습 실패의 70%를 막음

3줄 요약

  1. 1Dropout·BatchNorm·초기화 — 딥러닝이 드디어 ‘잘 되기’ 시작한 이유
  2. 2정규화은 준비운동 → 지도학습 → 시퀀스 → 생성모델 → 실무 적용 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

정규화

Dropout·BatchNorm·초기화 — 딥러닝이 드디어 ‘잘 되기’ 시작한 이유

모델

입력을 받아 예측이나 출력을 만드는 계산 규칙

손실

예측이 정답에서 얼마나 빗나갔는지 재는 숫자