Kiến trúc mạng học sâu: từ nền tảng đến LLM·Chương 1 — Nền tảng để hiểu kiến trúc học sâu

Chế độ xem

Đọc kết quả model: loss, accuracy, precision, recall, F1 và những bẫy phổ biến

Một model được báo cáo “accuracy 95%” nghe có vẻ tốt. Nhưng nếu 95% dữ liệu thuộc cùng một lớp, model luôn đoán lớp đó cũng đạt 95% accuracy.

Vì vậy đánh giá model không phải việc chọn một metric phổ biến rồi nhìn số càng cao càng tốt. Câu hỏi đúng hơn là:

Model mắc loại lỗi nào, trên nhóm dữ liệu nào và chi phí của từng loại lỗi là gì?

Bài viết này tập trung vào cách đọc kết quả classification và một phần regression ở mức đủ để hiểu hầu hết báo cáo huấn luyện cơ bản.

Loss và metric phục vụ hai mục đích khác nhau

Loss là đại lượng được optimizer cố giảm trong training.

Metric là đại lượng mô tả chất lượng model theo góc nhìn đánh giá.

Ví dụ binary classification:

  • loss: binary cross-entropy;
  • metric: accuracy, precision, recall, F1.

Không có yêu cầu metric phải là hàm trơn hoặc dễ đạo hàm. Vì vậy ta có thể train bằng một loss nhưng report bằng nhiều metric khác.

Bắt đầu từ confusion matrix

Giả sử lớp dương là “có nguy cơ trượt”.

Mỗi prediction rơi vào một trong bốn trường hợp:

Thực tế dươngThực tế âm
Dự đoán dươngTP - True PositiveFP - False Positive
Dự đoán âmFN - False NegativeTN - True Negative

True Positive (TP)

Model báo có nguy cơ và thực tế đúng là có nguy cơ.

False Positive (FP)

Model báo có nguy cơ nhưng thực tế không có.

False Negative (FN)

Model báo không nguy cơ nhưng thực tế lại có nguy cơ.

True Negative (TN)

Model báo không nguy cơ và thực tế đúng là không có nguy cơ.

Các metric cơ bản chỉ là những cách tổng hợp bốn con số này theo các câu hỏi khác nhau.

Accuracy: tổng thể đúng bao nhiêu?

Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN}

Accuracy trả lời:

Trong toàn bộ prediction, model đúng bao nhiêu phần?

Nếu dataset cân bằng và hai loại sai lầm có chi phí gần nhau, accuracy là một chỉ số dễ đọc.

Nhưng accuracy có thể rất nguy hiểm với dữ liệu mất cân bằng.

Ví dụ 99% accuracy nhưng model vô dụng

Có 1.000 sinh viên:

  • 990 người không có nguy cơ;
  • 10 người có nguy cơ.

Model luôn dự đoán “không nguy cơ”.

Kết quả:

  • đúng 990 mẫu;
  • sai 10 mẫu;
  • accuracy = 99%.

Nhưng model tìm được 0/10 sinh viên cần hỗ trợ.

Google Machine Learning Crash Course dùng đúng kiểu tình huống này để nhấn mạnh rằng accuracy không phù hợp khi class imbalance lớn.

Recall: tìm được bao nhiêu mẫu dương thật?

Recall=TPTP+FN\text{Recall}=\frac{TP}{TP+FN}

Recall trả lời:

Trong tất cả mẫu thực sự dương, model phát hiện được bao nhiêu?

Nếu bỏ sót dương tính rất nguy hiểm, recall quan trọng.

Ví dụ:

  • screening bệnh;
  • phát hiện gian lận;
  • phát hiện sự cố an ninh;
  • phát hiện sinh viên cần can thiệp sớm.

Recall cao nghĩa là ít false negative hơn.

Precision: trong những lần model báo dương, bao nhiêu lần đúng?

Precision=TPTP+FP\text{Precision}=\frac{TP}{TP+FP}

Precision trả lời:

Trong tất cả prediction dương, bao nhiêu prediction thật sự đúng?

Nếu mỗi false positive gây chi phí lớn, precision quan trọng.

