정규화 이론 (Regularization Theory)
난이도: 중급
선수 지식: 선형 모델 (Ridge, Lasso), 기초 최적화
관련 문서: 선형 모델 | 과적합과 과소적합 | 경사 하강법 | 손실 함수
핵심 요약: 모델이 훈련 데이터를 “외우지 못하게” 페널티(Penalty)를 주는 기법. 정규화(Regularization)는 가중치(Weight)를 작게 유지하거나, 뉴런(Neuron)을 무작위로 끄거나, 학습을 일찍 멈추는 등 다양한 방식으로 과적합(Overfitting)을 방지한다. 거의 모든 현대 ML 모델에 필수적으로 적용된다.
초보자를 위한 핵심 용어
섹션 제목: “초보자를 위한 핵심 용어”- 정규화(Regularization): 모델이 훈련 데이터를 너무 완벽하게 외우지 못하도록 제약을 거는 모든 기법.
- L2 (Ridge): 가중치 제곱합에 벌점. 모든 가중치를 같은 비율로 작게 만들지만 0으로 만들지는 않는다.
- L1 (Lasso): 가중치 절댓값 합에 벌점. 일부 가중치를 정확히 0으로 만들어 특성을 자동 선택한다.
- 드롭아웃(Dropout): 학습 중 뉴런 일부를 무작위로 꺼서, 특정 뉴런에만 의존하지 못하게 하는 기법.
- 조기 종료(Early Stopping): 검증 성능이 나빠지기 시작하면 학습을 멈추는 것. 가장 간단하면서 효과적인 정규화다.
정규화(Regularization)는 모델의 과적합을 방지하기 위해 학습 과정에 제약 또는 페널티를 추가하는 기법의 총칭이다. 머신러닝에서 가장 중요한 개념 중 하나이며, 거의 모든 현대 모델에 어떤 형태로든 정규화가 적용된다.
정규화를 이해하는 다양한 관점:
- 베이지안 관점: 파라미터에 대한 사전분포 (MAP 추정)
- 빈도론적 관점: 가설 공간 제약, 유효 모델 복잡도 감소
- 편향-분산 관점: 편향을 약간 증가시켜 분산을 크게 감소
- 정보 이론적 관점: 모델 복잡도 페널티 (MDL 원리)
비유: 정규화는 학생에게 요약 노트만 들고 시험 보게 하는 것이다. 교과서를 통째로 들고 가면 아는 문제는 다 맞히지만, 정작 이해한 것은 없어서 조금만 비틀린 문제가 나오면 무너진다. 한 장짜리 요약만 허용하면 학생은 정말 중요한 것만 추려낼 수밖에 없고, 그 과정에서 원리를 익힌다. L1은 항목을 아예 지워버리는 요약이고, L2는 모든 항목을 조금씩 줄여 쓰는 요약이다.
탄생 배경
섹션 제목: “탄생 배경”정규화의 역사는 통계학과 머신러닝의 발전과 궤를 같이 한다.
- 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 | 3.47 | 같은 비율로 축소 — 절대 감소폭이 큼 (1.73) | |
| -3.8 | -2.53 | 같은 비율로 축소 (1.27) | |
| 0.1 | 0.067 | 같은 비율로 축소 — 절대 감소폭은 작음 (0.03) |
핵심: L2는 모든 가중치를 0에 가깝게 만들지만, 완전히 0으로 만들지는 않는다. 반면 L1 정규화(Lasso)는 같은 상황에서 을 정확히 0으로 만들어 해당 특성(Feature)을 제거한다. 이것이 L1이 자동 특성 선택(Automatic Feature Selection)을 수행하는 이유이다.
가중치에 대한 효과
섹션 제목: “가중치에 대한 효과”- 모든 가중치를 동일한 비율로 축소 (절대 감소폭은 큰 가중치일수록 큼)
- 작은 가중치를 상대적으로 더 강하게 깎아 0으로 만드는 것은 L1의 성질이다 (soft-thresholding: 절대량 만큼 일정하게 깎음)
- 어떤 가중치도 정확히 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) 감소. 다만 Santurkar et al.(2018) 이후로는 BN이 ICS를 실제로 줄이지는 않으며, 효과는 손실 곡면을 평활하게 만들어 최적화를 돕는 것에서 온다는 설명이 더 지지받는다
- 암묵적 정규화 효과: 미니배치에 의한 노이즈가 정규화 역할
레이블 스무딩 (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)가 유의미하게 변했다. 교차 검증을 통한 체계적인 선택이 성능 차이의 핵심이었다.
이 사례는 “데이터가 충분히 많으면 정규화가 필요 없다”는 흔한 오해를 반증한다. 데이터의 양이 아니라 모델 복잡도 대비 데이터의 정보량이 정규화 필요성을 결정한다.
직접 해보기
섹션 제목: “직접 해보기”# 필요 패키지: pip install torchimport 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)흔한 오해와 함정
섹션 제목: “흔한 오해와 함정”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. “조기 종료만 쓰면 된다””- 조기 종료는 유용하지만, 다른 정규화 기법과 함께 사용할 때 가장 효과적이다.
스스로 점검하기
섹션 제목: “스스로 점검하기”1. L1과 L2 중 희소 해(0이 많은 해)를 만드는 것은?
정답 보기
L1이다. 제약 영역이 마름모라 모서리(축 위, 즉 일부 좌표가 0)에서 최적해가 걸리기 쉽다. L2의 원형 제약에서는 모서리가 없어 0이 잘 안 나온다.
2. 드롭아웃이 정규화 역할을 하는 이유는?
정답 보기
매 스텝 다른 뉴런을 끄므로 특정 뉴런에 의존하지 못하게 만들고, 사실상 수많은 부분 신경망의 앙상블을 학습하는 효과를 낸다.
3. 조기 종료(early stopping)도 정규화인가?
정답 보기
그렇다. 학습을 일찍 멈추면 가중치가 초기값에서 멀리 가지 못하므로 암묵적으로 가중치 크기를 제한하는 효과가 있다. 선형 모델에서는 L2 정규화와 밀접한 관계가 증명되어 있다.
다른 주제와의 연결
섹션 제목: “다른 주제와의 연결”- 선형 모델: Ridge, Lasso, Elastic Net의 상세 구현
- 과적합과 과소적합: 정규화의 목적과 효과
- 경사 하강법: AdamW와 weight decay
- 손실 함수: 정규화 항이 포함된 목적 함수
- VC 차원: 정규화는 효과적 VC 차원을 줄임
- 오컴의 면도날: 정규화 = 단순한 모델 선호
자주 묻는 면접 질문
섹션 제목: “자주 묻는 면접 질문”-
L1 정규화가 희소성을 만드는 이유는?
- L1 페널티의 기울기가 0 근처에서 불연속이며, 소프트 임계값 처리로 작은 가중치가 정확히 0이 됨. 기하학적으로 L1 ball의 꼭짓점에서 해가 만들어짐.
-
조기 종료가 L2 정규화와 동치인 이유는?
- 선형 모델에서 경사 하강 반복 횟수가 유효 정규화 강도의 역수 역할. 적게 학습 = 가중치가 작게 = L2 페널티와 유사 효과.
-
드롭아웃이 앙상블과 유사한 이유는?
- 각 미니배치에서 다른 서브네트워크가 학습되므로, 개 서브네트워크의 가중 평균에 근사
-
데이터 증강이 정규화인 이유는?
- 모델이 학습해야 할 불변성을 인코딩하여 가설 공간을 제약하고, 효과적 데이터 크기를 늘려 분산을 줄이기 때문
용어 정리
섹션 제목: “용어 정리”| 영어 | 한국어 |
|---|---|
| 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”