14. Regularization

2018. 8. 19. 16:03

Regularization은 오버피팅(feature가 너무 많거나 지엽적인 데이터를 학습하여, 새로운 데이터에 대해서는 예측을 잘 못하는 것)모델의 해결방안 중 하나라고 언급된다.

정확하게는 복잡성을 줄여서 --> 오버피팅을 줄이거나 분산을 줄이는 것이다.
image

그 결과 training data에 대한 학습정도 <----> unseen data에 대한 일반화 정도를 trade off하는 것이다.
image


첫번째 간단한 방법으로는, 머신러닝 기초에서 설명한 것처럼, loss함수에 람다*(w1+w2+...+wn)을 붙히는 것이다.
이것은 상대적으로 큰 weight들에 작은 상수를 곱하여, weight를 줄이는 것이다.
image


더 일반적 많이 쓰는 Regularization은  L2 Norm을 가지고 정규화 하는 것이다.
즉 상수 람다/2m * ( 각 weight들의 제곱의 함)을 더하는 것이다.
그리고 이것의 의미는, 양수로서, 벡터공간 속에서 피타고라스와 같은 거리를 구하는 공식으로 생각하면 된다.

그리고 여기서의 m은 input되는 feature의 수이며,
람다는 regularization hyperparameter로서, 우리가 정하고 테스트해서 바꾸는 수이다.
image



요약하자면, 정규화란?
우리가 가진 weight들은 큰값도 있고, 작은 값도 있을 것이다. 큰 weight를 가진 feature는 모델에 크게 반영될 것이다.
하지만 L2를 이용한 정규화를 사용하여, loss함수에 제약을 걸면 상대적으로 큰 weight라도 다른 w와 비슷하게 w를 업데이트 시키게 된다.
그래서 상대적으로 큰 weight들도 작은 weight처럼 약하게 적용되는 것이다.

만약 람다(lr)를 높혔다고 가정해보자. 그러면 loss는 빠르게 w를 업데이트 시켜 0에 가까워질 것이다.
하지만 L2정규화를 통해 loss에 람다 * 양수가 곱해져있는 상황으로 loss혼자는 0으로 갈지라도 뒤에 값들이 더 커지게 된다.
그래서 전체loss는 2개의 합이므로 0에 수렴하진 않을 것이다.
그 결과 lr를 조절하는 것이 아니라,
결과적으로 loss전체를 최소로 만들려면 뒤에 더해진 weight들이 줄어드는 방식으로 w가 결정될 것이다.

w들이 줄어든다면
1)Regression문제에서는 해당 예측값h(x)의 전체적인 가파른 정도가 줄어든 것일 것이다.
image
2) 딥러닝에서는, 극단적으로 weight가 0으로 결정된다면, 해당 Layer는 사라질 것이다.
이러한 방식으로 복잡도를 줄여서, 마치 Dropout처럼 복잡도를 줄여나간다.
image


weight가 줄어들면, variance(분산)도 줄어든다고 한다. 그 결과 overfitting도 해결된다고 한다.


my)

Regularization은 loss 에 L2를 더해서, loss를 줄이려면 weight들을 줄여야한다.

낮아진 weight로 인해 모델의 복잡도도 줄어들면서, Overfitting이 해결된다.


실습

케라스에서는 모델전체의 loss에 l2정규화를 하는 것이 아니라, 각 Layer별로 정규화를 적용하여 overfitting을 방지하도록 해준다.
image

+ Recent posts