Huấn luyện & Đánh giá Mô hình
Mục lục
- Huấn luyện & Đánh giá Mô hình
- 1. Tổng quan
- 2. Phân loại Bài toán
- 3. Các khái niệm Huấn luyện
- 4. Các Hàm mất mát (Loss Functions)
#important - 5. Chuẩn hóa (Regularization)
#important - 6. Giám sát Mô hình (Model Monitoring)
#exam-tip - 7. Các Kỹ thuật Đánh giá (Evaluation Techniques)
- 8. Tinh chỉnh Siêu tham số (Hyperparameter Tuning)
- 9. Tips cho Bài thi
#exam-tip - Related Topics
1. Tổng quan
Các kỹ thuật và best practices để huấn luyện mô hình ML và đánh giá hiệu suất của chúng.
2. Phân loại Bài toán
2.1 Bài toán Hồi quy (Regression Problem) #core
- Định nghĩa: Dự đoán một giá trị số liên tục
- Đầu ra (Output): Số thực (có thể là bất kỳ giá trị nào trong một khoảng)
- Ví dụ:
- Dự đoán giá nhà ($150,000, $275,500, $1.2M)
- Dự báo nhiệt độ (72.5°F, 18.3°C)
- Ước tính doanh thu ($45,678.90)
- Dự đoán giá cổ phiếu, tuổi tác, cân nặng, thời gian
- Thuật toán: Linear Regression (Hồi quy tuyến tính), XGBoost (dạng hồi quy), Neural Networks
- Metrics: RMSE, MAE, R², MSE
2.2 Bài toán Phân loại (Classification Problem) #core
- Định nghĩa: Dự đoán một nhãn danh mục/phân lớp rời rạc
- Đầu ra: Giá trị phân loại (một tập hợp các lựa chọn hữu hạn)
- Các loại phân loại:
- Phân loại nhị phân (Binary) - 2 lớp (Có/Không, Gian lận/Hợp pháp, Mèo/Chó)
- Phân loại đa lớp (Multi-class) - Từ 3 lớp trở lên (Đỏ/Xanh/Vàng, Loài A/B/C/D)
- Phân loại đa nhãn (Multi-label) - Nhiều nhãn cho một mẫu (Tags: Thể thao, Ngoài trời, Vui vẻ)
- Ví dụ:
- Phát hiện email rác (Spam/Not Spam)
- Phân loại hình ảnh (Mèo, Chó, Chim, Cá)
- Chẩn đoán bệnh (Dương tính/Âm tính)
- Phân tích cảm xúc (Tích cực, Trung tính, Tiêu cực)
- Thuật toán: Logistic Regression, XGBoost (dạng phân loại), SVM, Neural Networks
- Metrics: Accuracy, Precision, Recall, F1, AUC-ROC
Điểm khác biệt cốt lõi
| Tiêu chí | Hồi quy (Regression) | Phân loại (Classification) | |———-|———————-|—————————-| | Đầu ra | Các con số liên tục | Các danh mục rời rạc | | Ví dụ | Dự đoán “$45,678.90” | Dự đoán “Giá Cao” hoặc “Giá Thấp” | | Đánh giá | RMSE, MAE | Accuracy, F1 Score |
3. Các khái niệm Huấn luyện
3.1 Độ chệch (Bias) #important
Định nghĩa: Sai số phát sinh do thuật toán học đưa ra những giả định quá đơn giản.
Cơ chế: Mô hình đưa ra các giả định cứng nhắc về hình dạng/khuôn mẫu của dữ liệu, bỏ qua sự phức tạp thực sự.
- High bias (Độ chệch cao) → Mô hình quá đơn giản → Underfitting (Chưa khớp)
- Hiện tượng xảy ra: Mô hình có quá ít tham số hoặc thiếu sự linh hoạt để khớp với dữ liệu.
- Không nắm bắt được các patterns thực sự (ví dụ: coi dữ liệu phi tuyến tính là tuyến tính).
- Hiệu suất cực kỳ tồi tệ trên CẢ tập training và tập test (mô hình cơ bản là không học được gì).
- Ví dụ: Dùng mô hình đường thẳng (linear) để dự đoán một đường cong (y = x²).
- Trực quan: Mô hình vẽ một đường thẳng tắp xuyên qua một đám dữ liệu hình vòng cung.
- Giải pháp: Sử dụng mô hình phức tạp hơn, thêm các đặc trưng đa thức (polynomial features), giảm mức độ regularization, thêm layers (đối với neural nets).
3.2 Phương sai (Variance)
- High variance (Phương sai cao) → Mô hình quá nhạy cảm với dữ liệu huấn luyện → Overfitting (Quá khớp)
- Mô hình học thuộc lòng cả các “nhiễu” (noise) thay vì học pattern chung.
- Hiệu suất rất tốt trên tập training, nhưng cực kỳ tệ trên tập test (khả năng tổng quát hóa kém).
- Giải pháp: Thêm dữ liệu huấn luyện, tăng regularization, sử dụng mô hình đơn giản hơn, dùng cross-validation.
3.3 Sự đánh đổi Bias-Variance (Bias-Variance Tradeoff)
- Mục tiêu: Giảm thiểu Sai số tổng (Total error) = Bias² + Variance + Irreducible Error (Sai số không thể khử).
- Điểm vàng (Sweet spot): Tìm được điểm cân bằng hoàn hảo giữa Underfitting và Overfitting.
4. Các Hàm mất mát (Loss Functions) #important
Mục đích: Đo lường mức độ sai lệch trong dự đoán của mô hình. Quá trình huấn luyện chính là quá trình tối ưu hóa (tối thiểu hóa) hàm loss này.
4.1 Hàm mất mát cho Phân loại #exam-tip
Cross-Entropy Nhị phân (Binary Cross-Entropy / Log Loss)
- Dùng cho: Phân loại nhị phân (2 classes)
- Công thức:
Loss = -[y·log(ŷ) + (1-y)·log(1-ŷ)] - Khoảng giá trị: 0 đến ∞ (0 = dự đoán hoàn hảo)
- Cơ chế: Phạt ĐỨT ĐUÔI những dự đoán vừa sai lại vừa tự tin thái quá.
- Thuật toán AWS: Linear Learner (binary_classifier), Neural Networks
- Khi dự đoán sai nhưng mô hình lại rất tự tin: Giá trị loss sẽ bùng nổ (hàm log tiến tới vô cùng).
Categorical Cross-Entropy
- Dùng cho: Phân loại đa lớp (3+ classes)
- Công thức:
Loss = -Σ(y_i · log(ŷ_i))tính trên tất cả các lớp - Yêu cầu: Nhãn phải được One-hot encoded
- Thuật toán AWS: Linear Learner (multiclass_classifier), Image Classification
- Layer cuối cùng: Thường dùng hàm kích hoạt Softmax (tổng xác suất các lớp = 1)
Hinge Loss
- Dùng cho: Support Vector Machines (SVM), phân loại nhị phân
- Công thức:
Loss = max(0, 1 - y·ŷ) - Khoảng giá trị: 0 đến ∞
- Đặc điểm: Tạo ra ranh giới (margin) rõ ràng giữa các lớp
- Ít phổ biến hơn trong các thuật toán tích hợp sẵn của AWS (XGBoost thường dùng log loss).
4.2 Hàm mất mát cho Hồi quy #exam-tip
Mean Squared Error (MSE - Trung bình bình phương sai số)
- Dùng cho: Các bài toán hồi quy (Regression)
- Công thức:
MSE = (1/n)·Σ(y - ŷ)² - Cơ chế: Bình phương các sai số → phạt cực nặng các sai số lớn.
- Ưu điểm: Đạo hàm trơn tru, dễ tối ưu hóa, làm nổi bật các sai số nghiêm trọng.
- Nhược điểm: Cực kỳ nhạy cảm với outliers (vì outlier sẽ bị bình phương lên).
- Thuật toán AWS: Linear Learner (regressor), XGBoost (regression)
Mean Absolute Error (MAE - Trung bình sai số tuyệt đối)
- Dùng cho: Hồi quy có chứa outliers
- Công thức:
MAE = (1/n)·Σ|y - ŷ| - Cơ chế: Lấy trị tuyệt đối → đối xử công bằng với mọi sai số.
- Ưu điểm: Kháng cự tốt với outliers (Robust), dễ diễn giải.
- Nhược điểm: Không có đạo hàm tại điểm 0 (gây chút khó khăn khi tối ưu hóa).
- Khi nào nên dùng: Dữ liệu có nhiều outliers và bạn không muốn chúng thống trị hàm loss.
Huber Loss
- Dùng cho: Hồi quy với một số lượng outliers vừa phải (sự thỏa hiệp giữa MSE và MAE)
- Cơ chế: Hoạt động giống MSE với sai số nhỏ, và giống MAE với sai số lớn.
- Ưu điểm: Kết hợp điểm mạnh của cả hai (vừa trơn tru vừa robust).
- Khả năng tùy chỉnh: Tham số Delta kiểm soát điểm chuyển giao giữa 2 trạng thái.
- AWS: Có trong một số thuật toán nhưng ít phổ biến hơn.
4.3 Hướng dẫn Chọn Hàm Mất Mát #exam-tip
| Loại bài toán | Hàm Loss | Lý do |
|---|---|---|
| Phân loại nhị phân | Binary Cross-Entropy | Đầu ra dạng xác suất, trừng phạt sự tự tin mù quáng |
| Phân loại đa lớp | Categorical Cross-Entropy | Xử lý nhiều lớp kết hợp với softmax |
| Hồi quy (dữ liệu sạch) | MSE | Làm nổi bật sai số lớn, tối ưu hóa trơn tru |
| Hồi quy (nhiều outliers) | MAE | Kháng cự tốt với outliers, đánh giá sai số công bằng |
| Hồi quy (vài outliers) | Huber Loss | Cách tiếp cận cân bằng |
Các khái niệm bài thi cốt lõi: #exam-tip
- Cross-entropy dùng cho phân loại (phổ biến nhất)
- MSE dùng cho hồi quy (là mặc định cho Linear Learner, XGBoost)
- Có xuất hiện Outliers? Hãy dùng MAE thay vì MSE
- Hàm Loss tiến về 0 = Dự đoán hoàn hảo (rất hiếm khi xảy ra thực tế)
- Hàm Loss càng train càng tăng? Learning rate đang để quá cao hoặc mô hình đang bị phân kỳ (diverging).
5. Chuẩn hóa (Regularization) #important
Mục đích: Ngăn ngừa tình trạng overfitting bằng cách thêm một hình phạt (penalty) đối với mức độ phức tạp của mô hình.
5.1 Chuẩn hóa L1 (Lasso) #exam-tip
-
Cách hoạt động: Thêm penalty = λ × weights (giá trị tuyệt đối) - Cơ chế cốt lõi: Ép các trọng số (weights) về CHÍNH XÁC bằng 0 (loại bỏ hoàn toàn).
- Tại sao lại bằng 0? Hàm trị tuyệt đối có góc nhọn tại điểm 0, khiến gradient “kéo” tuột trọng số về 0.
- Tác dụng: Tự động chọn lọc đặc trưng (Feature selection) - loại bỏ các feature bằng cách cho trọng số của chúng bằng 0.
- Kết quả: Tạo ra các mô hình thưa (Sparse models - nhiều trọng số = 0, chỉ giữ lại các features thực sự quan trọng).
- Khi nào nên dùng:
- Có quá nhiều features, muốn mô hình tự động chọn lọc.
- Cần khả năng diễn giải cao (mô hình càng ít feature càng dễ giải thích).
- Nghi ngờ có nhiều features vô dụng (irrelevant).
- Thuật toán AWS: Linear Learner (
l1), XGBoost (alpha)
5.2 Chuẩn hóa L2 (Ridge) #exam-tip
- Cách hoạt động: Thêm penalty = λ × weights² (bình phương)
- Cơ chế cốt lõi: Thu nhỏ các trọng số về gần 0 nhưng KHÔNG BAO GIỜ bằng đúng 0 (chỉ tiệm cận).
- Tại sao không bằng 0? Hàm bình phương trở nên rất lài (gentle) khi tiến gần đến 0, nên trọng số chỉ bị thu nhỏ chứ không bị triệt tiêu.
- Tác dụng: Giữ lại toàn bộ features nhưng làm giảm độ lớn/sức ảnh hưởng của chúng.
- Kết quả: Tạo ra các mô hình đặc (Dense models - mọi features đều có mặt, không ai bị bỏ lại).
- Khi nào nên dùng:
- Các features có tính tương quan với nhau (L2 sẽ giữ lại tất cả và thu nhỏ dần, trong khi L1 sẽ chọn bừa 1 cái và vứt cái kia).
- Muốn giữ lại toàn bộ features nhưng vẫn muốn giảm overfitting.
- Ổn định hơn L1 (thay đổi nhỏ trong dữ liệu không làm đảo lộn việc chọn features).
- Thuật toán AWS: Linear Learner (
wd= weight decay), XGBoost (lambda)
5.3 Elastic Net
- Sự kết hợp: L1 + L2 regularization
- Khi nào nên dùng: Khi bạn muốn có sự chọn lọc features (của L1) cộng với tính ổn định (của L2).
- Linear Learner: Cài đặt cả hai tham số
l1vàwd(weight decay).
5.4 Bảng so sánh Regularization
| Yếu tố | L1 (Lasso) | L2 (Ridge) | Elastic Net |
|---|---|---|---|
| Trọng số có về 0? | ✅ Có - Về CHÍNH XÁC số 0 | ❌ Không - chỉ tiệm cận về 0 | ✅ Có (thừa hưởng từ L1) |
| Chọn lọc Feature | ✅ Có (loại bỏ bớt feature) | ❌ Không (giữ lại mọi feature) | ✅ Có |
| Xử lý features tương quan | ❌ Chọn bừa 1 cái | ✅ Tốt, thu nhỏ cả 2 cái | ✅ Tốt |
| Tính thưa (Sparsity) | ✅ Mô hình thưa (Sparse) | ❌ Mô hình đặc (Dense) | ⚠️ Khá thưa |
| Độ ổn định (Stability) | ⚠️ Kém ổn định hơn | ✅ Rất ổn định | ✅ Ổn định |
| Khả năng diễn giải | ✅ Dễ hơn (vì ít features) | ❌ Khó hơn (vì quá nhiều features) | ⚠️ Tương đối |
5.5 Mẹo cho Bài thi #exam-tip
- L1 để chọn lọc feature: Dùng khi bạn bị ngập ngụa trong rừng features.
- L2 để tăng sự ổn định: Dùng khi các features có sự tương quan mật thiết.
- λ (lambda) cao: Regularization mạnh tay → mô hình đơn giản đi (coi chừng underfit).
- λ thấp: Regularization nới lỏng → mô hình phức tạp hơn (coi chừng overfit).
- Cách trị Overfitting: Tăng regularization (tăng λ).
- Cách trị Underfitting: Giảm regularization (giảm λ).
6. Giám sát Mô hình (Model Monitoring) #exam-tip
6.1 Trôi dạt dữ liệu (Data Drift)
- Định nghĩa: Sự thay đổi mang tính thống kê của phân phối dữ liệu đầu vào theo thời gian.
- Giải thích: Dữ liệu trên production bắt đầu khác biệt so với dữ liệu lúc training.
- Ví dụ:
- Mô hình train bằng dữ liệu thời tiết mùa hè, giờ phải dự đoán vào mùa đông.
- Mô hình thương mại điện tử train trước đại dịch, thói quen mua sắm giờ đã đổi khác.
- Mô hình tín dụng train năm 2020, điều kiện kinh tế năm 2025 đã thay đổi.
- Cách phát hiện: So sánh các phân phối bằng các kiểm định thống kê (KS test, Chi-square).
- Hậu quả: Hiệu suất mô hình tụt dốc thảm hại dù bản thân mô hình không hề thay đổi.
- Giải pháp: Huấn luyện lại (Retrain) mô hình bằng dữ liệu mới nhất, tính toán lại các features.
6.2 Trôi dạt mô hình (Model Drift / Concept Drift)
- Mối quan hệ cốt lõi giữa features và target bị thay đổi.
- Ví dụ: Định nghĩa thế nào là “email rác” sẽ thay đổi theo từng năm.
6.3 Trôi dạt Feature (Feature Drift)
- Phân phối của từng feature riêng lẻ bị thay đổi.
- Cần theo dõi các số liệu thống kê của feature theo thời gian.
6.4 Trôi dạt Thuộc tính Đặc trưng (Feature Attribute Drift) #exam-tip
- Định nghĩa: Sự thay đổi về mức độ quan trọng (thứ hạng) của các features theo thời gian.
- Ý nghĩa: Những features từng rất quan trọng lúc training nay không còn quan trọng nữa (hoặc ngược lại).
- Ví dụ:
- Lúc Training: Các features quan trọng nhất là [Tuổi, Thu nhập, Vị trí]
- Trên Production: Các features quan trọng nhất bỗng chuyển thành [Vị trí, Tuổi, Điểm_tín_dụng]
- Vấn đề: “Điểm_tín_dụng” trước đây không quan trọng, giờ lại thành yếu tố quyết định → Các giả định của mô hình có thể đã sai bét.
Phát hiện bằng chỉ số NDCG (Normalized Discounted Cumulative Gain):
- Khái niệm cốt lõi: NDCG đo lường xem bảng xếp hạng thứ tự các features giữa lúc training và production có khớp nhau không.
- Khoảng điểm: 0 đến 1 (1 = giống nhau y đúc, 0 = khác nhau một trời một vực).
- Cơ chế:
- Xếp hạng features theo độ quan trọng lúc training (bảng xếp hạng gốc).
- Xếp hạng features theo độ quan trọng trên production (bảng xếp hạng hiện tại).
- So sánh: Top features có giống nhau không? Thứ tự có tương đồng không?
- Điểm NDCG thấp → Hai bảng xếp hạng lệch nhau → Độ quan trọng đã thay đổi → Đã xảy ra drift.
- Nguồn gốc: NDCG vốn được dùng trong các công cụ tìm kiếm (để xem kết quả search có xếp đúng thứ tự ưu tiên không).
- Công cụ: SageMaker Model Monitor tự động theo dõi feature attribute drift bằng cách tính NDCG.
6.5 Trôi dạt Dự đoán (Prediction Drift)
- Phân phối kết quả dự đoán của mô hình bị thay đổi.
- Có thể là dấu hiệu cảnh báo đã xảy ra Data drift hoặc Model drift.
6.6 Các Công cụ Phát hiện của AWS
- SageMaker Model Monitor - Tự động phát hiện các loại drift.
- SageMaker Clarify - Giám sát thiên vị (bias) và khả năng diễn giải.
- CloudWatch - Tạo metrics và báo động (alarms) tùy chỉnh.
7. Các Kỹ thuật Đánh giá (Evaluation Techniques)
7.1 Kiểm chứng chéo (Cross-Validation)
- K-Fold CV - Chia dữ liệu thành k phần (folds), huấn luyện k lần.
- Giúp giảm overfitting, đưa ra ước lượng hiệu suất đáng tin cậy hơn.
- Stratified K-Fold - Đảm bảo phân phối lớp (class distribution) được giữ nguyên ở mọi folds (rất quan trọng khi bị mất cân bằng lớp).
7.2 Chia tập Train/Validation/Test
- Tập Train (60-80%) - Dùng để mô hình học các tham số (parameters).
- Tập Validation (10-20%) - Dùng để tinh chỉnh siêu tham số (hyperparameters).
- Tập Test (10-20%) - Đánh giá hiệu suất cuối cùng.
- TUYỆT ĐỐI không dùng tập Test để đưa ra bất kỳ quyết định điều chỉnh nào
#gotcha
7.3 Phương pháp Holdout
- Chỉ chia train/test đúng một lần duy nhất.
- Nhanh hơn nhưng kết quả đánh giá mang tính hên xui (phương sai cao).
8. Tinh chỉnh Siêu tham số (Hyperparameter Tuning)
8.1 Các Siêu tham số dùng chung cho mọi thuật toán #exam-tip
Tốc độ học (Learning Rate)
- Là gì: Độ lớn của bước nhảy (step size) trong thuật toán gradient descent.
- Khoảng giá trị: Thường từ 0.001 đến 0.3
- Learning rate cao: Huấn luyện rất nhanh, nhưng có thể nhảy vọt qua mất điểm tối ưu (overshoot).
- Learning rate thấp: Huấn luyện rùa bò, dễ bị mắc kẹt ở các điểm cực tiểu cục bộ (local minimum).
- Tính thích ứng: Một số thuật toán (Adam, AdaGrad) có khả năng tự động điều chỉnh thông số này.
- Thuật toán áp dụng: Linear Learner, XGBoost, Neural Networks, DeepAR.
Kích thước Batch (Mini-Batch Size)
- Là gì: Số lượng mẫu dữ liệu được xử lý cùng lúc trước khi mô hình cập nhật lại trọng số.
- Batch nhỏ (32-128):
- Cập nhật liên tục, tính toán gradient rất nhiễu (noisy).
- Cơ chế Regularization: Chính sự “nhiễu” này ngăn không cho mô hình học thuộc lòng (memorize) dữ liệu.
- Lợi ích: Mô hình buộc phải học các pattern tổng quát thay vì rập khuôn.
- Generalization (khả năng tổng quát hóa) tốt hơn.
- Huấn luyện mỗi epoch sẽ chậm hơn (vì phải cập nhật trọng số quá nhiều lần).
- Batch lớn (512-2048):
- Cập nhật ít hơn, đường gradient cực kỳ mượt mà (do được trung bình từ rất nhiều mẫu).
- Ít nhiễu hơn → rất dễ bị overfitting (vì gradient cứ chĩa thẳng vào đặc điểm của tập train).
- Huấn luyện siêu nhanh (ít lần cập nhật trọng số).
- Thường bắt buộc phải đi kèm với Regularization (L1/L2) để bù đắp.
- Sự đánh đổi: Batch nhỏ = tự nhiên có regularization nhờ sự nhiễu loạn, Batch lớn = Tốc độ bàn thờ nhưng phải tự thêm regularization.
- Thuật toán áp dụng: Linear Learner, Neural Networks, XGBoost.
Số lượng Epochs
- Là gì: Số lần mô hình nhìn thấy TOÀN BỘ tập dữ liệu huấn luyện.
- Quá ít: Underfitting (chưa học được gì đã nghỉ).
- Quá nhiều: Overfitting (nhìn riết đâm ra học vẹt).
- Dừng sớm (Early stopping): Tự động ngưng train ngay khi nhận thấy validation error không còn giảm nữa.
8.2 Các Phương pháp Tinh chỉnh
Tìm kiếm dạng Lưới (Grid Search)
- Cách làm: Thử mọi sự kết hợp (combinations) có thể có của các hyperparameters.
- Ưu điểm: Quét sạch mọi ngóc ngách, chắc chắn tìm ra cấu hình tốt nhất trong lưới đã cho.
- Nhược điểm: Chậm tiến hóa (chậm theo cấp số nhân).
- Khi nào dùng: Chỉ có vài tham số, không gian tìm kiếm nhỏ xíu.
Tìm kiếm Ngẫu nhiên (Random Search)
- Cách làm: Chọn ngẫu nhiên các cấu hình hyperparameters để chạy.
- Ưu điểm: Hiệu quả hơn Grid Search rất nhiều, cực kỳ tốt cho không gian đa chiều (high dimensions).
- Nhược điểm: Hoàn toàn có thể bỏ lỡ điểm tối ưu.
- Khi nào dùng: Có rất nhiều hyperparameters, không gian tìm kiếm khổng lồ.
Tối ưu hóa Bayes (Bayesian Optimization) #exam-tip
- Cách làm: Tìm kiếm thông minh - dựa vào kết quả của các lần chạy trước để dự đoán xem nên thử cấu hình nào tiếp theo.
- Ưu điểm: Hiệu quả cực đỉnh, cần rất ít số vòng lặp (iterations) để ra kết quả ngon.
- Nhược điểm: Phức tạp hơn, tốn chút overhead cho mỗi lần tính toán điểm tiếp theo.
- Khi nào dùng: Khi chi phí/thời gian chạy mỗi training job là rất đắt đỏ (Là lựa chọn mặc định của SageMaker).
- SageMaker: Automatic Model Tuning đang sử dụng phương pháp này.
8.3 SageMaker Automatic Model Tuning (HPO) #important #exam-tip
Tổng quan: Tự động hóa quá trình tinh chỉnh (optimization) bằng thuật toán Bayesian để tìm ra cấu hình hoàn hảo nhất.
Thuật toán: Tối ưu hóa Bayes (Bayesian optimization) (mặc định và luôn được khuyến nghị).
Các khái niệm then chốt:
- Objective metric: Chỉ số mục tiêu cần tối ưu (VD: validation:accuracy, validation:rmse).
- Hyperparameter ranges: Khoảng tìm kiếm cho từng tham số.
- Training jobs: Mỗi cấu hình được HPO tạo ra sẽ chạy trên một training job hoàn toàn riêng biệt.
- Khởi động ấm (Warm start): Tái sử dụng kết quả từ các đợt tuning jobs trước đó.
Cấu hình
Thiết lập cơ bản:
- Định nghĩa Objective metric - Thuật toán huấn luyện BẮT BUỘC phải phát ra (emit) metric này.
- Phân loại:
validation:accuracy,validation:f1,validation:auc - Hồi quy:
validation:rmse,validation:mae,validation:r2
- Phân loại:
- Chỉ định Khoảng giá trị (Hyperparameter ranges) - Có 3 loại:
- IntegerParameterRange - Số nguyên (VD: batch_size: 32-512)
- ContinuousParameterRange - Số thực liên tục (VD: learning_rate: 0.001-0.3)
- CategoricalParameterRange - Các lựa chọn cố định (VD: optimizer: [‘sgd’, ‘adam’])
- Thiết lập giới hạn tài nguyên
- Số job chạy đồng thời tối đa (Max concurrent training jobs - mặc định: 2)
- Tổng số job tối đa (Max total training jobs - mặc định: 100, max: 750)
- Thời gian chạy tối đa cho mỗi job
Các Chiến lược Tuning:
- Bayesian (mặc định) - Tìm kiếm thông minh, học từ kinh nghiệm ✅ Khuyên dùng
- Random - Tìm kiếm ngẫu nhiên, tốt cho những bước khám phá ban đầu
- Grid - Thử cạn kiệt mọi trường hợp, chỉ dùng khi có rất ít cấu hình (< 10 combinations)
- Hyperband - Nâng cao, dồn nhiều tài nguyên hơn cho các cấu hình có vẻ tiềm năng
Best Practices #exam-tip
1. Chọn Khoảng giá trị (Range Selection)
Bắt đầu Rộng, Thu hẹp sau: Lần 1 (Rộng: 0.0001-1.0) → Lần 2 (Hẹp lại: 0.01-0.1 dựa trên kết quả Lần 1)
LUÔN dùng thang Logarit (Logarithmic Scale) cho Learning Rate: #important
- Learning rate thay đổi theo từng bậc (orders of magnitude) (0.001 vs 0.1).
- Ví dụ thiết lập:
learning_rate: (0.001, 0.3, 'Logarithmic') - Tác dụng: Giúp hệ thống lấy được nhiều mẫu thử hơn ở các vùng số nhỏ (0.001, 0.003, 0.01, 0.03, 0.1).
Dùng thang Tuyến tính (Linear Scale) cho các tham số khác: Batch size, độ sâu của cây, số lượng layers… hãy dùng thang tuyến tính hoặc số nguyên.
2. Độ Ưu tiên của Hyperparameter #exam-tip
Ưu tiên tinh chỉnh các tham số này trước (Tác động KHỦNG):
- Learning rate - Quan trọng nhất, tác động lớn nhất.
- Regularization (L1/L2, dropout) - Kìm cương sự overfitting.
- Batch size - Ảnh hưởng lớn đến sự hội tụ và tổng quát hóa.
- Kiến trúc mô hình (số layers, độ sâu cây) - Độ phức tạp cốt lõi.
Ưu tiên tinh chỉnh sau (Tác động VỪA):
- Số lượng epochs (nhớ bật kèm early stopping).
- Lựa chọn Optimizer (SGD, Adam, RMSprop).
- Các hàm kích hoạt (Activation functions).
Thường KHÔNG CẦN tinh chỉnh:
- Momentum (cứ để mặc định).
- Các tham số về độ ổn định số học (Numerical stability).
- Hạt giống ngẫu nhiên (Random seeds).
3. Số lượng Hyperparameters
Quy tắc ngầm: #exam-tip
- 1-3 hyperparameters: Có thể dùng Grid search.
- 3-6 hyperparameters: Dùng Bayesian optimization (khuyên dùng).
- 6+ hyperparameters: Chạy Random search để dò đường trước, sau đó dùng Bayesian đánh vào vùng tiềm năng.
Khuyến nghị các combo nên tune:
- Tối giản: Chỉ tune Learning rate.
- Tiêu chuẩn: Learning rate + Batch size + Regularization.
- Trọn vẹn: Learning rate + Batch size + Regularization + Kiến trúc mô hình + Epochs.
4. Giới hạn Training Job
Số job chạy đồng thời (Max Concurrent Jobs): #exam-tip
- Mặc định: 2 - Rất an toàn, tránh bị cạn kiệt tài nguyên (account limit).
- Tăng lên 5-10: Nếu bạn nhà giàu và muốn có kết quả ngay.
- NÊN GIỮ Ở MỨC THẤP (1-2): Dành riêng cho Bayesian optimization (bởi vì nó cần ĐỢI kết quả của job trước để thông minh hơn ở job sau).
- Tăng cao lên: Nếu bạn dùng Random search (chạy song song bao nhiêu cũng được).
Tổng số job (Max Total Jobs):
- Công thức nhẩm: Lấy số hyperparameters đang tune nhân với 10 (10x).
- Ví dụ: Đang tune 3 hyperparameters → Phải cho chạy ít nhất 30 jobs.
- Nếu dư dả ngân sách: Nhân với 20 (20x) cho chắc cú.
Dừng sớm (Early Stopping): #important
- Bật tính năng này để trảm ngay những jobs đang chạy tệ.
- Tiết kiệm tiền - Không lãng phí thời gian vào những cấu hình vớ vẩn.
- Cách thức: Tự động theo dõi validation metric, nếu thấy không tiến bộ thì rút ống thở.
5. Chọn Objective Metric #exam-tip
Nguyên tắc sống còn: Thuật toán training bắt buộc phải phát ra (emit) được metric này.
| Loại bài toán | Metric Khuyên dùng | Lý do |
|---|---|---|
| Phân loại nhị phân (Cân bằng) | validation:auc | Không bị ảnh hưởng bởi threshold, rất robust |
| Phân loại nhị phân (Mất cân bằng) | validation:f1 | Cân bằng được Precision và Recall |
| Phân loại đa lớp | validation:accuracy | Đơn giản, trực quan |
| Hồi quy (Sạch) | validation:rmse | Trừng phạt thích đáng các lỗi lớn |
| Hồi quy (Nhiều Outliers) | validation:mae | Đề kháng tốt với outliers |
| Custom metric | Tự định nghĩa trong script | Nhớ phải in ra (emit) trong lúc train |
Cạm bẫy: #gotcha
- Tên metric BẮT BUỘC phải có tiền tố
train:hoặcvalidation:. - LUÔN LUÔN sử dụng các metric
validation:(tuyệt đối không dùngtrain:) - để tránh bị HPO lừa dối bởi overfitting. - Tên metric phải khớp từng chữ cái một với output của thuật toán.
6. Khởi động ấm (Warm Start) #exam-tip
Là gì: Tái sử dụng lịch sử tìm kiếm từ các HPO tuning jobs đã chạy trước đó.
Khi nào dùng: Khi muốn tối ưu dần dần (thu hẹp range), khi có thêm dữ liệu mới, khi bài toán tương tự nhau, hoặc để chạy tiếp một job bị lỗi giữa chừng.
Lợi ích: Hội tụ nhanh hơn, tiết kiệm cả mớ tiền, đóng vai trò như “transfer learning” dành cho hyperparameters.
Giới hạn: Tên của các hyperparameters bắt buộc phải y hệt như cũ.
7. Tối ưu Chi phí (Cost Optimization) #exam-tip
Chi phí = (Tổng số training jobs) × (Đơn giá instance / giờ) × (Thời gian train)
Tuyệt chiêu tiết kiệm:
- Sử dụng Spot Instances kèm với HPO
- Giảm giá đến 90% hóa đơn training.
- Nhớ dùng chung với checkpointing để đề phòng bị ngắt cái rụp.
- HPO rất thông minh, nó sẽ tự động chạy lại các spot jobs bị rớt.
- Giới hạn số tổng training jobs
- Cứ khởi động với 20-30 jobs thôi, đừng vã luôn 750.
- Đọc kết quả, thấy ưng thì chạy tiếp.
- Dùng instances nhỏ để dò mìn
- Chạy HPO trên các máy cấu hình nhẹ nhàng (như ml.m5.large).
- Khi đã tìm ra bộ hyperparameters chân ái, mang cấu hình đó lên máy to để train thật.
- Kích hoạt Early stopping
- Rút ống thở các jobs vô vọng.
- Tiết kiệm được 30-50% chi phí tuning.
- Mở màn bằng Random search
- Chạy random rẻ hơn Bayesian trong giai đoạn đầu khám phá.
- Hết giai đoạn đầu thì chuyển sang Bayesian để chốt hạ.
8. Các Cạm Bẫy Chết Người (Common Pitfalls) #gotcha
Overfitting trên chính tập Validation:
- Vấn đề: Chạy HPO quá nhiều vòng khiến mô hình học thuộc lòng luôn tập Validation.
- Giải pháp: Phải có một tập Test tách biệt, tuyệt đối KHÔNG ĐƯỢC dùng tập Test này đưa vào HPO.
Tune quá nhiều hyperparameters cùng lúc:
- Vấn đề: Không gian tìm kiếm bùng cụng nổ, bạn sẽ cần hàng trăm jobs mới tìm ra.
- Giải pháp: Cố định các tham số ít quan trọng, chỉ dồn lực tune các tham số chí mạng.
Dùng Training metrics thay vì Validation metrics:
- Vấn đề: HPO sẽ vui vẻ tối ưu hóa cho bằng được hiệu suất trên tập Train → mô hình bị Overfitting nặng nề.
- Giải pháp: Lúc nào cũng phải set objective là
validation:metric, cấm chỉ địnhtrain:metric.
Số lượng training jobs quá mỏng:
- Vấn đề: Có 5 hyperparameters mà chỉ cho chạy 10 jobs = Cưỡi ngựa xem hoa.
- Giải pháp: Áp dụng công thức 10x (cần tối thiểu 50 jobs).
Thiết lập sai thang đo (scale) cho Learning Rate:
- Vấn đề: Dùng Linear scale sẽ khiến HPO bỏ sót hoàn toàn các giá trị vàng trong khoảng 0.001-0.01.
- Giải pháp: Vòng lặp vô tận: Học thuộc câu “Luôn dùng Logarithmic scale cho learning rate”.
9. Theo dõi và Phân tích #exam-tip
Trong lúc tuning:
- Xem trực tiếp trên SageMaker Console → Training Jobs.
- Theo dõi biểu đồ Objective metric xem có đang đi lên/xuống đúng hướng không.
- Để mắt xem tính năng early stopping có đang chặt chém các jobs cùi bắp không.
- Nhìn cái bill (cost) đang tăng từng ngày.
Sau khi tuning xong:
- Best training job: SageMaker sẽ tự động dâng lên tận miệng.
- Hyperparameter importance plot: SageMaker vẽ sẵn biểu đồ cho bạn biết tham số nào là người hùng, tham số nào là phế vật.
- Biểu đồ Objective metric vs hyperparameter: Trực quan hóa mối quan hệ.
- Export kết quả: Tải toàn bộ log về để nghiên cứu.
SageMaker hỗ trợ tận răng:
- Bảng xếp hạng tự động toàn bộ các jobs.
- Cấu hình hyperparameters đỉnh nhất.
- Trực quan hóa tiến độ tìm kiếm.
10. Tổng ôn Best Practices sát sườn cho Bài thi #exam-tip
Nếu đề hỏi “Best practice cho HPO”:
- ✅ Dùng Bayesian optimization (mặc định, hiệu quả nhất).
- ✅ Dùng logarithmic scale cho learning rate.
- ✅ Bắt đầu bằng range Rộng, sau đó hẹp dần.
- ✅ Ưu tiên tune learning rate số 1 (Tác động khủng nhất).
- ✅ Dùng các
validation:metrics (tuyệt đối không dùng training metrics). - ✅ Bật tính năng early stopping (Tiết kiệm tiền).
- ✅ Dùng Warm start nếu muốn tune tiếp từ lần trước.
- ✅ Kết hợp HPO với Spot instances để ép giá khô máu.
- ✅ Giới hạn số jobs chạy đồng thời (concurrent jobs) ở mức 2-5 nếu dùng Bayesian (vì nó cần chạy tuần tự để học hỏi).
- ✅ Lên budget cho số jobs = 10 lần số hyperparameters.
Nếu đề hỏi “Tối ưu chi phí (Cost optimization) cho HPO”:
- ✅ Dùng Managed Spot Training (Giảm 90% tiền).
- ✅ Bật tính năng early stopping.
- ✅ Thiết lập Giới hạn tổng số training jobs.
- ✅ Dùng instances nhỏ trong giai đoạn tìm kiếm.
- ✅ Dùng Random search cho những vòng khám phá đầu tiên (nó rẻ).
Giới hạn và Hạn mức (Limits and Quotas) #exam-tip
- Số training jobs tối đa trong 1 đợt tuning: 750
- Số đợt tuning chạy song song tối đa: 100 (giới hạn của account)
- Số training jobs chạy đồng thời tối đa: 100 (mặc định: 2)
- Thời gian chạy tối đa cho 1 đợt tuning: 5 ngày (mặc định: không giới hạn)
- Khởi động ấm (Warm start): Chỉ được kế thừa từ tối đa 5 tuning jobs gốc (parent).
9. Tips cho Bài thi #exam-tip
- Data drift: Thay đổi trong phân phối của dữ liệu ĐẦU VÀO.
- Model drift: Thay đổi trong MỐI QUAN HỆ giữa đầu vào và đầu ra.
- Luôn luôn phải giám sát (monitor) các mô hình production để bắt bệnh drift.
- Dùng NDCG để đo xếp hạng feature: Giúp phát hiện khi mức độ quan trọng của feature bị đảo lộn.
- Hồi quy vs Phân loại: Bản chất đầu ra (output type) sẽ quyết định loại bài toán.
- High bias = underfitting, High variance = overfitting