본문 바로가기

머신러닝/[기타]

L1, L2 Norm, Loss, Regularization?

정규화 관련 용어로 자주 등장하는 L1, L2 정규화(Regularization)입니다. 이번에는 단순하게 이게 더 좋다 나쁘다보다도, L1, L2 그 자체가 어떤 의미인지 짚어보고자합니다. 사용된 그림은 위키피디아를 참조하였습니다.

Norm

 우리가 가장 쉽게 알고 있는 Norm은 절댓값입니다. Norm=절대값이 아니라, 많은 Norm 중 하나가 절댓값인거죠.  |-1| = 1 이런식으로 썼었는데, 생각해보면 | ? | 속에는 단순 실수만 아니라 벡터도 들어갔었습니다. |(1,2)|이런식으로요. 그리고 이는 절댓값이 아니라 벡터의 크기 정도로 칭했었죠. Norm이란, 수학적 정의는 복잡하지만 결국 어떤 값의 크기를 계산하여, 비교가 가능하게끔하는 어떤 함수 정도입니다. 그 중 하나가 이제부터 계속 보게될 L1, L2 Norm입니다.

L1 Norm(Mahattan Distance, Taxicab geometry)

 위의 그림에서 표시된 것과 같이 L1 Norm은 두 개의 벡터를 빼고, 절대값을 취한 뒤, 합한 것입니다. 예를 들어, x=(1,2,3), y=(-1,2,4)라면 d(x,y)=|1-(-1)|+|2-2|+|3-4|=2+0+1=3입니다.

L2 Norm(Euclidean Distance)

 위의 그림에서 표시된 것과 같이 L2 Norm은 두 개의 벡터의 각 원소를 빼고, 제곱을 하고, 합치고, 루트를 씌운 것입니다. 예를 들어, x=(1,2,3), y=(-1,2,4)라면 d(x,y)=root(4+0+1)=root(5)입니다. 사실, 고등수학부터 당연하게 받아들이는 거리 정의가 L2 Norm입니다. 두 개 벡터(점) 사이의 직선거리를 말하는 거죠.


L1 Norm 과 L2 Norm 의 직관적 차이

 위 그림을 보시면 두 개의 검은 점(벡터)를 잇는 여러 선들이 존재합니다. 벡터 사이의 거리를 재는 서로 다른 Norm을 표기한 셈입니다. 여기서 초록색 선이 우리가 가장 잘 알고있는, Euclidean distance, 즉 L2 Norm입니다. 단 하나의 경우밖에 있을 수 없지요. 그런데 나머지 빨간, 파란, 노란 선은 다른 경로를 움직이지만 사실 모두 같은 L1 Norm입니다. L1 Norm의 수식을 조금만 들여다보면, 당연함을 알 수 있고, 저런 시각적 특성 때문에, Taxicab geometry라고도 불립니다.


L1 Loss

 이러한 Norm을 기준으로 만들어진 L1 Loss도 수식이 다르지 않습니다. 두 개의 벡터가 들어가던 자리에 실제 타겟값(y_true)와 예측 타겟값(y_pred)가 들어갔을 뿐이지요. 이는 Least Absolute Deviations(LAD), Least Absolute Errors(LAE), Least Absolute Value(LAV), Least Absolute Residual(LAR) 등으로도 불립니다. L1 Loss는 L2 Loss에 비해 이상치(Outlier)의 영향을 덜 받는, Robust한 특성을 가집니만, 0에서 미분이 불가능합니다.

L2 Loss

 L2 Loss도 다르지 않습니다. 다만 최종적으로 루트를 취하지 않는다는 차이가 있습니다. 이는 Least Squares Error(LSE, 최소자승법)로도 불립니다. 이는 두 개 값의 절대값을 계산하던 L1 Loss와는 달리 L2 Loss는 제곱을 취하기에, 이상치가 들어오면 오차가 제곱이 되어 이상치에 더 영향을 받습니다. 때문에 이상치가 있는 경우에는 적용하기 힘든 방법론입니다.

요약하면 각각의 특성은 아래와 같습니다.

L1 Loss L2 Loss
Robust Not very robust
Unstable solution Stable solution
Possibly multiple solution Always one solution

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가 너무 작다면, 이런일이 발생할 수 있습니다. 때문에 NN를 설계할 때에는, 충분히 Sparse할 수 있게끔 구축해야합니다.) 때문에 특정 Weight가 과도하게 커지지 않게끔 락(Lock)을 걸어주는 역활을 L1, L2 Regularization이 해줍니다.


L1 Regularization

 위 그림 속에서 Loss function 부분의 summation of xw 가 사실 앞에서 봤던 y_pred라는 것을 생각해 볼 때, L1 Regularization이라는 건 결국 L1 Loss 에 Regularization Term을 붙인 것에 불과합니다. 기존 Loss에 절댓값만큼의 어떤 족쇄(패널티)를 달아줌으로써 Cost가 더 커지게 만든 셈인데, 모델 Weight의 과도한 변화를 막는다는 느낌에 걸맞습니다. 저기서 람다가 작아질 수록, 약한 정규화가 적용됩니다. Sparse feature에 의존한 모델에 L1 Regularization을 사용하면, 불필요한 Feature에 대응하는 Weight를 정확히 0으로 만들어버려, Feature selection의 효과를 내는데, 이에 대한 설명은 조금 더 복잡하기에 이후 다른 글로 정리하겠습니다. 마지막으로 L1 Regularization을 사용하는 선형 회귀 모델을 Lasso model이라고도 합니다.

L2 Regularization

 L1 Reg와 같이, L2 Reg도 기존의 L2 Loss에 Regularization Term을 붙여습니다. 목표도 같겠지요. 다만 불필요한 Feature(이상치)에 대응하는 Weight를 0에 가깝게 만들 뿐, 0으로 만들지는 않습니다. 이런 특성 때문에, 강하게 밀어붙이는 L1 Reg반해 L2 Reg은 선형 모델의 일반화 능력을 항상 개선시키는 것으로 알려져 있습니다. 마지막으로 L2 Reg을 사용하는 선형 회귀 모델을 Ridge model이라고 합니다.