Tất cả các dự án kỹ thuật phần mềm tốt đều dành nhiều công sức cho việc
kiểm thử ứng dụng. Tương tự, bạn nên kiểm thử
mô hình ML để xác định độ chính xác của các dự đoán.
Tập hợp đào tạo, xác thực và kiểm thử
Bạn nên kiểm thử một mô hình với một tập hợp ví dụ khác với những
dùng để huấn luyện mô hình. Khi tìm hiểu
sau đó một lát, việc kiểm tra
các ví dụ khác nhau là bằng chứng rõ ràng hơn cho mô hình của bạn so với thử nghiệm
trên cùng một nhóm ví dụ.
Bạn lấy những ví dụ khác đó ở đâu? Theo truyền thống, trong công nghệ học máy,
bạn sẽ nhận được những ví dụ khác nhau đó
bằng cách chia tách tập dữ liệu ban đầu. Bạn có thể
do đó giả định rằng bạn nên chia tập dữ liệu ban đầu thành hai tập con:
Giả sử bạn huấn luyện trên tập huấn luyện và đánh giá tập kiểm thử
qua nhiều vòng. Trong mỗi vòng, bạn sử dụng kết quả của nhóm kiểm thử
để hướng dẫn cách cập nhật siêu tham số và bộ tính năng. Bạn có thể
có vấn đề gì với phương pháp này không? Chỉ chọn một câu trả lời.
Thực hiện nhiều vòng của quy trình này có thể khiến mô hình
để hoàn toàn phù hợp với các điểm đặc thù của tập hợp kiểm thử.
Có! Bạn càng thường xuyên sử dụng cùng một tập hợp kiểm thử,
thì mô hình càng có nhiều khả năng
phù hợp với tập kiểm thử.
Giống như một giáo viên "dạy thử nghiệm", mô hình vô tình
phù hợp với tập kiểm thử, điều này có thể khiến mô hình gặp khó khăn hơn
cho phù hợp với dữ liệu thực tế.
Phương pháp này bình thường. Sau cùng, bạn sẽ đào tạo về
tập huấn luyện và đánh giá trên một tập kiểm thử riêng biệt.
Thực ra, có một vấn đề nhỏ ở đây. Hãy suy nghĩ về những điều có thể
dần dần trở nên không chính xác.
Phương pháp này không hiệu quả về mặt tính toán. Không thay đổi
siêu tham số hoặc bộ tính năng sau mỗi vòng kiểm thử.
Việc kiểm thử thường xuyên tuy tốn kém nhưng rất quan trọng. Tuy nhiên, việc thường xuyên
thử nghiệm sẽ rẻ hơn nhiều so với đào tạo bổ sung. Đang tối ưu hoá
siêu tham số và bộ tính năng có thể cải thiện đáng kể
chất lượng mô hình, vì vậy, luôn có ngân sách thời gian và tài nguyên điện toán
để làm những việc này.
Chia tập dữ liệu thành hai tập hợp là một ý hay, nhưng
bạn nên chia tập dữ liệu thành 3 nhóm nhỏ.
Ngoài tập huấn luyện và tập kiểm thử, tập con thứ ba là:
Tập hợp xác thực
thực hiện kiểm thử ban đầu trên mô hình khi mô hình đang được huấn luyện.
Sử dụng tập hợp xác thực để đánh giá kết quả từ tập huấn luyện.
Sau khi sử dụng lặp lại bộ xác thực cho thấy rằng mô hình của bạn
đưa ra dự đoán chính xác, hãy sử dụng tập hợp kiểm thử để kiểm tra kỹ mô hình của bạn.
Hình sau đây minh hoạ quy trình này.
Trong hình, phần "Mô hình chi tiết" nghĩa là điều chỉnh mọi thứ về mô hình
— từ thay đổi tốc độ học cho đến thêm hoặc xoá
để thiết kế một mô hình hoàn toàn mới từ đầu.
Vào cuối quy trình làm việc này, bạn sẽ chọn mô hình hoạt động tốt nhất trên tập hợp kiểm thử.
Quy trình làm việc được minh hoạ trong Hình 10 là quy trình tối ưu, nhưng ngay cả với quy trình làm việc đó,
bộ kiểm thử và bộ xác thực vẫn "bị lỗi" khi sử dụng nhiều lần.
Nghĩa là, bạn càng sử dụng nhiều dữ liệu giống nhau để đưa ra quyết định về
chế độ cài đặt siêu tham số hoặc các cải tiến khác của mô hình thì độ tin cậy càng thấp
rằng mô hình này sẽ đưa ra dự đoán chính xác về dữ liệu mới.
Vì lý do này, bạn nên thu thập thêm dữ liệu để "làm mới" thử nghiệm
tập hợp và tập hợp xác thực. Bắt đầu lại là một quá trình khởi động lại rất tốt.
Bài tập: Kiểm tra trực giác của bạn
Bạn đã xáo trộn tất cả ví dụ trong tập dữ liệu và chia
các ví dụ được xáo trộn vào huấn luyện, xác thực và kiểm thử
bộ. Tuy nhiên, giá trị tổn thất trong tập kiểm thử của bạn quá thấp đáng kinh ngạc
mà bạn nghi ngờ rằng đã có nhầm lẫn. Điều gì có thể đã xảy ra?
Nhiều ví dụ trong tập hợp kiểm thử là bản sao của các ví dụ
trong tập huấn luyện.
Có. Đây có thể là một vấn đề trong một tập dữ liệu có nhiều dữ liệu dư thừa
ví dụ. Bạn nên xoá các ví dụ trùng lặp khỏi
tập kiểm thử trước khi kiểm thử.
Việc huấn luyện và thử nghiệm là không xác định. Đôi khi, tình cờ,
tỷ lệ mất kiểm thử của bạn là cực kỳ thấp. Chạy lại kiểm thử để xác nhận
kết quả.
Mặc dù lượng mất mát thay đổi một chút trong mỗi lần chạy, nhưng không nên
nhiều như bạn nghĩ mình
đã thắng xổ số học máy.
Tình cờ, tập hợp thử nghiệm vừa chứa các ví dụ mà
mô hình hoạt động hiệu quả.
Các ví dụ đã được xáo trộn rất tốt, vì vậy điều này là rất khó có thể xảy ra.
Các vấn đề khác với tập hợp kiểm thử
Như đã minh hoạ trong câu hỏi trước, các ví dụ trùng lặp có thể ảnh hưởng đến việc đánh giá mô hình.
Sau khi chia một tập dữ liệu thành các nhóm huấn luyện, xác thực và kiểm thử,
xóa bất kỳ ví dụ nào trong tập hợp xác thực hoặc tập hợp kiểm thử là bản sao của
các ví dụ trong tập huấn luyện. Phép kiểm thử công bằng duy nhất về một mô hình chống lại
ví dụ mới, không phải các ví dụ trùng lặp.
Ví dụ: hãy xem xét một mô hình dự đoán liệu một email có phải là thư rác, bằng cách sử dụng
dòng tiêu đề, nội dung email và địa chỉ email của người gửi làm tính năng.
Giả sử bạn chia dữ liệu thành các tập huấn luyện và kiểm thử, với tỷ lệ chia 80-20.
Sau khi huấn luyện, mô hình này đạt độ chính xác 99% trên cả tập huấn luyện và
tập hợp kiểm thử. Có thể bạn sẽ nhận được độ chính xác thấp hơn trong tập kiểm thử, vì vậy,
hãy xem lại dữ liệu và phát hiện ra rằng nhiều ví dụ trong thử nghiệm
là các tập hợp trùng lặp với các ví dụ trong tập huấn luyện. Vấn đề là bạn
đã quên loại bỏ các mục trùng lặp cho cùng một email rác khỏi thông tin đầu vào của bạn
trước khi chia tách dữ liệu. Bạn đã vô tình được huấn luyện về một số
dữ liệu thử nghiệm của bạn.
Tóm lại, một bộ kiểm thử hoặc xác thực tốt đáp ứng tất cả
tiêu chí sau:
Đủ lớn để mang lại kết quả thử nghiệm có ý nghĩa thống kê.
Đại diện cho toàn bộ tập dữ liệu. Nói cách khác, đừng chọn
một tập hợp kiểm thử có các đặc điểm khác với tập huấn luyện.
Đại diện cho dữ liệu thực tế mà mô hình sẽ gặp
như một phần của mục đích kinh doanh.
Không có ví dụ nào bị trùng lặp trong tập huấn luyện.
Bài tập: Kiểm tra mức độ hiểu biết của bạn
Với một tập dữ liệu duy nhất có số lượng ví dụ cố định,
câu nào sau đây là đúng?
Mỗi ví dụ được sử dụng trong quá trình kiểm thử mô hình sẽ ít hơn một ví dụ được sử dụng
trong việc huấn luyện mô hình.
Việc chia các ví dụ thành các nhóm huấn luyện/kiểm thử/xác thực là một trò chơi có tổng bằng 0.
Đây là sự đánh đổi trọng tâm.
Số lượng ví dụ trong tập hợp kiểm thử phải lớn hơn
số lượng ví dụ trong tập hợp xác thực.
Về lý thuyết, tập hợp xác thực và kiểm thử kiểm thử phải chứa cùng một
số lượng ví dụ hoặc gần như vậy.
Số lượng ví dụ trong tập hợp kiểm thử phải lớn hơn
số lượng ví dụ trong tập xác thực hoặc tập huấn luyện.
Số lượng ví dụ trong tập huấn luyện thường lớn hơn
số lượng ví dụ trong tập xác thực hoặc tập kiểm thử; tuy nhiên,
không có yêu cầu về tỷ lệ phần trăm cho các tập hợp khác nhau.
Giả sử tập hợp kiểm thử của bạn có đủ ví dụ để thực hiện một
thử nghiệm có ý nghĩa thống kê. Ngoài ra, việc kiểm thử
tập hợp kiểm thử có tổn thất thấp. Tuy nhiên, mô hình này đã hoạt động
trong thế giới thực. Bạn nên làm gì?
Xác định sự khác biệt giữa tập dữ liệu ban đầu và dữ liệu thực tế.
Có. Ngay cả những tập dữ liệu tốt nhất cũng chỉ là ảnh chụp nhanh của dữ liệu thực tế;
cơ sở
thông tin thực tế
có xu hướng thay đổi theo thời gian. Mặc dù tập hợp thử nghiệm của bạn khớp với
đủ tốt để đề xuất chất lượng mô hình tốt,
có thể không khớp hoàn toàn với dữ liệu trong thế giới thực.
Bạn có thể phải đào tạo lại và kiểm tra lại khi có tập dữ liệu mới.
Kiểm thử lại trên cùng một tập hợp kiểm thử. Kết quả thử nghiệm có thể
là điều bất thường.
Mặc dù việc thử nghiệm lại có thể mang lại kết quả hơi khác,
chiến thuật này có lẽ không giúp ích lắm.