Làm thế nào để xác định điều kiện chấm dứt cho độ dốc gốc?


24

Trên thực tế, tôi muốn hỏi bạn làm thế nào tôi có thể xác định điều kiện kết thúc cho việc giảm độ dốc.

Tôi có thể dừng nó dựa trên số lần lặp, tức là xem xét các giá trị tham số cho 100 lần lặp không?

Hoặc tôi nên đợi sao cho hai giá trị khác nhau 'mới' và 'cũ' rất nhỏ theo thứ tự cho phép nói ? Điều này chắc chắn sẽ mất nhiều thời gian.10-6

cách tốt nhất là gì? Trong trường hợp của tôi, ngay cả một lần lặp cũng mất thời gian đáng kể. Trong tình huống này nếu tôi chờ điều kiện thứ 2, tôi thậm chí có thể mất hàng tuần.

Vì vậy, tôi nên sử dụng phương pháp nào. Làm thế nào để giải quyết tình huống này?


1
Nó không được tuyên bố rõ ràng, nhưng tôi cho rằng bạn đang cố gắng tìm một MLE. Kết quả của bạn thực sự phụ thuộc hoàn toàn vào không gian tham số, chức năng khả năng và nhu cầu của bạn (hay còn gọi là tốt nhất không được xác định rõ). Nếu bạn chỉ tìm kiếm sự biện minh về mặt lý thuyết như hiệu quả tiệm cận; trong điều kiện Le'Cam, bạn chỉ có thể sử dụng MLE một bước (Theo giả định thêm là bạn đang sử dụng Phương pháp của Newton và chức năng ghi điểm cho độ dốc của bạn). Điều này đòi hỏi giá trị ban đầu của bạn là như vậy mà trong xác suất. n1/2θ^0θ
Jonathan Lisic

Vì vậy, chờ đợi, khi bạn nói "mới" - "cũ" là quá nhỏ, đó có phải là một điều kiện chấm dứt không chính xác cho giảm dần độ dốc? (nếu áp dụng điểm cố định như định lý, điều kiện đó sẽ ổn chứ?)
Charlie Parker

Người ta có thể dừng khi bất kỳ một trong các: giá trị hàm hoặc gradient hoặc tham số dường như ngừng di chuyển, tương đối hoặc tuyệt đối. Nhưng trong thực tế tham số .. là quá nhiều vì vậy chúng được gấp lại, nhưng mọi chương trình làm điều đó khác nhau. Xem dung sai Mathworks và tiêu chí dừng cho một hình ảnh. ftôiftôixtôi3×2ftolabs ftolrelxtolabs
chối

Câu trả lời:


19

Câu hỏi hay. Tôi đã thấy rất nhiều quy tắc dừng lại trong tài liệu, và có những ưu điểm và nhược điểm đối với từng quy tắc, tùy thuộc vào ngữ cảnh. Các optimchức năng trong R, ví dụ, có ít nhất ba quy tắc dừng khác nhau:

  • maxit, tức là số lần lặp tối đa được xác định trước. Một cách khác tương tự tôi từng thấy trong tài liệu là số giây tối đa trước khi hết thời gian. Nếu tất cả những gì bạn cần là một giải pháp gần đúng, thì đây có thể là một điều rất hợp lý. Trong thực tế, có các lớp mô hình (đặc biệt là mô hình tuyến tính) mà việc dừng sớm tương tự như đặt Gaussian trước các giá trị tham số của bạn. Một người thường xuyên sẽ nói rằng bạn có một "định mức L2" chứ không phải trước đó, nhưng họ cũng sẽ nghĩ đó là một điều hợp lý để làm. Tôi chỉ đọc lướt qua bài viết này , nhưng nó nói về mối quan hệ giữa dừng sớm và chính quy hóa và có thể giúp bạn hướng đến nhiều thông tin hơn. Nhưng phiên bản ngắn là, vâng, dừng sớm có thể là một điều hoàn toàn đáng trân trọng, tùy thuộc vào những gì bạn '

  • abstol, tức là dừng khi hàm "đủ gần" về không. Điều này có thể không phù hợp với bạn (có vẻ như bạn không mong đợi số 0), vì vậy tôi sẽ bỏ qua nó.

  • reltol, giống như đề xuất thứ hai của bạn - dừng khi cải thiện giảm xuống dưới ngưỡng. Tôi thực sự không biết có bao nhiêu lý thuyết về điều này, nhưng có lẽ bạn sẽ có xu hướng đạt cực tiểu thấp hơn theo cách này với số lần lặp tối đa nhỏ. Nếu điều đó quan trọng với bạn, thì có thể đáng để chạy mã cho nhiều lần lặp hơn.

