[ML / Andrew Ng] Advice for Applying Machine Learning - Bias vs . Variance
train error와 cross validation(cv) error의 차이를 확인하고 모델의 문제를 확인하고 싶을 때 사용하는 지표가 bias와 variance이다. 왼쪽 상황과 같이 underfit된 상황을 high bias를 갖고 있다고 하고 오른쪽과 같이 overfit된 상황을 high variance를 갖고 있다고 말한다. 그리고 그 중간 상황을 우리가 원하는 정상적인 예측값이다.
train error 값과 cv error값이 주어졌을 때 어떤 문제 상황인지 알고 이에 대처하기 위해서는 두 값을 비교해보면 알 수 있다. 위 그래프는 degree of polynomial d값을 x축으로 삼아 두 error값을 나타낸 그래프이다.
위 그림에서 왼쪽과 같이 cv error와 train error가 비슷하면서 train error가 높은 상황이면 underfit 되었고 high bias를 가진 상황이다. 그 이유는 underfit이 되었기에 두 데이터 set에 대한 error가 높기 때문이다. 오른쪽과 같은 반대 상황은 cv error가 train error보다 훨씬 크면서 train error가 낮은 상황이고 이 경우 overfit 되었고 high variance를 가진 상황이다. overfit 되었기에 train set에 대해서는 error가 낮은 반면 cv set에 대해서는 error가 높은 모습을 보여준다.
우리가 regularization parameter인 lambda를 조정할 때 너무 크게 값을 잡게 되면 regularization 항이 지배적이게 되어 high bias인 underfit 상황이 나오게 되고 반대로 너무 잡게 잡으면 high variance인 overfit 상황이 나오게 된다. 그렇기에 모델의 정확성을 위해서는 lambda값을 적절하게 정하는 것도 중요하다.
그 방법으로 적절한 hyper parameter 를 찾는 방법인 cv set를 테스트에 이용해볼 수 있다. lambda를 0부터 0.01 그 후로 2배씩 증가시키며 cv error를 측정해보면 적절한 lambda 값을 찾을 수 있다.
training set size - m에 따른 error 값을 나타낸 그래프를 Learning curve 라고 하는데 이를 보면 현재 어떤 상황인지 진단할 수 있다. 위 상황을 보면 이미 cv error와 train error 값이 크고 그 차이가 크지 않다. 이 상황은 high bias 된 상황으로 m 을 늘린다고 해서 상황이 쉽게 해결되지 않는다.
이 상황은 cv error 와 train error 의 차이가 큰 경우로 m을 늘리면 그 차이가 줄어들어 cv error가 점점 줄어드는 것을 확인할 수 있다. 그러므로 high variance 된 상황에서 m을 늘리는 것은 도움이 된다고 할 수 있다.
이제 다시 원점으로 돌아와 regularized lingear regression을 디버깅해보자. 위에서 봤던 high variance와 high bias된 두 상황에 따라 다양한 방법들을 사용해볼 수 있다. 위 순서대로 보자면
- (high variance) 더 많은 training examples을 넣는다 > overfitting된 상황을 막을 수 있고 일반화된 모델 설계가 가능하다.
- (high variance) feature을 더 줄인다. > feature의 개수가 적어지면 overfitting이 되는 상황을 막을 수 있다.
- (high bias) 더 많은 feature을 추가한다. > feature의 개수가 많아지면 dataset에 fitting이 잘 된다.
- (high bias) 더 많은 polynomial feature을 추가한다. > 모델의 항이 많아지게 되면 결국 fitting이 더 잘되게 된다.
- (high bias) lambda값을 줄인다. > regularization 항의 영향이 줄기에 fitting이 더 잘 된다.
- (high variance) lambda값을 크게 한다. > regularization 항의 영향이 커지기에 fitting을 억제한다.
Neural network 에서 디버깅 하는 법도 알아보자. 왼쪽 그림과 같이 layer가 적거나 activation unit의 개수가 적게 되면 그 만큼 변수가 더 적기에 underfitting, 즉 high bias인 상황이 나타나게 된다. 장점으로는 계산이 빠르다는 점이 있다. 오른쪽 그림과 같이 layer와 activation unit의 개수가 많게 되면 변수가 많아지게 되고 dataset에 대한 fitting이 잘 되지만 그만큼 overfitting의 문제가 생길 수 있다. 이런 high variance를 가진 경우 계산도 느리기에 regularization을 이용해 문제를 해결할 수 있다.