티스토리 뷰
2. Neural Networks / L3. Training Neural Networks - Early Stopping, Regularization
chrisysl 2018. 7. 16. 21:23Early Stopping
- 위의 모델들의 epoch에 따른 training set과 testing set의 모델변화 추이를 봐보자.
- 우측으로 갈 수록 training set에 대해 정확하다 못해 너무 지엽적이게 된다.
- 우리는 적절한 일반화가 잘 된 모델을 찾는것이 목표이기 때문에
- 맨 우측 모델은 너무 세부적이라 일반화에 실패한 모델이 되어버린다.
- 이는 testing set을 적용시켜봤을때 하나도 들어맞는것이 없게 되며
- 마치 training set을 단순 암기 한 모델정도 뿐이다.
- 따라서 우리의 목표는 Training Error도 적고, Testing Error도 적은 지점을 찾는것이다.
- 모델 복잡도 그래프를 봐보면 특징이 있다.
- Testing error의 경우 기울기가 급변하며 하향하다 상향하는 곡선을 그린다.
- 따라서 우리는
- Testing error가 감소를 멈추고 증가할 때 까지 점점 epoch를 늘려나가며 (degrade in descent)
- goldilocks point라 불리는 저 지점에 도달하면 학습을 멈출것이다.
- 이를 Early stopping 이라 부르고 머신러닝에서 neural networks를 학습하는데 널리 쓰이는 알고리즘 중 하나이다.
Regularization
- 위의 두 solution중 어떤것이 더 나은 모델일까?
- 둘 다 같은 그래프를 그린다. 즉 그래프의 모양이 동일하다.
- 하지만 계수(weights)가 다르므로 sigmoid연산시 리턴하는 값이 달라진다.
- sigmoid 연산을 수행해보면 확실히 아래 모델이 0 과 1에 더 근접하므로
- 더 나은 모델이라 판단할 수 있다.
- 하지만, 바로 직전에 우리는 overfitting의 개념에 대해 다뤘었고 이를 바탕으로 다시 생각해보자.
- prediction의 값을 고려하더라도 첫번째 모델이 왜 우리가 추구해야하는 방향인지를 설명해보면,
- 우리는 여지껏 네트워크를 설계할 때 항상 사용하였던 방법이 gradient descent이다.
- 왼쪽 모델은 적절한 기울기의 변화로 gradient descent를 통한 방향설정이 수월하다.
- 그러나 오른쪽 모델은 기울기의 변화가 급격한 나머지
- gradient descent를 이용하여 error를 최소화 해 나가는데에 제약이 따른다.
- 또한 앞선 예제에서 봤듯, 일반화(generalization)가 어려워지게 된다.
- 따라서 계수가 커짐에 따라 overfitting model이 될 여지가 더 많다는것을 바탕으로
- 우리는 weights에 패널티를 주는 방식으로 최적의 모델을 찾아 나갈것임
- L1 Error Function 에서는 마지막에 전체 weights의 절대값의 합에 람다를 곱해줘서 패널티를 주고
- L2 Error Function 에서는 제곱값의 합에 람다를 곱해줘 패널티를 준다.
- 두 모델 모두 매우 유명하기 때문에 우리가 구현하려는 모델의 특징에 맞게 적절하게 선택하여야 한다.
- L1을 적용 할 때 우리는 0과 1로 구성된 벡터로 끝나는 경향이 있다.
- 즉, 작은 가중치는 0이되는 경향이 있기 때문에,
- 가중치 weights의 수를 줄이고 작은 set으로 만들려면 L1을 사용하는 편이 적절하다.
- 이는 feature selections의 상황에도 유용하고
- 때로는 features가 매우 많은 상황에서 문제가 발생한 경우
- L1 정규화(L1 regularization)는 중요한 것을 선택하는 데 도움이되며 덜 중요한 나머지는 0으로 바뀐다.
- 반면 L2 정규화(L2 regularization)는 모든 weights를 일률적으로 작게 만든다.
- 따라서 이 방법이 최적의 모델을 찾아가는데에 있어 더 적합하므로, 주로 이 방법을 사용하여 정규화한다.
- 왜 L2 정규화는 모든 weights를 일률적으로 작게 만드는지에 대해 생각해보면
- (1, 0)이라는 벡터의 경우 L1 정규화의 방법인 절대값을 취해 합을 구해보면 1이 된다.
- 마찬가지로 L2 정규화 또한 제곱의 합이 1이 된다.
- 하지만 (0.5, 0.5) 벡터의 경우 L1 정규화를 거치면 1이 되지만
- L2 정규화를 거치면 동일하게 0.5가 된다.
- 따라서 L2 정규화를 거친 모델은 더 작은 제곱의 합을 리턴하고
- 같은 논리로 더 작은 함수를 리턴하기 때문에 (0.5, 0.5) 벡터를 더 선호하게 된다.
- 따라서 모든 weights가 일률적으로 작아지는 것임.