Data Cleaning
Làm sạch dữ liệu tìm và sửa các tệp hỏng, bản sao trùng lặp, giá trị thiếu và lỗi nhãn trong tập dữ liệu trước khi huấn luyện. Nội dung đề cập kỹ thuật, công cụ và code.
Làm sạch dữ liệu, còn gọi là data cleansing hoặc data scrubbing, là quá trình tìm và sửa hoặc loại bỏ các bản ghi bị hỏng, trùng lặp, không đầy đủ, không nhất quán hoặc gán nhãn sai trong dataset. Trong học máy (ML), bước này diễn ra trước tiền xử lý dữ liệu và huấn luyện, vì model học mọi thứ có trong dữ liệu huấn luyện, kể cả lỗi. Bộ phát hiện được huấn luyện trên ảnh mà một nửa số xe đạp bị gán nhãn "xe máy" sẽ học sự nhầm lẫn đó; một tập kiểm thử có nhãn sai sẽ báo cáo sai chất lượng model. Làm sạch dữ liệu là thực hành cốt lõi của AI lấy dữ liệu làm trung tâm, phương pháp cải thiện model bằng cách cải thiện dữ liệu thay vì kiến trúc.
Vì sao chất lượng dữ liệu giới hạn model#
Lỗi dữ liệu làm giảm độ chính xác theo nhiều cách. Ví dụ gán nhãn sai dạy các ánh xạ đầu vào-đầu ra không chính xác và khiến model overfit khi ghi nhớ nhiễu. Các bản trùng lặp làm một số ví dụ có trọng số cao hơn; khi bản sao xuất hiện trong cả tập huấn luyện lẫn tập đánh giá, chúng gây ra rò rỉ dữ liệu, làm điểm số tăng giả tạo. Tệp bị hỏng khiến data loader lỗi hoặc bị bỏ qua âm thầm, còn tên lớp không nhất quán chia một danh mục thành nhiều danh mục. Benchmark cũng bị ảnh hưởng: một nghiên cứu trên 10 tập kiểm thử được sử dụng rộng rãi ước tính trung bình có ít nhất 3,3% ví dụ bị lỗi nhãn và ít nhất 6% ví dụ trong tập validation ImageNet bị lỗi nhãn. Khi chấm điểm bằng nhãn đã sửa, ResNet-18 vượt ResNet-50 khi tỷ lệ ví dụ kiểm thử bị gán nhãn sai ban đầu chỉ tăng thêm 6%.
Các tác vụ làm sạch dữ liệu thường gặp#
Dữ liệu dạng bảng thường được làm sạch bằng các thư viện như pandas, trong khi dataset thị giác cần kiểm tra tệp ảnh và annotation, từ pixel đến tọa độ bounding box. Có thể tìm ảnh gần trùng lặp bằng cách so sánh embedding, còn tìm kiếm vector giúp mở rộng việc so sánh lên hàng triệu ảnh.
- Giá trị bị thiếu: Bản ghi có trường trống sẽ bị loại bỏ hoặc điền giá trị bằng phương pháp nội suy từ thống kê cột hoặc các láng giềng gần nhất. Trong dataset thị giác, ảnh không có tệp nhãn là trường hợp không rõ ràng, vì đó có thể là ảnh nền có chủ ý hoặc ảnh chưa được ai gán nhãn.
- Bản trùng lặp và gần trùng lặp: Các tệp giống hệt từng byte có cùng hash. Bản sao đã đổi kích thước hoặc nén lại và các khung hình video liên tiếp thì không, nên cần dùng perceptual hash hoặc độ tương đồng embedding.
- Tệp bị hỏng và không hợp lệ: Tệp tải xuống bị cắt cụt, định dạng không được hỗ trợ, chế độ màu không mong đợi và ảnh quá nhỏ có thể không giải mã được hoặc không chứa tín hiệu hữu ích.
- Lỗi nhãn: Sai lớp, thiếu đối tượng và bounding box lỏng hoặc đặt sai vị trí là những lỗi tốn kém nhất trong dữ liệu thị giác có giám sát và khó phát hiện nhất bằng mắt.
- Danh mục không nhất quán: Các cách viết như "Car" và "car", hoặc các lớp chồng lấn như "ô tô" và "phương tiện", được hợp nhất vào một hệ phân loại để mỗi khái niệm chỉ có một nhãn.
- Giá trị ngoại lai: Các giá trị bất khả thi, chẳng hạn tuổi âm hoặc bounding box vượt ra ngoài biên ảnh, là lỗi cần sửa. Các trường hợp hiếm nhưng hợp lệ vẫn được giữ lại, vì model thường cần học chính những trường hợp biên đó.
Tìm lỗi nhãn bằng model#
Không thể mở rộng quy mô nếu rà soát thủ công mọi nhãn, vì vậy pipeline làm sạch dùng model đã huấn luyện để xếp hạng những nhãn cần kiểm tra. Confident learning, được triển khai trong thư viện mã nguồn mở cleanlab, sử dụng xác suất dự đoán ngoài mẫu từ cross-validation và đánh dấu các ví dụ mà model tự tin dự đoán lớp khác với nhãn được cung cấp. Con người vẫn đưa ra quyết định cuối cùng: trong nghiên cứu về tập kiểm thử nêu trên, người đánh giá từ cộng đồng xác nhận 51% ứng viên được thuật toán đánh dấu là lỗi nhãn thực sự.
Tự động hóa kiểm tra tệp#
Các bước kiểm tra cấp file đủ nhẹ để chạy trên mỗi lô dữ liệu mới, bên cạnh kiểm tra nhãn và cân bằng lớp được đề cập trong bài học Dataset Quality Control. Script sau tạo một thư mục nhỏ chứa một ảnh, một bản sao chính xác và một file bị cắt cụt, sau đó phát hiện bản sao và file lỗi bằng Pillow cùng hash nội dung:
import hashlib
from pathlib import Path
from PIL import Image
# A tiny image folder: one original, one exact copy, and one truncated download
folder = Path("images")
folder.mkdir(exist_ok=True)
Image.new("RGB", (640, 480), "orange").save(folder / "a.jpg")
(folder / "b.jpg").write_bytes((folder / "a.jpg").read_bytes())
(folder / "c.jpg").write_bytes((folder / "a.jpg").read_bytes()[:1000])
seen = {}
for path in sorted(folder.glob("*.jpg")):
try:
Image.open(path).load() # decode every pixel; a truncated file raises OSError
except OSError as error:
print(f"{path.name}: corrupt ({error})")
continue
digest = hashlib.md5(path.read_bytes()).hexdigest() # identical bytes give identical hashes
if digest in seen:
print(f"{path.name}: duplicate of {seen[digest]}")
seen.setdefault(digest, path.name)Script in ra b.jpg: duplicate of a.jpg và c.jpg: corrupt (image file is truncated (5 bytes not processed)). Việc giải mã hoàn toàn từng ảnh rất quan trọng, vì mở tệp chỉ đọc phần header và tệp bị cắt cụt vẫn có thể vượt qua bước đó. Ultralytics YOLO chạy các bước kiểm tra liên quan mỗi khi tạo cache nhãn cho dataset: lưu lại các tệp JPEG thiếu dấu kết thúc ảnh, xóa các dòng nhãn trùng lặp và bỏ qua các cặp ảnh-nhãn có ảnh nhỏ hơn 10 pixel, tọa độ nằm ngoài ảnh hoặc class id vượt quá số lớp trong YAML của dataset; sau đó báo cáo số lượng ảnh, ảnh nền và ảnh bị hỏng trong phần tóm tắt quét.
Làm sạch dữ liệu và các thuật ngữ liên quan#
- Tiền xử lý dữ liệu: Chuyển đổi dữ liệu vốn đã chính xác sang định dạng mà model yêu cầu, chẳng hạn thay đổi kích thước ảnh và chuẩn hóa giá trị pixel. Làm sạch dữ liệu quyết định dữ liệu nào là chính xác.
- Data augmentation: Tạo ra các biến thể có chủ đích, chẳng hạn lật ảnh và thay đổi màu sắc, cho dữ liệu sạch trong quá trình huấn luyện.
- Gán nhãn dữ liệu: Tạo nhãn cho dữ liệu chưa có nhãn, còn làm sạch dữ liệu kiểm tra và sửa các nhãn đã tồn tại.
- Thiên lệch dataset: Dataset có thể không có lỗi nhưng vẫn đại diện thiếu cho một số điều kiện hoặc nhóm. Khắc phục thiên lệch đòi hỏi thu thập dữ liệu khác, điều mà chỉ làm sạch dữ liệu không thể thực hiện.










