이 강의의 목표는 훈련 데이터가 아니라 새 데이터에서도 잘 맞히는 법을 아주 기초부터 이해하는 것입니다.
먼저 오늘의 핵심 식을 봅니다.
E [ ( y − f ^ ( x ) ) 2 ] = ( bias ) 2 ⏟ 편향 + variance ⏟ 분산 + σ 2 ⏟ noise \mathbb{E}\big[(y-\hat f(x))^2\big]=\underbrace{(\text{bias})^2}_{\text{편향}}+\underbrace{\text{variance}}_{\text{분산}}+\underbrace{\sigma^2}_{\text{noise}}
E [ ( y − f ^ ( x ) ) 2 ] = 편향 ( bias ) 2 + 분산 variance + noise σ 2
이 식을 외우기 전에, 식 안의 말과 기호를 먼저 하나씩 풀어야 합니다.
기호
읽는 법
뜻
f ^ ( x ) \hat f(x)f ^ ( x )
에프 햇
데이터로 학습한 모델의 예측
E [ ⋅ ] \mathbb{E}[\cdot]E [ ⋅ ]
기댓값
여러 훈련 데이터에 대한 평균
bias
편향
모델이 너무 단순해서 생기는 오차
variance
분산
데이터가 바뀔 때 예측이 흔들리는 정도
σ 2 \sigma^2σ 2
시그마 제곱
데이터 자체의 잡음, 줄일 수 없는 오차
λ ∥ w ∥ 2 \lambda\lVert w\rVert^2λ ∥ w ∥ 2
람다 노름 제곱
L2 정규화항, 가중치를 억누르는 벌점
수학에서 어려운 부분은 계산보다 읽기입니다. 뜻을 모르고 계산하면 공식이 암호처럼 보입니다.
족보 답만 외운 학생은 같은 문제에는 강하지만 새 문제에는 약합니다. 좋은 모델은 훈련 데이터를 통째로 외우는 것이 아니라, 새 데이터에도 통하는 규칙을 배워야 합니다. 이 능력이 일반화입니다.
새 입력 x xx 에서 참값이 y = f ( x ) + ε y=f(x)+\varepsilony = f ( x ) + ε 라고 합시다. 여기서 ε \varepsilonε 는 평균 0, 분산 σ 2 \sigma^2σ 2 인 잡음입니다. 우리는 여러 훈련 데이터로 모델 f ^ ( x ) \hat f(x)f ^ ( x ) 를 학습합니다. 훈련 데이터가 바뀌면 f ^ ( x ) \hat f(x)f ^ ( x ) 도 달라지므로, 예측의 평균을 f ˉ ( x ) = E [ f ^ ( x ) ] \bar f(x)=\mathbb{E}[\hat f(x)]f ˉ ( x ) = E [ f ^ ( x ) ] 로 둡니다.
기대예측오차는 참값과 예측의 제곱오차 평균입니다.
E [ ( y − f ^ ( x ) ) 2 ] \mathbb{E}\big[(y-\hat f(x))^2\big]
E [ ( y − f ^ ( x ) ) 2 ]
y = f ( x ) + ε y=f(x)+\varepsilony = f ( x ) + ε 을 넣고, 잡음 ε \varepsilonε 이 모델과 독립임을 쓰면 잡음 항이 먼저 분리됩니다.
= E [ ( f ( x ) − f ^ ( x ) ) 2 ] ⏟ 모델 오차 + σ 2 =\underbrace{\mathbb{E}\big[(f(x)-\hat f(x))^2\big]}_{\text{모델 오차}}+\sigma^2
= 모델 오차 E [ ( f ( x ) − f ^ ( x ) ) 2 ] + σ 2
모델 오차 안에 평균 예측 f ˉ ( x ) \bar f(x)f ˉ ( x ) 를 더하고 빼서 두 조각으로 가릅니다.
E [ ( f − f ^ ) 2 ] = ( f − f ˉ ) 2 ⏟ ( bias ) 2 + E [ ( f ^ − f ˉ ) 2 ] ⏟ variance \mathbb{E}\big[(f-\hat f)^2\big]
=\underbrace{(f-\bar f)^2}_{(\text{bias})^2}
+\underbrace{\mathbb{E}\big[(\hat f-\bar f)^2\big]}_{\text{variance}}
E [ ( f − f ^ ) 2 ] = ( bias ) 2 ( f − f ˉ ) 2 + variance E [ ( f ^ − f ˉ ) 2 ]
교차항은 E [ f ^ − f ˉ ] = 0 \mathbb{E}[\hat f-\bar f]=0E [ f ^ − f ˉ ] = 0 이라 사라집니다. 정리하면 다음 분해가 나옵니다.
E [ ( y − f ^ ) 2 ] = ( bias ) 2 + variance + σ 2 \mathbb{E}\big[(y-\hat f)^2\big]=(\text{bias})^2+\text{variance}+\sigma^2
E [ ( y − f ^ ) 2 ] = ( bias ) 2 + variance + σ 2
( bias ) 2 = ( f − f ˉ ) 2 (\text{bias})^2=(f-\bar f)^2( bias ) 2 = ( f − f ˉ ) 2 : 모델의 평균 예측이 참 함수에서 얼마나 벗어났는가. 모델이 단순할수록 큽니다.
variance= E [ ( f ^ − f ˉ ) 2 ] =\mathbb{E}[(\hat f-\bar f)^2]= E [ ( f ^ − f ˉ ) 2 ] : 훈련 데이터가 바뀔 때 예측이 얼마나 흔들리는가. 모델이 복잡할수록 큽니다.
σ 2 \sigma^2σ 2 : 데이터 자체의 잡음으로, 어떤 모델로도 줄일 수 없습니다.
오차를 줄이려고 모델을 무작정 복잡하게 만들면, bias는 줄지만 variance가 커집니다. 반대로 모델을 너무 단순하게 하면 variance는 작지만 bias가 커집니다. 이것을 bias-variance 트레이드오프라고 합니다. 이 분해가 있어야 "지금 오차가 큰 이유가 단순함(bias) 때문인지, 흔들림(variance) 때문인지"를 구분해 대책을 세울 수 있습니다.
bias가 크면(과소적합): 모델을 더 복잡하게 하거나 특성을 늘립니다.
variance가 크면(과적합): 데이터를 늘리거나 정규화로 모델을 억누릅니다.
variance를 줄이는 대표적 방법이 L2 정규화입니다. 손실에 가중치 크기 벌점을 더합니다.
J ( w ) = 1 n ∑ i ( y i − f ^ ( x i ) ) 2 ⏟ 원래 손실 + λ ∥ w ∥ 2 J(w)=\underbrace{\frac{1}{n}\sum_i (y_i-\hat f(x_i))^2}_{\text{원래 손실}}+\lambda\lVert w\rVert^2
J ( w ) = 원래 손실 n 1 i ∑ ( y i − f ^ ( x i ) ) 2 + λ ∥ w ∥ 2
여기서 ∥ w ∥ 2 = ∑ j w j 2 \lVert w\rVert^2=\sum_j w_j^2∥ w ∥ 2 = ∑ j w j 2 은 가중치 제곱합이고, λ ≥ 0 \lambda\ge 0λ ≥ 0 은 벌점의 세기입니다. 가중치가 커지면 벌점도 커지므로, 최적화는 가중치를 작게 유지하려 합니다. 가중치가 작으면 모델이 데이터의 작은 잡음까지 따라가지 못하므로 예측의 흔들림, 즉 variance가 줄어듭니다.
λ \lambdaλ 가 너무 크면 모델이 지나치게 억눌려 bias가 커집니다(과소적합).
λ \lambdaλ 가 너무 작으면 억제가 약해 variance가 큽니다(과적합).
적당한 λ \lambdaλ 는 검증 데이터로 찾습니다.
점 5개가 있고, 참 관계는 대략 직선인데 측정 잡음이 조금 섞였다고 합시다.
과적합 예: 4차 다항식으로 점 5개를 완벽히 지나게 하면 훈련 오차는 0입니다. 그러나 이 곡선은 점 사이에서 심하게 구불거려, 새 점에서의 오차는 예를 들어 8.0처럼 큽니다. 훈련 오차 0, 테스트 오차 8.0은 전형적인 큰 variance입니다.
과소적합 예: 상수 하나(수평선)로 맞추면 훈련 오차도 크고(예: 6.0) 테스트 오차도 큽니다(예: 6.5). 둘 다 큰 것은 전형적인 큰 bias입니다.
적절한 예: 직선으로 맞추면 훈련 오차는 약간 있지만(예: 1.2) 테스트 오차도 비슷하게 작습니다(예: 1.5). 조금 덜 맞추는 직선이 오히려 새 데이터에 더 강합니다.
정리하면, 훈련 오차와 테스트 오차의 관계로 상태를 읽습니다.
상태
훈련 오차
테스트 오차
원인
과소적합
큼
큼
bias 큼
적절
작음
작음
균형
과적합
매우 작음
큼
variance 큼
훈련 오차와 테스트 오차를 나누어 봅니다.
둘 다 크면 모델이 너무 단순한지(bias) 봅니다.
훈련 오차만 작고 테스트 오차가 크면 과적합(variance)을 의심합니다.
정규화 λ ∥ w ∥ 2 \lambda\lVert w\rVert^2λ ∥ w ∥ 2 나 데이터 증강을 적용합니다.
검증 데이터로 λ \lambdaλ 의 균형점을 찾습니다.
기대예측오차는 ( bias ) 2 + variance + σ 2 (\text{bias})^2+\text{variance}+\sigma^2( bias ) 2 + variance + σ 2 로 분해됩니다.
bias는 단순함에서, variance는 복잡함에서 오고, σ 2 \sigma^2σ 2 은 줄일 수 없습니다.
복잡도를 올리면 bias는 줄고 variance는 커지는 트레이드오프가 있습니다.
L2 정규화 λ ∥ w ∥ 2 \lambda\lVert w\rVert^2λ ∥ w ∥ 2 는 가중치를 억눌러 variance를 줄입니다.
훈련 오차와 테스트 오차의 크기 조합으로 과적합·과소적합을 구분합니다.
E [ ( y − f ^ ( x ) ) 2 ] = ( bias ) 2 + variance + σ 2 \mathbb{E}\big[(y-\hat f(x))^2\big]=(\text{bias})^2+\text{variance}+\sigma^2
E [ ( y − f ^ ( x ) ) 2 ] = ( bias ) 2 + variance + σ 2
기대예측오차를 bias, variance, noise로 나누는 유도 과정을 설명할 수 있는가?
bias가 크면 왜 과소적합이고, variance가 크면 왜 과적합인지 말할 수 있는가?
L2 정규화항 λ ∥ w ∥ 2 \lambda\lVert w\rVert^2λ ∥ w ∥ 2 이 왜 variance를 줄이는지 설명할 수 있는가?
λ \lambdaλ 가 너무 크면 어떤 문제가 생기는가?
훈련 오차 0, 테스트 오차 8.0인 모델은 어떤 상태인가?