Data Leakage
Rò rỉ dữ liệu đưa thông tin không có sẵn tại thời điểm dự đoán vào quá trình huấn luyện hoặc đánh giá, làm tăng điểm số nhưng không phản ánh hiệu quả trong production. Nội dung đề cập nguyên nhân và cách khắc phục.
Rò rỉ dữ liệu trong học máy (ML) xảy ra khi dữ liệu huấn luyện hoặc quá trình đánh giá của model chứa thông tin mà model sẽ không có khi đưa ra dự đoán thực tế, chẳng hạn các ví dụ từ tập kiểm thử, giá trị trong tương lai hoặc đặc trưng mã hóa sẵn đáp án. Trong quá trình phát triển và kiểm thử model, model có vẻ chính xác nhưng lại hoạt động kém trong môi trường production vì lối tắt mà model dựa vào không còn tồn tại. Rò rỉ là nguyên nhân hàng đầu khiến kết quả không thể tái lập: một khảo sát về khoa học dựa trên học máy thống kê 294 bài báo bị ảnh hưởng trong 17 lĩnh vực; trong dự đoán nội chiến, các model phức tạp mất lợi thế được báo cáo so với hồi quy logistic từ hàng chục năm trước sau khi hiệu chỉnh rò rỉ.
Rò rỉ dữ liệu xảy ra như thế nào#
Rò rỉ xuất hiện thông qua cách chia, xử lý dữ liệu hoặc lựa chọn đầu vào; những sai lầm tương tự thường lặp lại trong model dạng bảng, phân tích chuỗi thời gian và các tác vụ thị giác như nhận dạng hành động:
- Nhiễm bẩn giữa tập huấn luyện và tập kiểm thử: Các bước học từ dữ liệu, chẳng hạn tính thống kê chuẩn hóa, điền giá trị thiếu hoặc chọn đặc trưng, được khớp trên toàn bộ dataset trước khi chia, khiến dữ liệu huấn luyện mang thông tin về tập đánh giá. Ảnh trùng lặp và bản sao được tăng cường trước khi chia cũng gây tác động tương tự.
- Rò rỉ theo nhóm: Các mẫu có liên quan bị chia tách, chẳng hạn các khung hình liên tiếp của cùng một video, nhiều ảnh quét của cùng một bệnh nhân hoặc ảnh chụp cùng một cảnh. Khi đó, model có thể đạt điểm cao nhờ nhận diện cảnh hoặc người thay vì học tác vụ.
- Rò rỉ thời gian: Chia ngẫu nhiên dữ liệu có thứ tự thời gian, hoặc tính đặc trưng bằng các giá trị phát sinh sau thời điểm dự đoán, khiến model có thể nhìn trước tương lai.
- Rò rỉ mục tiêu: Đầu vào là hệ quả hoặc biến đại diện của nhãn, chẳng hạn trường “đã nhận điều trị” trong model dự đoán bệnh.
- Tái sử dụng tập đánh giá: Tinh chỉnh model dựa trên tập kiểm thử hoặc để câu hỏi benchmark xuất hiện trong dữ liệu tiền huấn luyện quy mô web của một model ngôn ngữ lớn sẽ biến tập đánh giá thành tín hiệu huấn luyện.
Ảnh cũng có thể chứa rò rỉ mục tiêu. Trong dataset ChestX-ray14, 80% ảnh X-quang tràn khí màng phổi thuộc tập kiểm thử cũng cho thấy ống dẫn lưu ngực, thiết bị dùng để điều trị tình trạng này. Bộ phân loại huấn luyện trên dataset đạt AUC ROC 0.94 trên ảnh có ống dẫn lưu nhưng chỉ đạt 0.77 trên ảnh không có ống; chính những ca chưa được điều trị là đối tượng mà bộ phát hiện cần phát hiện.
Minh họa rò rỉ bằng code#
Khớp một bước phụ thuộc dữ liệu trước kiểm định chéo là sai lầm kinh điển trong giáo trình và tác động của nó rất dễ đo lường. Ví dụ sau tạo dữ liệu nhiễu thuần túy, vì vậy không model nào có thể đạt độ chính xác cao hơn 50% trên dữ liệu mới; sau đó, ví dụ chọn 20 đặc trưng phân tách nhãn tốt nhất và kiểm định chéo hồi quy logistic hai lần: một lần khớp bước chọn đặc trưng trên toàn bộ mẫu, một lần đặt bước chọn đặc trưng bên trong pipeline scikit-learn để khớp lại trên từng fold huấn luyện.
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
# Pure noise: 100 samples, 5,000 random features, random labels (true accuracy is 50%)
rng = np.random.default_rng(0)
X = rng.normal(size=(100, 5000))
y = rng.integers(0, 2, size=100)
# Leaky: pick the 20 features that best separate the labels using every sample, then cross-validate
X_selected = SelectKBest(k=20).fit_transform(X, y)
leaky = cross_val_score(LogisticRegression(), X_selected, y, cv=5).mean()
# Correct: feature selection is refit inside each training fold
pipeline = make_pipeline(SelectKBest(k=20), LogisticRegression())
clean = cross_val_score(pipeline, X, y, cv=5).mean()
print(f"Leaky CV accuracy: {leaky:.2f}, correct CV accuracy: {clean:.2f}")Phiên bản bị rò rỉ báo cáo độ chính xác 85% trên các nhãn ngẫu nhiên, trong khi pipeline báo cáo 48%, tương đương mức ngẫu nhiên. Với 5.000 đặc trưng và 100 mẫu, một số đặc trưng tương quan với nhãn do may rủi; việc chọn chúng bằng cách bao gồm cả các fold xác thực sẽ đưa yếu tố may rủi đó vào điểm số của mọi fold.
Ngăn chặn rò rỉ dữ liệu#
Phòng ngừa bắt đầu từ bước chia dữ liệu, phải thực hiện trước mọi bước học từ dữ liệu, để các tập xác thực và kiểm thử không bị lộ:
- Chia trước khi thiết kế đặc trưng: Chỉ khớp bộ chuẩn hóa, bộ điền giá trị thiếu, bộ mã hóa và bộ chọn đặc trưng trên tập huấn luyện; áp dụng nguyên trạng các bộ này cho những tập còn lại.
- Chia theo nhóm hoặc thời gian: Giữ mọi mẫu của cùng một bệnh nhân, video hoặc cảnh trong cùng một tập; huấn luyện trên dữ liệu quá khứ và kiểm thử trên dữ liệu tương lai.
- Khử trùng lặp bằng hash và embedding: So sánh hash tệp để tìm bản sao chính xác và độ tương đồng embedding để phát hiện bản trùng gần đúng giữa các tập trước khi huấn luyện.
- Kiểm tra đầu vào: Xác định xem mỗi đặc trưng có tồn tại tại thời điểm dự đoán hay không; xem một đặc trưng chi phối duy nhất hoặc điểm số cao bất thường là lỗi cần điều tra.
Rò rỉ cũng làm sai lệch việc chọn checkpoint. Ultralytics YOLO học từ các ảnh train được liệt kê trong YAML của dataset và lưu best.pt từ epoch có độ phù hợp xác thực cao nhất; với tác vụ phát hiện, độ phù hợp này là mAP50-95. Vì vậy, các khung hình gần trùng lặp được dùng chung giữa train và val sẽ làm tăng cả điểm số dùng để chọn checkpoint lẫn điểm số được báo cáo.
Rò rỉ dữ liệu và các thuật ngữ liên quan#
- Quá khớp: Model ghi nhớ nhiễu trong dữ liệu huấn luyện hợp lệ và đạt điểm thấp trên tập xác thực sạch. Rò rỉ khiến chính điểm xác thực bị sai, vì vậy model quá khớp vẫn có thể trông như hoạt động tốt.
- Học theo lối tắt: Model dựa vào dấu hiệu giả, chẳng hạn watermark hoặc nền, có tương quan với nhãn. Rò rỉ là trường hợp dấu hiệu đó đi vào dữ liệu huấn luyện hoặc đánh giá từ thông tin không có sẵn khi triển khai.
- Bảo mật dữ liệu: Trong an ninh mạng, rò rỉ dữ liệu là việc dữ liệu nhạy cảm bị lộ cho các bên không được phép; các biện pháp kiểm soát truy cập, mã hóa và công cụ ngăn ngừa mất dữ liệu giúp xử lý vấn đề này. Hai nghĩa chỉ trùng tên gọi.










