Tôi đã sao chép kết quả của bạn bằng cách sử dụng Keras và nhận được những con số rất giống nhau vì vậy tôi không nghĩ bạn đang làm gì sai.
Vì thích thú, tôi chạy thêm nhiều kỷ nguyên để xem điều gì sẽ xảy ra. Độ chính xác của kết quả kiểm tra và đào tạo vẫn khá ổn định. Tuy nhiên, các giá trị tổn thất trôi xa hơn theo thời gian. Sau 10 kỷ nguyên hoặc lâu hơn, tôi đã đạt được độ chính xác 100%, độ chính xác kiểm tra 94,3% - với các giá trị tổn thất tương ứng khoảng 0,01 và 0,22. Sau 20.000 kỷ nguyên, độ chính xác hầu như không thay đổi, nhưng tôi đã mất huấn luyện 0,000005 và mất kiểm tra 0,36. Các khoản lỗ vẫn còn phân kỳ, mặc dù rất chậm. Theo tôi, mạng rõ ràng là quá phù hợp.
Vì vậy, câu hỏi có thể được đặt lại: Tại sao, mặc dù phù hợp quá mức, một mạng lưới thần kinh được đào tạo cho bộ dữ liệu MNIST vẫn khái quát rõ ràng khá hợp lý về mặt chính xác?
Thật đáng để so sánh độ chính xác 94,3% này với những gì có thể sử dụng các phương pháp ngây thơ hơn.
Ví dụ, hồi quy softmax tuyến tính đơn giản (về cơ bản là cùng một mạng thần kinh không có các lớp ẩn), cho độ chính xác ổn định nhanh của tàu 95,1% và kiểm tra 90,7%. Điều này cho thấy rất nhiều dữ liệu phân tách tuyến tính - bạn có thể vẽ siêu phẳng theo 784 kích thước và 90% hình ảnh chữ số sẽ nằm trong "hộp" chính xác mà không cần tinh chỉnh thêm. Từ điều này, bạn có thể mong đợi một giải pháp phi tuyến tính quá mức sẽ nhận được kết quả tồi tệ hơn 90%, nhưng có thể không tệ hơn 80% vì hình thành một ranh giới quá phức tạp xung quanh, ví dụ như "5" được tìm thấy trong hộp cho "3" sẽ chỉ gán không chính xác một lượng nhỏ 3 đa tạp ngây thơ này. Nhưng chúng tôi tốt hơn so với dự đoán ràng buộc thấp hơn 80% này từ mô hình tuyến tính.
Một mô hình ngây thơ khác có thể là khớp mẫu, hoặc hàng xóm gần nhất. Đây là một sự tương tự hợp lý với những gì mà sự phù hợp quá mức đang làm - nó tạo ra một khu vực địa phương gần với mỗi ví dụ đào tạo nơi nó sẽ dự đoán cùng một lớp. Các vấn đề với sự phù hợp quá mức xảy ra trong không gian ở giữa nơi các giá trị kích hoạt sẽ tuân theo bất cứ điều gì mạng "tự nhiên" làm. Lưu ý trường hợp xấu nhất, và những gì bạn thường thấy trong các sơ đồ giải thích, sẽ là một bề mặt gần như hỗn loạn rất cong đi qua các phân loại khác. Nhưng trên thực tế, mạng nơ ron có thể nội suy trơn tru hơn giữa các điểm - điều thực sự phụ thuộc vào bản chất của các đường cong bậc cao mà mạng kết hợp thành xấp xỉ và mức độ phù hợp với dữ liệu.
Tôi đã mượn mã cho một giải pháp KNN từ blog này trên MNIST với K Hàng xóm gần nhất . Sử dụng k = 1 - tức là chọn nhãn gần nhất trong số 6000 ví dụ đào tạo chỉ bằng cách khớp các giá trị pixel, cho độ chính xác 91%. Thêm 3% mà mạng nơ ron được đào tạo quá mức đạt được dường như không quá ấn tượng vì tính đơn giản của phép so khớp pixel mà KNN với k = 1 đang thực hiện.
Tôi đã thử một vài biến thể của kiến trúc mạng, các chức năng kích hoạt khác nhau, số lượng và kích cỡ của các lớp khác nhau - không có sử dụng chính quy. Tuy nhiên, với 6000 ví dụ đào tạo, tôi không thể khiến bất kỳ ai trong số họ vượt qua mức độ chính xác của bài kiểm tra. Thậm chí giảm xuống chỉ còn 600 ví dụ đào tạo chỉ làm cho cao nguyên thấp hơn, với độ chính xác ~ 86%.
Kết luận cơ bản của tôi là các ví dụ của MNIST có sự chuyển tiếp tương đối trơn tru giữa các lớp trong không gian đặc trưng và các mạng thần kinh có thể phù hợp với các lớp này và nội suy giữa các lớp theo cách "tự nhiên" được đưa ra cho các khối xây dựng NN để xấp xỉ hàm - mà không cần thêm các thành phần tần số cao vào sự gần đúng có thể gây ra vấn đề trong một kịch bản overfit.
Đây có thể là một thử nghiệm thú vị để thử với bộ "MNIST ồn ào" trong đó một lượng nhiễu hoặc méo ngẫu nhiên được thêm vào cả ví dụ đào tạo và kiểm tra. Các mô hình chính quy sẽ được mong đợi sẽ hoạt động tốt trên tập dữ liệu này, nhưng có lẽ trong kịch bản đó, việc khớp quá mức sẽ gây ra nhiều vấn đề rõ ràng hơn với độ chính xác.
Đây là từ trước khi cập nhật với các thử nghiệm thêm của OP.
Từ ý kiến của bạn, bạn nói rằng tất cả các kết quả kiểm tra của bạn được thực hiện sau khi chạy một kỷ nguyên duy nhất. Về cơ bản, bạn đã sử dụng dừng sớm, mặc dù viết rằng bạn không có, bởi vì bạn đã dừng việc đào tạo ở điểm sớm nhất có thể với dữ liệu đào tạo của bạn.
Tôi sẽ đề nghị chạy thêm nhiều kỷ nguyên nếu bạn muốn xem mạng thực sự hội tụ như thế nào. Bắt đầu với 10 epoch, xem xét tăng lên 100. Một epoch không nhiều cho vấn đề này, đặc biệt là trên 6000 mẫu.
Mặc dù số lần lặp tăng lên không được đảm bảo để làm cho mạng của bạn hoạt động quá mức kém hơn so với trước đây, nhưng bạn thực sự chưa có cơ hội và kết quả thử nghiệm của bạn cho đến nay vẫn chưa có kết luận.
Trong thực tế, tôi sẽ hy vọng một nửa kết quả dữ liệu thử nghiệm của bạn sẽ được cải thiện sau kỷ nguyên thứ 2, thứ 3, trước khi bắt đầu giảm khỏi các số liệu đào tạo khi số lượng kỷ nguyên tăng lên. Tôi cũng hy vọng lỗi đào tạo của bạn sẽ đạt 0% khi mạng tiếp cận hội tụ.