Có phải luôn luôn tốt hơn để sử dụng toàn bộ dữ liệu để đào tạo mô hình cuối cùng?


24

Một kỹ thuật phổ biến sau khi đào tạo, xác nhận và thử nghiệm mô hình ưu tiên của Machine Learning là sử dụng bộ dữ liệu hoàn chỉnh, bao gồm tập hợp thử nghiệm, để đào tạo một mô hình cuối cùng để triển khai nó, ví dụ như một sản phẩm.

Câu hỏi của tôi là: Có phải luôn luôn là tốt nhất để làm như vậy? Điều gì nếu hiệu suất thực sự suy giảm?

Ví dụ: chúng ta giả sử trường hợp mô hình đạt khoảng 65% trong việc phân loại tập hợp con thử nghiệm. Điều này có thể có nghĩa là mô hình được đào tạo không đủ HOẶC tập hợp con thử nghiệm bao gồm các ngoại lệ. Trong trường hợp sau, việc huấn luyện mô hình cuối cùng với chúng sẽ làm giảm hiệu suất của nó và bạn chỉ tìm ra sau khi triển khai nó.

Đặt lại câu hỏi ban đầu của tôi:

Nếu bạn đã trình diễn mô hình một lần , chẳng hạn như triển khai nó trên thiết bị điện tử nhúng trên tàu, một thử nghiệm tên lửa đắt tiền, bạn có tin tưởng một mô hình đã được đào tạo lại với tập hợp con thử nghiệm trong bước cuối cùng mà không được thử lại thử nghiệm về hiệu suất mới của nó?

Câu trả lời:


14

Một khi bạn đã thu được các siêu âm tối ưu cho mô hình của mình, sau khi đào tạo và xác nhận chéo, v.v., về lý thuyết, có thể huấn luyện mô hình trên toàn bộ tập dữ liệu để triển khai vào sản xuất. Điều này, về lý thuyết, sẽ khái quát tốt hơn.

TUY NHIÊN, bạn không còn có thể đưa ra yêu cầu thống kê / hiệu suất trên dữ liệu thử nghiệm do bạn không còn có bộ dữ liệu thử nghiệm nữa.

Nếu bạn triển khai một mô hình để sản xuất bằng toàn bộ tập dữ liệu huấn luyện và bạn biết giá trị thực của biến mục tiêu của dữ liệu mới đến (tức là dữ liệu mà mô hình sản xuất đang dự đoán), thì bạn có thể tính các số liệu hiệu suất thời gian thực như dữ liệu mới này giống như dữ liệu thử nghiệm (nó chưa được thấy trong mô hình trong quá trình đào tạo). Từ quá trình này, bạn có thể cập nhật các siêu đường kính mô hình để đạt được hiệu suất tốt hơn.

Nhưng nếu bạn biết các giá trị đích của dữ liệu mới, tại sao bạn lại đào tạo một mô hình ở nơi đầu tiên?

Nói chung, tôi sẽ nói nếu bạn có đủ dữ liệu với đủ loại, sau đó xáo trộn và phân tách dữ liệu đào tạo 80:20: kiểm tra phải đủ để đào tạo một mô hình mạnh mẽ và không phải lo lắng về các vấn đề khái quát hóa (tất nhiên giả sử bạn thường xuyên mô hình).


+ 1'd, cảm ơn vì câu trả lời! có vẻ như ngẫu nhiên xáo trộn bộ dữ liệu trước khi chia thành 80/20 có lẽ khiến chúng tôi cảm thấy tự tin "thống kê" (:
pcko1

2
Hiệu suất trên bộ kiểm tra tổ chức của bạn được cho là tổng quát cho toàn bộ dân chúng, miễn là bạn đã thực hiện đúng. Mặc dù bạn không có bộ kiểm tra sau khi áp dụng phương pháp của mình cho toàn bộ tập dữ liệu, hiệu suất trên các bộ kiểm tra / đào tạo được xác thực chéo ban đầu của bạn là một công cụ ước tính không thiên vị về hiệu suất của thuật toán đào tạo của bạn. Đó là toàn bộ quan điểm của CV - không phải để đào tạo hoặc tham số hóa một mô hình, mà là để ước tính hiệu suất của quá trình xây dựng mô hình. Hiệu suất của bạn trên bất kỳ bộ kiểm tra nào trước khi lập mô hình dữ liệu đầy đủ ước tính hiệu suất của bạn trên toàn bộ dữ liệu.
Hạt nhân Wang

13

Câu hỏi thú vị. Cá nhân tôi đã không thấy rằng đối với các sản phẩm đi vào sản xuất, nhưng hiểu logic.

