Dừng sớm so với xác nhận chéo


8

Tôi hiện đang sử dụng dừng sớm trong công việc của mình để ngăn chặn sự phù hợp. Cụ thể những hình thức được dừng lại sớm nhưng khi nào? .

Bây giờ tôi muốn so sánh với các thuật toán phân loại khác trong đó có vẻ như xác thực chéo 10 lần được sử dụng rộng rãi.

Tuy nhiên, tôi bối rối về việc xác nhận chéo có phải là phương pháp để ngăn chặn quá mức phù hợp hoặc chọn tham số tốt hay không. (hoặc có thể đây là một và giống nhau?). Tôi cũng bối rối liệu các phương pháp dừng sớm và xác nhận chéo có thể được sử dụng thay thế cho nhau hoặc kết hợp.

Vì vậy, câu hỏi là: mối quan hệ giữa dừng sớm và xác nhận chéo là gì?

Câu trả lời:


4

Xác thực chéo là một phương pháp để ước tính độ chính xác tổng quát của thuật toán học có giám sát.

Dừng sớm là một phương pháp để tránh quá mức và đòi hỏi một phương pháp để đánh giá mối quan hệ giữa độ chính xác tổng quát của mô hình đã học và độ chính xác đào tạo.

Vì vậy, bạn có thể sử dụng xác thực chéo để thay thế bộ xác thực, được đề cập trong bài báo mà bạn trích dẫn, trong khuôn khổ dừng sớm. Ví dụ, xác thực chéo mười lần sẽ chính xác hơn so với sử dụng một bộ xác thực duy nhất và thông thường sẽ là ước tính tốt hơn về lỗi tổng quát hóa.

Vì vậy, để tóm tắt, xác nhận chéo là một thước đo độ chính xác tổng quát có thể được sử dụng như một phần của khung dừng sớm.


1
Đó là tất cả có ý nghĩa, chúc mừng. Nhưng hình thức những gì tôi có thể nói 10 tìm thấy xác thực chéo dường như được sử dụng để chọn các tham số cho một phương thức nhất định, không dừng lại sớm khi sử dụng phương thức đó. Vì vậy, tôi nghĩ rằng tôi vẫn phải thiếu một cái gì đó.
Andy T

@AndyT Có lẽ điều cần tập trung ở đây là ước tính khái quát. Cả hai lựa chọn tham số và dừng sớm đều yêu cầu một công cụ ước tính tốt về lỗi tổng quát hóa. Xác nhận chéo N là một ước tính như vậy. Có những thứ khác, chẳng hạn như lặp đi lặp lại và bootstrapping, hoặc một bộ xác nhận đơn giản. Những gì bạn đang cố gắng thực hiện trong cả hai trường hợp, lựa chọn tham số và dừng sớm là đánh giá cách mô hình sẽ thực hiện trên dữ liệu không nhìn thấy để bạn có thể chọn một mô hình tốt. Để làm điều này, trong cả hai trường hợp, bạn sử dụng một công cụ ước tính tổng quát. Cái đó có giúp ích không ?
image_doctor

Vâng, điều đó rõ ràng. Cảm ơn vi đa danh thơi gian cho tôi! Nó được nhiều đánh giá cao.
Andy T

@AndyT Không có rắc rối, tôi hy vọng dự án của bạn diễn ra tốt đẹp!
image_doctor

1

Ngoài hai cách tiếp cận khái quát mà bạn đề cập, còn có nhiều cách khác.

  • thêm các thuật ngữ chính quy trong hàm mất (chi phí) để giảm thiểu số lượng và cường độ của các tham số mô hình khác không
  • giảm ngẫu nhiên (bỏ ra) một phần trọng lượng / tham số trong mô hình của bạn với mỗi kỷ nguyên đào tạo
  • thêm một lớp các nút ngẫu nhiên trong mô hình của bạn (ví dụ: lấy mẫu từ "xác suất" được đưa ra bởi các đầu ra của các hàm logistic)

