Machine Learning

Bias(편향)과 Variance(분산)

jinmc 2021. 5. 24. 20:36
반응형

stanford university의 machine learning lesson 6 (Advices for machine learning application 관련 내용 정리):

https://jinmc.github.io/ds_blog/posts/ml_andrew_ng/wk6/

 

이 이론은 Machine learning에 있어서 가장 기본적인 내용 중에 하나 입니다.

가장 중요한 내용 중 하나이지만, 많이 봐도 헷갈리는 부분 중 하나입니다. 

아마도 용어가 생소한 것도 그 이유 중 하나가 되지 않을까 싶습니다.

 

가장 쉬운 예부터 살펴보죠!

우리가 아는 가장 쉬운 예는 linear regression일 겁니다. 

하지만 linear regression은 경향성을 보여줄 순 있어도, 선형으로 나누어지지 않는 변수들은 어떻게 나눌수 있을까요?

다음 그림을 보면,

 

d 는 여기서 복잡도를 나타냅니다. 

복잡도가 낮다면, training data의 error율이 높게 나타나겠지요?

d = 2 인 이차함수 모양일 때, 잘 맞는 걸 볼 수 있습니다.

d = 3 이상일 때는 오히려 잘 맞기는 하지만, high variance로 overfitting 되는 걸 볼 수 있습니다.

 

여기서의 overfitting은 training data에만 너무 맞춰서 학습되어짐을 말합니다.

그럼 과연 overfitting을 방지하려면 어떻게 해야 할까요?

 

위에 보시면, 분홍색 선은 training loss를, 초록색 선은 Cross-Validation 또는 test의 loss를 나타냅니다.

앞의 training 과 test set의 error 율이 높을 때를 underfitting (high bias), 

뒤의 training set의 error율은 낮은데 test set의 error율이 높을 때를 overfitting (high variance),

그리고 test set의 error율이 최저점을 가장 알맞은 점이라고 합니다.

왜냐면 계속 학습을 할수록 training set에 맞춰서 학습에 overfitting 이 될 것이기 때문이죠.

 

이를 해결하기 위한 방법 중 하나로 Regularization(정규화)가 있습니다.

Regularization은 식에 들어가는 상수값으로, 상수값이 커지만 당연히 식이 더 단순화 되고,

상수값이 작아지면, (즉 0으로 접근하면) 식이 더 복잡해지겠죠?

이로 Overfitting이 일어날 시 regularization 상수값을 크게 만들어주고,

Underfitting이 일어날 시 regularization 상수값을 작게 만들어주면 될 것 같습니다.

 

또한, 어떤 네트워크를 선택할 지도, bias와 variance를 이용해서 정할 수 있습니다.

High bias (underfitting)의 경우, 더 복잡한 모델을 사용하고, 더 많은 시간을 학습하는 게 좋으며,

High variance (overfitting)의 경우, 더 많은 data를 input하고(적은 data에 과학습하는 것을 막기 위해), Regularization 값을 높이고, feature 수를 줄이고, 등을 사용하면 될 것입니다.

 

Bias와 Variance의 상관관계를 보면, 둘의 균형을 맞추는 것이 중요해 보입니다. 

하지만 중요한 건, 많은 데이터를 사용할 경우, Bias나 Variance를 둘 다 낮출 수 있어서, 많은 data의 양이 확실히 중요함을 알 수 있습니다.

반응형