Ví dụ:

  • một cảnh báo dẫn tới điều tra thủ công tốn kém;
  • một hệ thống tự động khóa tài khoản;
  • một model đề xuất can thiệp mạnh vào người dùng.

Precision cao nghĩa là ít false positive hơn.

Precision và recall thường có đánh đổi

Một classifier thường tạo score hoặc probability, sau đó ta chọn threshold.

Ví dụ:

p(risk) >= 0.5 → dự đoán có nguy cơ
p(risk) < 0.5  → dự đoán không nguy cơ

Nếu giảm threshold từ 0.5 xuống 0.3:

  • nhiều mẫu được đánh dấu dương hơn;
  • recall thường tăng;
  • false positive có thể tăng;
  • precision có thể giảm.

Nếu tăng threshold:

  • model khắt khe hơn khi báo dương;
  • precision có thể tăng;
  • recall có thể giảm.

Không có threshold tốt nhất cho mọi bài toán. Threshold phải gắn với chi phí và mục tiêu vận hành.

F1: cân bằng precision và recall

F1=2Precision⋅RecallPrecision+RecallF_1=2\frac{\text{Precision}\cdot\text{Recall}}{\text{Precision}+\text{Recall}}

F1 là trung bình điều hòa của precision và recall.

Nếu một trong hai rất thấp, F1 cũng bị kéo xuống đáng kể.

F1 hữu ích khi:

  • lớp dương quan trọng;
  • dữ liệu mất cân bằng;
  • muốn một số duy nhất tóm tắt cả precision và recall.

Nhưng F1 vẫn không phải metric “tốt nhất” mặc định. Nó coi precision và recall có trọng số cân bằng. Nếu false negative nguy hiểm gấp 100 lần false positive, chỉ nhìn F1 có thể che mất ưu tiên thật.

Một ví dụ tính metric

Giả sử trên test set:

  • TP = 80;
  • FP = 20;
  • FN = 40;
  • TN = 860.

Tổng 1.000 mẫu.

Accuracy

80+8601000=0.94\frac{80+860}{1000}=0.94

94%.

Precision

8080+20=0.80\frac{80}{80+20}=0.80

80%.

Recall

8080+40≈0.667\frac{80}{80+40}\approx0.667

Khoảng 66.7%.

F1

F1=20.8×0.6670.8+0.667≈0.727F_1=2\frac{0.8\times0.667}{0.8+0.667}\approx0.727

Khoảng 72.7%.

Nhìn accuracy 94% có thể thấy rất đẹp, nhưng recall cho nhóm nguy cơ chỉ khoảng 67%. Nếu mục tiêu chính là không bỏ sót người cần hỗ trợ, đây là vấn đề đáng quan tâm.

Multi-class classification: metric trở nên phức tạp hơn

Giả sử phân loại ảnh thành 5 loại bệnh lá.

Ta có thể tính precision/recall/F1 cho từng lớp, sau đó tổng hợp.

Macro average

Tính metric cho từng lớp rồi lấy trung bình đều.

Mỗi lớp có trọng số ngang nhau dù lớp đó có ít hay nhiều mẫu.

Phù hợp khi muốn quan tâm các lớp hiếm không bị lớp lớn che khuất.

Weighted average

Tính trung bình có trọng số theo số mẫu mỗi lớp.

Lớp lớn ảnh hưởng nhiều hơn.

Micro average

Gom tổng TP/FP/FN trên toàn bộ lớp rồi tính metric.

Micro chịu ảnh hưởng mạnh từ lớp có nhiều mẫu.

Khi đọc F1 = 0.90, cần hỏi:

Macro, micro hay weighted F1?

Nếu không biết cách average, con số có thể bị hiểu sai.

Confusion matrix cho multi-class rất hữu ích

Một metric tổng có thể nói model đúng 90%, nhưng confusion matrix cho biết model đang nhầm lớp nào với lớp nào.

Ví dụ:

Lớp A thường bị nhầm thành B
Lớp C gần như không bị nhầm
Lớp D có recall thấp

Thông tin này có thể dẫn tới hành động cụ thể:

  • kiểm tra label A/B;
  • thu thập thêm dữ liệu cho D;
  • xem hai lớp có thực sự phân biệt được từ input không.

