Test Data
Dữ liệu kiểm tra là một tập dữ liệu tách riêng, chỉ được chấm điểm một lần sau khi hoàn tất huấn luyện và tinh chỉnh, nhằm ước lượng hiệu năng trên dữ liệu mới. Tìm hiểu cách chia tập, xác định kích thước, các hạn chế và code.
Dữ liệu kiểm thử, còn gọi là tập kiểm thử hoặc tập holdout, là phần dữ liệu được dành riêng để đo lường model machine learning (ML) đã hoàn thiện. Dữ liệu này không tham gia vào quá trình khớp trọng số model hay bất kỳ quyết định phát triển nào, chẳng hạn như kiến trúc, hyperparameter, checkpoint hoặc ngưỡng confidence, và chỉ được chấm điểm sau khi các quyết định đó đã hoàn tất. Vì model và người phát triển chưa từng điều chỉnh dựa trên dữ liệu này, độ chính xác, recall hoặc độ chính xác trung bình (mAP) trên dữ liệu kiểm thử là ước tính không thiên lệch về hiệu suất của model trên dữ liệu mới cùng phân phối; đây là con số các nhóm dùng để quyết định model đã sẵn sàng triển khai hay chưa.
Phân chia tập huấn luyện, validation và kiểm thử#
Một tập dữ liệu thường được chia thành ba tập con tách biệt, mỗi tập có nhiệm vụ riêng:
- Dữ liệu huấn luyện: Các mẫu mà optimizer học từ đó bằng cách điều chỉnh trọng số để giảm loss.
- Dữ liệu validation: Được chấm điểm nhiều lần trong quá trình phát triển để so sánh hyperparameter, dừng huấn luyện sớm và chọn checkpoint tốt nhất.
- Dữ liệu kiểm thử: Được chấm điểm một lần vào cuối quá trình để báo cáo metric dùng đánh giá dự án.
Tỷ lệ chia 80/10/10 hoặc 70/15/15 thường được dùng cho tập dữ liệu có hàng nghìn mẫu, trong khi tập dữ liệu hàng triệu mẫu có thể chỉ cần giữ lại vài phần trăm. Kích thước cần thiết của tập kiểm thử phụ thuộc vào độ chính xác yêu cầu: sai số chuẩn của độ chính xác p đo trên n mẫu bằng căn bậc hai của p(1 − p)/n; do đó, 1.000 ảnh kiểm thử với độ chính xác 90% cho khoảng tin cậy 95% xấp xỉ ±1.9 điểm phần trăm, còn 10.000 ảnh thu hẹp khoảng này xuống khoảng ±0.6. Tên gọi khác nhau giữa các lĩnh vực, và nhiều bài báo báo cáo kết quả ImageNet cuối cùng trên tập validation chính thức vì nhãn kiểm thử của ImageNet không được công khai. Trong Ultralytics YOLO, YAML của tập dữ liệu yêu cầu đường dẫn train và val, đồng thời chấp nhận đường dẫn test tùy chọn; quá trình huấn luyện chấm điểm val sau mỗi epoch để chọn best.pt, còn model.val(data="data.yaml", split="test") chấm điểm model đã hoàn thiện trên các ảnh giữ lại bằng chế độ validation.
Vì sao không được động đến tập kiểm thử#
Mỗi quyết định dựa trên điểm số đều khiến model khớp với dữ liệu đó thêm một chút. Khi nhiều cấu hình cạnh tranh trên tập validation, cấu hình chiến thắng một phần là do may mắn với chính những mẫu đó, nên điểm validation của nó đánh giá quá cao hiệu suất trên dữ liệu khác. Thí nghiệm scikit-learn sau đây chọn số lượng láng giềng tốt nhất cho bộ phân loại k láng giềng gần nhất trên tập dữ liệu nhỏ, nhiễu, rồi so sánh độ chính xác validation và kiểm thử của cấu hình chiến thắng trên 30 tập dữ liệu ngẫu nhiên:
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
val_scores, test_scores = [], []
for seed in range(30):
# A small, noisy dataset split 60/20/20 into train, validation, and test
X, y = make_classification(n_samples=400, n_features=20, n_informative=4, flip_y=0.2, random_state=seed)
X_train, X_rest, y_train, y_rest = train_test_split(X, y, test_size=0.4, random_state=seed)
X_val, X_test, y_val, y_test = train_test_split(X_rest, y_rest, test_size=0.5, random_state=seed)
# Model selection: keep the neighbor count with the best validation accuracy
scores = {k: KNeighborsClassifier(k).fit(X_train, y_train).score(X_val, y_val) for k in range(1, 51)}
best_k = max(scores, key=scores.get)
val_scores.append(scores[best_k])
# The test set is scored once, after the choice is final
test_scores.append(KNeighborsClassifier(best_k).fit(X_train, y_train).score(X_test, y_test))
print(f"Chosen model, mean of 30 runs: validation {np.mean(val_scores):.3f}, test {np.mean(test_scores):.3f}")Các model được chọn đạt trung bình 0.805 trên validation và 0.758 trên kiểm thử, nghĩa là việc lựa chọn trong số 50 ứng viên đã làm mức ước tính validation tăng gần năm điểm. Tinh chỉnh dựa trên tập kiểm thử sẽ che khuất khoảng cách đó và đưa cùng sự lạc quan sai lệch vào kết quả được báo cáo; đây là một dạng rò rỉ dữ liệu. Các benchmark công khai ngăn tình trạng này bằng cách giữ kín nhãn: kết quả kiểm thử COCO test-dev được tính bằng cách gửi dự đoán lên server đánh giá. Đối với mô hình ngôn ngữ lớn (LLM), các câu hỏi kiểm thử xuất hiện trong dữ liệu tiền huấn luyện quy mô web sẽ làm nhiễm benchmark; đó là lý do LiveCodeBench liên tục bổ sung bài toán thi mới và chấm điểm mỗi model trên các bài được công bố sau thời điểm model kết thúc huấn luyện.
Xây dựng tập kiểm thử đáng tin cậy#
Điểm kiểm thử chỉ dự đoán được hiệu suất thực tế khi tập kiểm thử tương tự dữ liệu mà model sẽ gặp, dù đó là cảnh đường phố cho xe tự hành hay ảnh quét cho phân tích ảnh y tế:
- Khớp với điều kiện triển khai: Camera, ánh sáng, mùa, địa lý và phân bố lớp cần phản ánh môi trường production. Bộ phát hiện phương tiện cần có cảnh ban đêm, mưa và tuyết trong tập kiểm thử, ngay cả khi phần lớn hoạt động lái xe diễn ra trong thời tiết quang đãng.
- Giữ các tập độc lập: Khung hình từ cùng video, ảnh quét của cùng bệnh nhân và ảnh chụp cùng cảnh phải thuộc cùng một split. Dữ liệu theo thứ tự thời gian được chia theo ngày, nhờ đó model được kiểm thử trên dữ liệu tương lai.
- Kiểm thử trên nhiều nguồn: Trong chẩn đoán hình ảnh, validation bên ngoài với ảnh quét từ các bệnh viện và model máy quét khác nhau cho biết model học được giải phẫu hay chỉ học thiết bị của một cơ sở.
- Làm sạch nhãn: Nhãn kiểm thử sai giới hạn độ chính xác có thể đo được và làm thay đổi thứ hạng model, vì vậy cần rà soát nhãn kiểm thử cẩn thận nhất.
- Báo cáo theo từng phân đoạn: Metric theo lớp và theo điều kiện giúp phát hiện lỗi mà một giá trị trung bình duy nhất che khuất.
Ngay cả khi xây dựng lại tập kiểm thử cẩn thận, kết quả vẫn có thể thay đổi: khi các nhà nghiên cứu tái tạo tập kiểm thử ImageNet theo quy trình thu thập ban đầu, độ chính xác giảm từ 11 đến 14 điểm phần trăm trên nhiều model, dù các cải thiện trên tập kiểm thử gốc vẫn được duy trì; các tác giả cho rằng mức giảm này xuất phát từ việc ảnh khó hơn đôi chút chứ không phải do tập kiểm thử đã được tái sử dụng nhiều năm.
Dữ liệu kiểm thử và các thuật ngữ liên quan#
- Cross-validation: Luân phiên phần dữ liệu phát triển được dùng làm validation để đưa ra ước tính ổn định hơn khi chọn model. Tập kiểm thử riêng vẫn cung cấp kết quả cuối cùng.
- Tập dữ liệu benchmark: Tập kiểm thử công khai được chia sẻ trong một lĩnh vực nghiên cứu. Vì các nhóm đều đánh giá trên tập này trong nhiều năm, dữ liệu dần không còn là dữ liệu chưa từng thấy.
- Tập dữ liệu chuẩn: Tập tham chiếu được tuyển chọn, có chất lượng cao và đáp án đã được kiểm tra; thường được dùng làm tập kiểm thử cố định cho kiểm thử hồi quy các ứng dụng LLM.










