이번 포스트에서는 우리가 학습시키는 모델이 주어진 데이터 세트에만 과적합 되는 것을 방지하기 위해 정규화를 하는 방법에 대해서 다뤄보도록 하겠습니다.


위의 그림은 반복 학습 횟수에 대해 학습 세트(Training Data)와 검증 세트(Validation Data)의 손실을 일반화된 곡선으로 보여줍니다.


이를 보면, 학습 손실은 점차 감소하지만 검증 손실은 어느 순간부터 증가하는 것을 나타냅니다. 즉, 이 일반화 곡선은 모델이 학습 세트에 과적합되어 있다는 것을 의미합니다.



정규화를 통한 과적합 줄이기

정규화란, 모델의 복잡도에 패널티를 줌으로써 과적합을 줄이는 것을 말합니다. 정규화 전략에는 크게 2가지가 있습니다.

  • 조기중단: 학습 데이터에 대해 손실이 특정 값에 수렴하기 전에 학습을 중단하는 방법
    => 위의 그림에서 검증 세트에 대한 손실율이 올라가는 지점, 즉 학습 데이터에 대해 손실율이 수렴하기 전에 학습을 중단하는 것입니다.

  • 모델 복잡도에 패널티를 부여: 학습하는 동안 모델에 패널티를 주어 학습 데이터에 과적합하지 않게 복잡성을 줄이는 방법

다음으로 모델 복잡도에 패널티를 부여하여 모델을 일반화하는 정규화 방법을 알아보도록 하겠습니다.


경험적 위험 최소화 -> 구조적 위험 최소화

우리는 이전까지 모델이 데이터에 대해 발생하는 손실을 최소화하는 것만을 목표로 삼았습니다. 이를 경험적 위험 최소화라고 합니다.


경험적 위험 최소화(Empirical Risk Minimization): minimize( Loss( Data | Model ) )


경험적 위험 최소화 방법은 학습 데이터에 대한 최소 손실을 알려주지만, 학습 데이터에만 과적합한 모델이 될 수 있습니다.]

이제부터 우리는 손실을 최소화하는 목표에 모델의 복잡도를 낮추어 좀 더 일반화된 모델을 만드는 목표를 추가하도록 하겠습니다. 이를 구조적 위험 최소화라고 합니다.


구조적 위험 최소화(Structural Risk Minimization): minimize( Loss( Data | Model ) + complexity( Model ) )


지금부터 우리의 학습 최적화 알고리즘은 모델이 데이터에 얼마나 적합한지 측정하는 손실 항(Loss Term)과 모델 복잡도를 측정하는 정규화 항(Regularization Term)의 함수가 됩니다.


모델 복잡도를 정의하는 방법

본 머신러닝 스터디 과정에서는 일반적으로 사용되는 2가지 방법으로 모델 복잡도를 표현할 것 입니다.

  • 모든 특성(Feature)의 가중치(Weight)에 대한 함수
    => 가중치의 절대값이 낮은 것을 더 선호(높은 절대값을 사용하는 특성 가중치는 낮은 절대값을 사용하는 특성 가중치보다 더 복잡함)

  • 0이 아닌 가중치를 사용하는 특성(Feature)의 총 개수에 대한 함수
    (차후 포스트에서 이 접근 방식을 다룸)

이번 포스트에서는 정규화 방법 중 L2 정규화(L2 Regularization)공식에 대해서 알아보도록 하겠습니다. 



L2 정규화(L2 Regularization)

L2 정규화란, 가중치의 제곱의 합에 비례하여 가중치에 패널티를 주는 정규화 방법입니다. 즉, 가중치가 클수록 큰 패널티를 부과하여 과적합을 억제하는 것 입니다.

L2 정규화 공식을 통해 복잡도를 수치화할 수 있습니다.



이 공식에서 0에 가까운 가중치는 모델 복잡도에 거의 영향을 미치지 않는 반면, 어떤 값이 비이상적으로 크다면 큰 영향을 미칠 수 있습니다.


L2 정규화를 통해 가중치들은 전체적으로 고르고 작은 값을 선호하게 됩니다. 만약 튀는 값(이상점)이 있거나 전체적으로 가중치의 크기가 커지면 정규화 손실(R(w))값이 커집니다.

https://de-novo.org/tag/regularization/


L2 정규화가 모델에 끼치는 영향

  • 가중치 값을 0으로 유도(정확히 0은 아님)
  • 정규 분포(종 모양)를 사용하여 가중치 평균을 0으로 유도


+ Recent posts