ROC-AUC và PR-AUC: biết tên trước, chưa cần dùng máy móc

Khi model tạo score liên tục, ta có thể đánh giá qua nhiều threshold.

ROC-AUC tóm tắt trade-off giữa true positive rate và false positive rate.

PR-AUC tóm tắt precision-recall qua nhiều threshold và thường hữu ích khi lớp dương hiếm.

Không cần đi sâu công thức ở chủ đề 1. Điểm quan trọng là:

Accuracy/precision/recall tại một threshold và AUC qua nhiều threshold trả lời các câu hỏi khác nhau.

Không nên so sánh trực tiếp như thể chúng cùng ý nghĩa.

Probability cao có chắc là “tự tin đúng 90%” không?

Không nhất thiết.

Nếu model output 0.9 cho nhiều mẫu, không tự động nghĩa là khoảng 90% số đó sẽ đúng.

Khả năng probability phản ánh đúng tần suất thực gọi là calibration.

Một model có accuracy tốt vẫn có thể overconfident hoặc underconfident.

Calibration đặc biệt quan trọng khi probability được dùng để:

  • ưu tiên ca cần xử lý;
  • tính risk;
  • ra quyết định theo ngưỡng;
  • kết hợp với hệ thống downstream.

Đây là chủ đề nâng cao, nhưng nên biết rằng score của model và xác suất đáng tin cậy không phải lúc nào cũng giống nhau.

Đánh giá regression khác classification

Nếu output là số liên tục, confusion matrix không phù hợp.

Một số metric phổ biến:

MAE - Mean Absolute Error

MAE=1n∑i∣yi−y^i∣\text{MAE}=\frac{1}{n}\sum_i|y_i-\hat{y}_i|

Dễ diễn giải vì cùng đơn vị với target.

Ví dụ MAE = 2.5 điểm nghĩa là sai lệch tuyệt đối trung bình khoảng 2.5 đơn vị.

MSE - Mean Squared Error

MSE=1n∑i(yi−y^i)2\text{MSE}=\frac{1}{n}\sum_i(y_i-\hat{y}_i)^2

Phạt mạnh lỗi lớn do bình phương sai số.

RMSE

RMSE=MSE\text{RMSE}=\sqrt{\text{MSE}}

Quay lại cùng đơn vị với target.

Không có metric regression tốt nhất cho mọi bài toán. Việc chọn MAE hay MSE phụ thuộc việc có muốn phạt mạnh outlier/lỗi lớn hay không.

Model tốt phải được so với baseline

Giả sử model đạt F1 = 0.78.

Con số này tự nó chưa nói nhiều.

Nếu baseline là 0.45, model có cải thiện lớn.

Nếu baseline đã 0.77, model mới chỉ cải thiện rất ít nhưng có thể đắt hơn 20 lần.

Một bảng đánh giá hợp lý nên có:

ModelF1RecallParams / CostGhi chú
Baseline0.740.70thấpđơn giản
MLP A0.780.81vừatốt hơn
MLP B0.790.82caogain rất nhỏ

Metric phải đi cùng chi phí, độ ổn định và mục tiêu sử dụng.

Error analysis: nhìn vào mẫu sai

Sau khi có metric, đừng dừng ở bảng số.

Nên lấy các prediction sai và phân nhóm:

  • label sai?
  • input thiếu thông tin?
  • mẫu hiếm?
  • dữ liệu ngoài phân phối?
  • một nhóm cụ thể bị lỗi nhiều?
  • threshold chưa phù hợp?

Error analysis giúp tránh phản xạ “metric thấp → đổi model lớn hơn”.

Đánh giá theo slice

Metric tổng thể có thể che mất vấn đề ở một nhóm dữ liệu.

Ví dụ model tốt trên:

  • sinh viên năm 1;

nhưng kém trên:

  • sinh viên học lại;
  • lớp có sĩ số rất nhỏ;
  • một học kỳ có cách chấm khác.

Ta có thể đánh giá theo slice phù hợp với domain.

Mục tiêu không phải tạo hàng trăm bảng, mà là kiểm tra các nhóm quan trọng có đặc điểm phân phối hoặc chi phí sai lầm khác nhau.

