Tại sao sử dụng cả bộ xác nhận và bộ kiểm tra?


17

Hãy xem xét một mạng lưới thần kinh:

Đối với một tập hợp dữ liệu nhất định, chúng tôi chia nó thành tập huấn luyện, xác nhận và kiểm tra. Giả sử chúng ta làm điều đó theo tỷ lệ 60:20:20 cổ điển, sau đó chúng ta ngăn chặn quá mức bằng cách xác nhận mạng bằng cách kiểm tra nó trên bộ xác thực. Sau đó, cần phải kiểm tra nó trên bộ kiểm tra để kiểm tra hiệu suất của nó là gì?

Không phải lỗi trên bộ kiểm tra có phần giống với bộ xác thực như đối với mạng, đó là dữ liệu không nhìn thấy giống như bộ xác thực và cả hai đều có cùng số?

Thay vào đó, chúng ta không thể tăng tập huấn luyện bằng cách hợp nhất tập kiểm thử với nó để chúng ta có nhiều dữ liệu huấn luyện hơn và mạng đào tạo tốt hơn và sau đó sử dụng tập xác thực để ngăn chặn quá mức? Tại sao chúng ta không làm điều này?


4
Bạn muốn nó giống nhau nhưng bạn không thể chắc chắn vì bạn đã chạm vào nó để tối ưu hóa siêu tham số và dừng sớm, vì vậy bạn cần một bộ thử nghiệm mới.
Emre

@Emre Nhưng các trọng số sẽ được điều chỉnh dựa trên tập huấn luyện chứ không dựa trên tập xác thực, do đó, kết quả trong bài kiểm tra và xác thực không nên khác nhau.
dùng1825567

Không, họ không (được điều chỉnh theo tập huấn luyện). Đó là thông số thường xuyên.
Emre

Câu trả lời:


22

Giả sử rằng bạn đang đào tạo một mô hình có hiệu suất phụ thuộc vào một bộ siêu đường kính. Trong trường hợp mạng thần kinh, các tham số này có thể là ví dụ về tốc độ học tập hoặc số lần lặp đào tạo.

Đưa ra lựa chọn các giá trị siêu tham số, bạn sử dụng tập huấn luyện để huấn luyện mô hình. Nhưng, làm thế nào để bạn thiết lập các giá trị cho siêu đường kính? Đó là những gì bộ xác nhận dành cho. Bạn có thể sử dụng nó để đánh giá hiệu suất của mô hình của mình cho các kết hợp khác nhau của các giá trị siêu tham số (ví dụ: bằng phương pháp tìm kiếm lưới) và giữ cho mô hình được đào tạo tốt nhất.

Nhưng, mô hình được chọn của bạn so với các mô hình khác nhau như thế nào? Mạng lưới thần kinh của bạn có hoạt động tốt hơn không, giả sử, một khu rừng ngẫu nhiên được đào tạo với cùng một dữ liệu huấn luyện / kiểm tra? Bạn không thể so sánh dựa trên bộ xác thực, bởi vì bộ xác thực đó là một phần của sự phù hợp với mô hình của bạn. Bạn đã sử dụng nó để chọn các giá trị siêu tham số!

Bộ kiểm tra cho phép bạn so sánh các mô hình khác nhau theo cách không thiên vị, bằng cách dựa vào các so sánh của bạn trong dữ liệu không được sử dụng trong bất kỳ phần nào trong quá trình lựa chọn đào tạo / siêu tham số của bạn.


11

Bộ kiểm tra và xác thực chéo có các mục đích khác nhau. Nếu bạn bỏ một trong hai, bạn sẽ mất lợi ích của nó:

  • Bộ xác thực chéo được sử dụng để giúp phát hiện sự phù hợp quá mức và để hỗ trợ tìm kiếm siêu tham số.

  • Bộ kiểm tra được sử dụng để đo hiệu suất của mô hình.

Bạn không thể sử dụng bộ xác thực chéo để đo chính xác hiệu suất của mô hình của mình, vì bạn sẽ cố tình điều chỉnh kết quả của mình để có được số liệu tốt nhất có thể, qua hàng trăm biến thể của các tham số. Do đó, kết quả xác nhận chéo có thể quá lạc quan.

Vì lý do tương tự, bạn không thể bỏ tập xác thực chéo và sử dụng bộ kiểm tra để chọn siêu tham số, bởi vì sau đó bạn được đảm bảo khá nhiều để đánh giá quá cao mô hình của bạn tốt như thế nào. Trong thế giới lý tưởng, bạn sử dụng bộ thử nghiệm chỉ một lần hoặc sử dụng nó theo kiểu "trung tính" để so sánh các thử nghiệm khác nhau.

Nếu bạn xác thực chéo, tìm mô hình tốt nhất, sau đó thêm vào dữ liệu thử nghiệm để đào tạo, có thể (và trong một số trường hợp có thể rất có thể) mô hình của bạn sẽ được cải thiện. Tuy nhiên, bạn không có cách nào để chắc chắn liệu điều đó có thực sự xảy ra hay không, và ngay cả khi nó có, bạn không có bất kỳ ước tính khách quan nào về hiệu suất mới là gì.

Từ việc chứng kiến ​​nhiều cuộc thi Kaggle, kinh nghiệm của tôi là điều chỉnh bài kiểm tra bằng cách sử dụng quá mức nó là một điều có thật, và nó tác động đến những cuộc thi đó theo một cách rộng lớn. Thường có một nhóm các đối thủ cạnh tranh đã leo lên bảng xếp hạng công khai và chọn mô hình tốt nhất của họ trong thử nghiệm (bảng xếp hạng công khai thực sự là một bộ thử nghiệm), trong khi không quá kỹ lưỡng về xác nhận chéo của họ. . . những đối thủ này rơi xuống bảng xếp hạng khi một bộ thử nghiệm mới được giới thiệu ở cuối.

Một cách tiếp cận hợp lý là sử dụng lại dữ liệu (train + cv) để đào tạo lại bằng cách sử dụng siêu thông số bạn đã tìm thấy trước khi thử nghiệm. Bằng cách đó, bạn có thể đào tạo được nhiều dữ liệu hơn và cuối cùng bạn vẫn có được một thước đo độc lập về hiệu suất.

Nếu bạn muốn nhận được nhiều hơn từ xác thực chéo, cách tiếp cận thông thường là xác thực chéo k-Fold . Một mẹo phổ biến trong các cuộc thi Kaggle là sử dụng xác thực chéo k-gấp và thay vì kết hợp lại dữ liệu thành một tập huấn luyện (tàu + cv) lớn hơn, để tập hợp hoặc xếp kết quả cv thành mô hình meta.

Cuối cùng, luôn kiểm tra xem các phần tách của bạn để xác thực và kiểm tra có mạnh mẽ đối với mối tương quan có thể có trong tập dữ liệu của bạn không.


1
ý bạn là gì khi "mạnh mẽ chống lại mối tương quan có thể có trong tập dữ liệu của bạn"?
dùng6903745
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.