Bias & Variance는 trade-off가 다가 아니다.

2023. 4. 2. 17:45개발/머신러닝

보통 머신러닝 관련 교육을(어디에서건) 받은 사람들은 Bias and variance trade-off 관계에 대해서 들어본 적이 있을 것이다. bias와 variance는 trade-off 관계를 지녔기 때문에 이 둘의 균형을 잘 찾아야 모델의 성능을 높일 수 있다는 말이다. 하지만 bias와 variance에는 단순히 둘이 trade-off 관계를 가졌다는 것 외에도 더 많은 것을 의미하고 있다. Bias와 Variance를 알면, 모델이 문제인지, 혹은 데이터셋이 문제인지 파악이 가능하다.

 

머신러닝 모델에서 에러는 크게 두 가지, Approximation과 Generalization에서 온다. 쉽게 말해 모델이 알고리즘이 정답 값을 추정하는데에서 발생하는 에러와 데이터셋 자체의 분산으로 인해 발생한 에러라고 보면 된다. 머신러닝 모델에서의 에러는 이 두 에러의 합과 같거나 작다. 만약 우리가 무한한 시간동안 계속 데이터를 받아왔고, 그 데이터셋을 사용해 학습을 한 수많은 모델이 있다면, 이 모델들의 평균을 통해 Error의 기대값을 구할 수 있을 것이다. 그 Error를 Squared Error로 놓자. 그렇다면 Error의 기대값은 다음과 같은 꼴로 나타낼 수 있다.

$$E_{D}[E_x[(g^{(D)}(x) - f(x))^2]] = E_x[E_{D}[g^{(D)}(x) - f(x))^2]]$$

  • $g^{(D)}$: 데이터셋으로 학습된 모델,
  • $f(x)$: True function(target)
  • $D$: 데이터셋

 

이를 간단하게 표현하면 Bias의 제곱과 Variance를 합한 형태로 나타낼 수 있다.

$$E_D[E_{out}(g^{(D)}(x))]=E_x[E_{D}[(g^{(D)}(x)-\bar{g}(x))^2]+(\bar{g}(x)-f(x))^2]$$

  • $variance(x)$: $E_{D}[(g^{(D)}(x)-\bar{g}(x))^2]$
  • $bias(x)^2$: $(\bar{g}(x)-f(x))^2$
  • $\bar{g}(x)$: 무한한 데이터셋으로 학습된 모델 g의 평균

 

그런데, 이 식을 잘 보도록 하자. variance는 $E_{D}[(g^{(D)}(x)-\bar{g}(x))^2]$이다. 즉, 현재 우리가 가지고 있는 데이터셋으로 만든 모델 output과 무한한 개수의 데이터를 순차적으로 학습시킨 모델들의 output의 차이라는 것이다. 가장 이상적인 형태의 데이터셋으로 학습시킨 경우와 현재 우리의 데이터셋으로 학습시킨 모델의 차이는 곧 우리가 가진 데이터셋에 문제가 있다는 뜻이다. 이 경우, 데이터셋을 더 많이 확보하는 형태로 문제를 해결할 수 있을 것이다.

 

한편, bias를 생각해보자. bias는 $\bar{g}(x) - f(x)$이다. target function 대비 모든 데이터를 학습시킨 모델의 차이는 곧 모델 자체가 가지고 있는 한계점이다. 아무리 많은 데이터를 학습해도 모델 자체가 내포한 한계로 인해 두 값의 차이가 커지기 때문이다. 예를 들어 linear regression으로 사인파 곡선 형태의 target function의 parameter를 추론해본다고 가정하자. linear regression은 직선 형태로만 나아가기 때문에 이 경우 bias가 상당히 클 것이다. 이 경우, 더욱 복잡한 모델을 사용하여 문제를 해결할 수 있을 것이다.

 

한편, bias와 variance가 trade-off인 이유도 위 식에서 확인할 수 있다. Error의 기대값은 결국 Variance + Bias^2의 기대값, 즉 $E_x[E_{D}[(g^{(D)}(x)-\bar{g}(x))^2]+(\bar{g}(x)-f(x))^2]$이다. 그런데, variance에서 $\bar{g}(x)$값을 높이면 bias에서의 $\bar{g}(x)$도 당연히 높아지게 된다. 결국, variance를 낮추려면 bias를 높여야 하고, bias를 낮추려면 variance를 높여야 한다. 이것이 바로 bias-variance의 trade-off 관계이다.

 

그런데, 과연 여기서 bias와 variance를 구할 수 있을까? 결론만 말하자면 불가능하다. 우리는 무한한 데이터를 사용하여 학습한 모델들의 평균인 $\bar{g}(x)$를 구할 수 없다. 모든 데이터셋은 일종의 sample이기 때문이다. 전화박스를 타고 다니는 시간여행자라고 해도 무한한 시간동안 생성된 무한한 데이터를 모으는 것은 불가능할 것이다. 또, 우리는 당연하게도 target function $f(x)$을 알 수 없다. 때문에 bias와 variance를 구하는 대신, 비복원추출인 k-fold cross validation과 accuracy, precision, recall, 혹은 F-Score등의 metric을 활용하여 이를 시뮬레이션하고 모델의 성능을 평가할 수 있다.