Về mặt lý thuyết, mô hình triển khai của bạn đã nhìn thấy càng nhiều dữ liệu, thì càng tốt để khái quát hóa. Vì vậy, nếu bạn đã đào tạo mô hình trên bộ dữ liệu đầy đủ mà bạn có sẵn, thì nó nên khái quát hóa tốt hơn mô hình chỉ nhìn thấy ví dụ về bộ tàu / val (ví dụ ~ 90%) từ bộ dữ liệu đầy đủ.

Vấn đề với điều này (và lý do chúng tôi chia dữ liệu thành tập hợp thử nghiệm / val / thử nghiệm ngay từ đầu!) Là chúng tôi muốn có thể đưa ra yêu cầu thống kê về độ chính xác của dữ liệu chưa xem. Ngay sau khi chúng tôi đào tạo lại một mô hình một lần nữa trên tất cả các dữ liệu, không còn có thể đưa ra các yêu cầu như vậy nữa.

[Chỉnh sửa]

Dưới đây là một câu hỏi liên quan về Xác thực chéo , trong đó câu trả lời được chấp nhận đưa ra những điểm tương tự với tôi và đề cập đến các cách làm việc khác.


Chúng tôi lặp lại:

  1. đào tạo người mẫu
  2. đánh giá hiệu suất trên bộ xác thực nếu đạt yêu cầu, chuyển sang bước 5
  3. thay đổi mô hình
  4. sang bước 1
  5. đánh giá hiệu suất trên bộ kiểm tra
  6. Mô hình hiện tại với độ chính xác kiểm tra được tìm thấy trong bước 5

Cuối cùng, nếu bạn quản lý để có được một số điểm tuyệt vời trong bộ bài kiểm tra, bạn có thể khẳng định nó tổng quát tốt. Vì vậy, câu hỏi liệu đào tạo lại trên bộ dữ liệu đầy đủ sẽ cải thiện hiệu suất trên dữ liệu chưa xem trong tương lai không hoàn toàn là điều bạn có thể kiểm tra. Bằng chứng thực nghiệm về hiệu suất tốt hơn trong các bộ vấn đề liên quan khác sẽ là nguồn hoặc hướng dẫn duy nhất tại thời điểm bạn phải đưa ra quyết định.

Kiểm tra độ tỉnh táo sẽ là kiểm tra lại mô hình được đào tạo lại lần cuối trên bộ thử nghiệm ban đầu; hy vọng rằng nó đạt điểm cao hơn bao giờ hết khi người mẫu chỉ nhìn thấy bộ xe lửa / val, bởi vì nó thực sự đã nhìn thấy bộ thử nghiệm trong quá trình đào tạo. Điều này sẽ không khiến tôi cảm thấy tự tin 100% rằng mô hình cuối cùng này vượt trội trong tất cả các trường hợp trong tương lai, nhưng ít nhất nó cũng tốt như nó có thể với dữ liệu đã cho.

Có lẽ có nhiều lập luận chặt chẽ hơn đối với việc làm những gì bạn nói (có thể là bị chế giễu về mặt học thuật), tuy nhiên nó có vẻ hấp dẫn cho các ứng dụng thực tế!


+ 1'd, cảm ơn vì nỗ lực của bạn và đã chỉ ra bài đăng đó, tôi đã bỏ lỡ nó! Đối với đề xuất của bạn để kiểm tra mô hình trên toàn bộ tập dữ liệu đào tạo cuối cùng, tôi nghĩ rằng bạn không nhận được bất kỳ cái nhìn sâu sắc có giá trị nào về kết quả của nó. Đơn giản là vì đào tạo thuật toán thường dựa trên việc tối ưu hóa các hàm chi phí, do đó mô hình được đào tạo là tối ưu với dữ liệu đào tạo. Độ chính xác thấp trên dữ liệu tàu không có nghĩa là nó không tối ưu, nó chỉ có nghĩa là đơn giản là nó không thể làm tốt hơn với tập dữ liệu đó và kiến ​​trúc thuật toán được chọn. Bạn không thể suy ra bất cứ điều gì cho tính hợp lệ bên ngoài của nó bằng cách đó.
pcko1

1
Không có gì! Tôi hoàn toàn đồng ý với tuyên bố của bạn (mặc dù tôi đã nói thử nghiệm mô hình được đào tạo cuối cùng về dữ liệu thử nghiệm gốc , không phải đào tạo). Trong mọi trường hợp, tôi vẫn muốn thấy rằng mô hình cuối cùng đã không làm điều gì đó hoàn toàn bất ngờ. Lý thuyết và thực hành không phải lúc nào cũng phù hợp :)
n1k31t4

6

