Tối ưu hóa siêu tham số thực tế: Tìm kiếm ngẫu nhiên so với lưới


41

Tôi hiện đang trải qua Tìm kiếm ngẫu nhiên của Tối ưu hóa siêu dữ liệu của Bengio và Bergsta [1] trong đó các tác giả cho rằng tìm kiếm ngẫu nhiên hiệu quả hơn tìm kiếm dạng lưới trong việc đạt được hiệu suất xấp xỉ bằng nhau.

Câu hỏi của tôi là: Mọi người ở đây có đồng ý với yêu cầu đó không? Trong công việc của tôi, tôi đã sử dụng tìm kiếm lưới chủ yếu là do thiếu công cụ có sẵn để thực hiện tìm kiếm ngẫu nhiên một cách dễ dàng.

Kinh nghiệm của những người sử dụng lưới so với tìm kiếm ngẫu nhiên là gì?


Tìm kiếm ngẫu nhiên là tốt hơn và nên luôn luôn được ưu tiên. Tuy nhiên, sẽ tốt hơn nữa khi sử dụng các thư viện chuyên dụng để tối ưu hóa siêu tham số, chẳng hạn như Optunity , hyperopt hoặc bayesopt.
Marc Claesen

Bengio et al. viết về nó ở đây: tờ giấy.nips.cc / apers / từ Vì vậy, GP hoạt động tốt nhất, nhưng RS cũng hoạt động rất tốt.
Guy L

10
@Marc Khi bạn cung cấp một liên kết đến một cái gì đó mà bạn tham gia, bạn nên làm cho sự liên kết của bạn với nó rõ ràng (một hoặc hai từ có thể đủ, thậm chí một cái gì đó ngắn gọn như đề cập đến nó như our Optunitynên làm); như sự giúp đỡ về hành vi nói, "nếu một số ...
tình cờ

Câu trả lời:


39

Tìm kiếm ngẫu nhiên có xác suất 95% tìm thấy sự kết hợp của các tham số trong phạm vi tối ưu 5% chỉ với 60 lần lặp. Ngoài ra so với các phương pháp khác, nó không sa lầy vào tối ưu cục bộ.

Kiểm tra bài đăng blog tuyệt vời này tại Dato của Alice Zheng, cụ thể là phần Thuật toán điều chỉnh siêu tham số .

Tôi yêu những bộ phim mà kẻ thua cuộc chiến thắng, và tôi yêu những bài học về máy học, nơi những giải pháp đơn giản được thể hiện là hiệu quả đáng ngạc nhiên. Đây là cốt truyện của Tìm kiếm ngẫu nhiên để tìm kiếm tối ưu hóa siêu tham số của Bergstra và Bengio. [...] Tìm kiếm ngẫu nhiên trước đây không được thực hiện nghiêm túc. Điều này là do nó không tìm kiếm trên tất cả các điểm lưới, vì vậy nó không thể đánh bại mức tối ưu được tìm thấy bởi tìm kiếm lưới. Nhưng sau đó đến cùng Bergstra và Bengio. Họ đã chỉ ra rằng, trong nhiều trường hợp đáng ngạc nhiên, tìm kiếm ngẫu nhiên thực hiện cũng như tìm kiếm lưới. Nói chung, thử 60 điểm ngẫu nhiên được lấy mẫu từ lưới dường như là đủ tốt.

Nhìn chung, có một lời giải thích xác suất đơn giản cho kết quả: đối với bất kỳ phân phối nào trên một không gian mẫu có cực đại hữu hạn, tối đa 60 quan sát ngẫu nhiên nằm trong 5% tối đa thực sự, với xác suất 95%. Điều đó có vẻ phức tạp, nhưng nó không phải là. Hãy tưởng tượng khoảng 5% xung quanh mức tối đa thực sự. Bây giờ hãy tưởng tượng rằng chúng ta lấy mẫu các điểm từ không gian của anh ta và xem liệu có bất kỳ điểm nào trong số đó hạ cánh trong mức tối đa đó không. Mỗi lần rút ngẫu nhiên có 5% cơ hội hạ cánh trong khoảng thời gian đó, nếu chúng tôi rút ra n điểm độc lập, thì xác suất tất cả chúng bỏ lỡ khoảng thời gian mong muốn là (10.05)n. Vì vậy, xác suất mà ít nhất một trong số họ thành công trong việc đạt được khoảng thời gian là 1 trừ đi số lượng đó. Chúng tôi muốn ít nhất là 0,95 xác suất thành công. Để tìm ra số lần rút chúng ta cần, chỉ cần giải n trong phương trình:

1(10.05)n>0.95

Chúng tôi nhận được . Ta-da!n60

Đạo đức của câu chuyện là: nếu vùng siêu âm gần tối ưu chiếm ít nhất 5% bề mặt lưới, thì tìm kiếm ngẫu nhiên với 60 thử nghiệm sẽ tìm thấy vùng đó có xác suất cao.

Bạn có thể cải thiện cơ hội đó với số lượng thử nghiệm cao hơn.

Nói chung, nếu bạn có quá nhiều tham số để điều chỉnh, tìm kiếm lưới có thể trở nên không khả thi. Đó là khi tôi thử tìm kiếm ngẫu nhiên.