Một nhóm quy tắc dừng khác phải thực hiện với việc tối ưu hóa hàm chi phí trên tập dữ liệu xác thực (hoặc xác thực chéo) thay vì trên dữ liệu đào tạo. Tùy thuộc vào những gì bạn muốn sử dụng mô hình của bạn cho, bạn có thể muốn dừng tốt trước khi bạn đạt đến mức tối thiểu cục bộ trên dữ liệu đào tạo của bạn, vì điều đó có thể liên quan đến việc thừa. Tôi khá chắc chắn Trevor Hastie đã viết về những cách tốt để làm điều này, nhưng tôi không thể nhớ được trích dẫn.

Các tùy chọn có thể khác để tìm cực tiểu thấp hơn trong một khoảng thời gian hợp lý có thể bao gồm:

  • Giảm dần độ dốc ngẫu nhiên, chỉ yêu cầu ước tính độ dốc cho một phần nhỏ dữ liệu của bạn tại một thời điểm (ví dụ: một điểm dữ liệu cho SGD "thuần túy" hoặc các lô nhỏ).

  • Các hàm tối ưu hóa nâng cao hơn (ví dụ: các phương thức kiểu Newton hoặc Conjugate Gradient), sử dụng thông tin về độ cong của hàm mục tiêu của bạn để giúp bạn chỉ ra các hướng tốt hơn và có kích thước bước tốt hơn khi bạn di chuyển xuống dốc.

  • Thuật ngữ "động lượng" trong quy tắc cập nhật của bạn, để trình tối ưu hóa của bạn thực hiện công việc xuống dốc tốt hơn thay vì vượt qua các bức tường hẻm núi trong chức năng mục tiêu của bạn.

Những cách tiếp cận này đều được thảo luận trong các ghi chú bài giảng mà tôi tìm thấy trên mạng.

Hi vọng điêu nay co ich!

Chỉnh sửa oh, và bạn cũng có thể cố gắng để có được các giá trị khởi đầu tốt hơn (ví dụ: bằng cách giải quyết một phiên bản đơn giản hơn của vấn đề) để có ít lần lặp hơn để tiến gần đến mức tối ưu từ "khởi đầu ấm áp" của bạn.


Vấn đề với việc chọn số lần lặp cố định, là trừ khi bạn có thể vẽ rõ đường cong chi phí của mình (và nó có tiếng ồn nhỏ), thật khó để biết có bao nhiêu lần lặp quá nhiều, đặc biệt nếu chức năng tối ưu hóa phức tạp và ai biết được có bao nhiêu mức tối thiểu cục bộ và nếu bạn đã ngẫu nhiên khởi tạo, điều này càng làm cho vấn đề trở nên tồi tệ hơn, vì nó càng khó đoán được số lần lặp "nhỏ" tốt là gì. Làm thế nào để bạn giải quyết vấn đề này trong thực tế nếu bạn muốn thực sự sử dụng dừng sớm? Làm thế nào để bạn chắc chắn rằng bạn không bắn quá nhiều hoặc không cởi quá nhiều?
Charlie Parker

Tôi muốn làm rõ những gì reltol (nghĩa là khi không còn "cải tiến") nghĩa là gì. Cải tiến đầu tiên có nghĩa là giảm chức năng chi phí. Vì vậy, tôi sẽ giả định rằng điều bạn muốn nói là, khi hàm chi phí ngừng giảm đủ (hoặc bắt đầu tăng), một lần dừng, phải không? Một người không thực sự làm "| cũ - mới |" loại quy tắc cập nhật, phải không?
Charlie Parker

1
Các abstolthông số chỉ có ý nghĩa nếu bạn đang dùng khả năng chịu đựng của gradient của hàm chi phí, không phải là chi phí chức năng riêng của mình. Trong trình tối ưu hóa cục bộ, giá trị của gradient bằng không; nhưng không phải là giá trị của hàm.
Mario Becerra

"khởi đầu ấm áp" là một mẹo rất thông minh! cảm ơn
Mehdi LAMRani
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.