본문 바로가기
Computer Science/TIL-Today I Learned

L1 L2 Norm, Loss, Regularization

by Tanya 탄야 2019. 9. 10.

1. Norm

norm is a "function that assigns a strictly positive length or size to each vector in a vector space".

 

여기선 L1 Norm 과 L2 Norm 을 알아본다.

 

L1 은 taxicab geometry 라고도 하듯이, grid의 선을 따라 p점에서 q 점으로의 거리이다. 여러가지 경우의 수가 가능하다. 

 

 

L2 는 p점에서 q점으로 가는 직선(대각선) 거리이다. Unique 한 값이다. 

 

 

 

2. Loss

 

실제값과 측정값의 오차를 따질 때도 L1, L2 norm 의 개념을 이용할 수 있다. 

 

L1 을 이용한 Loss 는 Absolute Loss,

L2 를 이용한 Loss 는 Squared Loss 라고 한다.

 

여기서, L1 Loss, L2 Loss 중 어떤 게 더 Outliers 에 robust 할까? (덜 민감할까?)

 

L1 Loss 이다.

이유는, 

https://www.quora.com/When-is-square-loss-not-good-for-loss-function-for-regression 요기 (<-LATER!)

 

 

 

3. Regularization

 

Overfitting 과적합 문제를 해결하기 위한 방법 중 하나로 regularization 이 있다. 

 

 

위 수식처럼 가중치값을 cost 에 더해준다. 

앞의 람다 값을 조정해서 람다값이 크다면 w를 더 0에 가까워지게 하는 반면 training set 의 정확도는 떨어진다.

람다값이 상대적으로 작다면, 조금 더 training set에서의 정확도는 올라갈 것이다. 

 

 

 

이때, L1 regularization 을 사용하면 LASSO regression,

L2 regularization 을 사용하면 Ridge Regression 이라고 한다. 

 

 

 

L1 regularization 과 L2 regularization 의 차이를 보자. 

 

 

 

L1은 특정 feature 들이 다른 feature 들보다 더 중요할 때 적합하고, L2는 data 의 feature 들이 다 고르게 중요할 때 적합하다. 

 

L1 - feature 중 일부분 중요 

L2 - feature  다 고르게 중요 

 

 

왜??? 그럴까???

 

L1 의 경우, feature 들의 가중치를 일부 0으로 설정하는게 가능하다. 즉, 불필요한 feature 는 무시할 수 있도록 한다. 

이는 L1이  sparse model, convex optimization 에 적합한 이유라고 하는데,

 

나중에 더 공부해봐야겠다. 

 

 

L1 norm 은 그림에서 볼 수 있 듯, 특정한 점들을 거치지 않고 가도 그 값이 나올 수 있다. 노란색이나, 파란색이나,빨간색이나 모두 같은 거리다. 

 

빨간색 같은 경우, data 에서 한 feature 값만 가중치를 주고 다른 가중치들을 모두 0으로 설정했다고도 볼 수 있을 것이다. 

 

 

 

 

하나 더,

L1 norm은 미분불가능이고 L2는 미분가능이다. 

 

 

https://light-tree.tistory.com/125

https://bskyvision.com/193

https://ratsgo.github.io/machine%20learning/2017/10/12/terms/

https://en.wikipedia.org/wiki/Taxicab_geometry

반응형

'Computer Science > TIL-Today I Learned' 카테고리의 다른 글

Image Segmentation  (0) 2019.09.16
Virtualenv 에 tensorflow install ERROR !  (2) 2019.09.11
CNN에서의 Deconvolution  (0) 2019.09.09
Linux bash shell on Windows 10  (0) 2019.09.08
python 에서 JSON parsing  (0) 2019.09.07