Ensemble
Khám phá cách ensemble learning cải thiện độ chính xác và giảm overfitting. Tìm hiểu cách kết hợp nhiều model như Ultralytics YOLO26 để đạt kết quả computer vision vượt trội.
Học tập ensemble là một chiến lược mạnh mẽ trong học máy (ML), trong đó nhiều model độc lập, thường được gọi là “weak learner”, được kết hợp để tạo ra một đầu ra dự đoán duy nhất. Tiền đề cốt lõi là một nhóm model thường có thể đạt độ chính xác cao hơn và khả năng tổng quát hóa tốt hơn so với bất kỳ model đơn lẻ nào hoạt động độc lập. Bằng cách tổng hợp các dự đoán từ nhiều thuật toán đa dạng, các phương pháp ensemble làm giảm hiệu quả nguy cơ overfitting vào dữ liệu huấn luyện, làm mượt các lỗi ngẫu nhiên và cải thiện độ ổn định tổng thể của hệ thống. Cách tiếp cận này tương tự như việc tham khảo một hội đồng chuyên gia thay vì chỉ dựa vào ý kiến của một cá nhân để đưa ra quyết định quan trọng.
Cơ chế học tập ensemble#
Hiệu quả của các phương pháp ensemble nằm ở khả năng điều chỉnh đánh đổi bias-variance. Các model riêng lẻ có thể gặp variance cao (nhạy cảm với nhiễu) hoặc bias cao (đơn giản hóa quá mức). Ensemble giảm thiểu các vấn đề này thông qua những kỹ thuật cụ thể:
- Bagging (Gộp Bootstrap): Kỹ thuật này bao gồm việc huấn luyện nhiều instance của cùng một thuật toán trên các tập con khác nhau của dataset. Ví dụ nổi tiếng nhất là thuật toán Random Forest, tổng hợp quyết định của nhiều cây quyết định để giảm variance.
- Boosting: Không giống bagging, boosting huấn luyện các model theo tuần tự. Mỗi model mới tập trung sửa các lỗi do những model trước đó tạo ra. Các framework phổ biến như LightGBM và CatBoost sử dụng kỹ thuật này để tạo ra các hệ thống dự đoán có độ chính xác cao.
- Stacking (Tổng quát hóa xếp chồng): Kỹ thuật này bao gồm việc huấn luyện một “meta-model” mới để kết hợp các dự đoán của một số model cơ sở không đồng nhất (ví dụ: một mạng neural và một Máy Vector Hỗ trợ).
Ensemble trong thị giác máy tính#
Trong lĩnh vực thị giác máy tính (CV), ensemble thường được sử dụng để tối đa hóa hiệu năng trong các cuộc thi và ứng dụng an toàn trọng yếu. Đối với phát hiện đối tượng, quy trình này thường bao gồm việc chạy nhiều model—chẳng hạn các phiên bản khác nhau của YOLO26—trên cùng một ảnh. Các bounding box thu được sau đó được hợp nhất bằng các kỹ thuật như Ức chế phi cực đại (NMS) hoặc Hợp nhất hộp có trọng số (WBF) để suy ra vị trí đối tượng có khả năng cao nhất.
Các ứng dụng trong thực tế#
Các phương pháp ensemble được sử dụng rộng rãi trong những ngành mà độ tin cậy của dự đoán là yếu tố tối quan trọng.
-
Chẩn đoán và chụp ảnh y khoa: Trong lĩnh vực y tế, việc tránh bỏ sót ca bệnh là rất quan trọng. Một ensemble có thể kết hợp một Mạng neural tích chập (CNN) được huấn luyện trên ảnh X-quang với một Transformer thị giác (ViT) để phát hiện các bất thường. Sự đồng thuận giữa các model cung cấp điểm độ tin cậy cao hơn, hỗ trợ bác sĩ chẩn đoán hình ảnh trong việc phát hiện khối u hoặc chẩn đoán các bệnh lý hiếm gặp.
-
Phát hiện gian lận tài chính: Các tổ chức tài chính sử dụng ensemble để phân tích các mẫu giao dịch. Bằng cách kết hợp các model hồi quy logistic với các model gradient boosting, hệ thống có thể phát hiện những dấu hiệu gian lận tinh vi mà một model đơn lẻ có thể bỏ sót, đồng thời duy trì tỷ lệ cảnh báo sai ở mức thấp.
Triển khai ensemble model với Python#
Bạn có thể mô phỏng một ensemble inference cơ bản bằng cách tải nhiều model đã huấn luyện và tạo dự đoán cho cùng một đầu vào. Ultralytics Platform cho phép bạn dễ dàng huấn luyện các biến thể này. Ví dụ sau minh họa cách tải hai model Ultralytics YOLO khác nhau (YOLO26n và YOLO26s) để kiểm tra các phát hiện trên một ảnh.
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")Ensemble và tăng cường dữ liệu#
Điều quan trọng là phải phân biệt học Ensemble với Tăng cường dữ liệu.
- Ensemble tập trung vào giai đoạn kiến trúc và dự đoán, kết hợp nhiều model riêng biệt đã được huấn luyện để cải thiện kết quả.
- Tăng cường dữ liệu tập trung vào giai đoạn dữ liệu huấn luyện, tăng một cách nhân tạo tính đa dạng của dataset (ví dụ: thông qua xoay hoặc lật) để huấn luyện một model đơn lẻ mạnh mẽ hơn.
Trong khi tăng cường dữ liệu giúp một model đơn lẻ học tốt hơn, học tập ensemble giúp nhiều model kiểm tra đầu ra của nhau. Cả hai chiến lược thường được sử dụng cùng nhau để đạt kết quả tiên tiến nhất trong các tác vụ như phân đoạn instance và ước tính tư thế.









