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.
Cảm ơn ad. Ad giải thích các vấn đề học thuật khô khan theo 1 cách thật dễ hiểu. Có phải đây là kỹ thuật Feynman trong truyền thuyết ko nhỉ ?
Trả lờiXóamình đã từng tốn kha khá thời gian để hiểu mấy khái niệm như thế này ở đại học, nên mình chỉ muốn tìm cách giải thích sao cho dễ hiểu nhất mà thôi ^^. Cám ơn bạn đã ghé xem blog nhé
XóaBạn giải thích thật dễ hiểu ấy. Mong bạn sẽ ra nhiều bài viết hơn nữa
Trả lờiXóabài viết của bạn rất hay, dễ hiểu, nhưng có vẻ hơi ngắn, bạn nên gộp hoặc mở rộng thêm bài viết chút nhé.
Trả lờiXóaLặn lội trên ggl mãi mới tìm ra được một bài siêu dễ hiểu về vấn đề này. Cám ơn anh. Hân hạnh được đọc bài viết này ^^!
Trả lờiXóa