인지야공

인지야공/딥러닝 기초 정리/43번째 글

앙상블 — 여러 번 세는 것의 값어치

실행: python NN_50_ensemble.py (검증 환경: torch 2.8.0+cu129, RTX 5080) 이 글의 수치는 전부 그 스크립트를 돌려 얻은 것이다.


캐글 상위권은 거의 항상 앙상블이다. 여러 모델을 돌리고 답을 합친다. 되는 건 알겠는데 왜 되는가, 그리고 언제 값어치가 있는가. 이 두 가지를 잰다.

과제는 16×16 그림에서 도형 12종을 맞히는 것이다. 잡음을 넣어 모델 한 개가 83% 근처가 되게 했다. 클래스는 균등하고, 학습 3120장 / 검증 1440장 / 시험 4800장이다.


1. 각자는 틀렸는데 평균은 맞는다 — 그림으로 먼저

앙상블의 핵심은 “실력을 평균낸다”가 아니다. 그랬다면 83%짜리 8개를 모아도 83%다. 실제로 일어나는 일은 틀리는 자리가 서로 다르다는 것이고, 확률을 평균내면 그 어긋남이 서로를 지운다.

앙상블이 되는 이유와 그 천장 ① 세 모델이 각각 A, C, B라고 답해 둘이 틀렸지만 확률을 평균내면 정답 B가 1등이 된다. ② 두 모델이 동시에 틀릴 확률은 서로 무관했을 때의 4.59배로, 오차가 상당히 겹친다. ③ 시험 문제를 전원 정답 72.1퍼센트, 일부만 틀림 19.6퍼센트, 전원 오답 8.3퍼센트로 나누면 앙상블이 건드릴 수 있는 것은 가운데 구간뿐이다. ① 둘이 틀렸는데 평균은 맞는다 ② 오차는 생각보다 겹친다 ③ 천장이 있다 정답은 B 모델1모델2모델3 평균 ABC A 선택C 선택 B 선택B 선택 확률을 평균내면 아슬아슬한 오답끼리 서로를 지운다. 다수결이었다면 A·C·B 로 갈려 못 고쳤을 자리다. 모델1 오답 모델2 오답 12.8% 동시 오답 서로 무관했다면 2.8% 였을 자리다 — 실제로는 4.59배 겹친다. 전원 정답 — 72.1% 일부만 틀림 — 19.6% 전원 오답 — 8.3% 건드릴 수 있는 건 가운데 19.6% 뿐, 그중 일부만 뒤집힌다. 그래서 이득은 83.3% → 84.4% 로 1.1%p 였다.

그림 ①의 숫자를 그대로 따라가 보자. 정답은 B다.

ABC그 모델의 답
모델10.450.400.15A — 틀림
모델20.100.440.46C — 틀림
모델30.300.380.32B — 맞음
평균0.2830.4070.310B — 맞음

세 모델 중 둘이 틀렸는데 평균은 맞았다. 모델1과 모델2가 서로 다른 오답으로 갔기 때문에 A와 C의 확률이 각각 절반 이하로 희석되고, 세 모델 모두 B에 0.38~0.44를 주고 있던 것이 살아남았다. 틀릴 때도 정답을 2등으로는 알고 있었다는 뜻이다.

여기서 확률 평균이 다수결보다 나은 이유도 보인다. 다수결이었다면 A·C·B 한 표씩이라 못 고쳤을 자리다. 확률 평균은 “얼마나 아슬아슬하게 틀렸는지”까지 세지만 다수결은 그 정보를 버린다. 실측에서도 확률 평균 84.40% > 다수결 84.04% 였다.


2. 직접 재 보기

[A] 이득은 어디서 나오나

초기화만 다르게 한 모델 8개를 같은 데이터로 학습했다.

개별 8개:  83.2%  82.5%  83.6%  83.8%  83.8%  83.0%  83.1%  83.5%
정확도ECE(캘리브레이션 오차)
개별 평균83.32%0.0707
최고 개별83.81%—
앙상블 (확률 평균)84.40%0.0410
앙상블 (다수결)84.04%—

정확도는 1.08%p 올랐다. 그런데 ECE는 0.0707에서 0.0410으로 42% 줄었다. ECE는 캘리브레이션 편에서 쟀던 그 지표 — “90% 확신한다고 말할 때 실제로 90% 맞는가”의 어긋남이다. 이 차이가 이 글의 결론을 미리 말해 준다.

이득의 출처를 재기 위해 두 모델이 동시에 틀릴 확률을 봤다.

값
두 모델이 동시에 틀림 (실제)12.77%
서로 무관하게 틀렸다면2.78%
겹침 배율4.59배

서로 무관했다면 0.167×0.167=2.78%0.167 \times 0.167 = 2.78\%여야 하는데 실제로는 12.77%다. 같은 데이터로 같은 구조를 학습했으니 당연하다 — 어려운 문제는 모두에게 어렵다. 이 겹침이 곧 이득의 한계다.

