본문으로 바로가기

| 들어가며

오늘은 Bias(편향), Variance(분산)의 Trade-off를 알아보고 이를 바탕으로 머신러닝은 얼마나 학습을 시켜야 할지 생각해 볼까 한다.


머신런닝을 공부하다보면 Bias(편향)와 Variance(분산)를 꼭 마주하게 된다. 

그렇다면 Bias와 Variance란 무엇일까? 


우리가 무언가를 학습시킨 뒤 예측할때 그로 인한 오차가 발생하기 마련인데 이때 발생하는 세 가지 두 가지 오차가 바로 Bias와 Variance 이다.

쉽게 말해 그냥 오차의 유형이다.  Bias에러 Variance에러... 

그리고 이 둘은 trade-off 관계가 있어서 시소처럼 한쪽이 올라가면 한쪽이 내려가는 관계다.

이를 증명하는 수식은 아래에서 보기로 하고 그에 앞서 아래 그림을 먼저 보자


그림은 Bias(편향) 오차와 Variance(분산) 오차를 표현해 주고 있다.


타겟의 한 가운데를 실제 값이라고 한다면 우리가 점을 찍은 부분은 예측을 한 부분이다.

Bias 오차가 높다는 것은 실측치와 예측치간의 오차가 크게 벌어진 상황을 말하고,

Variance 오차가 높다는 것은 예측의 범위가 넓다는 것을 말한다.


다른말로 표현하면 

Bias 오차가 높다는 것은 과소적합한 상황이고(=꾸준히 틀리는 상황)

Variance 오차가 높다는 것은 과대적합한 상황이다.(= 예측 분포가 큰 상황)


그런데 사실 필자는 위에 그림과 설명을 들을 때 더 혼동스러웠다.

자, 이해를 돕기 위해 한 가지 그림을 더 보자


모델을 학습을 시킬수록 모델 복잡도는 더 올라간다. 

이를 X축 model complexity로 표현하면,

학습을 시킬수록 (=모델 복잡도가 올라갈 수록) Bias(편향)은 줄어드나(↓)  Variance(분산)는 올라가는(↑) 것을 말하고

학습이 덜될수록 (=모델 복잡도가 낮을수록) Bias(편향)은 올라가나(↑) Variance(분산)는 내려가는(↓) 것을 말한다.


처음 들으면 참 어렵다.

이를 표로도 표현해보자


 구분

 모델 복잡도

 적합성

 Bias 오차가 낮은 &

 Variance 오차가 높은

 복잡

 과대적합(over fitting)

 Bias 오차가 높은

 Variance 오차가 낮은

 단순

 과소적합(under fitting)


다시 풀어 말하자면 

* Bias(편향) 에러가 높아지는 것은  많은 데이터를 고려하지 않아 (=모델이 너무 단순해)  정확한 예측을 하지 못하는 경우를 말하고,

* Variance(분산) 에러는 노이즈까지 전부 학습해(=모델이 너무 복잡해) 약간의 input에도 예측 Y 값이 크게 흔들리는 것을 말한다.

이 두가지 에러가 상호 Trade-off 관계에 있어서 이 둘을 모두 잡는 것은 불가능 한 딜레마가 생긴다.



| 수식을 통한 이해

왜 그런지는 다음의 식을 보자 


출처 : http://rfriend.tistory.com/search/bias

전체 Error에 대한 합은 Variance와 Bias 그리고 Noise로 표현된다.

1번은 Variance이고 2번은 Bias이다. 이 둘은 reducible error 로 불린다.  우리가 학습을 통해 줄일 수 있는 영역이다. 

반면 3번의 noise는 본질적인 한계치로 irreducible error라 하며 어찌 할 수 없는 오차다


그런데 가만 수식을 보면 1번과 2번의 공식에 E[f(hat)(X) 가 부호가 반대로 같이 들어가있다.

결국 예측 기대치를 올릴 수록 둘은 trade-off 관계에 빠질 수 밖에 없어 보인다. ( 이 부분은 수식을 좀 더 살펴봐야 할것 같다. )


복잡하니 결론만 기억하자. 

결국 기대되는 MSE(Mean Squared Error)의 값은 Variance와 Bias간의 Trade-off 때문에 

계속 학습 시킨다고 해서 전체 Error가 줄어드는 것은 아니다.

때문에 Training을 시킨다고 해도 Bias와 Variance를 고려해 가장 낮은 저 지점을 찾아 최적의 모델을 만들어야 한다.



| 그렇다면 머신러닝은 언제까지 학습을?

그러면 어떻게 해야 이 지점을 찾을 수 있을까? 

결론부터 얘기하면 Validation set이라고 하는 데이터 set이 하나더 필요하다.


다음 그림을 보자

학습시킨 모델을 Test Sample에 놓고 조금씩 비교하다보면 초반 Error는 떨어지나 시간이 지날수록 Error가 증가하는 것을 보인다.

결국 Training 을 무조건 지속 하기보다 두 가지의 Test Sample의 에러가 증가하는 시점에 학습을 중단 하는 것이 좋다.

Test Sampe이라고 표현되어 있지만 실제는 Validation Set으로 이해하면 된다. 

즉 모델을 한번 학습을 시켰다면 그것을 Validatioin Set으로 에러율이 얼마나 내려가는지 한번 더 확인해 보는 것이다.

Validation Set이 최적의 Error율을 보인다면 그 지점이 가장 학습이 잘 된 지점으로 생각하고 학습을 중단 시키면 된다.

그리고 Test Set으로 실제 모델의 평가를 하면 된다. 


사실 Training, Validation, Test Data Set에 대한 분리/선정도 방법론이 따로 있으나 이는 다른 블로깅에서 언급하기로 한다. 


| 결론

지금까지 Bias와 Variance 를 알아보았다.

결론은 완벽한 모델은 있을 수 없고 적당히 오차를 허용하라는 인생의 진리 아닐까? ^^a



| 참고 site

Training / Test / Validation Set : 오버피팅을 피하는 방법 : https://www.youtube.com/watch?v=GtLe9Z2No28&list=PL0oFI08O71gKEXITQ7OG2SCCXkrtid7Fq&index=7


과적합(Over-fitting), Bias-Variance Trade-off (Delimma) http://rfriend.tistory.com/search/bias



도움되셨다면 공감 버튼을 꾸욱~


댓글을 달아 주세요