Ensemble
앙상블 학습이 정확도를 높이고 과적합을 줄이는 방법을 알아보세요. Ultralytics YOLO26과 같은 여러 모델을 결합해 더 뛰어난 컴퓨터 비전 결과를 얻는 방법을 확인해 보세요.
앙상블 학습은 머신 러닝 (ML)에서 사용되는 강력한 전략으로, 흔히 "약한 학습기"라고 불리는 여러 독립 모델을 결합하여 하나의 예측 출력을 생성합니다. 기본 전제는 여러 모델로 구성된 그룹이 단독으로 작동하는 단일 모델보다 더 높은 정확도와 우수한 일반화 성능을 달성하는 경우가 많다는 것입니다. 다양한 알고리즘의 예측을 집계하면 앙상블 방법은 학습 데이터에 대한 과적합 위험을 효과적으로 줄이고, 무작위 오류를 완화하며, 전반적인 시스템 안정성을 향상합니다. 이 접근 방식은 중요한 결정을 내릴 때 한 사람의 의견에만 의존하기보다 전문가 패널의 의견을 구하는 것과 유사합니다.
앙상블 학습의 메커니즘#
앙상블 방법의 효과는 편향-분산 트레이드오프를 조절하는 능력에 있습니다. 개별 모델은 높은 분산(노이즈에 대한 민감성) 또는 높은 편향(지나친 단순화)으로 인해 성능이 저하될 수 있습니다. 앙상블은 다음과 같은 특정 기법을 통해 이러한 문제를 완화합니다.
- 배깅 (Bootstrap Aggregating): 이 기법은 데이터셋의 서로 다른 부분 집합에 동일한 알고리즘의 여러 인스턴스를 학습시키는 방식입니다. 가장 유명한 예는 랜덤 포레스트 알고리즘으로, 여러 결정 트리의 결정을 집계하여 분산을 줄입니다.
- 부스팅: 배깅과 달리 부스팅은 모델을 순차적으로 학습합니다. 새로 추가되는 각 모델은 이전 모델이 만든 오류를 수정하는 데 집중합니다. LightGBM과 CatBoost 같은 인기 프레임워크는 이 방식을 활용하여 매우 정확한 예측 시스템을 구축합니다.
- 스태킹 (Stacked Generalization): 이 방식은 여러 이기종 기본 모델(예: 신경망과 서포트 벡터 머신)의 예측을 결합하도록 새로운 "메타 모델"을 학습시키는 방법입니다.
컴퓨터 비전에서의 앙상블#
컴퓨터 비전 (CV) 분야에서 앙상블은 대회와 안전이 중요한 애플리케이션에서 성능을 극대화하기 위해 자주 사용됩니다. 객체 감지에서는 동일한 이미지에 여러 모델(예: 서로 다른 버전의 YOLO26)을 실행하는 방식이 일반적입니다. 그런 다음 바운딩 박스를 비최대 억제 (NMS) 또는 가중치 박스 융합 (WBF)과 같은 기법으로 병합하여 가장 가능성 높은 객체 위치를 도출합니다.
실제 적용 사례#
앙상블 방법은 예측 신뢰성이 매우 중요한 산업 전반에서 널리 사용됩니다.
-
의료 진단 및 영상: 의료 분야에서는 위음성을 피하는 것이 매우 중요합니다. 앙상블은 X선으로 학습한 합성곱 신경망 (CNN)과 비전 Transformer (ViT)를 결합하여 이상을 감지할 수 있습니다. 모델 간의 합의는 더 높은 신뢰도 점수를 제공하여 방사선 전문의가 종양을 감지하거나 희귀 질환을 진단하는 데 도움을 줍니다.
-
금융 사기 탐지: 금융 기관은 앙상블을 사용하여 거래 패턴을 분석합니다. 로지스틱 회귀 모델과 그래디언트 부스팅 머신을 결합하면 단일 모델이 놓칠 수 있는 미묘한 사기 징후를 시스템이 탐지하면서도 오탐률을 낮게 유지할 수 있습니다.
Python을 사용한 모델 앙상블 구현#
여러 학습된 모델을 로드하고 동일한 입력에 대한 예측을 생성하여 기본적인 추론 앙상블을 시뮬레이션할 수 있습니다. Ultralytics Platform을 사용하면 이러한 변형 모델을 쉽게 학습할 수 있습니다. 다음 예제에서는 서로 다른 두 Ultralytics YOLO 모델(YOLO26n 및 YOLO26s)을 로드하여 이미지에서 감지를 확인하는 방법을 보여 줍니다.
from ultralytics import YOLO
# Load two distinct YOLO26 model variants
# 'n' (nano) is faster, 's' (small) is more accurate
model_nano = YOLO("yolo26n.pt")
model_small = YOLO("yolo26s.pt")
# Define the image source
source = "https://ultralytics.com/images/bus.jpg"
# Run inference with both models
results_n = model_nano(source)
results_s = model_small(source)
# Compare the number of objects detected by each model
print(f"Nano Model Found: {len(results_n[0].boxes)} objects")
print(f"Small Model Found: {len(results_s[0].boxes)} objects")앙상블과 데이터 증강 비교#
앙상블 학습과 데이터 증강을 구분하는 것이 중요합니다.
- 앙상블은 여러 학습된 서로 다른 모델을 결합하여 결과를 개선하는 아키텍처 및 예측 단계에 초점을 맞춥니다.
- 데이터 증강은 학습 데이터 단계에 초점을 맞추며, 회전 또는 뒤집기 등을 통해 데이터셋의 다양성을 인위적으로 높여 더 강건한 단일 모델을 학습시킵니다.
데이터 증강은 단일 모델이 더 잘 학습하도록 돕는 반면, 앙상블 학습은 여러 모델이 서로의 출력을 검증하도록 돕습니다. 두 전략은 인스턴스 세그멘테이션 및 포즈 추정과 같은 작업에서 최첨단 결과를 달성하기 위해 함께 사용되는 경우가 많습니다.









