본문을 읽기 전에 regularization글을 읽고 오시면 좋습니다.
L1, L2 norm이란 무엇인가?
Norm에 대해 알아보자
norm이란 벡터의 크기(길이)를 측정하는 방법입니다. 쉽게 말해, 두 벡터 사이의 거리를 측정하는 방법입니다.
여기에서 p는 Norm 의 차수를 말합니다. p=1일 경우 L1 norm을, p=2일 경우 L2 norm을 뜻합니다. 간단하게 L1, L2냐에 따라 항이 1차항인지, 2차항인지 나뉜다고 생각하시면 됩니다. 위의 식에서 n은 해당 벡터의 원소 수를 일컫습니다.
L1 norm (p=1)
L1 norm은 벡터 p, q 의 각 원소들의 차이의 절대값의 합입니다.
예를 들어 vector p=(3,1,-3)이고 q=(5,0,7)일 때, p, q의 L1 norm은
|3−5|+|1−0|+|−3−7|=2+1+10=13 이 됩니다.
L2 norm (p=2)
벡터 p, q 의 유클리디안 거리(직선 거리)를 의미합니다.
예를 들어 q 가 원점일 경우 벡터 p,q의 L2 Norm은 벡터 p 의 원점으로부터의 직선거리를 의미한다 할 수 있습니다. 따라서
p=(x1,x2,...,xn),q=(0,0,...,0) 입니다.
L1, L2 norm의 차이
L1 Norm은 빨간색, 파란색, 노란색 선으로 표현 가능합니다. L2 Norm은 초록색 선으로만 표현이 가능합니다.
그림으로 보았을 때, L1 Norm은 여러가지 path 를 가지지만 L2 Norm 은 Unique shortest path 를 가집니다.
예를들어, p=(1,0),q=(0,0) 일 때 L1 Norm = 1, L2 Norm = 1 로 값은 같지만 여전히 Unique shortest path를 가집니다.
L1, L2 Loss란 무엇일까?
L1 Loss
여기에서 yi은 GT Label을 의미하고, `f(x_i)는∈putx_i`를 모델에 넣었을 때 얻는 output을 의미합니다. 상단의 L1 norm을 생각했을 때, 이는 Label과 output 사이의 오차 값의 절대값을 구한 후 그 오차들의 합을 더한 결과를 의미합니다.
이 동의어는 다음과 같습니다.
- Least absolute deviations(LAD)
- Least absolute Errors(LAE)
- Least absolute value(LAV)
- Least absolute residual(LAR)
- Sum of absolute deviations
L2 Loss
L1 Loss과 다르게 오차의 제곱의 합을 의미합니다.
동의어는 다음과 같습니다.
- Least squares error(LSE)
L1 Loss, L2 Loss
L1 Loss는 0인 지점에서 미분이 불가능하다는 단점이 있습니다. L2 Loss는 직관적으로 오차의 제곱을 더하기 때문에 Outlier에 더 큰 영향을 받습니다. 이는 즉, L1 Loss 가 L2 Loss 에 비해 Outlier 에 대하여 더 Robust하다고 할 수 있습니다. 그러므로 L1 Loss는 Outlier 가 적당히 무시되길 원할 때 사용하고, L2 Loss는 Outlier 의 등장에 신경써야 하는 경우 사용합니다.
L1, L2 regularization은 무엇인가?
L1 regularization (Lasso)
L1 regularization은 다음과 같습니다.
기존의 loss function에 λ/2∗|w|를 더해줍니다. 실험 case에 따라 λ에 곱해주는 1n/(12)가 달라지기도 합니다. 여기에서 λ는 상수를 의미합니다. 우리는 역전파(backpropagation)을 할 때 이 w에 대해 편미분을 하게되는데, 여기서 보아 이 λ가 0에 가까워질 수록 regularization의 효과는 없어진다고 할 수 있습니다.
위와 같은 식으로도 표현할 수 있습니다. 의미는 똑같으며, 여기서 C0은 원래의 loss function을 일컫습니다.
regularization의 식에서는 loss function에 가중치의 절대값을 더해준다는 것이 중요합니다.
가중치 w에 대해 편미분을 하면 다음 식과 같습니다.
이를 보면, w값 자체를 줄이는 것이 아닌 `w`의 부호에 따라 상수값을 빼주는 방식으로 regularization을 수행한다는 것을 알 수 있습니다. 이는 기존의 loss function 에 가중치의 크기가 포함되면서 가중치가 너무 크지 않은 방향으로 학습하게 됩니다.
L1 Regularization 을 사용하는 Regression model으로는 Least Absolute Shrinkage and Selection Operater(Lasso) Regression이 있습니다.
L2 regularization (Lidge)
L1 regularization은 다음과 같습니다.
이 역시 실험 case에 따라 앞의 1n가 달라지는 경우가 있습니다. L은 기존의 loss function, n은 train data의 수, λ는 regularization 변수를 의미합니다. λ는 상수이고, 0에 가까울 수록 정규화의 효과는 없어집니다. w는 가중치를 의미합니다.
이 식은 다음과 같은 식으로도 표현할 수 있습니다.
여기서 C0은 원래의 loss function을 의미합니다.
L2 regularization은 L(기존의 loss function)에 가중치를 포함한 식을 더함으로써 (1) L이 작아지는 방향으로 학습하고, (2) w이 작아지는 방향으로 학습하게 됩니다. 이 때 w에 대해 편미분하면 값이 작아지는 방향으로 진행하게 됩니다. 이를 우리는 Weight decay라 합니다.
해당 식을 w에 대해 편미분하면 다음과 같아집니다.
이 때, L2 regularization은 weight decay에 의해 특정 가중치가 비이상적으로 커지고 학습에 큰 영향을 끼치는 것을 방지합니다.
L2 Regularization 을 사용하는 Regression model으로는 Ridge Regression가 있습니다.
L1,L2 regularization의 차이
그래서 결국 Regularization은 가중치 `w가 작아지도록 학습한다는 것, Local noise 에 영향을 덜 받도록 하겠다는 것이라는 것을 배웠습니다. 이는 즉, Outlier 의 영향을 더 적게 받도록 하겠다는 것입니다.
예시를 들면,
a=(0.3,-0.3,0.4)
b=(0.5,-0.5,0)
일 때 a,b에 대하여 L1 norm을 계산하면
a,b에 대하여 L2 norm을 계산하면
을 얻을 수 있습니다. 이는 즉
L1 Norm을 사용할 시, 경우에 따라 특정 Feature(벡터의 요소) 없이도 같은 값을 낼 수 있다는 것을 알 수 있고, L2 Norm을 사용할 시 각각의 벡터에 대해 항상 Unique 한 값을 낼 수 있다는 것을 알 수 있습니다.
위 그림을 보며 다시 한번 정리하겠습니다. L1 Norm 은 파란색 선 대신 빨간색 선을 사용하여 특정 Feature 를 0으로 처리하는 것이 가능합니다. 즉, L1 Norm 은 Feature selection 이 가능합니다.
이 특징은 L1 Regularization 에 동일하게 적용 될 수 있습니다. L1 은 Sparse model(coding) 에 적합하고, convex optimization 에 유용하게 쓰입니다.
단, L1 Regularization 의 경우 위 그림처럼 미분 불가능한 점이 있기 때문에 Gradient-base learning 에는 주의가 필요합니다.
reference
- https://m.blog.naver.com/laonple/220527647084
- https://light-tree.tistory.com/125
- https://en.wikipedia.org/wiki/Taxicab_geometry
- https://towardsdatascience.com/regularization-the-path-to-bias-variance-trade-off-b7a7088b4577
- https://www.quora.com/When-would-you-chose-L1-norm-over-L2-norm
- https://www.stand-firm-peter.me/2018/09/24/l1l2/
- https://m.blog.naver.com/laonple/220527647084
- https://ratsgo.github.io/machine%20learning/2017/10/12/terms/
'Learning > Tuning' 카테고리의 다른 글
Batch Normalization (0) | 2020.04.12 |
---|---|
Dropout (0) | 2020.04.12 |
Regularization (0) | 2020.04.12 |
Hyperparameter (0) | 2020.04.12 |
Overfitting과 Underfitting 정의 및 해결 방법 (2) | 2020.04.12 |