Ensemble
Khám phá cách ensemble learning cải thiện độ chính xác và giảm quá khớp. Tìm hiểu cách kết hợp nhiều mô hình như Ultralytics YOLO26 để có kết quả thị giác máy tính vượt trội.
Học máy ensemble (Ensemble learning) là một chiến lược mạnh mẽ trong machine learning (ML), nơi nhiều model độc lập, thường được gọi là "weak learners" (mô hình yếu), được kết hợp để tạo ra một kết quả dự đoán duy nhất. Tiền đề cơ bản là một nhóm các model thường có thể đạt được độ 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. Bằng cách tổng hợp các dự đoán từ những thuật toán đa dạng, các phương pháp ensemble giảm thiểu hiệu quả rủi ro quá mức (overfitting) đối với dữ liệu huấn luyện, làm mượt các lỗi ngẫu nhiên và cải thiện tính ổ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 ý kiến của một hội đồng chuyên gia thay vì chỉ dựa vào quan điểm của một cá nhân duy nhất để đưa ra quyết định quan trọng.
Link to this sectionCơ chế của Học máy Ensemble#
Hiệu quả của các phương pháp ensemble nằm ở khả năng điều khiển sự đánh đổi giữa bias và variance. Các model riêng lẻ có thể gặp vấn đề về 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 các kỹ thuật cụ thể:
- Bagging (Bootstrap Aggregating): Kỹ thuật này bao gồm việc huấn luyện nhiều phiên bản của cùng một thuật toán trên các tập con khác nhau của tập dữ liệu. Ví dụ nổi tiếng nhất là thuật toán Random Forest, vốn tổng hợp các quyết định từ nhiều cây quyết định (decision tree) để giảm variance.
- Boosting: Khác với bagging, boosting huấn luyện các model theo trình tự. Mỗi model mới tập trung vào việc sửa lỗi do các model trước đó gây ra. Các framework phổ biến như LightGBM và CatBoost tận dụng điều này để tạo ra các hệ thống dự đoán có độ chính xác cao.
- Stacking (Stacked Generalization): Kỹ thuật này bao gồm việc huấn luyện một "meta-model" mới để kết hợp dự đoán của một vài model nền tảng không đồng nhất (ví dụ: mạng nơ-ron (neural network) và Support Vector Machine).
Link to this sectionEnsemble trong Computer Vision#
Trong lĩnh vực computer vision (CV), các ensemble thường được sử dụng để tối đa hóa hiệu suất trong các cuộc thi và các ứng dụng an toàn quan trọng. Đối với object detection, điều này thường bao gồm việc chạy nhiều model—ví dụ như các phiên bản khác nhau của YOLO26—trên cùng một hình ảnh. Các bounding box thu được sau đó sẽ được gộp lại bằng các kỹ thuật như Non-Maximum Suppression (NMS) hoặc Weighted Box Fusion (WBF) để xác định vị trí đối tượng có xác suất cao nhất.
Link to this sectionCác ứng dụng trong thực tế#
Các phương pháp ensemble phổ biến ở khắp nơi trong các ngành công nghiệp nơi mà độ tin cậy của dự đoán là yếu tố tối quan trọng.
-
Chẩn đoán Y tế và Hình ảnh: Trong y tế, việc tránh kết quả âm tính giả là rất quan trọng. Một ensemble có thể kết hợp Convolutional Neural Network (CNN) được huấn luyện trên ảnh X-quang với Vision Transformer (ViT) để phát hiện các bất thường. Sự đồng thuận giữa các model mang lại điểm số tin cậy cao hơn, hỗ trợ các 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 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 (logistic regression) với các cỗ máy gradient boosting, hệ thống có thể phát hiện các dấu hiệu gian lận tinh vi mà một model đơn lẻ có thể bỏ lỡ, đồng thời giữ tỷ lệ báo động giả ở mức thấp.
Link to this sectionTriển khai Ensemble Model với Python#
Bạn có thể mô phỏng một ensemble suy luận cơ bản bằng cách tải nhiều model đã được 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 huấn luyện các biến thể này một cách dễ dàng. Ví dụ sau đây minh họa cách tải hai model Ultralytics YOLO khác nhau (YOLO26n và YOLO26s) để xác minh các phát hiện trên một hình ả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")Link to this sectionEnsemble so với Data Augmentation#
Điều quan trọng là cần phân biệt học máy Ensemble với Data Augmentation.
- 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ả.
- Data Augmentation tập trung vào giai đoạn dữ liệu huấn luyện, tăng cường sự đa dạng của tập dữ liệu một cách nhân tạo (ví dụ: thông qua xoay hoặc lật ảnh) để huấn luyện một model duy nhất, mạnh mẽ hơn.
Trong khi data augmentation giúp một model duy nhất học tốt hơn, học máy ensemble giúp nhiều model xác minh đầu ra của nhau. Cả hai chiến lược này thường được sử dụng cùng nhau để đạt được kết quả tiên tiến nhất trong các tác vụ như instance segmentation và pose estimation.






