Nền tảngCơ bản

Train, validation, test: chia dữ liệu để biết mô hình có học thật

Phân biệt ba tập dữ liệu, tránh trùng người và trùng thời gian, đồng thời giữ một lần đánh giá cuối đáng tin hơn.

Trong bài viết này

Từ được đánh dấu có giải thích. Di chuột hoặc chạm để xem, hay mở từ điển AI.

Bạn luyện một bộ câu hỏi, xem đáp án rồi làm lại đúng gần hết. Kết quả cho biết bạn đã quen bộ câu hỏi ấy; nó chưa cho biết bạn xử lý đề mới ra sao. Mô hình học máy cũng cần một cách kiểm tra giữ được khoảng cách giữa lúc học và lúc chấm.

Ba tập giữ ba vai trò

Train, hay tập huấn luyện, cung cấp ví dụ để thuật toán điều chỉnh tham số. Validation, hay tập xác thực, giúp bạn chọn cách cấu hình và so sánh các phiên bản trong quá trình phát triển. Test, hay tập kiểm tra, dùng để đánh giá phiên bản đã chốt.

Hướng dẫn chia dữ liệu của Google giải thích vì sao liên tục dùng kết quả test để sửa mô hình sẽ làm giảm giá trị của lần kiểm tra ấy. Dù thuật toán không trực tiếp học từ các dòng test, quyết định của người phát triển vẫn có thể dần thích nghi với chúng.

Hãy tưởng tượng bạn thử nhiều công thức bánh. Train là các lần thực hành, validation là buổi nếm để chọn công thức, còn test là buổi đánh giá độc lập sau khi công thức đã được chốt. Đây là phép ví von, không mô tả một thí nghiệm thực tế.

Tỷ lệ chia không phải phần khó nhất

Không có một tỷ lệ duy nhất phù hợp mọi dự án. Bạn cần đủ ví dụ cho việc học và đủ trường hợp để đánh giá các nhóm quan trọng. Một tập test rất nhỏ có thể làm điểm số thay đổi mạnh chỉ vì một vài dự đoán.

Quan trọng hơn là đơn vị độc lập. Trong ví dụ nhận diện cây qua ảnh, mười ảnh chụp liên tiếp cùng một chiếc lá rất giống nhau. Nếu chia ngẫu nhiên theo ảnh, một phần vào train và phần còn lại vào test, mô hình có thể được kiểm tra bằng tình huống gần như đã gặp.

Thay vào đó, cân nhắc chia theo cây hoặc theo buổi chụp, tùy điều kiện sử dụng thật. Bạn muốn dự đoán ảnh mới của cây đã biết, hay nhận diện cây hoàn toàn mới? Câu trả lời quyết định cách chia hợp lý.

Nhìn để hiểuMột điểm số chưa đủ để chọn mô hình

Chạy các mô hình trên cùng bộ thử, đọc cả điểm tổng lẫn kiểu lỗi, rồi cân nhắc tốc độ và chi phí. Một chênh lệch nhỏ chưa chứng minh mô hình nào luôn tốt hơn.

Đọc điểm số cùng loại lỗi và chi phíVí dụ hoàn toàn giả định trên cùng 20 tình huống: A đúng 18, B đúng 17. Ô có dấu chéo biểu thị ca sai. Cần xem loại lỗi, như sai tên hay quá dài, và đo độ trễ, chi phí, số lần thử lại. Những con số này không phải benchmark thật và không chứng minh A luôn tốt hơn B.Cùng 20 tình huốngA18/20B17/20Lỗi: sai tên ngườiLỗi: vượt độ dàiĐo thêm: độ trễ · chi phí · số lần thử lại

↔ Vuốt ngang để xem toàn bộ sơ đồ.

  1. 01 / Cùng bộ thử

    Dùng cùng các trường hợp và quy tắc chấm đã xác định trước cho cả hai mô hình.

  2. 02 / Đọc điểm số

    Trong ví dụ giả định, A đúng 18/20, B đúng 17/20. Chênh lệch một trường hợp chưa đủ kết luận chung.

  3. 03 / Xem kiểu lỗi

    Mở các trường hợp thất bại: sai tên người và vượt độ dài có mức ảnh hưởng khác nhau.

  4. 04 / Đánh giá nhiều chiều

    Đo thêm tốc độ, chi phí và độ ổn định trên dữ liệu phù hợp với công việc thực tế.

A đúng 18/20 và B đúng 17/20 là số liệu giả định để giải thích cách đọc kết quả, không phải benchmark của mô hình có thật.

Dữ liệu có thời gian cần nhìn theo thời gian

Nếu sản phẩm dự đoán nhu cầu tuần tới, chia ngẫu nhiên toàn bộ lịch sử có thể đưa ví dụ tương lai vào quá trình xây dựng mô hình. Một phương án dễ hiểu hơn là học ở giai đoạn trước, chọn cấu hình ở giai đoạn tiếp theo và kiểm tra ở giai đoạn sau cùng.

Ngay cả bước chuẩn hóa cũng cần được xem xét. Các thống kê dùng để biến đổi đầu vào phải được học từ phần dữ liệu được phép dùng, rồi áp dụng nhất quán cho phần còn lại. Nếu tính trung bình trên tất cả các tập trước khi chia, bạn đã cho quy trình tiếp cận thông tin của phần giữ lại.

Đây không phải lý do để bỏ tiền xử lý. Nó là lý do để đặt tiền xử lý đúng vị trí trong quy trình và lưu lại cách đã thực hiện.

Khi nào một tập kiểm tra đã mất tính độc lập?

Nếu đội ngũ xem từng lỗi test, viết quy tắc riêng cho chúng rồi chạy lại, bộ đó đã tham gia quá trình phát triển. Bạn vẫn có thể dùng nó để kiểm tra hồi quy, nhưng không nên tiếp tục gọi kết quả là đánh giá độc lập mới.

Ghi lại lần mở test, phiên bản mô hình và quyết định phát sinh giúp tránh nhầm lẫn. Khi cần một phép đo mới, hãy chuẩn bị dữ liệu giữ lại mới theo quy tắc phù hợp. Không xóa những ví dụ khó chỉ để làm điểm tăng.

Bài tập: thiết kế cách chia trước khi thấy điểm

Giả sử bạn có ảnh lá của hai mươi cây, mỗi cây được chụp ba ngày. Đây là bộ dữ liệu tưởng tượng. Viết kế hoạch cho hai mục tiêu: nhận diện ảnh mới của cây cũ và nhận diện cây chưa từng xuất hiện.

Tự kiểm: kế hoạch nêu đơn vị chia, lý do lựa chọn, cách tránh ảnh gần trùng và thời điểm được mở test. Bạn phải giải thích vì sao hai mục tiêu có thể cần hai cách chia khác nhau. Đọc tiếp overfitting và underfitting để biết cách diễn giải chênh lệch giữa các tập.

Bạn muốn hiểu điều gì?

Khám phá tất cả bài viết esc để đóng