Một bảng kết quả nên đọc theo thứ tự nào?

Ví dụ:

ModelAccuracyPrecisionRecallF1
Baseline0.910.550.300.39
MLP-small0.920.680.720.70
MLP-large0.930.720.690.70

Không nên kết luận MLP-large tốt nhất chỉ vì accuracy cao nhất.

Nếu ưu tiên bắt đúng sinh viên nguy cơ:

  • MLP-small recall = 0.72;
  • MLP-large recall = 0.69.

MLP-small có thể phù hợp hơn dù accuracy thấp hơn 1 điểm phần trăm.

Cần đọc bảng theo mục tiêu, không theo cột nào có số lớn nhất.

Metric trên validation và metric trên test có ý nghĩa khác nhau

Validation metric được dùng trong quá trình chọn model.

Test metric dùng cho đánh giá cuối.

Nếu thử 100 cấu hình và chọn cấu hình có validation cao nhất, có thể vô tình “overfit validation”. Khi đó test độc lập càng quan trọng.

Đây là lý do workflow tốt thường ghi rõ:

  • metric dùng để tune;
  • checkpoint criterion;
  • validation protocol;
  • test protocol.

Một số bẫy phổ biến

Chỉ report accuracy

Không đủ với class imbalance hoặc chi phí FP/FN khác nhau.

Chọn threshold trên test set

Làm test trở thành một phần model selection.

Chỉ report average

Có thể che lớp hiếm hoặc nhóm dữ liệu yếu.

So model bằng metric khác nhau

Ví dụ model A report macro F1, model B report weighted F1 rồi so trực tiếp là không hợp lệ.

Metric đẹp nhưng data leakage

Mọi metric đều vô nghĩa nếu split/preprocessing để lộ thông tin tương lai hoặc label.

Không report baseline

Không biết improvement có thực sự đáng kể hay không.

Thấy chênh 0.2% rồi kết luận chắc chắn tốt hơn

Kết quả có thể dao động theo seed, split và sampling. Khi chênh lệch nhỏ, nên xem độ ổn định và uncertainty thay vì chỉ nhìn một run.

Mức nâng cao: uncertainty và confidence interval

Nếu test set hữu hạn, metric chỉ là một ước lượng.

Chạy nhiều seed, bootstrap hoặc dùng confidence interval giúp trả lời:

Chênh lệch giữa hai model có ổn định hay chỉ do ngẫu nhiên?

Chủ đề 1 chưa đi vào thống kê chi tiết. Nhưng khi đọc paper, cần cảnh giác với kết luận mạnh dựa trên chênh lệch rất nhỏ ở một lần chạy.

Nếu chỉ nhớ 10 ý

  • Loss phục vụ optimization; metric phục vụ evaluation.
  • Confusion matrix là nền tảng để hiểu classification metrics.
  • Accuracy đo tỷ lệ đúng tổng thể nhưng dễ gây hiểu nhầm khi class imbalance.
  • Recall quan tâm bỏ sót positive.
  • Precision quan tâm false positive trong các prediction positive.
  • F1 cân bằng precision và recall nhưng không thay thế hiểu biết về chi phí lỗi.
  • Threshold thay đổi trade-off precision-recall.
  • Multi-class cần biết macro/micro/weighted average.
  • Metric tổng nên đi cùng per-class/slice và error analysis.
  • Model tốt phải được so với baseline và mục tiêu thực tế, không chỉ với một con số.

Câu hỏi tự kiểm tra

  1. Dataset có 99% negative. Model luôn đoán negative đạt accuracy bao nhiêu và tại sao vẫn có thể vô dụng?
  2. Khi false negative rất nguy hiểm, metric nào thường đáng quan tâm hơn?
  3. Precision cao trả lời câu hỏi gì?
  4. Giảm classification threshold thường tác động thế nào tới recall?
  5. Macro F1 và weighted F1 khác nhau ở cách đặt trọng số cho từng lớp như thế nào?
  6. Vì sao không nên tune threshold trên test set?
  7. Một model F1 cao hơn 0.2% có chắc chắn tốt hơn model khác không?
  8. Vì sao error analysis cần thiết sau khi đã có metric?

Tài liệu tham khảo và đọc thêm