IT_World
L1 & L2 loss/regularization 정규화 방법 본문
Norm
Norm=절대값이 아니다. 많은 Norm 중 하나가 절댓값인 것이다.
예를 들어 |-2| = 2 , |-10| = 10 이런식으로 절대값을 쓴다.
여기에서 조금만 더 생각해보면 | | 속 에는 단순 실수 뿐 만 아니라 벡터도 | | 안에 들어간다. ex) |(2,10)|
그리고 이는 절댓값이 아니라 벡터의 크기 정도로 칭했다.
Norm이란, 수학적 정의는 복잡하지만 결국 어떤 값의 크기를 계산하여, 비교가 가능하게끔하는 어떤 함수 정도인데, 그 중 하나가 L1, L2 Norm이다.
L1 Norm(Mahattan Distance, Taxicab geometry)
L1 Norm은 두 개의 벡터를 빼고, 절대값을 취한 뒤, 합한 것이다.
예를 들어,
x=(1,2,3), y=(-4,-5,-6)은 d(x,y)=|1-(-4)|+|2-(-5)|+|3-(-6)|=5+7+9=21 이 된다.
L2 Norm(Euclidean Distance)
L2 Norm은 두 개의 벡터의 각 원소를 빼고, 제곱을 하고, 합치고, 루트를 씌운 것이다.
예를 들어,
x=(1,2,3), y=(-4,-5,-6)은 d(x,y)=root(5+7+9)=root(21)이다.
L2 Norm는 두 개 벡터(점) 사이의 직선거리를 말하는 거라고 볼 수 있다.
L1 Norm 과 L2 Norm 의 직관적 차이
L2 Norm : 초록색 선
L1 Norm : 빨간, 파란, 노란 선
빨간, 파란, 노란 선 모두 다른 경로를 움직이지만 사실 모두 같은 선이다.
L1 Loss
이러한 Norm을 기준으로 만들어진 L1 Loss 수식 또한 크게 다를 바 없다. 두 개의 벡터가 들어가던 자리에 실제 타겟값(y_true)와 예측 타겟값(y_pred)이 들어갔을 뿐이다.
L1 Loss는 L2 Loss에 비해 이상치(Outlier)의 영향을 덜 받는, 이상치/에러값으로 부터 영향을 크게 받지 않는 특성을 가진다. 0에서 미분이 불가능하다.
L2 Loss
L2 Loss도 다르지 않지만 최종적으로 루트를 취하지 않는다는 차이가 있다.
두 개 값의 절대값을 계산하던 L1 Loss와는 달리 L2 Loss는 제곱을 취하기에, 이상치가 들어오면 오차가 제곱이 돼서 이상치에 영향을 더 받기 때문에 이상치가 있는 경우 적용하기 힘든 방법론이다.
Regularization
Regularization의 주목적은 하나다. 모델의 오버피팅(Overfitting)을 줄이고자 하는 것. 즉 모델을 조금더 General하게 만들고자 하는 것이다. 이렇게 모델의 일반화 성능을 높이는 방법론에도 Data augmentation, Ensemble model, Dropout, Dropconnect, BatchNormalization, Early stopping, Weight decay, Multi-Task learning 등 정말 여러가지가 존재하며, 그 중 하나가 아래서 설명할 L1, L2 Regularization이다. 모델을 학습시킨다는건 결국 모델의 Weight matrix를 좋은 방향으로 업데이트해나가는 것이다. 그런데 이 Weight 중 일부가 학습과정 중 과도하게 커져버린다면, 몇몇개의 인풋에 극단적으로 의존하는 상황이 벌어지고, 이 경우 모델의 일반화 성능은 감소할 것입니다. (첨언으로 모델의 Weight matrix size가 너무 작다면, 이런일이 발생할 수 있다.
특정 Weight가 과도하게 커지지 않게끔 락(Lock)을 걸어주는 역활을 L1, L2 Regularization이 해준다.
L1 Regularization
기존 Loss에 절댓값만큼의 어떤 족쇄(패널티)를 달아줌으로써 Cost가 더 커지게 만든 셈인데, 모델 Weight의 과도한 변화를 막는다. 저기서 람다가 작아질 수록, 약한 정규화가 적용된다. Sparse feature에 의존한 모델에 L1 Regularization을 사용하면, 불필요한 Feature에 대응하는 Weight를 정확히 0으로 만들어버려, Feature selection의 효과를 낸다.
L1 Regularization을 사용하는 선형 회귀 모델을 Lasso model이라고도 한다.
L2 Regularization
L2 Reg는 불필요한 Feature(이상치)에 대응하는 Weight를 0에 가깝게 만들 뿐, 0으로 만들지는 않는다. 이런 특성 때문에, 강하게 밀어붙이는 L1 Reg반해 L2 Reg은 선형 모델의 일반화 능력을 항상 개선시키는 것으로 알려져 있다. 마지막으로 L2 Reg을 사용하는 선형 회귀 모델을 Ridge model이라고 한다.
https://seongkyun.github.io/study/2019/04/18/l1_l2/
'Artificial intelligence, AI > Pytorch' 카테고리의 다른 글
[Pytorch] Python으로 딥 러닝 모델 개발하기 2 (0) | 2021.05.29 |
---|---|
[Pytorch] Python으로 딥 러닝 모델 개발하기 (0) | 2021.05.12 |
[Pytorch] Image Preprocessing 이미지 전처리 (0) | 2021.05.11 |
[PyTorch] 열화상 감지 파일만들기 (0) | 2021.04.20 |