모델을 하나씩 더할 때 시험 문제 480개 중 오답 칸이 줄어드는 모습

애니메이션은 시험 문제 480개를 칸으로 놓고, 모델을 하나씩 더할 때 오답(검은 칸)이 어떻게 줄어드는지 보여 준다. 줄어들다가 곧 멈춘다. 끝까지 검은 칸이 남는다. 그 칸들이 바로 전원이 틀리는 문제다.

시험 문제를 나누면비율
전원 정답72.1%
일부만 틀림19.6%
전원 오답8.3%

앙상블이 손댈 수 있는 건 가운데 19.6%뿐이고, 그것도 전부가 아니라 다수가 정답 쪽으로 기운 경우만 뒤집힌다. 그래서 8개까지 늘려도 84.4%에서 멈춘다.

K:   1      2      3      4      5      6      7      8
    83.2%  83.7%  84.2%  84.3%  84.5%  84.4%  84.6%  84.4%

4개를 넘으면 사실상 평평하다. 8개째는 7개째보다 오히려 낮다(84.4% < 84.6%). 흔히 쓰는 “앙상블은 많을수록 좋다”는 이 지점부터는 맞지 않는다.

[B] 다양성이 이득을 만든다 — 그런데 공짜가 아니다

모델 5개를 만드는 방식만 바꿔 가며 같은 것을 쟀다.

만드는 방식개별 평균앙상블이득오차 겹침 배율
완전히 같은 모델 5개83.17%83.17%+0.00%p5.94
미니배치 순서만 다름82.72%83.60%+0.89%p4.66
초기화가 다름83.38%84.48%+1.10%p4.61
구조(폭)가 다름82.80%84.62%+1.83%p4.41
배깅(데이터 85% + 증강 세기 다름)74.55%79.56%+5.01%p2.46

첫 줄이 기준선이다. 똑같은 모델을 다섯 번 세어 봐야 정확히 0.00%p다. 앙상블의 값어치는 모델 개수가 아니라 서로 다름에서 온다.

겹침 배율이 낮을수록(= 서로 무관하게 틀릴수록) 이득이 크다는 것도 순서대로 보인다: 5.94 → 4.66 → 4.61 → 4.41 → 2.46 으로 내려가는 동안 이득은 0.00 → 0.89 → 1.10 → 1.83 → 5.01 로 올라간다.

그런데 마지막 줄을 조심해서 읽어야 한다. 배깅의 이득 +5.01%p는 이 표에서 압도적이지만, 앙상블 결과 자체는 79.56%로 꼴찌다. 데이터를 85%만 주고 증강을 세게 걸어 개별 모델을 74.55%까지 떨어뜨린 대가로 다양성을 산 것이다. 이득은 낮은 출발점에서 올라온 폭일 뿐이다.

다양성은 만들어 낼 수 있지만, 거의 항상 개별 성능을 깎아서 산다. “이득 %p”로 방법을 고르면 이 함정에 빠진다. 골라야 하는 건 앙상블의 최종 값이다. 그 기준으로는 구조가 다른 모델을 섞는 쪽이 84.62%로 가장 좋았다.

[C] 같은 예산이면 — 앙상블인가, 큰 모델 하나인가

여기가 실제로 결정해야 하는 자리다. 파라미터를 같이 쓴다면 작은 모델 K개인가 큰 모델 하나인가.

파라미터추론 횟수정확도ECE
앙상블 1개88.7K183.17%0.0727
앙상블 2개177.4K283.71%0.0533
앙상블 4개354.9K484.31%0.0443
앙상블 8개709.7K884.40%0.0410
폭 272 모델 하나147.4K184.15%0.0757
폭 384 모델 하나251.1K185.10%0.0802
폭 544 모델 하나442.8K186.35%0.0781
폭 768 모델 하나797.2K187.25%0.0769

정확도만 보면 큰 모델 하나가 이긴다. 비슷한 파라미터(709.7K 대 797.2K)에서 앙상블 8개는 84.40%, 큰 모델 하나는 87.25%다. 게다가 큰 모델은 추론이 1회다. 앙상블은 8회다. 파라미터 251.1K짜리 모델 하나(85.10%)가 이미 709.7K짜리 앙상블 8개(84.40%)를 이긴다.

그런데 ECE 열을 보면 정반대다. 모델을 키우면 캘리브레이션은 오히려 나빠진다(0.0727 → 0.0769, 폭 384에서는 0.0802까지). 앙상블은 반대로 줄곧 좋아져 0.0410이다. 큰 모델은 더 자주 맞히지만 자기가 얼마나 맞히는지는 더 모른다.

그래서 질문은 “앙상블이 좋은가”가 아니라 “무엇이 필요한가” 다. 정확도가 목적이고 예산이 정해져 있다면 모델 하나를 키우는 쪽이 낫다. 예측을 믿고 임계값을 걸어야 한다면 — 확신이 낮은 건 사람에게 넘기는 식 — 앙상블의 값어치는 정확도가 아니라 ECE에 있다.

