Ensemble
Узнай, как ансамблевое обучение повышает точность и уменьшает переобучение. Научись комбинировать несколько моделей, таких как Ultralytics YOLO26, для достижения превосходных результатов в компьютерном зрении.
Ансамблевое обучение — это надежная стратегия в машинном обучении (ML), при которой несколько независимых моделей, часто называемых "слабыми учениками", объединяются для получения единого прогностического результата. Основная предпосылка заключается в том, что группа моделей часто может достичь более высокой точности и лучшей обобщающей способности, чем любая отдельная модель. Агрегируя прогнозы различных алгоритмов, ансамблевые методы эффективно снижают риск переобучения на обучающих данных, сглаживают случайные ошибки и повышают общую стабильность системы. Этот подход аналогичен обращению к группе экспертов вместо того, чтобы полагаться на мнение одного человека при принятии важного решения.
Link to this sectionМеханизмы ансамблевого обучения#
Эффективность ансамблевых методов заключается в их способности манипулировать компромиссом между смещением и дисперсией. Отдельные модели могут страдать от высокой дисперсии (чувствительности к шуму) или высокого смещения (чрезмерного упрощения). Ансамблирование смягчает эти проблемы с помощью специальных методов:
- Бэггинг (Bootstrap Aggregating): Этот метод включает обучение нескольких экземпляров одного и того же алгоритма на различных подмножествах набора данных. Самый известный пример — алгоритм Random Forest, который агрегирует решения множества деревьев решений для снижения дисперсии.
- Бустинг: В отличие от бэггинга, бустинг обучает модели последовательно. Каждая новая модель фокусируется на исправлении ошибок, допущенных предыдущими. Популярные фреймворки, такие как LightGBM и CatBoost, используют это для создания высокоточных прогностических систем.
- Стэкинг (Stacked Generalization): Это предполагает обучение новой "мета-модели" для объединения прогнозов нескольких гетерогенных базовых моделей (например, нейронной сети и метода опорных векторов).
Link to this sectionАнсамблирование в компьютерном зрении#
В области компьютерного зрения (CV) ансамбли часто используются для максимизации производительности в соревнованиях и критически важных системах безопасности. Для обнаружения объектов это часто предполагает запуск нескольких моделей — таких как разные версии YOLO26 — на одном и том же изображении. Полученные ограничивающие рамки затем объединяются с использованием таких методов, как Non-Maximum Suppression (NMS) или Weighted Box Fusion (WBF) для определения наиболее вероятного местоположения объектов.
Link to this sectionРеальные приложения#
Ансамблевые методы повсеместно распространены в отраслях, где надежность прогнозирования имеет первостепенное значение.
-
Медицинская диагностика и визуализация: В здравоохранении критически важно избегать ложноотрицательных результатов. Ансамбль может объединять сверточную нейронную сеть (CNN), обученную на рентгеновских снимках, с Vision Transformer (ViT) для обнаружения аномалий. Консенсус между моделями обеспечивает более высокий показатель уверенности, помогая радиологам в обнаружении опухолей или диагностике редких состояний.
-
Выявление финансовых мошенничеств: Финансовые институты используют ансамбли для анализа паттернов транзакций. Объединяя модели логистической регрессии с машинами градиентного бустинга, система может обнаруживать тонкие признаки мошенничества, которые может пропустить одна модель, при этом сохраняя низкий уровень ложных срабатываний.
Link to this sectionРеализация ансамблирования моделей с помощью 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")Link to this sectionАнсамбль против аугментации данных#
Важно отличать Ансамблевое обучение от аугментации данных.
- Ансамбль фокусируется на этапе архитектуры и прогнозирования, объединяя несколько обученных различных моделей для улучшения результатов.
- Аугментация данных фокусируется на этапе обучающих данных, искусственно увеличивая разнообразие набора данных (например, посредством поворота или отражения) для обучения одной, более надежной модели.
В то время как аугментация данных помогает одной модели обучаться лучше, ансамблевое обучение помогает нескольким моделям проверять выходные данные друг друга. Обе стратегии часто используются вместе для достижения передовых результатов в таких задачах, как сегментация экземпляров и оценка позы.






