Contents

편향(Bias) & 분산(Variance)

편향(Bias)과 분산(Variance)

인공지능 모델링을 하면 정답을 맞추기 위해 컴퓨터는 여러 번의 예측값을 내놓는데,
컴퓨터가 내놓은 예측값의 동태를 묘사하는 표현이 ‘편향’과 ‘분산’입니다.

🤔결론부터 말하자면

예측값들과 정답이 대체로 멀리 떨어져 있으면 편향이 놓다고 말하고,
예측값들이 서로 멀리 흩어져 있으면 분산이 높다고 말합니다.

아래 그림을 보면
  1. 왼쪽 상단 과녁은
    예측값들이 대체로 정답 근방에서 왔다갔다 합니다. > 편향이 낮습니다.
    예측값들끼리 서로 몰려 있습니다. > 분산이 낮습니다.
  2. 오른쪽 상단 과녁은
    예측값들이 대체로 정답 근방에서 왔다갔다 합니다. > 편향이 낮습니다.
    예측값들끼리 서로 흩어져 있습니다. > 분산이 높습니다.
  3. 왼쪽 하단 과녁은
    예측값들이 대체로 정답으로부터 멀어져 있습니다. > 편향이 높습니다.
    예측값들끼리 서로 몰려 있습니다. > 분산이 낮습니다.
  4. 오른쪽 하단 과녁은
    예측값들끼리 대체로 정답으로부터 멀어져 있습니다. > 편향이 높습니다.
    예측값들끼리 서로 흩어져 있습니다. > 분산이 높습니다.

수식으로 표현하면 아래와 같습니다.

수식으로 굳이 알아보는 이유는 정확하게 알기 위함입니다. 너무 핵심만을 전달해 버리면 구체적인 내용을 모를 수도 있고. 이는 ‘안다.‘고 말하기에는 부족하기 때문입니다.

  • X 는 입력된 데이터를 의미합니다.

  • f(x) (붉은 점)우리가 맞추고자하는 정답을 의미합니다.

  • f(x)에 ^ 표시가 있는 것(파란 점)은 f hat x 라고 읽습니다. hat은 머리에 쓰는 모자 라는 뜻인데, 수학에서는 ‘특정 값’ 을 지칭할때 사용합니다.
    여기서는 컴퓨터가 내놓은 값(예측값)을 의미합니다.

  • E[_](회색 점)는 기대값(expectation)을 의미(평균)합니다.
    파란점으로 표시된 f^(x)는 예측값’들’ 이므로, 여러 예측값’들’의 평균을 의미합니다.

‘편향’을 수식으로 바꿔보면

붉은점과 회색점의 관계를 나타냅니다.

보통 위와 같이 계산해서 파악합니다.

편향이란, 예측값과 정답이 얼마나 차이가 있는가?를 표현합니다.

  • E[f^*(x)] : 예측값의 평균 입니다. (위 그림에서 회색 점)
  • f(x): 정답값 입니다. (위 그림에서 빨간 점)

둘을 빼면 정답과 예측값이 서로 떨어진 거리를 알 수 있습니다. 그리고

이 거리는, 정답과 예측값들이 서로 얼마나 떨어져 있는지 알려주는 지표가 됩니다.

그런데 f(x)에 제곱이 붙어 있습니다.

왜냐하면, 어떤 예측값은 정답보다 클 것이고, 어떤 예측값은 정답보다 작을 것이기 때문에 두 값 사이의 거리는 양수가 나오기도, 음수가 나오기도 하기 때문입니다.

제곱을 해서 모두 양수를 만들어 주면, 값들을 ‘쌓는 것’이 가능해집니다. 그럼 얼마나 쌓였는지를 나중에 따로 잴 수가 있죠.

꼭 제곱을 사용해야만 하는 것은 아니고, 절대값을 씌워 주는 것도 좋은 방법입니다.
양수를 만들기 위한 목적이니까, 4제곱, 6제곱을 해 주어도 관계없습니다. 다만 그러면 계산이 복잡해지고 무의미하게 커져, 가장 쉬운 방법으로 거리를 재는 수식에서는 제곱을 해 주는 것이 그냥 상식처럼 되었습니다.

‘분산’을 수식으로 바꿔보면

파란점과 회색점의 관계를 나타냅니다.

수식은 '파랑 점 하나(예측값)' 를 x로 보고 표현한 식입니다.

