본문 바로가기
Deep Learning Study/Mathematics

[미적분학] L1, L2 Regularization

by BangGeuk 2024. 4. 21.

혹시 잘못된 부분이나 수정할 부분이 있다면 댓글로 알려주시면 감사하겠습니다.

본 글은 https://www.youtube.com/watch?v=swYILd-M2Ks 를 참고하여 만들었습니다.


저번 글에서 오차(예측값과 실측값의 차이)를 계산하는 Loss Function에 대해 알아보고 이를 이용해 오차를 어떠한 알고리즘으로 최소로 할지 계산하는 Optimization에 대해 알아보았다.

 

여기서 무조건적으로 오차를 줄이는 것이 좋을까? 아니다. 오차를 줄이고 0이 된다 해도 train dataset에만 잘 학습되고 일반화가 안된 모델이라면 좋지 않다. 이를 과적합이라 한다.

 

과적합을 줄이기 위해서는 여러 가지 방법들이 있다.

  • 데이터 증가 : 더 많은 훈련 데이터를 사용하여 모델이 더 일반화된 패턴을 학습하는 데 도움
  • 모델 복잡도 줄이기 : 더 단순한 모델을 사용하거나 모델의 파라미터 수를 줄이는 것이 과적합을 방지하는데 도움
  • 정규화 기법 사용 : L1, L2 정규화와 같은 기법을 사용하여 모델이 훈련 데이터에 과적합되는 것을 방지
  • 교차 검증(Cross validation) : 데이터를 여러 부분집합으로 나눈 후, 이를 훈련과 검증에 사용할 데이터로 나누어 사용하여 일반화 능력을 평가
  • 조기 종료(Early Stopping) : 훈련 과정에서 validation dataset의 성능이 더 이상 개선되지 않을 때 훈련을 조기에 중단

 

이번 글에서는 정규화 기법을 사용하는 법에 대해 알아보고 L1, L2 정규화에 대해 알아보고자 한다.

 

과적합의 문제는 모델이 주어진 데이터를 너무 과도하게 학습할 때 발생하는 문제이기 때문에 모델이 학습을 너무 잘 하지 않도록 적당히 방해한다. 방해하는 방법은 손실함수에 페널티를 추가하는 방식으로 손실함수에 regularization 항을 더한다. L1 regularization 항은 아래 식과 같다. 즉, 모든 가중치들의 절대값들의 합을 regularization 항으로 사용한다. 여기서 람다는 regularization의 정도를 조절해주는 상수값이다.

 

출처 : https://www.youtube.com/watch?v=swYILd-M2Ks

 

실제로 L1 regularization이 어떻게 적용되는지 보기 위해 1차 함수 형태의 선형 학습 모델을 가정한다.

Loss Function은 MSE로 가정하면 L1 식은 다음과 같다. 여기서 w 가중치로 미분하면 아래 식과 같다. 여기서 |w| 그래프는 아래 그래프와 같이 V자 형태로 이루어져있는데 이를 w로 미분하게 되면 1 or -1로 변하게 된다. 즉, w가 양수이면 람다이고 w가 음수이면 -람다가 된다.

출처 : https://www.youtube.com/watch?v=swYILd-M2Ks

 

Optimization을 경사하강법으로 가정하고 이를 정리하면 다음과 같다. 이를 해석해보면 기존 MSE 미분값을 A라고 하고 경사하강법 식을 정리하면 아래와 같다. 즉, 기존 A에서 가중치가 양수이면 람다에 비례해서 작아지고 가중치가 음수이면 람다에 비례해서 커진다. 이런 식으로 양의 가중치는 값을 줄이고 음의 가중치는 값을 키우는 형태로 학습이 지속될 수록, 가중치들은 0에 근접하려고 할 것이다. 이를 통해, 처음부터 값이 작았던 가중치들(w1,w2, ..., w5 중 w3이 값이 작은 가중치라 가정)은 0에 거의 근접하는 가중치(w3)가 나오기 시작한다. 이러한 과정으로부터 결과에 영향을 끼치지 않는 작은 가중치들을 제거해가는 과정을 학습중에 발생한다. 이러한 regularization 과정을 L1 regularization이라 부른다.

출처 : https://www.youtube.com/watch?v=swYILd-M2Ks

 

이제 L2 regularization에 대해 알아보자. L2 regularization은 가중치 절대값들의 합이 아니라 가중치 제곱들의 합이다. 가중치의 제곱을 미분하면 2w가 된다. 즉, 여기서는 w의 크기에 비례해서 w가 양수인 경우, w*가 작아지고 w가 음수인 경우, w*가 커진다. 이를 통해, L1과 마찬가지로 음수인 가중치는 커지고 양수인 가중치는 작아져서 결국 0에 근접하게 된다. L1과 다른 점은 L2는 가중치의 크기 w를 고려하면서 변하기 때문에 L1에 비해 좀 더 부드러운 regularization이 되는 특성이 있다. 왜냐하면, 가중치 w가 작으면 작은 페널티를 주고 w가 크면 큰 페널티를 주기 때문에, 가중치 크기와 상관없이 가중치별로 일정하게 변화를 시키는 L1에 비해 좀 더 안정적인 효과가 있다.

 

출처 : https://www.youtube.com/watch?v=swYILd-M2Ks

 

이번 글을 통해 과적합을 줄이는 기법 중 하나인 L1, L2 regularization을 알아보았다.

 

이를 쉽게 설명해주신 '신박AI' 유튜버님께 감사인사 드립니다.