3
Liên kết với các bài viết trên blog là xuống :( Phải chăng đây là bài viết giống nhau không? Oreilly.com/ideas/evaluating-machine-learning-models/page/5/...
n1k31t4

@DexterMorgan Này, cảm ơn vì đã ngẩng cao đầu. Vâng, blog dường như không hoạt động, và tôi không chắc mình nên liên kết với các nguồn khác có thể không phải là "chính thức" , vì vậy tôi sẽ chỉ để nó như bây giờ tôi nghĩ.
Firebug

Blog vẫn không hoạt động ... cảm ơn vì đã trích dẫn nó và @ n1k31t4 cảm ơn vì đã cung cấp một liên kết để đọc thêm!
llrs

8

Nhìn lại đồ họa từ tờ giấy (Hình 1). Giả sử bạn có hai tham số, với tìm kiếm lưới 3x3, bạn chỉ kiểm tra ba giá trị tham số khác nhau từ mỗi tham số (ba hàng và ba cột trên biểu đồ bên trái), trong khi với tìm kiếm ngẫu nhiên, bạn kiểm tra chín (!) Giá trị tham số khác nhau của từng tham số (chín hàng riêng biệt và chín cột riêng biệt).

Lưới và tìm kiếm ngẫu nhiên

Rõ ràng, tìm kiếm ngẫu nhiên, tình cờ, có thể không đại diện cho tất cả phạm vi của các tham số, nhưng khi kích thước mẫu tăng lên, cơ hội của điều này sẽ ngày càng nhỏ hơn.


6

Nếu bạn có thể viết một hàm vào tìm kiếm lưới, việc viết một hàm để thực hiện tìm kiếm ngẫu nhiên thậm chí còn dễ dàng hơn vì bạn không phải chỉ định trước và lưu trữ lưới lên phía trước.

Đặt sang một bên, các phương pháp như LIPO, tối ưu hóa dòng hạt và tối ưu hóa Bayes đưa ra những lựa chọn thông minh về việc siêu đường kính nào có khả năng tốt hơn, vì vậy nếu bạn cần giữ số lượng mô hình phù hợp ở mức tối thiểu (giả sử, vì nó đắt tiền để phù hợp với mô hình), những công cụ này là những lựa chọn đầy hứa hẹn. Họ cũng là những người tối ưu hóa toàn cầu, vì vậy họ có xác suất cao trong việc xác định vị trí tối đa toàn cầu. Một số chức năng thu nhận của các phương thức BO có giới hạn hối tiếc có thể chứng minh được, khiến chúng thậm chí còn hấp dẫn hơn.

Thông tin thêm có thể được tìm thấy trong những câu hỏi sau:

Một số sự không hài lòng của tối ưu hóa tham số siêu bayes là gì?

Tối ưu hóa khi chức năng chi phí chậm để đánh giá


2

Theo mặc định, tìm kiếm ngẫu nhiên và tìm kiếm lưới là các thuật toán khủng khiếp trừ khi một trong các cách giữ sau đây.

  • Vấn đề của bạn không có cấu trúc toàn cầu, ví dụ: nếu vấn đề là đa phương thức và số lượng tối ưu cục bộ là rất lớn
  • Vấn đề của bạn là ồn ào, tức là, đánh giá cùng một giải pháp hai lần dẫn đến các giá trị hàm mục tiêu khác nhau
  • Ngân sách của các lệnh gọi hàm mục tiêu rất nhỏ so với số lượng biến, ví dụ: nhỏ hơn 1x hoặc 10x.
  • Số lượng biến rất nhỏ, ví dụ, nhỏ hơn 5 (trong thực tế).
  • một vài điều kiện khác

Hầu hết mọi người cho rằng tìm kiếm ngẫu nhiên tốt hơn tìm kiếm lưới. Tuy nhiên, lưu ý rằng khi tổng số đánh giá chức năng được xác định trước, tìm kiếm dạng lưới sẽ dẫn đến độ bao phủ tốt của không gian tìm kiếm, không tệ hơn tìm kiếm ngẫu nhiên với cùng một ngân sách và sự khác biệt giữa hai loại này là không đáng kể nếu có. Nếu bạn bắt đầu thêm một số giả định, ví dụ: vấn đề của bạn có thể tách rời hoặc gần như tách rời, thì bạn sẽ tìm thấy các đối số để hỗ trợ tìm kiếm lưới. Nhìn chung, cả hai đều tương đối khủng khiếp trừ khi trong rất ít trường hợp. Vì vậy, không cần phân biệt giữa chúng trừ khi một số giả định bổ sung về vấn đề được xem xét.


bạn có thể đề xuất một cái gì đó tốt hơn? Làm thế nào chúng ta có thể biết điều gì là tốt nhất nếu chúng ta không thử? Dường như với tôi tìm kiếm ngẫu nhiên trên nhiều mô hình là giải pháp thỏa hiệp tốt nhất.
JPErwin

0

Tìm một vị trí trong phạm vi 95% cực đại trong địa hình 2D chỉ với một cực đại mất 100% / 25 = 25%, 6,25%, 1,5625% hoặc 16 quan sát. Miễn là bốn quan sát đầu tiên xác định chính xác góc phần tư (cực trị) nằm trong. Địa hình 1D mất 100/2 = 50, 25, 12.5, 6.25, 3.125 hoặc 5 * 2. Tôi đoán những người tìm kiếm nhiều cực đại cục bộ farflung sử dụng tìm kiếm lưới bẩm sinh lớn sau đó hồi quy hoặc một số phương pháp dự đoán khác. Một lưới gồm 60 quan sát nên có một quan sát trong vòng 100/60 = 1,66% điểm cực trị. Tối ưu hóa toàn cầu Wikipedia Tôi vẫn nghĩ luôn có một phương pháp tốt hơn là ngẫu nhiên.


Ủ mô phỏng là một hình thức tìm kiếm ngẫu nhiên đã tồn tại trong một số năm.
Michael Chernick
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.