Một điểm cần được nhấn mạnh về học máy thống kê là không có gì đảm bảo . Khi bạn ước tính hiệu suất bằng cách sử dụng bộ tổ chức, đó chỉ là ước tính . Ước tính có thể sai.

Điều này cần một số quen thuộc, nhưng đó là điều bạn sẽ phải làm quen với nó. Khi bạn nói "Điều gì sẽ xảy ra nếu hiệu suất thực sự suy giảm?", Câu trả lời là chắc chắn, điều đó có thể xảy ra. Hiệu suất thực tế có thể tồi tệ hơn bạn ước tính / dự đoán. Nó cũng có thể tốt hơn. Cả hai đều có thể. Đó là điều không thể tránh khỏi. Có một số sự không chắc chắn cố hữu.

Khi bạn đánh giá hiệu suất bằng cách sử dụng bộ kiểm tra tổ chức, bạn đang sử dụng dữ liệu từ quá khứ để cố gắng dự đoán hiệu suất trong tương lai. Như họ nói, hiệu suất trong quá khứ không đảm bảo cho kết quả trong tương lai . Đây là một thực tế của cuộc sống mà chúng ta phải chấp nhận.

Bạn không thể để điều này làm bạn bất động. Thực tế là có thể làm tồi tệ hơn bạn dự đoán không phải là lý do để tránh triển khai để sản xuất một mô hình được đào tạo về dữ liệu. Đặc biệt, bạn cũng có thể làm kém nếu bạn không làm điều đó. Có thể một mô hình được đào tạo trên tất cả dữ liệu (đào tạo + xác thực + kiểm tra) sẽ tồi tệ hơn một mô hình được đào tạo chỉ trên phần xác thực tàu +. Cũng có thể là nó sẽ tốt hơn. Vì vậy, thay vì tìm kiếm một sự đảm bảo, chúng ta phải tự hỏi: Điều gì mang lại cho chúng ta cơ hội thành công cao nhất? Điều gì có khả năng là hiệu quả nhất?

Và trong trường hợp này, khi bạn muốn triển khai vào sản xuất, điều tốt nhất bạn có thể làm là sử dụng tất cả dữ liệu có sẵn cho bạn. Về hiệu suất dự kiến, sử dụng tất cả dữ liệu không tệ hơn sử dụng một số dữ liệu và có khả năng tốt hơn. Vì vậy, bạn cũng có thể sử dụng tất cả dữ liệu có sẵn cho bạn để huấn luyện mô hình khi bạn xây dựng mô hình sản xuất. Mọi thứ vẫn có thể trở nên tồi tệ - luôn luôn có thể gặp xui xẻo, bất cứ khi nào bạn sử dụng các phương pháp thống kê - nhưng điều này mang lại cho bạn cơ hội tốt nhất có thể để mọi thứ diễn ra tốt đẹp.

