Model Ensemble
Ensemble model kết hợp dự đoán từ nhiều model thành một đầu ra chính xác và ổn định hơn. Nội dung bao gồm bỏ phiếu, lấy trung bình, hợp nhất box và các điểm đánh đổi.
Ensemble model kết hợp dự đoán của nhiều model đã huấn luyện thành một đầu ra duy nhất bằng cách bỏ phiếu, lấy trung bình hoặc dùng phương pháp kết hợp đã học, nhờ đó các lỗi riêng lẻ của từng model triệt tiêu lẫn nhau. Khi các model thành viên mắc những lỗi khác nhau, ensemble chính xác và bền vững hơn model thành viên tốt nhất; đó là lý do ensemble thống trị các cuộc thi machine learning: giải Netflix Prize năm 2009 thuộc về một nhóm kết hợp dự đoán của nhiều model, còn mô hình deep learning chiến thắng thử thách ImageNet năm 2012 lấy trung bình dự đoán của bảy mạng tích chập để đạt tỷ lệ lỗi top-5 là 15.3%. Đổi lại là chi phí tính toán: mỗi model thành viên chạy trên mọi đầu vào, vì vậy mức sử dụng bộ nhớ và độ trễ suy luận tăng theo quy mô ensemble.
Cách ensemble model hoạt động#
Ensemble chỉ hữu ích khi các model thành viên mắc những lỗi khác nhau. Lấy trung bình đầu ra của các model có lỗi độc lập sẽ làm giảm phương sai của dự đoán kết hợp, trong khi các model thất bại trên cùng đầu vào hầu như không được lợi khi kết hợp. Bagging tạo ra sự đa dạng này bằng cách huấn luyện mỗi model thành viên trên một mẫu lấy lại ngẫu nhiên từ dữ liệu huấn luyện, như trong random forest gồm các cây quyết định; boosting huấn luyện mỗi model mới để sửa lỗi của các model trước đó, như trong XGBoost và LightGBM. Deep ensemble huấn luyện các bản sao của cùng một mạng nơ-ron bằng các seed ngẫu nhiên khác nhau; độ phân tán giữa các dự đoán cũng đo độ bất định của model. Kết hợp các kiến trúc khác nhau, chẳng hạn mạng nơ-ron tích chập với vision transformer, tạo ra các model thành viên có thiên hướng quy nạp khác nhau và lỗi ít tương quan hơn.
Quy tắc kết hợp phụ thuộc vào đầu ra của các model thành viên:
Các model có phương sai cao như cây quyết định chưa cắt tỉa được hưởng lợi nhiều nhất. Ví dụ scikit-learn này huấn luyện năm cây chỉ khác nhau ở seed ngẫu nhiên rồi lấy trung bình xác suất dự đoán của chúng:
import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
# Five decision trees that differ only in their random seed, which changes the features each split considers
trees = [DecisionTreeClassifier(max_features="sqrt", random_state=seed) for seed in range(5)]
for tree in trees:
tree.fit(X_train, y_train)
print("Single trees:", ", ".join(f"{tree.score(X_test, y_test):.3f}" for tree in trees))
# Ensemble: average the predicted class probabilities and pick the most likely class
probabilities = np.mean([tree.predict_proba(X_test) for tree in trees], axis=0)
accuracy = (probabilities.argmax(axis=1) == y_test).mean()
print(f"Ensemble of 5: {accuracy:.3f}")Trên 899 ảnh chữ số dùng để đánh giá, các cây riêng lẻ đạt điểm từ 0.736 đến 0.805, còn ensemble gồm cả năm cây đạt 0.901, cao hơn mọi model thành viên vì lỗi của mỗi cây xuất hiện trên những ảnh khác nhau.
Kết hợp ensemble cho model phát hiện đối tượng#
Các ensemble phát hiện đối tượng còn phải hợp nhất các box: nhiều model thường tìm thấy cùng một đối tượng ở những vị trí hơi khác nhau. Phương pháp đơn giản nhất là gom box của mọi model rồi áp dụng non-maximum suppression (NMS), giữ lại box có confidence cao nhất trong mỗi nhóm chồng lấp. Hợp nhất box có trọng số thay vào đó lấy trung bình tọa độ của các box chồng lấp, với trọng số là confidence, để mọi model cùng đóng góp vào vị trí cuối cùng. Ultralytics YOLO26 tích hợp một ensemble tương tự vào bước dự đoán: với augment=True, model phát hiện chạy trên ảnh ở kích thước gốc, 83% và 67%; bản ở kích thước 83% được lật trái sang phải, rồi ba tập box được hợp nhất bằng NMS. Ví dụ này kết hợp hai model YOLO26 có kích thước khác nhau theo cùng cách:
import torch
from torchvision.ops import batched_nms
from ultralytics import YOLO
# Two YOLO26 models of different sizes make different mistakes
models = [YOLO("yolo26n.pt"), YOLO("yolo26s.pt")]
results = [model("https://ultralytics.com/images/bus.jpg")[0] for model in models]
# Pool the boxes from both models
boxes = torch.cat([result.boxes.xyxy for result in results])
scores = torch.cat([result.boxes.conf for result in results])
classes = torch.cat([result.boxes.cls for result in results])
# Keep the highest-scoring box in each overlapping group of the same class
keep = batched_nms(boxes, scores, classes, iou_threshold=0.5)
print(f"{len(boxes)} boxes from both models, {len(keep)} after fusion")Các box mà cả hai model cùng phát hiện được gộp thành một, còn đối tượng chỉ được một model tìm thấy vẫn được giữ lại sau khi hợp nhất; nhờ vậy ensemble phát hiện tăng recall.
Ứng dụng#
- Phân tích ảnh y tế: Các model chẩn đoán kết hợp nhiều mạng để tăng độ nhạy, còn những trường hợp mà các model không đồng thuận sẽ được đánh dấu để bác sĩ chẩn đoán hình ảnh xem xét.
- Cuộc thi và benchmark: Các giải pháp chiến thắng trên Kaggle và những bảng xếp hạng tương tự thường lấy trung bình kết quả của các model được huấn luyện bằng kiến trúc, seed và fold dữ liệu khác nhau, vì mức tăng độ chính xác đáng để đánh đổi với chi phí tính toán bổ sung.
- Xe tự hành: Các hệ thống nhận thức kết hợp những model có thế mạnh khác nhau, chẳng hạn model phát hiện dựa trên camera và model phát hiện dựa trên lidar, để một model vẫn phát hiện được đối tượng mà model kia bỏ sót.
Ensemble model và các thuật ngữ liên quan#
- Học ensemble: Từ đồng nghĩa với kỹ thuật tổng thể. “Ensemble model” thường chỉ tập hợp model kết hợp thu được.
- Hợp nhất model: Lấy trung bình trọng số của các model tương thích thành một mạng duy nhất, sau đó mạng này chạy với chi phí của một model.
- Mixture of experts (MoE): Bộ định tuyến đã học chỉ gửi mỗi đầu vào đến một vài mạng con chuyên gia, nhờ đó tăng năng lực mà không cần chạy mọi chuyên gia trên mọi đầu vào.
- Chưng cất tri thức: Huấn luyện một model student duy nhất bắt chước model teacher, có thể là cả một ensemble. Bài báo chưng cất năm 2015 của Geoffrey Hinton, Oriol Vinyals và Jeff Dean đã nén một ensemble model nhận dạng giọng nói thành một model duy nhất mà vẫn giữ được phần lớn mức cải thiện của ensemble.










