콘텐츠로 이동

정규화 이론 (Regularization Theory)

난이도: 중급
선수 지식: 선형 모델 (Ridge, Lasso), 기초 최적화
관련 문서: 선형 모델 | 과적합과 과소적합 | 경사 하강법 | 손실 함수


개요

정규화(Regularization)는 모델의 과적합을 방지하기 위해 학습 과정에 제약 또는 페널티를 추가하는 기법의 총칭이다. 머신러닝에서 가장 중요한 개념 중 하나이며, 거의 모든 현대 모델에 어떤 형태로든 정규화가 적용된다.

정규화를 이해하는 다양한 관점: - 베이지안 관점: 파라미터에 대한 사전분포 (MAP 추정) - 빈도론적 관점: 가설 공간 제약, 유효 모델 복잡도 감소 - 편향-분산 관점: 편향을 약간 증가시켜 분산을 크게 감소 - 정보 이론적 관점: 모델 복잡도 페널티 (MDL 원리)


핵심 개념

1. L2 정규화 (Ridge / Weight Decay)

페널티

\[\lambda\|\mathbf{w}\|_2^2 = \lambda\sum_{i} w_i^2\]

최적화에 대한 효과

기울기가 다음으로 변경:

\[\nabla L_{\text{reg}} = \nabla L + 2\lambda\mathbf{w}\]

각 업데이트에서 가중치가 \((1 - 2\lambda\eta)\) 배로 축소 --> 가중치 감쇠(weight decay)라는 이름의 유래

가중치에 대한 효과

  • 모든 가중치를 비례적으로 축소
  • 작은 가중치가 상대적으로 더 많이 축소됨
  • 어떤 가중치도 정확히 0이 되지 않음

스펙트럼 관점

\(\mathbf{X}^T\mathbf{X}\)의 고유값을 매끄럽게 하여 역행렬 계산을 안정화:

\[(\mathbf{X}^T\mathbf{X} + \lambda\mathbf{I})^{-1}\]

\(\lambda > 0\)이면 항상 역행렬이 존재 (다중공선성 해결)

베이지안 해석

가중치에 대한 가우시안 사전분포: \(\mathbf{w} \sim \mathcal{N}(0, \frac{1}{2\lambda}\mathbf{I})\)


2. L1 정규화 (Lasso)

페널티

\[\lambda\|\mathbf{w}\|_1 = \lambda\sum_{i} |w_i|\]

핵심 특성: 희소성

  • \(w_i = 0\) 근처에서 미분이 불연속 (준미분(subdifferential))
  • 0 주변에 "죽은 영역(dead zone)" 생성: 기울기가 가중치를 정확히 0으로 밀어냄
  • 근위 연산자(proximal operator) 관점: 소프트 임계값 처리(soft-thresholding)
\[\text{prox}_{\lambda}(w) = \text{sign}(w)\max(|w| - \lambda, 0)\]

결과

  • 자동 특성 선택: 불필요한 특성의 가중치가 0이 됨
  • 해석 가능한 모델

베이지안 해석

가중치에 대한 라플라스 사전분포: \(P(w_i) \propto \exp(-\lambda|w_i|)\)


3. Elastic Net

L1과 L2를 결합:

\[\lambda_1\|\mathbf{w}\|_1 + \lambda_2\|\mathbf{w}\|_2^2\]
  • 희소성 (L1) + 안정성 (L2)
  • 상관된 특성 그룹을 함께 처리
  • 자세한 내용은 선형 모델 참조

4. 드롭아웃 (Dropout)

메커니즘

훈련 중 각 뉴런을 확률 \(p\)무작위 비활성화:

\[\tilde{h}_i = \begin{cases} 0 & \text{확률 } p \\ h_i / (1-p) & \text{확률 } 1-p \end{cases}\]

(역 드롭아웃(inverted dropout) 방식: 훈련 중 스케일링)

해석

관점 설명
앙상블 근사 \(2^n\)개 서브네트워크의 근사 앙상블
정규화 뉴런 간 공적응(co-adaptation) 방지
노이즈 주입 훈련에 확률적 노이즈 추가
베이지안 근사 변분 추론 (Gal & Ghahramani, 2016)

변형

  • DropConnect: 가중치를 비활성화 (뉴런 대신)
  • Spatial Dropout: 채널 단위 드롭아웃 (CNN)
  • DropBlock: 영역 단위 드롭아웃 (CNN)

5. 조기 종료 (Early Stopping)

메커니즘

  1. 검증 손실(validation loss)을 모니터링
  2. 검증 손실이 더 이상 감소하지 않으면 학습 중단
  3. 최저 검증 손실 시점의 모델 가중치를 복원
graph LR
    subgraph "학습 곡선"
        A["훈련 시작"] --> B["훈련 손실 ↓<br/>검증 손실 ↓"]
        B --> C["최적 지점<br/>(조기 종료)"]
        C --> D["훈련 손실 ↓<br/>검증 손실 ↑<br/>(과적합 시작)"]
    end

L2 정규화와의 동치성

선형 모델에서 적절한 학습률로의 조기 종료는 L2 정규화와 수학적으로 동치이다. 학습 반복 횟수 \(\propto 1/\lambda\).

실무 설정

  • 인내심(patience): 검증 손실이 개선되지 않아도 기다리는 에폭 수
  • 최소 변화량(min_delta): 개선으로 인정할 최소 변화량
  • 최적 가중치 복원: restore_best_weights=True

