정규화 이론 (Regularization Theory)
난이도: 중급
선수 지식: 선형 모델 (Ridge, Lasso), 기초 최적화
관련 문서: 선형 모델 | 과적합과 과소적합 | 경사 하강법 | 손실 함수
핵심 요약: 모델이 훈련 데이터를 “외우지 못하게” 페널티(Penalty)를 주는 기법. 정규화(Regularization)는 가중치(Weight)를 작게 유지하거나, 뉴런(Neuron)을 무작위로 끄거나, 학습을 일찍 멈추는 등 다양한 방식으로 과적합(Overfitting)을 방지한다. 거의 모든 현대 ML 모델에 필수적으로 적용된다.
정규화(Regularization)는 모델의 과적합을 방지하기 위해 학습 과정에 제약 또는 페널티를 추가하는 기법의 총칭이다. 머신러닝에서 가장 중요한 개념 중 하나이며, 거의 모든 현대 모델에 어떤 형태로든 정규화가 적용된다.
정규화를 이해하는 다양한 관점:
- 베이지안 관점: 파라미터에 대한 사전분포 (MAP 추정)
- 빈도론적 관점: 가설 공간 제약, 유효 모델 복잡도 감소
- 편향-분산 관점: 편향을 약간 증가시켜 분산을 크게 감소
- 정보 이론적 관점: 모델 복잡도 페널티 (MDL 원리)
탄생 배경
섹션 제목: “탄생 배경”정규화의 역사는 통계학과 머신러닝의 발전과 궤를 같이 한다.
- 1970년, Hoerl & Kennard: Ridge 회귀(L2 정규화)를 제안했다. 다중공선성(Multicollinearity) 문제가 있는 회귀 분석에서 추정치가 불안정해지는 문제를 해결하기 위해, 가중치의 제곱합에 페널티를 부과하는 아이디어를 도입했다.
- 1996년, Robert Tibshirani: Lasso(L1 정규화)를 제안했다. Ridge와 달리 가중치를 정확히 0으로 만들 수 있어, 자동 특성 선택(Automatic Feature Selection)이 가능해졌다. 고차원 데이터 분석의 혁명적 도구가 되었다.
- 2010년대~현재: 딥러닝 시대에 접어들면서 정규화의 형태도 진화했다. Dropout(2014, Srivastava et al.), 배치 정규화(2015, Ioffe & Szegedy), AdamW(2019, Loshchilov & Hutter) 등 신경망에 특화된 정규화 기법들이 등장했고, SGD 자체의 암묵적 정규화(Implicit Regularization) 효과도 활발히 연구되고 있다.
비유: L2 = 속도 조절기, L1 = 엄격한 교사
섹션 제목: “비유: L2 = 속도 조절기, L1 = 엄격한 교사”두 가지 대표적 정규화를 직관적으로 이해하기 위한 비유:
- L2 정규화 = 자동차 속도 조절기(Speed Limiter): 극단적인 속도(큰 가중치)를 막아주지만, 완전히 정지시키지는 않는다. 모든 가중치를 부드럽게 축소하되, 어떤 가중치도 정확히 0이 되지 않는다. 도로 위의 모든 차가 적정 속도로 달리게 하는 것과 같다.
- L1 정규화 = 엄격한 교사(Strict Teacher): 성적이 일정 기준 이하인 학생에게는 아예 0점을 준다. 즉, 중요하지 않은 특성의 가중치를 완전히 0으로 만들어 “퇴출”시킨다. 정말 중요한 특성만 살아남아, 모델이 자연스럽게 희소해진다.
핵심 개념
섹션 제목: “핵심 개념”1. L2 정규화 (Ridge / Weight Decay)
섹션 제목: “1. L2 정규화 (Ridge / Weight Decay)”페널티
섹션 제목: “페널티”
최적화에 대한 효과
섹션 제목: “최적화에 대한 효과”기울기가 다음으로 변경:
각 업데이트에서 가중치가 배로 축소 —> 가중치 감쇠(weight decay)라는 이름의 유래
숫자로 이해하기
섹션 제목: “숫자로 이해하기”L2 정규화(Ridge)가 가중치를 어떻게 줄이는지 구체적으로 살펴보자.
정규화 전 학습된 계수(Coefficient):
L2 페널티(Penalty) 적용 후, 각 가중치가 비례적으로 축소된다:
| 가중치 | 정규화 전 | L2 적용 후 | 변화 |
|---|---|---|---|
| 5.2 | 2.1 | 큰 값이 크게 축소 | |
| -3.8 | -1.5 | 큰 값이 크게 축소 | |
| 0.1 | 0.08 | 작은 값은 거의 유지 |
핵심: L2는 모든 가중치를 0에 가깝게 만들지만, 완전히 0으로 만들지는 않는다. 반면 L1 정규화(Lasso)는 같은 상황에서 을 정확히 0으로 만들어 해당 특성(Feature)을 제거한다. 이것이 L1이 자동 특성 선택(Automatic Feature Selection)을 수행하는 이유이다.
가중치에 대한 효과
섹션 제목: “가중치에 대한 효과”- 모든 가중치를 비례적으로 축소
- 작은 가중치가 상대적으로 더 많이 축소됨
- 어떤 가중치도 정확히 0이 되지 않음
스펙트럼 관점
섹션 제목: “스펙트럼 관점”의 고유값을 매끄럽게 하여 역행렬 계산을 안정화:
이면 항상 역행렬이 존재 (다중공선성 해결)
베이지안 해석
섹션 제목: “베이지안 해석”가중치에 대한 가우시안 사전분포:
2. L1 정규화 (Lasso)
섹션 제목: “2. L1 정규화 (Lasso)”페널티
섹션 제목: “페널티”
핵심 특성: 희소성
섹션 제목: “핵심 특성: 희소성”- 근처에서 미분이 불연속 (준미분(subdifferential))
- 0 주변에 “죽은 영역(dead zone)” 생성: 기울기가 가중치를 정확히 0으로 밀어냄
- 근위 연산자(proximal operator) 관점: 소프트 임계값 처리(soft-thresholding)
- 자동 특성 선택: 불필요한 특성의 가중치가 0이 됨
- 해석 가능한 모델
베이지안 해석
섹션 제목: “베이지안 해석”가중치에 대한 라플라스 사전분포:
3. Elastic Net
섹션 제목: “3. Elastic Net”L1과 L2를 결합:
- 희소성 (L1) + 안정성 (L2)
- 상관된 특성 그룹을 함께 처리
- 자세한 내용은 선형 모델 참조
4. 드롭아웃 (Dropout)
섹션 제목: “4. 드롭아웃 (Dropout)”메커니즘
섹션 제목: “메커니즘”훈련 중 각 뉴런을 확률 로 무작위 비활성화:
(역 드롭아웃(inverted dropout) 방식: 훈련 중 스케일링)
| 관점 | 설명 |
|---|---|
| 앙상블 근사 | 개 서브네트워크의 근사 앙상블 |
| 정규화 | 뉴런 간 공적응(co-adaptation) 방지 |
| 노이즈 주입 | 훈련에 확률적 노이즈 추가 |
| 베이지안 | 근사 변분 추론 (Gal & Ghahramani, 2016) |
- DropConnect: 가중치를 비활성화 (뉴런 대신)
- Spatial Dropout: 채널 단위 드롭아웃 (CNN)
- DropBlock: 영역 단위 드롭아웃 (CNN)
5. 조기 종료 (Early Stopping)
섹션 제목: “5. 조기 종료 (Early Stopping)”메커니즘
섹션 제목: “메커니즘”- 검증 손실(validation loss)을 모니터링
- 검증 손실이 더 이상 감소하지 않으면 학습 중단
- 최저 검증 손실 시점의 모델 가중치를 복원
L2 정규화와의 동치성
섹션 제목: “L2 정규화와의 동치성”선형 모델에서 적절한 학습률로의 조기 종료는 L2 정규화와 수학적으로 동치이다. 학습 반복 횟수 .
실무 설정
섹션 제목: “실무 설정”- 인내심(patience): 검증 손실이 개선되지 않아도 기다리는 에폭 수
- 최소 변화량(min_delta): 개선으로 인정할 최소 변화량
- 최적 가중치 복원:
restore_best_weights=True
6. 데이터 증강 (Data Augmentation)
섹션 제목: “6. 데이터 증강 (Data Augmentation)”메커니즘
섹션 제목: “메커니즘”훈련 데이터의 변형된 복사본을 생성하여 효과적인 데이터셋 크기를 증가시킨다.
영역별 예시
섹션 제목: “영역별 예시”| 영역 | 기법 |
|---|---|
| 이미지 | 회전, 뒤집기, 자르기, 색상 조작, Mixup, CutMix, CutOut, AutoAugment |
| 텍스트 | 동의어 대체, 역번역(back-translation), 무작위 삽입/삭제 |
| 정형 데이터 | SMOTE (불균형용), 노이즈 주입 |
이론적 근거
섹션 제목: “이론적 근거”- 모델이 학습해야 할 불변성(invariance)을 암시적으로 인코딩
- 효과적인 훈련 세트 크기 증가 —> 분산 감소
7. 기타 정규화 기법
섹션 제목: “7. 기타 정규화 기법”배치 정규화 (Batch Normalization)
섹션 제목: “배치 정규화 (Batch Normalization)”- 각 레이어의 입력을 미니배치 통계로 정규화
- 내부 공변량 변화(internal covariate shift) 감소
- 암묵적 정규화 효과: 미니배치에 의한 노이즈가 정규화 역할
레이블 스무딩 (Label Smoothing)
섹션 제목: “레이블 스무딩 (Label Smoothing)”하드 레이블 을 소프트 레이블 로 대체:
- 모델의 과도한 확신(overconfidence) 방지
- 보정된 확률 추정
Mixup
섹션 제목: “Mixup”두 훈련 샘플의 선형 보간으로 새 샘플 생성:
- 결정 경계를 매끄럽게
- 분포 외 데이터에 대한 강건성 향상
| 기법 | 설명 |
|---|---|
| 가중치 제약 (Weight Constraint) | 로 클리핑 |
| 노이즈 주입 (Noise Injection) | 입력, 가중치, 기울기에 노이즈 추가 |
| Max-Norm Regularization | 가중치 노름의 상한 제약 |
상세 비교표
섹션 제목: “상세 비교표”| 방법 | 유형 | 제약 대상 | 적용 시기 |
|---|---|---|---|
| L2 (Ridge) | 명시적 | 가중치 크기 | 대부분의 모델에 기본 |
| L1 (Lasso) | 명시적 | 가중치 희소성 | 특성 선택 필요 시 |
| Dropout | 확률적 | 뉴런 공적응 | 신경망 |
| 조기 종료 | 암묵적 | 학습 반복 수 | 모든 반복 학습 |
| 데이터 증강 | 암묵적 | 효과적 데이터 크기 | 데이터 부족 시 |
| 배치 정규화 | 암묵적 | 내부 분포 | 심층 신경망 |
| 레이블 스무딩 | 명시적 | 출력 확신도 | 분류 모델 |
언제 사용하는가
섹션 제목: “언제 사용하는가”| 상황 | 추천 정규화 |
|---|---|
| 기본 설정 (대부분의 경우) | L2 정규화 |
| 특성 선택이 필요한 경우 | L1 또는 Elastic Net |
| 신경망 학습 | Dropout + 조기 종료 |
| 데이터가 부족한 경우 | 데이터 증강 + 강한 정규화 |
| 심층 네트워크 | 배치 정규화 + Dropout |
| 분류 보정이 필요한 경우 | 레이블 스무딩 |
| Transformer 모델 | AdamW (Weight Decay) + Dropout |
실전 사례: Netflix Prize와 정규화
섹션 제목: “실전 사례: Netflix Prize와 정규화”2006~2009년에 진행된 Netflix Prize 대회는 정규화의 중요성을 실무적으로 입증한 대표적 사례이다.
Netflix는 사용자 영화 평점 데이터 약 1억 개를 공개하고, 자사 추천 시스템(Cinematch)보다 10% 이상 정확한 모델을 만든 팀에게 100만 달러를 수여하겠다고 발표했다. 이 대회에서 핵심 교훈은 다음과 같다:
- 대규모 데이터에서도 과적합은 발생한다: 1억 개의 평점이라는 방대한 데이터에도 불구하고, 정규화 없이 행렬 분해(Matrix Factorization) 모델을 학습하면 과적합이 심각하게 나타났다. 사용자-영화 행렬이 매우 희소(Sparse)했기 때문이다.
- L2 정규화의 결정적 역할: 우승팀(BellKor’s Pragmatic Chaos)을 포함한 상위 팀들은 모두 강한 L2 정규화를 적용했다. 잠재 요인(Latent Factor)의 크기를 제한함으로써, 관측되지 않은 사용자-영화 조합에 대한 예측이 안정화되었다.
- 정규화 강도의 미세 조정: 정규화 파라미터 의 값을 0.001 단위로 조정하는 것만으로도 RMSE(Root Mean Square Error)가 유의미하게 변했다. 교차 검증을 통한 체계적인 선택이 성능 차이의 핵심이었다.
이 사례는 “데이터가 충분히 많으면 정규화가 필요 없다”는 흔한 오해를 반증한다. 데이터의 양이 아니라 모델 복잡도 대비 데이터의 정보량이 정규화 필요성을 결정한다.
흔한 오해와 함정
섹션 제목: “흔한 오해와 함정”1. “정규화는 항상 도움이 된다”
섹션 제목: “1. “정규화는 항상 도움이 된다””- 이미 과소적합(underfitting)인 모델에 정규화를 추가하면 성능이 더 나빠진다. 정규화의 강도를 적절히 조절해야 한다.
2. “L2 정규화와 Weight Decay는 같다”
섹션 제목: “2. “L2 정규화와 Weight Decay는 같다””- SGD에서는 동치이지만, Adam에서는 다르다. AdamW가 올바른 weight decay 구현이다 (Loshchilov & Hutter, 2019).
3. “Dropout rate는 항상 0.5가 좋다”
섹션 제목: “3. “Dropout rate는 항상 0.5가 좋다””- 레이어와 모델에 따라 다르다. 은닉층에서는 0.2
0.5, 입력층에서는 0.10.2가 일반적이다.
4. “배치 정규화는 정규화를 위한 것이다”
섹션 제목: “4. “배치 정규화는 정규화를 위한 것이다””- 배치 정규화의 원래 목적은 학습 안정화이며, 정규화 효과는 부수적이다. 드롭아웃과 함께 사용하면 충돌할 수 있다.
5. “조기 종료만 쓰면 된다”
섹션 제목: “5. “조기 종료만 쓰면 된다””- 조기 종료는 유용하지만, 다른 정규화 기법과 함께 사용할 때 가장 효과적이다.
다른 주제와의 연결
섹션 제목: “다른 주제와의 연결”- 선형 모델: Ridge, Lasso, Elastic Net의 상세 구현
- 과적합과 과소적합: 정규화의 목적과 효과
- 경사 하강법: AdamW와 weight decay
- 손실 함수: 정규화 항이 포함된 목적 함수
- VC 차원: 정규화는 효과적 VC 차원을 줄임
- 오컴의 면도날: 정규화 = 단순한 모델 선호
자주 묻는 면접 질문
섹션 제목: “자주 묻는 면접 질문”-
L1 정규화가 희소성을 만드는 이유는?
- L1 페널티의 기울기가 0 근처에서 불연속이며, 소프트 임계값 처리로 작은 가중치가 정확히 0이 됨. 기하학적으로 L1 ball의 꼭짓점에서 해가 만들어짐.
-
조기 종료가 L2 정규화와 동치인 이유는?
- 선형 모델에서 경사 하강 반복 횟수가 유효 정규화 강도의 역수 역할. 적게 학습 = 가중치가 작게 = L2 페널티와 유사 효과.
-
드롭아웃이 앙상블과 유사한 이유는?
- 각 미니배치에서 다른 서브네트워크가 학습되므로, 개 서브네트워크의 가중 평균에 근사
-
데이터 증강이 정규화인 이유는?
- 모델이 학습해야 할 불변성을 인코딩하여 가설 공간을 제약하고, 효과적 데이터 크기를 늘려 분산을 줄이기 때문
코드 예시
섹션 제목: “코드 예시”import torchimport torch.nn as nnfrom torch.optim import AdamW
# L2 정규화 (PyTorch의 weight_decay)optimizer = AdamW(model.parameters(), lr=0.001, weight_decay=0.01)
# Dropoutclass MyModel(nn.Module): def __init__(self): super().__init__() self.layers = nn.Sequential( nn.Linear(100, 256), nn.ReLU(), nn.Dropout(0.3), # 30% 드롭아웃 nn.Linear(256, 128), nn.ReLU(), nn.Dropout(0.3), nn.Linear(128, 10) )
def forward(self, x): return self.layers(x)
# 조기 종료 (수동 구현)best_val_loss = float('inf')patience_counter = 0patience = 10
for epoch in range(max_epochs): train_loss = train_one_epoch(model, train_loader, optimizer) val_loss = evaluate(model, val_loader)
if val_loss < best_val_loss: best_val_loss = val_loss patience_counter = 0 torch.save(model.state_dict(), 'best_model.pt') else: patience_counter += 1 if patience_counter >= patience: print(f"Early stopping at epoch {epoch}") model.load_state_dict(torch.load('best_model.pt')) break
# 레이블 스무딩criterion = nn.CrossEntropyLoss(label_smoothing=0.1)용어 정리
섹션 제목: “용어 정리”| 영어 | 한국어 |
|---|---|
| Regularization | 정규화 |
| Weight Decay | 가중치 감쇠 |
| Dropout | 드롭아웃 |
| Early Stopping | 조기 종료 |
| Data Augmentation | 데이터 증강 |
| Batch Normalization | 배치 정규화 |
| Label Smoothing | 레이블 스무딩 |
| Sparsity | 희소성 |
| Soft-thresholding | 소프트 임계값 처리 |
| Co-adaptation | 공적응 |
| Proximal Operator | 근위 연산자 |
참고 자료
섹션 제목: “참고 자료”- Goodfellow, Bengio, Courville (2016) - Deep Learning (Ch. 7: Regularization)
- Srivastava et al. (2014) - “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”
- Gal & Ghahramani (2016) - “Dropout as a Bayesian Approximation”
- Loshchilov & Hutter (2019) - “Decoupled Weight Decay Regularization” (AdamW)
- Zhang, Bengio, Hardt, Recht, Vinyals (2017) - “Understanding deep learning requires rethinking generalization”