Regularization your neural network
- 이번 시간에는 머신러닝 알고리즘 학습 시 발생하는 Overfitting 문제를 해결하는 테크닉을 배워보겠습니다
- 우선 Regularization에 대해 알아보겠습니다
- 다음으로 Weight Decay에 대해서도 알아보겠습니다
본 포스팅은 Deep Learning Specialization Course의 2번째 강의인 'Improving Deep Neural Networks - Hyperparameter Tunning, Regularization and Opimization'을 학습하며 정리한 노트입니다. 궁금하신 점이 있으시다면 언제든지 문의 부탁드립니다! 잘 못된 내용 또한 바로잡아주신다면 정말 감사하겠습니다!
📩 leeyj0511@naver.com
댓글도 환영입니다!😃
Background Knowledge
- 배경지식
- Norm이란 무엇인가?
- 출처: 스카이비전b (https://bskyvision.com/825)
- 선형대수 기초
- vector의 길이를 구하기 위한 방법으로 norm에 대해 알아보겠습니다
- norm을 구하는 일반적인 방법으로는 L1 norm과 L2 norm이 있습니다
- L1 norm은 최단 경로를 L2 norm은 직선의 거리(또는 Euclidean Dist)를 구하는 것입니다
Part1. Regularization
- 우리가 학습하는 알고리즘이 train set을 외워버리다시피 학습하게 된다면 Overfitting 문제가 발생하게 됩니다
- 첫 번째 파트에서는 high variance 일 때, Overfitting을 해결하는 Regularization 방법에 대해 학습해보도록 하겠습니다
- 학습 목표는 다음과 같습니다
- Logistic regression regularization
- Neural Network regularization
- How does regularization prevent overfitting?
Logistic regression
- Neural Network를 학습했을 때와 마찬가지로 먼저 Logistic regression부터 살펴보겠습니다
- Logistic regression을 구현한 간단한 네트워크를 정규화시키고 싶다면 Cost Function에 λ(lambda) term을 추가해주면 됩니다
- L1 norm과 L2 norm 중 하나의 term을 추가해주면 되는것입니다
- 좀 더 자세한 내용은 Neural Net의 예제를 통해 살펴보도록 하겠습니다
Neural Network
- L-개의 layer를 갖는 Neural Network를 가정해보겠습니다
- 이때 Cost Function은 J라고 하겠습니다
- 위의 수식을 살펴보면 Logistic Regression과 마찬가지로 Cost Function에 λ(lambda) term이 추가된 것을 볼 수 있습니다
- λ(lambda)를 추가해주는 것이 핵심입니다.
- 왜 이 방법이 효과적인 걸까요?
- 이를 위해서는 Weight Decay에 대한 이해가 필요합니다
Weight Decay
-
deepapple 블로그를 참고하여 학습하였습니다
- Ian Goodfellow의 Deep Learning Book을 정리한 포스팅입니다
-
Weight Decay는 문자 그대로 'weight값을 줄여주는 것'으로 이해하면 직관적입니다
-
Weight Decay에 대해 학습한 뒤, 다시 Neural Net의 정규화(Regularization)에 대해 살펴보겠습니다
- Deep Learning에서 Generalization, Regularization이라는 말의 의미는 상당히 혼동되는 부분입니다(적어도 제게는 두 단어의 의미가 크게 와 닿지 않았습니다)
- 우선 Generalization부터 살펴보겠습니다
- 일반적인 ML 알고리즘은 train set과 test set으로 학습을 합니다
- 이렇게 학습을 하는 이유는 무엇일까요?
- 알고리즘이 train set으로 학습하고 정답을 외워버린다면 일반적인 성능을 기대할 수 없기 때문입니다.
- 다시 말해, train set 이외의 데이터에 대해서는 비슷한 성능을 기대할 수 없기 때문입니다.
- 따라서 우리의 알고리즘은 일반적인 성능을 가져야 합니다
- 이때 등장하는 개념이 Overfitting입니다
- Overfitting & Underfitting
- Overfitting에 대한 직관은 "train set을 외워버릴 지경에 이른 것입니다"
- Model capacity가 너무 높은 나머지(파라미터가 train set에 완전하게 녹아들었다) train set을 외워버리는 지경에 이른 것입니다
- 반면 Underfitting은 복잡한 데이터에 대해 학습이 제대로 이뤄지지 않은 상황을 말합니나
- 이번 시간에는 Overfitting을 해결하기 위한 방법에 주목할 것입니다
- Weight Decay
- "Weight를 부식시켜 버릴 거야"
- 콩글리쉬로 직역하면 위와 같은 사태가 발생하게 됩니다...ㅎㅎ
- 재밌는 점은... 크게 다르지 않다는 것입니다
- 'Weight Decay'란 정말로 weight의 영향력을 감소시키는 데 있습니다
- 자세한 이해를 위해 'Neural Network Regularization' 수식을 다시 살펴보도록 하겠습니다!
다시 이해하는 Neural network Regularization
- 중간에 빨간 글씨로 weight decay 아래에 수식을 풀어보았습니다
- w의 편미분 값은 Cost Function의 미분 값으로 부터 흘러들어온 (from backprop)과 Cost Function에서 추가주었던 λ(lambda)term의 미분값으로 이루어집니다
- 수식을 정리해보면 (1- alpha*(λ/m)w [l]의 형태로 w[l]이 정리되는 것을 알 수 있습니다
- 따라서 parameter update시 w[l]의 값을 계속해서 일정 비율로 낮춰주는 효과를 갖는 것입니다
정리
- 정리하면 weight decay는...
- weight decay는 Neural Network의 Overfitting을 방지하는 하나의 technique입니다
- Cost Function에 L1 norm 또는 L2 norm을 추가해줌으로써 레이어마다 weight의 영향력을 줄여줄 수 있는 것 입니다
- weight의 크기가 줄어든다면 자연스럽게 Gradient Descent(경사 하강법) 시 Gradient가 증폭(exploding)하는 것을 막을 수 있을 것입니다
댓글