본문 바로가기
AI

Model의 Bias-Variance

by Ladun 2022. 2. 3.

이번 글에서는 AI 혹은 머신러닝을 공부할 때 자주 듣게 되는 개념 중 하나인 Model의 Bias-Variance에 대해서 정리하겠습니다. 

잘못된 정보나 이상한 내용에 대한 지적은 환영합니다.

 

Bias, Variance

Bias란 번역하면 편향이라고 하며, 모델이 예측한 값과 실제 정답 간의 오차를 의미합니다.

Variance란 번역하면 분산이라고 하며, 모델이 예측한 값이 서로 얼마나 퍼져있나를 의미하는 수치입니다.

  • Bias, Variance를 단순하게 정의로만 보면 이를 이해하기가 어렵습니다. (저의 경우에는 직관적으로 개념이 머리에 들어오지 않았습니다.) 그래서 공으로 분류하는 Task를 예시로 사용해보겠습니다.
  • Bias
    • 축구공, 농구공, 탁구공 등(데이터)이 들어왔을 때, 우리는 이것들을 공이라고 분류해야하는데, 상자로 분류하게 되면 실제 정답과의 차이가 생기게 됩니다. 이 차이의 정도를 Bias라고 생각하면 됩니다.
  • Variance
    • 보통 모델의 variance가 낮은 경우는 모델의 복잡도가 낮은 경우, variance가 높은 경우에는 모델의 복잡도가 높다고 합니다. 이 Task에서 복잡도를 공의 특징이라고 가정하겠습니다.
    • 동그란 것을 공이라고 분류한다고 가정하겠습니다. 이때는 동그랗다라는 특징만 있기 때문에 농구공이나 축구공의 문양과 같은 국소적인 특징에는 집착하지 않기 때문에 농구공, 축구공에 대해 모델이 비슷한 값을 출력할 것입니다. 즉, variance가 낮게 나오겠습니다.
      • 즉, 우리가 '공'이라고 분류하고 싶은 것들(데이터)에 대해서 모델이 출력하는 값들이 ''으로 비슷할 것입니다.
    • 근데 동그랗고, 맨들거리고, 등등 다양한 특징을 공을 분류하기 위해서 사용한다면 농구공, 축구공에 대해서 모델의 값이 많이 달라질 것입니다. 농구공은 겉이 까끌거리는 반면에 축구공이 좀 덜 하기 때문에 같이 공인데도 불구하고 예측값이 다를 것입니다. 즉, variance가 높게 나올 것입니다.
      • 우리는 농구공, 축구공, 탁구공(데이터)을 모두 공으로 분류하고 싶은데, 추가적인 특정(까끌거림, 크기 등)이 모델이 공을 다른 것으로 분류하도록 할 수도 있습니다.
    • 이와 같이 같은 공을 분류하는데도 어떤 특징을 사용하냐에 따라서 예측값의 퍼져있는 정도, 데이터셋에 예민한 정도가 다를 것입니다. 이러한 것을 측정하는데 사용하는 것이 variance입니다.
    • 이런 경우에는 농구공, 축구공의 세세한 특징에 대해서 학습을 하고 새로운 골프공이 오면 분류를 못 할 수도 있습니다.

위 그림은 train data 또는 test data에 대한 결과를 bias와 variance 관점에서 해석하는 그림입니다. 붉은색 영역은 target으로 정답, 참값을 의미하고 파란 점은 모델이 예측한 값을 의미합니다. 여기서 bias와 variance는 MSE 수식을 통해서 구해보면 loss로 볼 수 있습니다.

  1. Low Bias & Low Variance (좌상단): 실제 정답과 예측 값들의 차이가 적고, 예측값들의 variance도 낮아서 loss가 낮은 모델입니다. 모든 데이터셋에서 이러한 경향을 보인다면 학습이 잘 되었다고 볼 수 있습니다.
  2. Low Bias & High Variance (우상단): 예측한 값을 평균한 값은 정답과 비슷한데, 예측값들의 variance가 높아 loss가 높은 모델입니다.
  3. High Bias & Low Variance (좌하단): 예측값들의 variance는 낮지만 실제 정답과의 차이가 큰 경우로 학습이 잘 안 된 경우로 볼 수 있습니다.
  4. High Bias & High Variance (우하단): Bias와 Variance 둘 다 높아 학습이 잘 안 된 경우입니다.

train data에서 1.과 같은 결과였는데, test data에서는 2., 3., 4.와 같은 경우가 나왔다고 가정을 해보겠습니다. 왜 이런 현상이 일어났을까요?

 

2., 3., 4. 모두 에러가 큰 것이지만 서로 다른 유형인 것을 볼 수 있습니다. 즉, 학습이 잘못된 원인이 다른 것을 알 수 있습니다. 2.는 train data에 overfitting된 것이 원인입니다. variance가 높다는 것은 train data에 너무 fit하게 학습이 되어 train data의 noise와 같은 것을 학습했을 수도 있습니다. 그래서 test data와의 오차가 발생한 것입니다. 3.은 test data을 위한 학습이 덜 된 것이 원인입니다. train data와 test data의 차이가 커서 train data로만으로는 test data를 맞출 수 없는 것입니다. 4.는 위 두 경우를 모두 합친 경우입니다.

 