파란점회색점(파란점의 평균)의 차를 보는데 혹시 음수일 수 있으니,
제곱하고 평균을 내어 분산을 확인합니다.

‘편향’과 ‘분산’은, 머신러닝 모델이 ‘복잡하게 생긴 정도’와 큰 관련이 있습니다.

회귀 모델의 경우

세 그래프는, 세 가지의 서로 다른 머신러닝 모델로 같은 데이터를 설명하는 모습입니다.

  • 정답들은 ‘굵은 점’으로 찍혀 있습니다.
  • 모델이 내놓은 예측값은 ‘연속된 작은 점’으로 표현되어 직선 혹은 구불구불한 곡선 보입니다.

이 문제에서는 여러 점들의 경향을 잘 표현하는 모델을 찾는 것이 목적입니다.

첫 번째 그래프를 보면,

  • 데이터들(‘굵은 점’)이 모델의 예측값과(‘연속된 작은 점’) 멀어져 있으므로 편향(bias)이 높고, 모델의 예측값(‘연속된 작은 점’)들 끼리는 별로 떨어져 있지 않게 되므로(왜냐면 같은 직선위의 점들이니까) 분산(variance)은 낮습니다.

세 번째 그래프를 보면,

  • 정답들이 모델과 아주 붙어 있으므로 편향이 낮고,
  • 모델의 예측값들 끼리는 매우 흩어져 있게 되므로(왜냐면 구불구불한 선 위의 점들이니까) 분산이 높습니다.

두 번째 그래프 정도가 적당하다.고 볼 수 있습니다.


분류 모델의 경우

  • 정답들은 빨강 동그라미 혹은 초록 십자가로 찍혀 있고,
  • 모델이 이 둘을 분류(구분)하는 기준(예측선)은 직선 혹은 구불구불한 곡선으로 표현되어 있습니다.

이 문제에서는 빨강 동그라미초록 십자가잘 구분하는 모델을 찾는 것이 목적입니다.

첫 번째 그래프를 보면,

  • 데이터들이 모델과 멀어져 있으므로 편향(bias)이 높고,
  • 모델이 구분한 기준선은 별로 떨어져 있지 않아(왜냐면 같은 직선위의 점들이니까) 분산(variance)은 낮습니다.

세 번째 그래프를 보면,

  • 정답들이 모델과 아주 붙어 있으므로 편향이 낮고,
  • 모델이 구분한 기준선은 매우 흩어져 있어(왜냐면 구불구불한 선 위의 점들이니까) 분산이 높습니다.

두 번째 그래프 정도가 적당하다 고 볼 수 있습니다.


Underfitting과 Overfitting

회귀 문제이든, 분류 문제이든

  • 첫 번째 그래프와 같은 상황을 Underfitting
  • 세 번째 그래프와 같은 상황을 Overfitting이라고 합니다.

모델이 너무 단순하게 생겼으면(=훈련이 너무 덜 되어 있으면) => 정답을 잘 내놓지를 못하고

모델이 너무 복잡하게 생겼으면(=훈련이 너무 심하게 되어 있으면), => 훈련용 데이터에만 너무 최적화 되어 있어, 새로운 문제(데이터)는 틀린 답을 내놓을 가능성이 높습니다.

훈련이 알아서 적당히 잘되면 좋겠지만, 이 부분은 개발자들의 영역입니다.

Model Complexity

편향(Bias)과 분산(Variance)은
한쪽이 증가하면 다른 한쪽이 감소하고,
한쪽이 감소하면 다른 한쪽이 증가하는 경향을 보입니다. “반비례적 관계”

모델이 데이터를 반복 학습하는 횟수가 늘어날수록 > 모델이 복잡한 정도(Model Complexity)도 따라서 늘어나게 되는데,
이것은 훈련용 데이터를 그대로 외우는 방향이기 때문.

따라서 Training Error(loss)는 갈수록 줄어들게 되지만, Validation Error(val_loss)는 어느 정도까지는 줄어들다가, 어느 지점 이후부터는 다시 상승하게 됩니다.

하여 모델을 훈련시키는 도중에 Validation Error가 최소인 지점에서 훈련을 멈추는 것이 필요합니다.


해당 내용은 아래의 블로그 내용을 필사하며 정리한 내용입니다.

https://opentutorials.org/module/3653/22071