딥러닝 모델을 훈련할 때 직면하는 중요한 문제 중 하나는 오버피팅(overfitting)입니다. 모델이 훈련 데이터에 너무 맞춰지면 새로운 데이터에 대한 일반화 성능이 떨어집니다. 이를 해결하기 위한 다양한 정규화 기법들이 있는데, 오늘은 두 가지 핵심 방법인 '가중치 규제(Weight Regularization)'와 '특성 스케일링(Feature Scaling)'에 대해 자세히 살펴보겠습니다.
가중치 규제는 신경망의 가중치(weight)가 너무 커지는 것을 방지하여 오버피팅을 줄이는 방법입니다. 모델이 특정 특성에 과도하게 의존하면 해당 특성에 연결된 가중치가 매우 커지게 됩니다. 가중치 규제는 이러한 큰 가중치에 페널티를 부과하여 모델을 더 단순하게 만듭니다.
가중치 규제는 손실 함수(cost function)에 가중치의 크기에 비례하는 페널티 항을 추가합니다:
새로운 손실 함수 = 원래 손실 함수 + λ × (가중치 크기에 대한 페널티)
여기서 λ(람다)는 규제의 강도를 조절하는 하이퍼파라미터입니다.
L1 정규화는 가중치의 절대값 합에 페널티를 부과합니다:
L1 페널티 = λ × Σ|w_i|
L1 정규화의 주요 특징:
일부 가중치를 정확히 0으로 만듭니다(희소성 유도)
특성 선택(feature selection) 효과가 있습니다
중요하지 않은 특성에 연결된 가중치를 0으로 만들어 모델을 단순화합니다
L2 정규화는 가중치의 제곱합에 페널티를 부과합니다:
L2 페널티 = λ × Σ(w_i²)
L2 정규화의 주요 특징:
가중치를 0에 가깝게 만들지만, 정확히 0으로 만들지는 않습니다
모든 가중치를 고르게 감소시킵니다
가중치 감소(weight decay)라고도 불립니다
L2 정규화를 적용한 가중치 업데이트 규칙을 살펴보면:
w_new = w_old - η × (∂L/∂w + λ × w_old)
= (1 - η × λ) × w_old - η × (∂L/∂w)
여기서 η는 학습률입니다.
이 식에서 (1 - η × λ)는 1보다 약간 작은 값이므로, 매 업데이트마다 가중치에 이 값을 곱하는 것은 가중치를 약간씩 감소시키는 효과가 있습니다. 이것이 '가중치 감소(weight decay)'라고 불리는 이유입니다.
가중치 규제는 오버피팅을 방지하는 것 외에도 다음과 같은 이점이 있습니다:
1. 시간이 지남에 따라 이전 업데이트의 영향을 줄입니다. 가중치 감소로 인해 오래된 업데이트의 영향이 점점 줄어들어, 최근 데이터에 더 민감하게 반응하게 됩니다.
2. 최적화 과정을 안정화시킵니다. 과도하게 큰 가중치로 인한 기울기 폭발 문제를 완화합니다.
특성 스케일링은 입력 데이터의 서로 다른 특성들이 비슷한 스케일을 갖도록 조정하는 기법입니다. 특성들의 스케일이 크게 다를 경우, 큰 스케일을 가진 특성이 모델 학습을 지배하게 됩니다.
예를 들어, 주식 가격 예측 모델을 만든다고 가정해봅시다:
주식 종가: 약 5만원 정도의 범위
거래량: 수백억 단위의 범위
이런 상황에서 스케일링 없이 모델을 학습시키면, 거래량 특성이 종가 특성보다 훨씬 더 큰 영향을 미치게 됩니다. 이는 두 특성의 실제 중요도와 관계없이 단순히 스케일 차이 때문에 발생합니다.
특성 스케일링의 두 가지 주요 방법을 살펴보겠습니다:
정규화는 데이터를 0과 1 사이의 값으로 변환합니다:
X_normalized = (X - X_min) / (X_max - X_min)
정규화 후:
최소값은 0이 됩니다
최대값은 1이 됩니다
모든 값은 0과 1 사이에 위치합니다
표준화는 데이터를 평균이 0, 표준편차가 1인 분포로 변환합니다:
X_standardized = (X - μ) / σ
여기서 μ는 평균, σ는 표준편차입니다.
표준화 후:
평균은 0이 됩니다
표준편차는 1이 됩니다
값의 범위는 정해져 있지 않지만, 대부분 -3과 3 사이에 위치합니다
정규화:
알고리즘이 특성의 범위나 분포에 민감할 때 유용합니다
이미지 처리에서 픽셀 값을 정규화할 때 자주 사용됩니다
이상치(outlier)에 민감합니다
표준화:
데이터가 정규 분포를 따르지 않을 때 유용합니다
이상치에 덜 민감합니다
대부분의 머신러닝 알고리즘에서 잘 작동합니다
특성 스케일링은 다음과 같은 추가 이점이 있습니다:
1. 최적화 과정을 가속화합니다. 스케일링 전의 비대칭적 손실 함수 표면은 경사 하강법이 지그재그 패턴으로 느리게 수렴하게 만듭니다. 스케일링 후에는 더 직접적인 경로로 최소값에 도달할 수 있습니다.
2. 특성 간의 비교를 용이하게 합니다. 모든 특성이 비슷한 스케일을 가지면 그 영향력을 더 직관적으로 비교할 수 있습니다.
1. 초기에는 규제 없이 모델을 학습시켜보고, 오버피팅 징후가 보이면 규제를 도입합니다.
2. λ 값을 다양하게 시도해보세요. 일반적으로 10^-5부터 10^-2 사이의 값에서 시작합니다.
3. L1과 L2 정규화를 결합한 ElasticNet도 고려해볼 수 있습니다:
ElasticNet 페널티 = λ1 × Σ|w_i| + λ2 × Σ(w_i²)
1. 훈련 데이터에서만 스케일링 파라미터(min, max, mean, std)를 계산하고, 이를 검증 및 테스트 데이터에 적용합니다.
2. 스케일링은 전처리 파이프라인의 초기 단계에서 수행합니다.
3. 다음과 같은 경우 표준화를 선호합니다:
데이터에 이상치가 있을 때
특성의 분포가 정규 분포와 비슷할 때
모델이 L1, L2 정규화를 사용할 때
4. 다음과 같은 경우 정규화를 선호합니다:
특성의 실제 범위가 중요할 때
특성의 분포가 균일하거나 알 수 없을 때
신경망의 출력층에 시그모이드 함수를 사용할 때
딥러닝에서 가중치 규제와 특성 스케일링을 적절히 활용하면 모델의 일반화 성능을 크게 향상시킬 수 있습니다. 이 두 기법은 복잡한 모델을 다루는 데 있어 필수적인 도구로, 모델이 훈련 데이터에 과적합되는 것을 방지하고 보다 강건한 예측을 가능하게 합니다.