Bias-Variance Tradeoff
편향-분산 트레이드오프는 기대 예측 오차를 편향, 분산, 노이즈로 나누어 너무 단순하거나 복잡한 모델이 모두 실패하는 이유를 설명합니다.
편향-분산 트레이드오프는 새 데이터에 대한 모델의 예상 오류가 모델 복잡도에 서로 반대 방향으로 반응하는 두 항으로 나뉘는 현상을 설명합니다. 편향은 실제 패턴을 포착하기에 지나치게 단순한 가정에서 발생하는 오류이며, 과소적합을 유발합니다. 분산은 특정 학습 데이터에 민감해 발생하는 오류이며, 과적합을 유발합니다. 일반적으로 모델을 더 유연하게 만들면 편향은 낮아지고 분산은 높아지므로 총 오류가 가장 낮은 지점은 중간 정도의 복잡도에 있습니다. Stuart Geman, Elie Bienenstock, René Doursat은 1992년 논문 "Neural Networks and the Bias/Variance Dilemma"에서 이 개념을 머신러닝에 도입했습니다.
오류 분해#
이 분해는 같은 종류의 모델을 동일한 출처에서 추출한 새로운 학습 세트로 여러 번 학습하는 상황을 고려합니다. 제곱 오차의 경우 입력 하나에 대한 예상 오류는 정확히 세 항으로 나뉩니다. 편향 제곱은 모든 학습 세트에서 얻은 평균 예측과 실제 값 사이의 제곱 차이입니다. 곡선 관계에 맞춰 선형 회귀를 적용하면 데이터가 아무리 많아도 편향이 높게 유지됩니다. 분산은 학습 세트가 바뀔 때 예측값이 평균 예측값 주변에 얼마나 흩어지는지를 나타내며, 깊은 의사결정 트리와 정규화되지 않은 대규모 신경망에서 높게 나타납니다. 세 번째 항인 불가피한 노이즈는 레이블 자체의 무작위성으로, 어떤 모델도 제거할 수 없습니다.
모델을 반복해서 적합하면 두 항을 직접 측정할 수 있습니다. 다음 NumPy 예제는 사인파에서 추출한 노이즈가 있는 점 20개로 구성된 학습 세트 1,000개에 1, 3, 12차 다항식을 적합합니다.
import numpy as np
rng = np.random.default_rng(0)
x = np.linspace(0, 1, 20) # 20 training inputs, evenly spaced
x_test = np.linspace(0, 1, 200)
true_curve = np.sin(2 * np.pi * x_test)
for degree in [1, 3, 12]:
# Fit the same polynomial degree to 1,000 training sets that differ only in their label noise
predictions = []
for _ in range(1000):
y = np.sin(2 * np.pi * x) + rng.normal(0, 0.3, x.size)
predictions.append(np.polyval(np.polyfit(x, y, degree), x_test))
predictions = np.array(predictions)
# Bias^2: squared gap between the average fit and the truth; variance: spread of fits around their average
bias_sq = np.mean((predictions.mean(axis=0) - true_curve) ** 2)
variance = np.mean(predictions.var(axis=0))
print(f"Degree {degree:2d}: bias^2 = {bias_sq:.3f}, variance = {variance:.3f}")직선 모델의 편향 제곱은 0.205이고 분산은 0.008에 불과합니다. 3차 다항식은 평균적으로 사인파를 거의 정확하게 근사해 편향 제곱을 0.005로 낮추는 한편, 분산은 두 배인 0.016으로 높입니다. 12차 다항식은 측정 가능한 편향이 없지만 각 표본의 노이즈에 맞춰 곡선을 그리기 때문에 분산이 0.074입니다. 3차 다항식의 총 오류가 가장 낮으며, 모든 모델에는 불가피한 노이즈 분산 0.09도 포함됩니다.
편향과 분산 진단#
학습 오류와 검증 오류를 보면 어느 항이 지배적인지 알 수 있습니다. 두 오류가 모두 높으면 편향이 큽니다. 학습 오류는 낮지만 검증 오류가 훨씬 높으면 분산이 큽니다. 학습 데이터 양에 따라 두 오류를 표시하는 학습 곡선은 두 경우를 구분합니다. 분산이 큰 모델은 데이터가 늘면서 오류 간 격차가 줄어들지만, 편향이 큰 모델은 두 곡선이 높은 오류 지점에서 일찍 만나 그대로 유지됩니다. Ultralytics YOLO 학습에서 fraction 인수는 학습 분할의 일부만 사용해 학습합니다. 예를 들어 fraction=0.25은 이미지의 첫 4분의 1을 사용하며, 검증에는 전체 검증 분할을 계속 사용합니다. 따라서 비율을 높여 가며 YOLO26을 몇 차례 실행하면 사용자 지정 데이터셋의 학습 곡선을 그릴 수 있습니다.
트레이드오프 조절#
데이터를 더 많이 사용하고, 데이터 증강, 가중치 감쇠와 드롭아웃 같은 정규화, 조기 종료, 여러 모델의 평균화를 적용하면 분산이 낮아집니다. 배깅과 랜덤 포레스트가 여러 모델의 평균화를 활용합니다. 더 큰 모델, 풍부한 특징 엔지니어링, 약한 정규화, 더 긴 학습, 부스팅을 적용하면 편향이 낮아집니다. 부스팅은 현재까지의 앙상블이 낸 오류를 보정하는 모델을 추가합니다. 하이퍼파라미터 튜닝과 교차 검증을 통해 홀드아웃 데이터에서 두 항의 균형이 가장 잘 맞는 설정을 선택합니다.
테스트 오류를 모델 복잡도에 따라 표시한 전형적인 U자형 곡선은 차수가 높아지는 다항식처럼 고정된 모델 계열에서 성립합니다. 파라미터가 과도하게 많은 신경망에서는 이 곡선을 넘어설 수 있습니다. 모든 학습 데이터에 정확히 맞는 크기에 가까워질수록 테스트 오류가 높아졌다가, 모델이 더 커지면 다시 낮아지는 현상이며 이를 이중 하강이라고 합니다. 이 경우에도 편향과 분산의 합은 오류와 같지만, 분산이 파라미터 수에 따라 계속 증가하지는 않습니다.
통계적 편향과 그 밖의 편향#
이 트레이드오프에서 편향은 특정 작업에서 학습 알고리즘이 지닌 특성입니다. AI 편향은 사람들의 집단에 대한 체계적인 불공정성을 의미하고, 데이터셋 편향은 배포 환경을 제대로 반영하지 못하는 학습 데이터를 의미합니다. 예를 들어 야간 교통 영상이 부족한 경우가 이에 해당합니다. 모델은 통계적 편향이 낮더라도 편향된 데이터셋을 그 편향까지 정확하게 학습할 수 있으므로 여전히 불공정할 수 있습니다.