Cụ thể, tiêu chuẩn thực hành như sau:

  1. Dự trữ một số dữ liệu của bạn vào một bộ kiểm tra tổ chức. Không có quy tắc khó và nhanh về việc sử dụng phân số nào, nhưng chẳng hạn, bạn có thể dành 20% cho bộ kiểm tra và giữ 80% còn lại để đào tạo & xác nhận. Thông thường, tất cả các phân chia nên là ngẫu nhiên.

  2. Tiếp theo, sử dụng dữ liệu đào tạo & xác nhận để thử nhiều kiến ​​trúc và siêu đường kính, thử nghiệm để tìm ra mô hình tốt nhất bạn có thể. Lấy 80% được giữ lại để đào tạo và xác nhận, và chia nó thành một tập huấn luyện và một bộ xác nhận, và huấn luyện một mô hình bằng cách sử dụng tập huấn luyện và sau đó đo lường độ chính xác của nó trên tập xác thực. Nếu bạn đang sử dụng xác thực chéo, bạn sẽ thực hiện việc phân tách này nhiều lần và tính trung bình các kết quả trên bộ xác thực; nếu bạn không phải, bạn sẽ thực hiện một phân tách duy nhất (ví dụ: chia 70% / 30% cho 80% hoặc đại loại như thế) và đánh giá hiệu suất trên bộ xác thực. Nếu bạn có nhiều siêu đường kính để thử, hãy làm điều này một lần cho mỗi cài đặt ứng viên của siêu tham số. Nếu bạn có nhiều kiến ​​trúc để thử, hãy làm điều này cho từng kiến ​​trúc ứng viên. Bạn có thể lặp lại điều này, bằng cách sử dụng những gì bạn '

  3. Một khi bạn hài lòng, bạn đóng băng sự lựa chọn về kiến ​​trúc, siêu đường kính, v.v ... Bây giờ thử nghiệm của bạn đã xong. Khi bạn đạt đến điểm này, bạn không bao giờ có thể thử lại bất kỳ tùy chọn nào khác (mà không nhận được bộ thử nghiệm mới) - vì vậy đừng nhấn vào điểm này cho đến khi bạn chắc chắn rằng bạn đã sẵn sàng.

  4. Khi bạn đã sẵn sàng, sau đó bạn huấn luyện một mô hình trên tập xác thực + tập xác thực đầy đủ (80% đó) bằng cách sử dụng kiến ​​trúc và siêu đường kính bạn đã chọn trước đó. Sau đó, đo độ chính xác của nó trên bộ kiểm tra giữ ngoài. Đó là ước tính / dự đoán của bạn về cách tiếp cận mô hình chính xác này. Bạn nhận được một số duy nhất ở đây. Con số đó là như vậy: nếu bạn không hài lòng với nó, bạn không thể quay lại bước 1 và 2 và thực hiện thêm thử nghiệm; Điều đó sẽ không hợp lệ.

  5. Cuối cùng, để sử dụng sản xuất, bạn có thể đào tạo một mô hình trên toàn bộ tập dữ liệu, tập huấn + xác thực + bộ kiểm tra và đưa nó vào sử dụng sản xuất. Lưu ý rằng bạn không bao giờ đo lường độ chính xác của mô hình sản xuất này, vì bạn không có bất kỳ dữ liệu nào còn lại để thực hiện điều đó; bạn đã sử dụng tất cả dữ liệu. Nếu bạn muốn ước tính mức độ hiệu quả của nó, bạn có quyền sử dụng độ chính xác ước tính từ bước 4 như dự đoán của bạn về việc nó sẽ hoạt động tốt như thế nào trong sản xuất, vì đó là dự đoán tốt nhất về hiệu suất trong tương lai của nó. Như mọi khi, không có gì đảm bảo - đó chỉ là ước tính tốt nhất có thể, dựa trên thông tin có sẵn cho chúng tôi. Chắc chắn là nó có thể làm điều tồi tệ hơn bạn dự đoán hoặc tốt hơn bạn dự đoán - điều đó luôn đúng.


+ 1'd cho nỗ lực, mặc dù tôi không hoàn toàn đồng ý :) ví dụ: khi bạn đề cập "Về hiệu suất dự kiến, sử dụng tất cả dữ liệu không tệ hơn sử dụng một số dữ liệu và có khả năng tốt hơn." Tôi không thấy lý do đằng sau nó. Mặt khác, điểm thứ 2 mà bạn đề cập có vẻ rất quan trọng, xác thực chéo! vì vậy về cơ bản, bạn huấn luyện / xác nhận với tất cả các mẫu, do đó có thể bạn từ chối các ngoại lệ trong mô hình cuối cùng đã chọn. Cảm ơn câu trả lời của bạn.
pcko1

@ pcko1, Nguyên tắc rất đơn giản. Nếu bạn có dữ liệu, bạn nên sử dụng tất cả dữ liệu đó, hoặc một số dữ liệu? Tại sao? Có thể khi chúng tôi nhận được dữ liệu, trước khi chúng tôi làm bất cứ điều gì, chúng tôi chỉ nên lấy 10% của nó và vứt nó đi và không bao giờ nhìn vào nó. Trong thực tế, nếu ném ra một số là tốt, ném ra nhiều hơn thậm chí còn tốt hơn, vì vậy có lẽ chúng ta nên loại bỏ tất cả dữ liệu của mình. Điều đó thật vô lý, phải không? Tại sao? Xem nếu bạn có thể tìm ra lý do tại sao, và sau đó thử áp dụng nó cho tình huống này. Hy vọng điều này sẽ khiến bạn suy nghĩ!
DW

3

Một trong những lý do để có một bộ dữ liệu là để tránh quá mức. Nếu bạn sử dụng xác thực chéo, về cơ bản, bạn cho phép toàn bộ tập dữ liệu hoạt động như tập huấn luyện, nhưng đào tạo lại sẽ không cho phép bạn xác thực xem có dấu hiệu thừa hay không. Tôi đoán rằng một trong hai cách (xác thực chéo hoặc đào tạo lại với toàn bộ tập dữ liệu) sẽ không thay đổi đáng kể kết quả của bạn (từ phỏng đoán không được giáo dục của tôi), nhưng bạn sẽ không thể điều chỉnh siêu tham số hoặc xác thực hiệu suất mô hình của mình khi bạn không có một bộ kiểm tra. Cho dù kết thúc tốt hơn, thật khó để nói, nhưng tôi đoán cách duy nhất để biết là thực hiện A / B của hai mô hình trên dữ liệu thực theo thời gian.

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.