Training Set và Testing Set

<p style="text-align: justify;">Trong b&agrave;i trước, ch&uacute;ng ta đ&atilde; t&igrave;m hiểu về hai vấn đề quan trọng trong machine learning đ&oacute; l&agrave;&nbsp;<a href="../../../khoa-hoc/machine-learning-co-ban/overfitting-va-underfitting-la-gi" target="_blank" rel="noopener">overfitting v&agrave; underfitting</a>. Ch&uacute;ng ta đ&atilde; biết rằng c&aacute;c m&ocirc; h&igrave;nh underfitting cho kết quả tệ tr&ecirc;n cả dữ liệu quan s&aacute;t sử dụng để huấn luyện lẫn dữ liệu chưa được quan s&aacute;t trong thực tế, c&ograve;n overfitting cho kết quả rất (qu&aacute;) tốt tr&ecirc;n dữ hiệu huấn luyện nhưng lại qu&aacute; k&eacute;m khi sử dụng trong thực tế. Nh&igrave;n chung cả hai trường hợp n&agrave;y m&ocirc; h&igrave;nh đều kh&ocirc;ng m&ocirc; h&igrave;nh h&oacute;a được quan hệ ch&iacute;nh x&aacute;c ban đầu trong dữ liệu. N&oacute; hoặc qu&aacute; đơn giản hoặc qu&aacute; phức tạp.</p> <p style="text-align: justify;">Tuy nhi&ecirc;n, một vấn đề xảy ra đ&oacute; l&agrave; ch&uacute;ng ta kh&ocirc;ng c&oacute; dữ liệu chưa quan s&aacute;t (đ&atilde; quan s&aacute;t đ&acirc;u m&agrave; c&oacute;) cũng như cũng chẳng biết quan hệ ch&iacute;nh x&aacute;c trong dữ liệu l&agrave; g&igrave; (biết rồi th&igrave; cần g&igrave; phải học). Điều n&agrave;y l&agrave;m cho ch&uacute;ng ta kh&ocirc;ng biết được m&ocirc; h&igrave;nh của ch&uacute;ng ta ch&iacute;nh x&aacute;c bao nhi&ecirc;u, liệu c&oacute; thể sử dụng được trong thực tế kh&ocirc;ng? Liệu c&oacute; bị underfitting hay overfitting hay kh&ocirc;ng? Khi n&agrave;o bắt đầu overfitting để dừng tăng độ phức tạp. Ch&uacute;ng ta kh&ocirc;ng thể tự dưng huấn luyện một m&ocirc; h&igrave;nh trời ơi đất hỡi v&agrave; bảo n&oacute; đ&uacute;ng sau đ&oacute; mang ra sử dụng được (sử dụng nhiều khi chết người hoặc đi t&ugrave; như chơi!!!). Điều n&agrave;y cũng như thiết kế một chiếc m&aacute;y bay, t&agrave;u thủy mới, chế tạo một&nbsp;<a href="https://www.cdc.gov/vaccines/basics/test-approve.html">loại thuốc mới</a>&hellip; Ch&uacute;ng ta kh&ocirc;ng d&aacute;m chắc được về hiệu quả của ch&uacute;ng m&agrave; thường ch&uacute;ng ta phải đưa ch&uacute;ng qua một bước kiểm thử v&agrave; kiểm định trước khi đưa ra thị trường.</p> <p style="text-align: justify;">Trong machine learning cũng vậy, ch&uacute;ng ta cần kiểm thử để dự đo&aacute;n khả năng hoạt động hiệu quả của m&ocirc; h&igrave;nh tr&ecirc;n thực tế. C&oacute; rất nhiều c&aacute;ch để kiểm thử v&agrave; đ&aacute;nh gi&aacute; hiệu năng của m&ocirc; h&igrave;nh.</p> <p style="text-align: justify;">C&aacute;ch đơn giản nhất l&agrave; đưa ra d&ugrave;ng thử một thời gian. C&aacute;ch n&agrave;y kh&aacute; tốn k&eacute;m thời gian, cũng như kh&aacute; tốn c&ocirc;ng để thiết kế c&aacute;c kịch bản kiểm thử ph&ugrave; hợp, hoặc trong nhiều trường hợp cũng kh&oacute; sử dụng.</p> <p style="text-align: justify;">C&aacute;ch thứ hai hợp l&yacute; hơn đ&oacute; l&agrave; ch&uacute;ng ta sử dụng một tập dữ liệu kiểm thử (testing set) độc lập đối với tập dữ liệu huấn luyện (training set) để đ&aacute;nh gi&aacute; vầ ước lượng hiệu quả của m&ocirc; h&igrave;nh. Th&ocirc;ng thường training set v&agrave; testing set được t&aacute;ch ra ngay từ dữ liệu quan s&aacute;t được cung cấp (chẳng hạn lấy 80% dữ liệu quan s&aacute;t được cung cấp để huấn luyện v&agrave; 20% dữ liệu quan s&aacute;t c&ograve;n lại kh&ocirc;ng li&ecirc;n quan đến 80% trước để đ&aacute;nh gi&aacute;).</p> <p style="text-align: justify;">Sỡ dĩ c&oacute; điều n&agrave;y l&agrave; do, ch&uacute;ng ta đ&atilde; thu thập c&aacute;c dữ liệu quan s&aacute;t một lần rồi, v&agrave; nếu ch&uacute;ng ta thu thập tốt th&igrave; nhiều khả năng đ&atilde; bao qu&aacute;t được vấn đề. C&ograve;n nếu thu thập chưa tốt th&igrave; đ&agrave;nh chịu !!! V&igrave; m&ocirc; h&igrave;nh khi đ&oacute; đ&atilde; hết thuốc chữa rồi!!! Hơn nữa l&agrave;m như vậy cũng tiết kiệm được c&ocirc;ng sức phải thu thập dữ liệu th&ecirc;m một lần nữa để kiểm thử (chẳng kh&aacute;c n&agrave;o trường hợp trước thử trực tiếp tr&ecirc;n thực tế). Trong b&agrave;i viết n&agrave;y, ch&uacute;ng ta sẽ c&ugrave;ng t&igrave;m hiểu về Training set, validation set v&agrave; testing set, cũng như c&aacute;c c&aacute;ch sử dụng ba tập n&agrave;y trong việc đ&aacute;nh gi&aacute; c&aacute;c m&ocirc; h&igrave;nh machine learning.</p> <h2 id="ftoc-heading-2" class="ftwp-heading" style="text-align: justify;">Training Set (Tập huấn luyện)</h2> <p style="text-align: justify;">Tập huấn luyện (training set) l&agrave; tập dữ liệu được sử dụng để huấn luyện m&ocirc; h&igrave;nh. C&aacute;c thuật to&aacute;n học m&aacute;y sẽ học c&aacute;c m&ocirc; h&igrave;nh từ tập huấn luyện n&agrave;y. Việc học sẽ kh&aacute;c nhau t&ugrave;y thuộc v&agrave;o thuật to&aacute;n v&agrave; m&ocirc; h&igrave;nh sử dụng. V&iacute; dụ, khi sử dụng m&ocirc;t h&igrave;nh Hồi quy tuyến t&iacute;nh (Linear Regression), c&aacute;c điểm trong tập huấn luyện được sử dụng để t&igrave;m ra h&agrave;m số hay đường ph&ugrave; hợp nhất m&ocirc; tả quan hệ giữa đầu v&agrave;o v&agrave; đầu ra của tập dữ liệu huấn luyện bằng c&aacute;ch sử dụng một số phương ph&aacute;p tối ưu h&oacute;a như c&ocirc;ng thức nghiệm ở&nbsp;<a href="../../../khoa-hoc/machine-learning-co-ban/tim-nghiem-cua-bai-toan-hoi-quy-tuyen-tinh-bang-toi-uu-tham-so" target="_blank" rel="noopener">b&agrave;i trước</a>&nbsp;hoặc c&aacute;c thuật to&aacute;n tối ưu gần đ&uacute;ng như gradient descent hay stochastic gradient descent. Trong thuật to&aacute;n K-Nearest Neighbors (K-H&agrave;ng x&oacute;m gần nhất), c&aacute;c điểm trong tập huấn luyện l&agrave; những điểm c&oacute; thể l&agrave; h&agrave;ng x&oacute;m của nhau (gần nhau) được học theo c&aacute;c phương ph&aacute;p tham lam. Trong thực tế, tập dữ liệu huấn luyện thường bao gồm c&aacute;c cặp vectơ đầu v&agrave;o v&agrave; vectơ đầu ra tương ứng, trong đ&oacute; vector đầu ra thường được gọi l&agrave; nh&atilde;n (label hoặc target). C&aacute;c thuật to&aacute;n n&oacute;i chung sẽ t&igrave;m c&aacute;ch tối ưu sai số dự đo&aacute;n tr&ecirc;n tập huấn luyện n&agrave;y đến mức đủ tốt. Trong trường hợp overfitting sai số dự đo&aacute;n của m&ocirc; h&igrave;nh tr&ecirc;n tập huấn luyện c&oacute; thể rất thấp, thậm ch&iacute; = 0%.</p> <h2 id="ftoc-heading-3" class="ftwp-heading" style="text-align: justify;">Testing Set (Tập kiểm thử)</h2> <p style="text-align: justify;">Nhưng điều n&agrave;y chưa đủ. Mục ti&ecirc;u của machine learning l&agrave; tạo ra những m&ocirc; h&igrave;nh c&oacute; khả năng tổng qu&aacute;t h&oacute;a để dự đo&aacute;n tốt tr&ecirc;n cả dữ liệu chưa thấy bao giờ (nằm ngo&agrave;i tập huấn luyện), do đ&oacute;, để biết một thuật to&aacute;n hay m&ocirc; h&igrave;nh c&oacute; tốt hay kh&ocirc;ng th&igrave; sau khi được huấn luyện, m&ocirc; h&igrave;nh cần được đ&aacute;nh gi&aacute; hiệu quả th&ocirc;ng qua bộ dữ liệu kiểm thử (testing set). Bộ dữ liệu n&agrave;y được sử dụng để t&iacute;nh độ ch&iacute;nh x&aacute;c hoặc sai số của m&ocirc; h&igrave;nh dự đo&aacute;n đ&atilde; được huấn luyện. Ch&uacute;ng ta biết nh&atilde;n thực của mọi điểm trong tập hợp dữ liệu kiểm thử n&agrave;y, nhưng ch&uacute;ng ta sẽ tạm thời giả vờ như kh&ocirc;ng biết v&agrave; đưa c&aacute;c gi&aacute; trị đầu v&agrave;o của tập v&agrave;o m&ocirc; h&igrave;nh dự đo&aacute;n để nhận kết quả dự đo&aacute;n đầu ra. Sau đ&oacute; ch&uacute;ng ta c&oacute; thể nh&igrave;n v&agrave;o c&aacute;c nh&atilde;n thực v&agrave; so s&aacute;nh n&oacute; với kết quả dự đo&aacute;n của c&aacute;c đầu v&agrave;o tương ứng n&agrave;y v&agrave; xem liệu m&ocirc; h&igrave;nh c&oacute; dự đo&aacute;n đ&uacute;ng hay kh&ocirc;ng. Việc t&iacute;nh tổng trung b&igrave;nh của to&agrave;n bộ c&aacute;c lỗi n&agrave;y ch&uacute;ng ta c&oacute; thể t&iacute;nh to&aacute;n được lỗi dự đo&aacute;n tr&ecirc;n tập kiểm thử.</p> <p style="text-align: justify;">C&aacute;c lỗi dự đo&aacute;n n&agrave;y được đ&aacute;nh gi&aacute; th&ocirc;ng qua rất nhiều chỉ số kh&aacute;c nhau như độ ch&iacute;nh x&aacute;c (precision), độ hồi tưởng (recall), F1-Score, RMSE, MAE,&hellip;C&aacute;c chỉ số n&agrave;y sẽ được tr&igrave;nh b&agrave;y chi tiết hơn trong b&agrave;i tiếp theo. Một lưu &yacute; l&agrave; c&aacute;c chỉ số đo mức độ hiệu quả của m&ocirc; h&igrave;nh n&agrave;y tr&ecirc;n tập kiểm thử c&oacute; thể kh&aacute;c với c&aacute;c lossfunction hay objective function sử dụng để tối ưu h&oacute;a m&ocirc; h&igrave;nh tr&ecirc;n tập huấn luyện. Nghĩa l&agrave; qu&aacute; tr&igrave;nh kiểm thử v&agrave; qu&aacute; tr&igrave;nh huấn luyện l&agrave; ho&agrave;n to&agrave;n độc lập với nhau, cả về bộ dữ liệu lẫn c&aacute;ch thức so s&aacute;nh chỉ số.</p> <p style="text-align: justify;">Tập dữ liệu kiểm thử tốt l&agrave; một tập dữ liệu độc lập với tập dữ liệu huấn luyện (để ngo&agrave;i v&agrave; kh&ocirc;ng được tham gia v&agrave;o qu&aacute; tr&igrave;nh huấn luyện), nhưng tu&acirc;n theo c&ugrave;ng một ph&acirc;n phối x&aacute;c suất như tập dữ liệu huấn luyện. Điều n&agrave;y gi&uacute;p cho việc đ&aacute;nh gi&aacute; kh&ocirc;ng bị thi&ecirc;n vị. Nếu một m&ocirc; h&igrave;nh ph&ugrave; hợp với trainining set nhưng lại sai kh&aacute;c tr&ecirc;n testing set, th&igrave; việc rất c&oacute; khả năng n&oacute; bị overfitting (xem h&igrave;nh b&ecirc;n dưới). Ngược lại, sai số kh&ocirc;ng qu&aacute; nhiều th&igrave; thường ch&uacute;ng l&agrave; một m&ocirc; h&igrave;nh ph&ugrave; hợp.</p> <p style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/629379a6-5b7d-4739-9fa5-92a7ed52b9c9" alt="Training-set-va-Testing-set-trong-truong-hop-Overfitting-1024x384" /></p> <p style="text-align: justify;">Với m&ocirc; h&igrave;nh&nbsp;m&agrave;u <span style="color: #2dc26b;">xanh l&aacute;</span>, lỗi dự đo&aacute;n tr&ecirc;n cả training set v&agrave; testing set l&agrave; kh&ocirc;ng ch&ecirc;nh lệch nhau qu&aacute; nhiều, ngược lại với m&ocirc; h&igrave;nh&nbsp;<span style="color: #e67e23;">m&agrave;u cam</span>, lỗi dự đo&aacute;n tr&ecirc;n testing set lớn hơn rất nhiều so với tr&ecirc;n training set. Do đ&oacute; m&ocirc; h&igrave;nh&nbsp;<span style="color: #e67e23;">m&agrave;u cam</span>&nbsp;nhiều khả năng bị overfitting hơn m&ocirc; h&igrave;nh&nbsp;<span style="color: #2dc26b;">m&agrave;u xanh</span>.</p> <p style="text-align: justify;"><strong>Hỏi: Bạn h&atilde;y giải th&iacute;ch xem tại sao lại c&oacute; điều n&agrave;y?</strong></p> <p style="text-align: justify;"><strong>Trả lời:</strong>&nbsp;C&acirc;u trả lời l&agrave;, sỡ dĩ c&oacute; điều n&agrave;y l&agrave; do c&aacute;c m&ocirc; h&igrave;nh overfitting c&oacute; c&aacute;c tham số c&oacute; variance kh&aacute; cao v&agrave; v&igrave; vậy chỉ những sai kh&aacute;c nhỏ tr&ecirc;n dữ liệu đầu v&agrave;o cũng c&oacute; thể tạo ra những sai kh&aacute;c lớn tr&ecirc;n gi&aacute; trị đầu ra, điều đ&oacute; dẫn đến sai số tr&ecirc;n tập testing sẽ cao hơn đột biến.</p> <h2 id="ftoc-heading-4" class="ftwp-heading" style="text-align: justify;">Validation Set (Tập kiểm chứng)</h2> <p style="text-align: justify;">Việc sử dụng testing set gi&uacute;p ch&uacute;ng ta đ&aacute;nh gi&aacute; được hiệu quả của m&ocirc; h&igrave;nh x&acirc;y dựng cuối c&ugrave;ng. Tuy nhi&ecirc;n, nếu kết quả đ&aacute;nh gi&aacute; tệ th&igrave; sao? R&otilde; r&agrave;ng ch&uacute;ng ta lại phải cố gắng điều chỉnh để đưa ra c&aacute;c m&ocirc; h&igrave;nh tốt hơn. Tức l&agrave; testing set đang c&oacute; vẻ ảnh hưởng đ&ocirc;i ch&uacute;t đến việc huấn luyện m&ocirc; h&igrave;nh. Điều n&agrave;y theo một mặt n&agrave;o đ&oacute; l&agrave; c&oacute; vẻ kh&ocirc;ng c&ocirc;ng bằng. Ch&uacute;ng ta đang cố gắng dự đo&aacute;n những điều chưa biết, chuẩn bị cho c&aacute;c t&iacute;nh huống xấu nhất cơ m&agrave;!!! Chứ kh&ocirc;ng phải l&agrave; đưa lại t&igrave;nh huống đ&atilde; xảy ra đ&atilde; biết để hiệu chỉnh lại m&ocirc; h&igrave;nh. Ch&iacute;nh v&igrave; l&iacute; do đ&oacute;, một tập dữ liệu kh&aacute;c sẽ được sử dụng để đ&oacute;ng vai tr&ograve; đưa ra c&aacute;c phản hồi nhằm hiệu chỉnh c&aacute;c m&ocirc; hinh sau qu&aacute; tr&igrave;nh huấn luyện. Tập dữ liệu n&agrave;y gọi l&agrave; tập dữ liệu kiểm chứng (validation set). Thực ra, đ&acirc;y mới n&ecirc;n dịch l&agrave; tập kiểm thử c&ograve;n testing set phải l&agrave; tập kiểm định. Anh chạy thử xe, thử thuốc c&aacute;c kiểu rồi th&igrave; mới được đưa ra cấp chứng nhận kiểm định (b&agrave;i test cuối c&ugrave;ng) trước khi đưa ra sử dụng. Tuy nhi&ecirc;n, c&aacute;c thuật ngữ đ&atilde; được đưa kh&aacute; nhiều trong c&aacute;c t&agrave;i liệu kh&aacute;c tiếng Việt, do đ&oacute;, ở đ&acirc;y ch&uacute;ng ta kh&ocirc;ng t&igrave;m c&aacute;ch sửa lại n&oacute; nữa. Ch&uacute;ng ta chỉ cần nắm được rằng, tập validation l&agrave; tập cho ph&eacute;p lựa chọn m&ocirc; h&igrave;nh huấn luyện cho ph&ugrave; hợp, c&ograve;n testing set l&agrave; tập đ&aacute;nh gi&aacute; lại m&ocirc; h&igrave;nh lần cuối c&ugrave;ng. Điều n&agrave;y, cũng giống như c&aacute;c bạn học tr&ecirc;n lớp, c&oacute; c&aacute;c b&agrave;i kiểm tra miệng, b&agrave;i tập, kiểm tra giữa kỳ để đ&aacute;nh gi&aacute; mức độ học của bạn, từ đ&oacute; biết m&igrave;nh yếu phần n&agrave;o, cần bổ sung phần n&agrave;o để chuẩn bị cho b&agrave;i thi cuối c&ugrave;ng vậy. V&agrave; cũng do đ&oacute;, n&ecirc;n c&aacute;c đoạn ph&iacute;a sau n&agrave;y, ch&uacute;ng ta sẽ tạm d&ugrave;ng từ tiếng anh (Validation set v&agrave; testing set) để giữ được nghĩa vốn c&oacute; n&agrave;y.</p> <p style="text-align: justify;">Tập dữ liệu kiểm chứng (validation set) cung cấp c&aacute;c đ&aacute;nh gi&aacute; c&ocirc;ng bằng về sự ph&ugrave; hợp của m&ocirc; h&igrave;nh tr&ecirc;n tập dữ liệu huấn luyện trong qu&aacute; tr&igrave;nh huấn luyện. Validation set c&oacute; chức năng như một sự kết hợp: n&oacute; vừa l&agrave; dữ liệu huấn luyện được sử dụng để thử nghiệm, nhưng kh&ocirc;ng phải l&agrave; một phần của qu&aacute; tr&igrave;nh huấn luyện cấp thấp cũng kh&ocirc;ng phải l&agrave; một phần của thử nghiệm cuối c&ugrave;ng. N&oacute; l&agrave; một bước chung gian cho ph&eacute;p lựa chọn m&ocirc; h&igrave;nh ph&ugrave; hợp.</p> <p style="text-align: justify;">Validation set c&oacute; t&aacute;c dụng gi&uacute;p t&igrave;m kiếm m&ocirc; h&igrave;nh tốt nhất trong c&aacute;c ứng vi&ecirc;n được huấn luyện từ training set. N&oacute; được sử dụng để so s&aacute;nh hiệu suất của c&aacute;c m&ocirc; h&igrave;nh ứng vi&ecirc;n n&agrave;y v&agrave; quyết định c&aacute;i n&agrave;o sẽ l&agrave; m&ocirc; h&igrave;nh tốt nhất cuối c&ugrave;ng bằng c&aacute;ch so s&aacute;nh c&aacute;c độ đo hiệu suất như độ ch&iacute;nh x&aacute;c, độ nhạy cảm, độ hồi tưởng, RMSE, MSE,&hellip; đạt được tr&ecirc;n n&oacute;. N&oacute; gi&uacute;p cho qu&aacute; tr&igrave;nh&nbsp;điều chỉnh c&aacute;c si&ecirc;u tham số của m&ocirc; h&igrave;nh&nbsp;chẳng hạn số lượng đơn vị ẩn (lớp v&agrave; chiều rộng lớp) trong mạng nơron để đạt được m&ocirc; h&igrave;nh ph&ugrave; hợp.</p> <p style="text-align: justify;">Validation set cũng gi&uacute;p ph&aacute;t hiện v&agrave; dừng sớm (early stopping) qu&aacute; tr&igrave;nh huấn luyện m&ocirc; h&igrave;nh khi lỗi tr&ecirc;n validation set tăng l&ecirc;n đột biến, v&igrave; đ&acirc;y l&agrave; dấu hiệu của m&ocirc; h&igrave;nh overfitting. Kỹ thuật early stopping l&agrave; một kỹ thuật được sử dụng kh&aacute; phổ biến để tr&aacute;nh việc overfitting. Mặc d&ugrave; nh&igrave;n c&oacute; vẻ kh&aacute; đơn giản, nhưng việc thực hiện n&oacute; tr&ecirc;n thực tế lại kh&aacute; phức tạp. Sỡ dĩ như vậy l&agrave; do lỗi dự đo&aacute;n tr&ecirc;n validation set c&oacute; thể dao động trong qu&aacute; tr&igrave;nh huấn luyện, tạo ra nhiều cực tiểu địa phương. Sự phức tạp n&agrave;y đ&atilde; dẫn đến việc c&oacute; rất nhiều c&aacute;c quy tắc đặc biệt được x&acirc;y dựng v&agrave; đề xuất để x&aacute;c định ch&iacute;nh x&aacute;c thời điểm overfitting thực sự bắt đầu dựa tr&ecirc;n lỗi dự đo&aacute;n tr&ecirc;n tập validation set.</p> <p style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/de3dc175-96fb-4472-87cf-a746f55153f1" alt="Validation-set-Tap-kiem-chung" /></p> <p style="text-align: justify;">Như tr&ecirc;n h&igrave;nh vẽ tr&ecirc;n, ta thấy ch&uacute;ng ta c&oacute; thể dừng việc huấn luyện tại vị tr&iacute; c&oacute; sự thay đổi r&otilde; rệt sai số trong tập validation set. Đ&acirc;y l&agrave; thời điểm xảy ra overfitting.</p> <p style="text-align: justify;">N&oacute;i t&oacute;m lại: training set l&agrave; tập sử dụng để huấn luyện m&ocirc; h&igrave;nh, validation set l&agrave; tập sử dụng để lựa chọn m&ocirc; h&igrave;nh ph&ugrave; hợp trong số c&aacute;c ứng vi&ecirc;n được huấn luyện tr&ecirc;n training set v&agrave; testing set l&agrave; tập để kiểm thử đ&aacute;nh gi&aacute; kết quả thu được của m&ocirc; h&igrave;nh dự đo&aacute;n. Tập validation c&oacute; thể nằm trong ch&iacute;nh tập training, nhưng tập testing set phải độc lập v&agrave; t&aacute;ch biệt ho&agrave;n to&agrave;n với hai tập tr&ecirc;n, bởi n&oacute; thể hiện việc m&ocirc; h&igrave;nh sẽ c&oacute; kỳ vọng dự đo&aacute;n tốt thế n&agrave;o tr&ecirc;n dữ liệu &ldquo;thực tế&rdquo;.</p> <p style="text-align: justify;">Tr&ecirc;n thực tế nhiều trường hợp, ch&uacute;ng ta chỉ thường sử dụng hai tập l&agrave; training set v&agrave; testing set. Validation set chỉ sử dụng trong trường hợp cần lựa chọn m&ocirc; h&igrave;nh hoặc si&ecirc;u tham số, hoặc khi cần &aacute;p dụng c&aacute;c kỹ thuật early stopping. Trong trường hợp kh&ocirc;ng cần c&aacute;c kỹ thuật n&agrave;y ta sẽ kh&ocirc;ng cần sử dụng validation set. V&agrave; nếu c&oacute; sử dụng cũng chỉ để l&agrave; một chỉ b&aacute;o đ&aacute;nh gi&aacute;.</p> <p style="text-align: justify;"><strong>C&acirc;u hỏi:</strong>&nbsp;Tại sao kh&ocirc;ng d&ugrave;ng tất cả dữ liệu để huấn luyện m&ocirc; h&igrave;nh rồi kiểm thử tr&ecirc;n đ&oacute; lu&ocirc;n?</p> <p style="text-align: justify;"><strong>Trả lời:</strong>&nbsp;Trong machine learning, c&oacute; một nguy&ecirc;n tắc v&ocirc; c&ugrave;ng, v&ocirc; c&ugrave;ng quan trọng cần nhớ đ&oacute; l&agrave;: &ldquo;qu&aacute; tr&igrave;nh huấn luyện v&agrave; đ&aacute;nh gi&aacute; ho&agrave;n to&agrave;n độc lập với nhau! Dữ liệu được d&ugrave;ng để kiểm thử m&ocirc; h&igrave;nh phải kh&ocirc;ng được m&ocirc; nh&igrave;n thấy l&uacute;c huấn luyện.&rdquo;. Điều n&agrave;y bảo chứng sự c&ocirc;ng bằng cho qu&aacute; tr&igrave;nh đ&aacute;nh gi&aacute;. Bởi&nbsp; mục ti&ecirc;u của machine learning l&agrave; ch&uacute;ng ta muốn x&acirc;y dựng một m&ocirc; h&igrave;nh tổng qu&aacute;t h&oacute;a c&oacute; thể dự đo&aacute;n được c&aacute;c dữ liệu chưa được thấy bao giờ, nếu lại cho m&ocirc; h&igrave;nh thấy dữ liệu n&agrave;y l&uacute;c học chẳng kh&aacute;c n&agrave;o l&agrave;m lộ đề trước khi thi cả. Việc lộ đề n&agrave;y dẫn đến hậu quả l&agrave; m&ocirc; h&igrave;nh c&oacute; thể sẽ chăm chăm học v&agrave;o đề thi n&agrave;y, dẫn đến học tủ, học vẹt v&agrave; &ldquo;overfitting&rdquo;. L&uacute;c kiểm tra tốt thật nhưng khi l&agrave;m việc thực tế th&igrave; &ocirc;i th&ocirc;i!!!! V&igrave; thế, việc chia dữ liệu ra th&agrave;nh training set v&agrave; test set l&agrave; bắt buộc, v&agrave; phải thực hiện trước khi huấn luyện.</p> <hr /> <p style="text-align: center;"><em><strong>Fanpage Facebook:</strong>&nbsp;<a href="https://www.facebook.com/tek4.vn/">TEK4.VN</a></em>&nbsp;</p> <p style="text-align: center;"><em><strong>Tham gia cộng đồng để chia sẻ, trao đổi v&agrave; thảo luận:</strong>&nbsp;<a href="https://www.facebook.com/groups/tek4.vn/">TEK4.VN - Học Lập Tr&igrave;nh Miễn Ph&iacute;</a></em></p>