학습 모델은 입력 X로부터 Y를 추정하는 것인데, X의 분포가 바뀌어 버리면 그만큼 error가 나게 되고, 예측이 힘들어 질 수 밖에 없습니다. 

 

Bias-Variance Tradeoff

위에서 보았듯이 모델의 복잡도를 높여서 train data에 너무 fitting시키면 test data에서는 variance가 높아져 loss가 높아지게 될 것이고, 반대로 모델의 복잡도를 낯주게 되면 학습이 덜 되서 3.처럼 bias가 커져 loss가 증가할 수 있습니다. 이러한 bias와 variance의 상반되는 관계를 Bias-Variance Tradeoff라 합니다.

 

위에 variance에 대한 추가 설명에 적어둔 것처럼 모델의 복잡도는 overfitting과 관련이 있습니다. 이를 regression 문제에서 다시 보겠습니다.

위 이미지는 모델의 복잡도와 variance에 대해서 설명할 때 자주 사용되는 이미지입니다. 모델의 복잡도가 높아질수록 data에 over-fit되는 것을 볼 수 있습니다. 이런 경우에 새로운 데이터가 들어왔을 때 세번째 그래프는 예측을 잘 수행하기 힘들 것입니다. 

좀 더 자세히 설명해보면 위 이미지에서 검은 점들은 전체 데이터 집합이 아닌 모집단에서 추출한 sub set이 될 것입니다. sub set으로 추출이 되는 과정에서 sub set은 필연적으로 없앨 수 없는 error가 생길 것입니다. 모델의 복잡도가 너무 높아지면 이러한 error까지 학습을 하게되어 새로운 sub set에서는 예측을 잘 수행하지 못하게 되는 것이죠.

위 그림은 variance와 bias 사이의 관계를 나타낸 것입니다.

 

이를 수식적으로 보겠습니다.

 

수식

이 모든 과정에서 저희가 모델을 만드는 이유는 정답을 잘 맞추기 위해서 입니다. 즉, 정답과 예측값 사이의 오차를 줄이는 것이죠. 이를 수식적으로 표현하면 아래와 같습니다.

train set이 $x_1, ... x_n$과 각 $x_i$에 대응되는 $y_i$들의 쌍으로 표현되는 점들의 집합이라고 하고, 여기에 noise 낀 함수적인 관계가 있다고 가정하자. 그 관계를 $y_i = f(x_i) + \epsilon$이라 하고, $\epsilon$은 평균이 0이고 분산이 $\sigma^2$인 정규 분포이다.

이 때 우리는 $f$를 최대한 잘 근사한 근사함수 $\hat f$를 구하고자 한다. 여기서 최대한 잘이란 정량적으로 $y$와 $\hat f(x)$ 사이의 MSE를 측정하여 가장 작은 것을 의미한다. 이 때 MSE 수식은 다음과 같다.
$$ E[(y - \hat f(x))^2] = Bias[\hat f(x)]^2 + Var[\hat f(x)] + \sigma^2$$
$$ Bias[\hat f(x)] = E[\hat f(x) - f(x)]\\  Var[\hat f(x)] = E[(\hat f(x) - E[\hat f(x)])^2]$$

그러면 위 MSE 수식에서 어떻게 Bias와 Variance나 나오는지 유도해보겠습니다.

일단 $f = f(x), \hat f = \hat f(x)$라 가정하겠습니다. 그리고 $f$의 값들은 결정되어있으므로 $E[f] = f$입니다. 그리고 $Var[y] = E[(y - E[y])^2] = E[(y-f)^2] = E[(f+\epsilon -f)^2] = E[\epsilon^2] = Var[\epsilon] +  E[\epsilon] ^2 = \sigma^2$입니다. 이럴 때 MSE 수식은 다음과 같이 유도됩니다.

$$\begin{aligned} E[(y - \hat f)^2] &=E[y^2 - \hat f^2 - 2y\hat f] \\&=E[y^2] + E[\hat f^2] - E[2y\hat f]\\&=Var[y] + E[y]^2 + Var[\hat f]+ E[\hat f]^2 - 2fE[\hat f]\\&=Var[y] + Var[\hat f] + (f - E[\hat f])^2\\&=\sigma^2 + Var[\hat f] + Bias[\hat f]^2 \end{aligned}$$

 

Reference

'AI' 카테고리의 다른 글

Batch size에 대해  (0) 2022.02.07
Macro-average, Micro-average  (0) 2022.02.03
CutMix  (0) 2022.01.27
Cross Entropy를 사용하는 이유  (0) 2021.11.12
Backpropagation  (0) 2021.11.03