Ensemble
Học tổ hợp kết hợp dự đoán của nhiều model bằng bagging, boosting hoặc stacking để đạt lỗi thấp hơn bất kỳ model đơn lẻ nào.
Học tổ hợp huấn luyện nhiều model cho cùng một tác vụ rồi kết hợp dự đoán của chúng bằng bỏ phiếu, lấy trung bình hoặc bộ kết hợp được học để tạo ra một đầu ra thường chính xác và ổn định hơn bất kỳ model thành phần nào. Phương pháp này hiệu quả vì các model khác nhau thường mắc các lỗi khác nhau; kết hợp chúng sẽ triệt tiêu một phần lỗi của từng model. Năm 1995, Anders Krogh và Jesper Vedelsby đã chứng minh điều này một cách chính xác cho các model hồi quy lấy trung bình: sai số bình phương của tổ hợp bằng sai số trung bình của các thành phần trừ đi mức độ bất đồng trung bình giữa chúng với tổ hợp. Vì vậy, tổ hợp lấy trung bình không bao giờ kém hơn thành phần trung bình của nó; sự đa dạng giữa các thành phần là yếu tố giúp tổ hợp hoạt động tốt hơn.
Bagging, boosting và stacking#
Ba nhóm phương pháp bao quát phần lớn các mô hình tổ hợp trong machine learning, đồng thời tác động đến những khía cạnh khác nhau của đánh đổi bias-variance.
Bagging, viết tắt của bootstrap aggregating, do Leo Breiman giới thiệu năm 1996. Phương pháp này huấn luyện độc lập từng thành phần trên một mẫu bootstrap, được lấy có hoàn lại từ tập huấn luyện, rồi tính trung bình hoặc bỏ phiếu cho các kết quả, chủ yếu nhằm giảm variance. Bagging phù hợp với các mô hình học không ổn định như cây quyết định sâu; random forest do Breiman đề xuất năm 2001 còn bổ sung một tập con đặc trưng ngẫu nhiên ở mỗi lần chia để các cây khác biệt hơn.
Boosting huấn luyện các thành phần theo trình tự; mỗi thành phần tập trung vào những gì tổ hợp hiện tại dự đoán sai, nhờ đó chủ yếu giảm bias. AdaBoost, do Yoav Freund và Robert Schapire phát triển, tăng trọng số của các mẫu bị phân loại sai trước khi huấn luyện weak learner tiếp theo. Gradient boosting của Jerome Friedman khớp mỗi cây mới với gradient của hàm loss, phương pháp đứng sau XGBoost, LightGBM và CatBoost, những model vẫn đạt hiệu quả hàng đầu trên nhiều dataset dạng bảng.
Stacking, hay stacked generalization, được David Wolpert đề xuất năm 1992. Một meta-model, thường là hồi quy logistic, học cách kết hợp các model nền không đồng nhất từ dự đoán của chúng trên các fold giữ lại, nhờ đó gán trọng số lớn hơn cho những model có dự đoán trên dữ liệu giữ lại đáng tin cậy nhất.
Ví dụ scikit-learn này so sánh một cây đơn với một mô hình tổ hợp thuộc mỗi nhóm trên dataset chẩn đoán ung thư vú, sử dụng kiểm định chéo 5 fold:
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier, StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
X, y = load_breast_cancer(return_X_y=True) # 569 tumors, 30 measurements each
forest = RandomForestClassifier(n_estimators=200, random_state=0)
boosting = GradientBoostingClassifier(random_state=0)
models = {
"Single decision tree": DecisionTreeClassifier(random_state=0),
"Bagging (random forest)": forest,
"Boosting (gradient boosting)": boosting,
# Stacking: a logistic regression learns how to combine the forest and the boosted trees
"Stacking": StackingClassifier([("forest", forest), ("boosting", boosting)], LogisticRegression()),
}
for name, model in models.items():
print(f"{name}: {cross_val_score(model, X, y, cv=5).mean():.3f}")Cây đơn đạt 0.917, random forest đạt 0.960, gradient boosting đạt 0.963 và model stacking đạt 0.963. Mỗi mô hình tổ hợp đều giảm gần một nửa lỗi của cây đơn. Stacking đạt kết quả ngang với thành phần mạnh hơn vì 16 trong số 23 khối u mà random forest phân loại sai cũng bị các cây boosting phân loại sai, khiến meta-model có ít điểm bất đồng để khai thác.
Mô hình tổ hợp trong học sâu và thị giác máy tính#
Mô hình tổ hợp sâu huấn luyện nhiều mạng neural từ các khởi tạo ngẫu nhiên khác nhau rồi lấy trung bình đầu ra của chúng. Năm 2017, Balaji Lakshminarayanan và các đồng nghiệp tại DeepMind cho thấy phương pháp này cải thiện cả độ chính xác lẫn định lượng độ bất định, vì các thành phần bất đồng nhiều nhất với đầu vào khác biệt so với dữ liệu huấn luyện. Trong phát hiện đối tượng, bounding box từ nhiều detector được gom lại và hợp nhất bằng ức chế phi cực đại (NMS) hoặc Weighted Boxes Fusion, phương pháp lấy trung bình các box chồng lấp thay vì chỉ giữ lại box có độ tin cậy cao nhất. Mô hình tổ hợp gồm các kiến trúc khác nhau thường được dùng trong phân tích ảnh y tế và các bài dự thi, nơi độ chính xác quan trọng hơn chi phí suy luận.
Chi phí tăng theo số lượng thành phần, khiến mô hình tổ hợp khó dùng trên thiết bị AI biên. Chưng cất tri thức được đưa ra một phần để giải quyết vấn đề này: Geoffrey Hinton, Oriol Vinyals và Jeff Dean huấn luyện một model duy nhất bắt chước đầu ra trung bình của một mô hình tổ hợp. Dropout là một phương án đơn giản hơn, vì quá trình huấn luyện với dropout xấp xỉ việc lấy trung bình của một số lượng mũ các mạng con đã được thu gọn.
Mô hình tổ hợp, model soup và mixture of experts#
Mô hình tổ hợp thường chỉ việc kết hợp các mạng được huấn luyện riêng biệt tại thời điểm suy luận, hình thức học tổ hợp phổ biến nhất trong học sâu. Model soup và các phương pháp gộp model khác lấy trung bình trọng số thay vì dự đoán, nhờ đó giữ chi phí tương đương một model nhưng chỉ hoạt động với các model được fine-tune từ cùng trọng số pretrained. Mixture of experts (MoE) huấn luyện chung các expert cùng một router để định tuyến mỗi đầu vào đến một vài expert, giúp các expert chuyên môn hóa thay vì mỗi expert phải giải quyết toàn bộ tác vụ.
Như Pavel Izmailov và các đồng nghiệp chứng minh năm 2018 với stochastic weight averaging, lấy trung bình trọng số trong một lần chạy huấn luyện duy nhất sẽ xấp xỉ tổ hợp các checkpoint của lần chạy đó với chi phí của một model. Quá trình huấn luyện Ultralytics YOLO áp dụng phương pháp này cho mọi lần chạy YOLO26: quá trình này duy trì trung bình trượt hàm mũ của trọng số, cập nhật sau mỗi bước optimizer với hệ số suy giảm tăng dần đến 0.9999; sau đó xác thực và lưu giá trị trung bình đó vào best.pt và last.pt thay vì trọng số thô.