마지막으로 모델 병합 편의 수프와 같은 자리에서 비교했다. 같은 부모에서 갈라진 자식 8개다(자식들은 절반만 더 학습하고 데이터도 85%만 써서, 위 표의 모델들보다 절대값이 낮다 — 자식들끼리만 비교해야 한다).

추론 횟수정확도ECE
자식 개별 평균178.83%—
수프 (가중치 평균)180.21%0.0817
앙상블 (확률 평균)880.58%0.0442

수프는 앙상블 이득 +1.75%p 중 +1.38%p — 79% — 를 추론 1회로 가져온다. 다만 ECE는 전혀 개선되지 않았다(0.0817). 가중치를 평균낸 결과는 여전히 모델 한 개라서, 확률을 여러 개 평균낼 때 생기는 그 부드러워짐이 없다. 정확도가 목적이면 수프, 신뢰도가 목적이면 앙상블이다.

앙상블 실험 세 가지: K에 따른 정확도와 천장, 다양성 방식별 개별과 앙상블 정확도, 파라미터 예산 대비 정확도


3. 흔한 오해와 한계

1. “앙상블은 많을수록 좋다” — 4개에서 사실상 멈췄고(84.31%), 8개는 84.40%다. 7개(84.6%)보다 8개가 낮은 구간도 있다. 모델이 늘어도 전원이 틀리는 8.3%는 그대로이기 때문이다. 수확 체감이 아니라 천장이 있다.

2. “앙상블하면 항상 최고 개별 모델보다 좋다” — 여기서는 그랬지만(84.40% > 83.81%) 보장은 없다. 한 모델이 월등히 좋고 나머지가 나쁘면 평균이 끌어내린다. 위 [B]의 배깅이 그 방향의 예다 — 개별을 깎아서 다양성을 산 결과 앙상블 절대값은 꼴찌였다.

3. “다양성을 만들면 이득이 커진다” — 커지지만 개별 성능을 깎아서 커진다. 이득 %p가 아니라 앙상블의 최종 값으로 골라야 한다. 이 실험에서 이득 1등(배깅, +5.01%p)과 최종 값 1등(구조 다름, 84.62%)은 서로 다른 방법이었다.

4. 이 결과는 작은 MLP 한 과제의 것이다 — 특히 [C]의 “큰 모델 하나가 낫다”는 모델이 아직 과소적합 구간에 있을 때 강하게 성립한다. 폭 768까지도 정확도가 계속 오르는 걸 보면 이 과제는 그 구간이다. 모델을 키워도 더 오르지 않는 지점에 도달했다면 앙상블 쪽 계산이 달라진다.

5. 앙상블의 진짜 비용은 파라미터가 아니라 추론 횟수다 — 위 표에서 메모리는 같이 쟀지만, 서비스에서 아픈 건 지연 시간이다. 8개 앙상블은 8배 느리거나 8배 많은 기기를 쓴다. 정확도 1.08%p를 그 값에 살 만한지는 과제가 정한다. 그래서 지식 증류 편나 모델 병합 편의 수프처럼 앙상블의 이득을 모델 한 개로 옮기려는 방법들이 있는 것이다.


4. 한 문단 요약

앙상블의 이득은 실력의 평균이 아니라 틀리는 자리가 다른 데서 나온다. 각자 83% 남짓인 모델 8개의 확률을 평균내자 84.40%가 됐고(다수결은 84.04%로 더 낮았다 — 아슬아슬함의 정보를 버리기 때문이다), 똑같은 모델 5개를 모으면 이득은 정확히 0.00%p였다. 이득의 크기는 오차가 얼마나 겹치느냐로 정해지는데, 여기서는 두 모델이 동시에 틀릴 확률이 무관했을 때의 4.59배였다 — 어려운 문제는 모두에게 어렵다. 그래서 천장이 있다. 전원이 틀리는 8.3%는 몇 개를 모아도 고칠 수 없고, 실제로 4개를 넘으면 곡선이 평평해졌다. 다양성은 만들어 낼 수 있지만 거의 항상 개별 성능을 깎아서 산다(배깅: 이득 +5.01%p, 그러나 앙상블 절대값은 79.56%로 꼴찌). 가장 중요한 건 [C]다 — 같은 파라미터 예산을 큰 모델 하나에 쓰면 87.25%로 앙상블 8개(84.40%)를 이겼고 추론도 1회였다. 대신 모델을 키우면 캘리브레이션은 나빠졌고(ECE 0.0727 → 0.0769) 앙상블은 좋아졌다(0.0410). 앙상블이 확실히 이기는 것은 정확도가 아니라 자기가 얼마나 맞히는지 아는 것이다. 무엇이 필요한지를 먼저 정해야 어느 쪽을 살지 정할 수 있다.


참고

표시는 이 브라우저에만 남는다. 서버로 가는 것은 없다.