Nhiều cách tiếp cận này (bao gồm các cách tiếp cận xác thực chéo và dừng sớm của bạn) có thể được kết hợp với nhau để tối đa hóa hiệu suất mô hình trên dữ liệu chưa xem (hiệu suất tổng quát).

Một lưu ý về cách tiếp cận sớm. Đối với mạng lưới thần kinh, Geoffrey Hinton khuyên nên ngừng đào tạo khi độ chính xác của bộ kiểm tra đạt đến mức tối đa (mất bộ kiểm tra, ngoại trừ các điều khoản chính quy, ở mức tối thiểu). Một "điều chỉnh" bổ sung cho cách tiếp cận của Hinton là không dừng lại nếu độ chính xác của test_set tốt hơn (độ mất nhỏ hơn) so với tập huấn luyện của bạn, ngay cả khi độ chính xác của bộ kiểm tra đã ngừng cải thiện (mất bộ kiểm tra đã ngừng giảm). Điều này không có khả năng giúp bạn đạt được nhiều hơn một kỷ nguyên đào tạo, nhưng đôi khi điều đó có thể giúp ích một chút, đặc biệt là đối với các test_sets nhỏ. Đừng làm điều này đối với các bộ kiểm tra cực kỳ nhỏ (nhỏ hơn một bộ mẫu đại diện, giống như đôi khi được sử dụng trong đào tạo và xác thực chéo K-Folds).


0

bạn không thể sử dụng dừng sớm và xác thực chéo K-kết hợp. bởi vì dừng sớm chọn mô hình tốt nhất từ ​​bộ xác thực, hiệu suất cần được xác minh bằng bộ kiểm tra. nhưng trong xác thực chéo K-Fold, không có bộ kiểm tra, nếu bạn sử dụng dừng sớm để chọn mô hình tốt nhất từ ​​bộ xác thực và nó sẽ được xác minh lại trong bộ xác thực. xác thực chéo K-gấp đang nhận được hiệu suất trung bình (được đo bằng độ chính xác) của mô hình tốt nhất và điều đó là vô nghĩa.


Số lần lặp đào tạo có thể được coi là một siêu tham số và được chọn bằng cách sử dụng xác thực chéo, giống như bất kỳ siêu tham số nào khác. Một cách hợp lý có thể gọi đây là "dừng sớm".
user20160

khi sử dụng dừng sớm trong xác thực chéo K, số lượng epoch được cố định bằng bộ xác thực và khác nhau cho mỗi lần phân tách. Điều này sẽ làm cho mạng chọn mô hình tốt nhất trong mỗi lần phân tách, không phù hợp với hiệu suất trung bình.
tianyu zhou

2
Cách thực hiện sẽ là 1) Huấn luyện cho một số lần lặp trên mỗi lần (ví dụ: tối đa cho một mức tối đa nhất định). 2) Tính toán lỗi xác thực trung bình (trên các nếp gấp) là một hàm của số lần lặp. 3) Chọn số lần lặp để giảm thiểu lỗi thiết lập xác thực trung bình.
user20160

Đây là giải pháp của tôi: 1. xáo trộn tất cả dữ liệu, 2. thực hiện 10 lần bằng sklearn, kprint = StratifiedKFold (n_splits = 10, shuffle = false) 3, đặt gọi lại: callbacks_list = [EarlyStopping (Monitor = 'val_loss', patience = 50, verbose = 0, mode = 'min')] 4. chọn mô hình tốt nhất bằng cách dừng sớm. history = model.fit (X [train], Y [train], epochs = 250, batch_size = 512, verbose = 1, callbacks = callbacks_list, verify_split = 0.1, shuffle = false) đặt một xác thực phân tách tự động khác từ X [train ], Y [tàu]. 5. kiểm tra hiệu suất bằng X [test] vàY [test]: điểm = model.evalu (X [test], Y [test], verbose = 0)
tianyu zhou
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.