Regularization(정규화)

탱구리·2026년 1월 8일

딥러닝

목록 보기
4/6

Regularization이란?

데이터를 잘 맞추는 것과 모델을 단순하게 유지하는 것 사이에서 균형 잡기

정규화는 모델이 훈련 데이터에 너무 잘 맞아버리는 overfitting 현상을 막기 위해 모델에 제약을 주는 방법이다.overfitted model일수록 weight(가중치) 값이 크다. (노이즈까지 완벽히 맞추려면 아주 가파른 곡선, 급격히 변하는 함수가 있어야 하므로 큰 weight가 필요하기 때문이다. weight가 크다는 건 입력의 작은 변화에도 출력이 크게 흔들린다는 뜻이다.) 따라서 손실 함수에 특정한 규제 함수를 더하여 손실 함수가 너무 작아지지 않도록 weight에 패널티를 준다.

L(W)=1Ni=1NLi(f(xI,W),yi)+λR(W)L(W) = \frac{1}{N} \sum_{i=1}^{N} L_{i}(f(x_{I},W), y_{i}) + \lambda R(W)
  • λ\lambda = regularization strength (hyperparameter)
  • 덧셈 앞의 항은 Data loss, 덧셈 뒤의 항은 Regularization이다.

정규화의 결과를 직관적으로 나타낸 그림이다. 좌측 그림은 학습 데이터를 정말 잘 맞추고 있지만, 미래 데이터가 조금만 바뀌어도 예측값이 들쭉날쭉할 수 있다. 우측 그림은 가장 강한 수준의 정규화를 수행한 결과이다. 학습 데이터에 대한 설명력을 다소 포기하는 대신 미래 데이터 변화에 상대적으로 안정적인 결과를 낸다.

정규화의 대표 기법

L2 Regularization

가중치의 제곱합에 대한 패널티를 준다.

Ltotal=Ldata+λ2iwi2L_{total} = L_{data} + \frac {\lambda}{2} \sum_{i} w_{i}^{2}

이렇게 하면 학습의 방향이 단순히 LdataL_{data} 값이 작아지는 방향으로만 진행되는 것이 아니라, ww 값들 역시 최소가 되는 방향으로 진행된다. 즉, 가중치가 매우 큰 값으로 커지지 않도록 억제할 수 있다. 큰 가중치가 과적합(overfitting)을 일으키는 경우가 많으므로 가중치가 작아지도록 유도(항상 weight를 0 쪽으로 끌어당김)함으로써 모델을 부드럽게(smooth) 만든다.

L1 Regularization

가중치의 절댓값 합에 패널티를 준다.

Ltotal=Ldata+λiwiL_{total} = L_{data} + {\lambda} \sum_{i} \left | w_{i} \right |

L2와는 다르게 많은 가중치들이 거의 0으로 수렴하고 몇 개의 중요한 가중치들만 남게 된다. 크기와 무관하게 항상 같은 힘으로 0 쪽으로 밀린다. 따라서 몇 개의 의미 있는 값을 뽑아내고 싶은 경우에는 L1이 더 효과적이다.

Elastic Net (L1 + L2)

둘의 장점을 섞은 방법이다.

그 외의 기법들

Dropout

overfitting 되는 이유 중에는 특정 값이 너무 커서 그 값에 편향되는 경우가 있다. 이 경우를 방지하기 위해 dropout을 사용한다.

  • L1, L2
    • Loss에 패널티 추가
    • weight 크기를 직접 제어
  • Dropout
    • 학습 구조 자체를 랜덤하게 바꿈

dropout은 훈련 중에 무작위로 일부 뉴런의 출력을 0으로 끄는(삭제하는) 방식이다. 직관적으로 보면 학습할 때마다 어떤 뉴런은 있고 어떤 뉴런은 없는 것이다. 즉, 매 iteration마다 다른 네트워크를 학습하는 것과 같다. 각 뉴런을 끌 확률은 하이퍼파라미터이다.

특정 뉴런 하나에 의존이 불가능해지고 항상 대안 경로를 만들어야 하므로 overfitting이 줄어들게 된다.

추론할 때는 사용하지 않는다.

Batch Normalization

본질적으로 정규화 기법은 아니나 결과적으로 정규화 효과가 있다.

각 batch별로 평균과 분산을 이용해 정규화하는 방법이다.
보통 CONV - BatchNorm - RELU (Activation) 순서로 진행한다. Activation을 진행하기 전에 분포를 안정화하는 역할을 한다.

아직 잘 이해가 가지 않아서... 조금 더 이해하게 되면 내용을 추가하도록 하겠다.

Reference

0개의 댓글