6. 데이터 증강 (Data Augmentation)

메커니즘

훈련 데이터의 변형된 복사본을 생성하여 효과적인 데이터셋 크기를 증가시킨다.

영역별 예시

영역 기법
이미지 회전, 뒤집기, 자르기, 색상 조작, Mixup, CutMix, CutOut, AutoAugment
텍스트 동의어 대체, 역번역(back-translation), 무작위 삽입/삭제
정형 데이터 SMOTE (불균형용), 노이즈 주입

이론적 근거

  • 모델이 학습해야 할 불변성(invariance)을 암시적으로 인코딩
  • 효과적인 훈련 세트 크기 증가 --> 분산 감소

7. 기타 정규화 기법

배치 정규화 (Batch Normalization)

  • 각 레이어의 입력을 미니배치 통계로 정규화
  • 내부 공변량 변화(internal covariate shift) 감소
  • 암묵적 정규화 효과: 미니배치에 의한 노이즈가 정규화 역할

레이블 스무딩 (Label Smoothing)

하드 레이블 \((1, 0, 0, ...)\)을 소프트 레이블 \((1-\alpha, \alpha/(K-1), ...)\)로 대체:

  • 모델의 과도한 확신(overconfidence) 방지
  • 보정된 확률 추정

Mixup

두 훈련 샘플의 선형 보간으로 새 샘플 생성:

\[\tilde{x} = \lambda x_i + (1-\lambda)x_j, \quad \tilde{y} = \lambda y_i + (1-\lambda)y_j\]
  • 결정 경계를 매끄럽게
  • 분포 외 데이터에 대한 강건성 향상

기타

기법 설명
가중치 제약 (Weight Constraint) \(\|\mathbf{w}\| \le c\) 로 클리핑
노이즈 주입 (Noise Injection) 입력, 가중치, 기울기에 노이즈 추가
Max-Norm Regularization 가중치 노름의 상한 제약

상세 비교표

방법 유형 제약 대상 적용 시기
L2 (Ridge) 명시적 가중치 크기 대부분의 모델에 기본
L1 (Lasso) 명시적 가중치 희소성 특성 선택 필요 시
Dropout 확률적 뉴런 공적응 신경망
조기 종료 암묵적 학습 반복 수 모든 반복 학습
데이터 증강 암묵적 효과적 데이터 크기 데이터 부족 시
배치 정규화 암묵적 내부 분포 심층 신경망
레이블 스무딩 명시적 출력 확신도 분류 모델

언제 사용하는가

상황 추천 정규화
기본 설정 (대부분의 경우) L2 정규화
특성 선택이 필요한 경우 L1 또는 Elastic Net
신경망 학습 Dropout + 조기 종료
데이터가 부족한 경우 데이터 증강 + 강한 정규화
심층 네트워크 배치 정규화 + Dropout
분류 보정이 필요한 경우 레이블 스무딩
Transformer 모델 AdamW (Weight Decay) + Dropout

흔한 오해와 함정

1. "정규화는 항상 도움이 된다"

  • 이미 과소적합(underfitting)인 모델에 정규화를 추가하면 성능이 더 나빠진다. 정규화의 강도를 적절히 조절해야 한다.

2. "L2 정규화와 Weight Decay는 같다"

  • SGD에서는 동치이지만, Adam에서는 다르다. AdamW가 올바른 weight decay 구현이다 (Loshchilov & Hutter, 2019).

3. "Dropout rate는 항상 0.5가 좋다"

  • 레이어와 모델에 따라 다르다. 은닉층에서는 0.2~0.5, 입력층에서는 0.1~0.2가 일반적이다.

4. "배치 정규화는 정규화를 위한 것이다"

  • 배치 정규화의 원래 목적은 학습 안정화이며, 정규화 효과는 부수적이다. 드롭아웃과 함께 사용하면 충돌할 수 있다.

5. "조기 종료만 쓰면 된다"

  • 조기 종료는 유용하지만, 다른 정규화 기법과 함께 사용할 때 가장 효과적이다.

다른 주제와의 연결


자주 묻는 면접 질문

  1. L1 정규화가 희소성을 만드는 이유는?
  2. L1 페널티의 기울기가 0 근처에서 불연속이며, 소프트 임계값 처리로 작은 가중치가 정확히 0이 됨. 기하학적으로 L1 ball의 꼭짓점에서 해가 만들어짐.

  3. 조기 종료가 L2 정규화와 동치인 이유는?

  4. 선형 모델에서 경사 하강 반복 횟수가 유효 정규화 강도의 역수 역할. 적게 학습 = 가중치가 작게 = L2 페널티와 유사 효과.

  5. 드롭아웃이 앙상블과 유사한 이유는?

  6. 각 미니배치에서 다른 서브네트워크가 학습되므로, \(2^n\)개 서브네트워크의 가중 평균에 근사

  7. 데이터 증강이 정규화인 이유는?

  8. 모델이 학습해야 할 불변성을 인코딩하여 가설 공간을 제약하고, 효과적 데이터 크기를 늘려 분산을 줄이기 때문

코드 예시

import torch
import torch.nn as nn
from torch.optim import AdamW

# L2 정규화 (PyTorch의 weight_decay)
optimizer = AdamW(model.parameters(), lr=0.001, weight_decay=0.01)

# Dropout
class 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 = 0
patience = 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"