Ensemble
Узнай, как ансамблевое обучение повышает точность и снижает переобучение. Научись объединять несколько моделей, например Ultralytics YOLO26, для более эффективных результатов в области компьютерного зрения.
Ансамблевое обучение — это надёжная стратегия в машинном обучении (ML), в рамках которой несколько независимых моделей, часто называемых «слабыми моделями», объединяются для получения единого прогнозируемого результата. Основная идея заключается в том, что группа моделей часто может обеспечить более высокую точность и лучшую способность к обобщению, чем любая отдельно взятая модель. Объединяя прогнозы разных алгоритмов, ансамблевые методы эффективно снижают риск переобучения на обучающих данных, сглаживают случайные ошибки и повышают общую стабильность системы. Такой подход аналогичен консультации с группой экспертов вместо того, чтобы полагаться на мнение одного человека при принятии важного решения.
Механизмы ансамблевого обучения#
Эффективность ансамблевых методов обусловлена их способностью управлять компромиссом между смещением и дисперсией. Отдельные модели могут страдать от высокой дисперсии (чувствительности к шуму) или высокого смещения (чрезмерного упрощения). Ансамблирование помогает устранить эти проблемы с помощью следующих методов:
- Бэггинг (агрегация бутстрэп-выборок): Этот метод предполагает обучение нескольких экземпляров одного и того же алгоритма на разных подмножествах набора данных. Самый известный пример — алгоритм случайного леса, который объединяет решения множества деревьев решений, чтобы снизить дисперсию.
- Бустинг: В отличие от бэггинга, бустинг обучает модели последовательно. Каждая новая модель сосредотачивается на исправлении ошибок, допущенных предыдущими моделями. Популярные фреймворки, такие как LightGBM и CatBoost, используют этот подход для создания высокоточных прогнозных систем.
- Стекинг (многоуровневое обобщение): Этот метод предполагает обучение новой «метамодели», которая объединяет прогнозы нескольких разнородных базовых моделей (например, нейронной сети и метода опорных векторов).
Ансамблирование в компьютерном зрении#
В области компьютерного зрения (CV) ансамбли часто используют для максимального повышения результатов в соревнованиях и критически важных приложениях, связанных с безопасностью. В задачах обнаружения объектов это часто предполагает запуск нескольких моделей — например, разных версий YOLO26 — на одном и том же изображении. Затем полученные ограничивающие рамки объединяют с помощью таких методов, как подавление немаксимумов (NMS) или взвешенное объединение рамок (WBF), чтобы определить наиболее вероятные положения объектов.
Практические применения#
Ансамблевые методы широко применяются в отраслях, где надёжность прогнозов имеет первостепенное значение.
-
Медицинская диагностика и визуализация: В здравоохранении крайне важно избегать ложноотрицательных результатов. Ансамбль может объединять свёрточную нейронную сеть (CNN), обученную на рентгеновских снимках, с моделью Vision Transformer (ViT) для обнаружения аномалий. Согласованное решение моделей обеспечивает более высокий показатель уверенности и помогает радиологам обнаруживать опухоли или диагностировать редкие заболевания.
-
Обнаружение финансового мошенничества: Финансовые учреждения используют ансамбли для анализа закономерностей транзакций. Объединяя модели логистической регрессии с моделями градиентного бустинга, система может обнаруживать малозаметные признаки мошенничества, которые отдельная модель могла бы пропустить, сохраняя при этом низкую частоту ложных срабатываний.
Реализация ансамблирования моделей с помощью Python#
Ты можешь смоделировать базовый ансамбль для инференса, загрузив несколько обученных моделей и получив прогнозы для одного и того же входного изображения. Платформа Ultralytics позволяет легко обучать такие варианты. В следующем примере показано, как загрузить две разные модели 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")Ансамблирование и аугментация данных#
Важно различать обучение ансамбля и аугментацию данных.
- Ансамбль сосредоточен на архитектуре и этапе получения прогнозов, объединяя несколько различных обученных моделей для улучшения результатов.
- Аугментация данных сосредоточена на этапе работы с обучающими данными, искусственно повышая разнообразие набора данных (например, с помощью поворота или отражения), чтобы обучить одну более надёжную модель.
Аугментация данных помогает одной модели обучаться лучше, а ансамблевое обучение позволяет нескольким моделям проверять результаты друг друга. Обе стратегии часто используют вместе для достижения передовых результатов в таких задачах, как сегментация экземпляров и оценка позы.









