Thứ Sáu, 23 tháng 11, 2018

Training set, Testing set, Validation set

Trong máy học, có một khái niệm mà tất cả chúng ta hầu như phải bắt gặp ít nhất là chục lần, đó là dataset. Dataset là tập dữ liệu mà chúng ta làm việc cùng, chính là tập dữ liệu mà chúng ta áp dụng các thuật toán AI, các mô hình máy học để thử nghiệm và đánh giá. Và thông thường, tập dataset này có kích thước rất lớn, và người ta chia nó ra làm các tập nhỏ hơn.

Training set

Đầu tiên là tập training set. Đây thường là một tập dữ liệu có kích thước lớn, được dùng để training trong quá trình huấn luyện máy học. Nôm na dễ hiểu là, đây chính là tập dữ liệu máy dùng để học và rút trích được những đặc điểm quan trọng để ghi nhớ lại. Tập training set sẽ gồm 2 phần: - Input: sẽ là những dữ liệu đầu vào. Ví dụ với bài toán nhận dạng hình ảnh chẳng hạn: input sẽ là những bức hình. - Output: sẽ là những kết quả tương ứng với tập input. Ví dụ là những nhãn dán. Nếu input là ảnh con mèo, thì output sẽ là "con mèo". Tóm cái đuôi lại:
Training set là tập các cặp input và output dùng để huấn luyện trong quá trình máy học.

Testing set

Đúng với cái tên của nó, testing set là tập dữ liệu dùng để test sau khi máy đã học xong. Một mô hình máy học sau khi được huấn luyện, sẽ cần phải được kiểm chứng xem nó có đạt hiểu quả ko. Cũng giống như con người, sau mỗi khóa học bạn phải có một bài kiểm tra cuối kì để lấy kết quả. Ai điểm cao thì có thưởng, ai điểm thấp thì nhịn chơi game... Mô hình máy học cũng vậy, sau mỗi quá trình huấn luyện gian khổ, các mô hình này sẽ được kiểm chứng độ chính xác, nếu đáp ứng được yêu cầu thì ok, không thì quăng. Và để kiểm nghiệm được độ chính xác của mô hình này, người ta dùng tập Testing set. Khác với Training set, Testing set chỉ gồm các giá trị input mà không có các giá trị output. Máy tính sẽ nhận những giá trị input này, và xử lý các giá trị, sau đó đưa ra output tương ứng cho giá trị input. Ví dụ, bạn đưa cho máy tính 1 lá bài hình con mèo : đây chính là giá trị input. Máy tính sẽ xử lý các chi tiết trên lá bài này và in ra màn hình: "con mèo" : Đây chính là output. Tóm cái váy lại:
Testing set là tập các giá trị input và được dùng để kiểm thử độ chính xác của những mô hình máy học sau khi được huấn luyện.

Validation set

Để hiểu được rõ Validation set. Bạn cần phải hiểu được 1 vấn đề trong huấn luyện mô hình máy học đó là Overfitting. Validation test cũng giống như tập training set, nó cũng bao gồm các cặp giá trị input và ouput tương ứng. Nhưng nó lại khác training set ở chỗ, nó được sử dụng để kiểm thử độ chính xác của mô hình máy học trong quá trình huấn luyện. Vậy nó khác gì với tập Testing? Cũng rất dễ nhận thấy đó là: Testing được dùng để kiểm thử sau quá trình huấn luyện, còn validation set được sử dụng để kiểm thử trong quá trình huấn luyện. Vậy tại sao người ta lại không dùng Training set để kiểm thử luôn, mà lại phải có tập validation để kiểm thử. Câu hỏi này để trả lời được, xin mời thí chủ hãy quay về Overfitting để đọc. Hiểu nôm na là vầy: hãy xem quá trình học máy là quá trình một học sinh đi học toán ở trường. Những bài tập được làm ở trường là training set. Trong quá trình học ở trường, giáo viên sẽ đưa ra những bài kiểm tra 15', để xem học sinh này yếu chỗ nào, mạnh chỗ nào để sửa chữa cách dạy. Và tất nhiên, để tránh việc học vẹt, những bài kiểm tra 15' này phải khác với những bài tập đã được làm (đây chính là Validation). Cuối kì, học sinh này được tham gia kì thi cuối kì để xét xem có được lên lớp ko hay ở lại. Bài kiểm tra cuối kì này, chính xác là Testing set. Tóm cái quần lại
Validation set là tập các giá trị input đi kèm với giá trị output và được dùng để kiểm thử độc chính xác của mô hình máy học trong quá trình huấn luyện.
Share:

8 nhận xét:

  1. Cái kết luận thứ 3 về validation test ghi nhầm thành training kìa tác giả. Cảm ơn tác giả rất nhiều, bài viết rất dễ hiểu

    Trả lờiXóa
    Trả lời
    1. oh, cám ơn bạn đã chỉ lỗi nha. ^^ tại lâu lâu viết xong quên dò lại bài. sorry sorry!

      Xóa
  2. theo mình biết là nên chia tâp dữ liệu thành 3 tập training, validatio, và test. Sau đó, tiền xử lý tập training và dùng các giá trị ước lượng đc để tiền xủa lý tập val và tập test. Cho mình hỏi là tại sao phải làm như vậy?

    Trả lờiXóa
    Trả lời
    1. mình không biết có thực sự hiểu câu hỏi của bạn không nhưng theo mình nghĩ thì vì tập validation và testing chỉ dùng để test, do đó thì phải dùng những bước tiền xử lý như đã dùng trên tập train để áp dụng vào, như vậy mới đánh giá được đúng kết quả train được.

      Xóa
  3. train --> val --> chỉnh lại train ---> val --> …
    thấy ok thì bỏ vào test set (cmt góp ý tham khảo ^^)

    Trả lờiXóa

Được tạo bởi Blogger.