Chúng ta phải quay lại bài toán training model trong máy học. Như bạn đã biết, thường với một bộ dataset chúng ta sẽ có 3 tập: training set, validation set và testing set, trong đó training set dùng để huấn luyện, validation set dùng để test trong quá trình huấn luyện và testing set dùng để test cho model cuối cùng. Nhưng nếu dataset của bạn không có validation set thì sao? Bạn sẽ lấy gì để test trong quá trình huấn luyện? Chúng ta chắc chắn không được dùng testing set để kiểm thử trong huấn luyện, bởi điều này sẽ dẫn tới overfitting trên tập test. Chúng ta cũng không được dùng tập train để kiểm thử nốt, vì nó sẽ dẫn tới overfitting trên tập train. Vậy chỉ còn 1 cách, bạn sẽ lấy 1 phần của tập train ra làm tập validation. Đây cũng là 1 ý kiến hay! Nhưng, nếu tập train của bạn quá ít, việc lấy ra 1 phần của tập sẽ làm nó ít hơn và dẫn đến thiếu dữ liệu train. Điều này cũng dẫn tới overfitting. Vậy thì phải làm sao???? Đây chính là lúc bạn dùng tới Cross Validation.
Cross Validation là phương pháp chia nhỏ tập training ra thành N phần. Với mỗi lần train, mô hình sẽ sử dụng N-1 phần để train, sau đó test dựa trên 1 phần còn lại. Điều này sẽ giúp cho mô hình hạn chế gặp phải overfitting và giúp bạn tìm ra được những Hyper parameter tốt hơn. Để dễ hiểu, ta đi tới ví dụ sau. Với bộ dữ liệu CIFAR-10, bạn không hề có tập Validation.
Với phương pháp Cross Validation, bạn có thể chia nhỏ tập train ra thành 5 phần. Tổng số ảnh của tập train là 50000 ảnh => mỗi phần nhỏ sẽ có 10000 ảnh.

Với thuật toán này, vấn đề đặt ra là bạn phải chọn tham số K sao cho tốt nhất bằng cách thử nghiệm. Giả sử ta chọn K = 1. Đầu tiên ta sẽ lấy fold 5 để test với tập train là từ fold 1 đến fold 4. Và kết quả cho ra được là a1% độ chính xác. Lần thứ 2 ta sẽ lấy fold 4 để test, và dùng các fold còn lại để train. Kết quả lần này cho ra a2% độ chính xác. Ta thực hiện lần lượt với 5 fold, sẽ cho ra 5 kết quả từ a1 đến a5.

0 Nhận xét