Tìm một mức tối thiểu toàn cầu của một hàm 2D mịn, giới hạn, không lồi mà rất tốn kém để đánh giá


17

Tôi có một hàm 2-D không lồi giới hạn mà tôi muốn tìm mức tối thiểu. Chức năng khá trơn tru. Đánh giá nó là tốn kém. Một lỗi chấp nhận được là khoảng 3% miền của hàm trong mỗi trục.

Tôi đã thử chạy triển khai thuật toán TRỰC TIẾP trong thư viện NLOPT, nhưng nó đã không cải thiện đáng kể so với tìm kiếm vũ lực về mặt số lượng đánh giá chức năng cần thiết cho độ chính xác cần thiết và có một số ngoại lệ.

Những người giải quyết tối ưu hóa toàn cầu khác tôi nên xem xét?


Bạn có thể tính toán độ dốc, hoặc bạn sẽ cần xấp xỉ chúng theo các chỉ số khác nhau?
Arnold Neumaier

Tôi cần phải ước tính chúng theo số lượng khác nhau.
Victor ngày

Trong trường hợp này, phương pháp của Newton không thể được khuyến nghị, vì các đạo hàm thứ hai số rất không ổn định và khó điều chỉnh để hoạt động an toàn.
Arnold Neumaier

@Victor Có thể, cuối cùng bạn đã làm gì? (Nếu bạn có thể đăng một hàm tương tự như của bạn, điều đó thực sự sẽ giúp mọi người so sánh và điều chỉnh các thuật toán khác nhau.)
denis

@Denis, tôi đã cố gắng tăng tốc độ ra khỏi thuật toán để theo dõi một đối tượng trong video. Đầu ra của thuật toán là ước tính khả năng cho từng vị trí hình ảnh có chứa đối tượng được theo dõi. Hình ảnh chứa các ước tính khả năng này là chức năng tôi đã cố gắng tối ưu hóa. Tôi đã kết thúc với brute-buộc ở một số bước giải quyết. Để biết thêm thông tin về thuật toán theo dõi trong câu hỏi, hãy đọc bài báo "Theo dõi dựa trên mảnh vỡ mạnh mẽ bằng biểu đồ tích phân".
Victor May

Câu trả lời:


12

Tôi muốn đề xuất một cách tiếp cận hơi khác so với các câu trả lời khác, mặc dù @barron đã gián tiếp thảo luận về điều tương tự.

Thay vì tối ưu hóa trực tiếp chức năng của bạn, tức là bằng cách đánh giá nó tại một loạt các điểm điểm (hy vọng) hội tụ đến tối ưu (cục bộ), bạn có thể sử dụng khái niệm mô hình thay thế , đó là rất phù hợp cho các vấn đề thuộc loại bạn mô tả (chi phí cao, trơn tru, giới hạn, chiều thấp tức là dưới 20 ẩn số).x1,x2,,xksurrogate modelling

Cụ thể, người mẫu đại diện hoạt động bằng cách thiết lập một mô hình chức năng chức năng thực sự của bạn f R dR . Điều quan trọng là trong khi c tất nhiên không đại diện hoàn hảo cho f , thì nó rẻ hơn rất nhiều để đánh giá.cRdRfRdRcf

Vì vậy, một quá trình tối ưu hóa điển hình sẽ như sau:

  1. Đánh giá tại một tập hợp j điểm ban đầu x 1 , x 2 , Mạnh , x j . Lưu ý rằng các dẫn xuất là không cần thiết. Cũng lưu ý rằng những điểm này phải được phân phối đồng đều trong không gian tìm kiếm, ví dụ như Latin Hypercube Sampling hoặc một thiết kế lấp đầy không gian tương tự.fjx1,x2,,xj
  2. Dựa trên tập dữ liệu gốc này, tạo một hàm mô hình . Bạn có thể sử dụng xác thực chéo để xác thực mô hình của mình (nghĩa là chỉ sử dụng một tập hợp con của các điểm j ban đầu để tạo c , sau đó sử dụng phần còn lại của tập dữ liệu để kiểm tra xem c dự đoán các giá trị đó như thế nào )cjcc
  3. Sử dụng một tiêu chí như tiêu chí Cải thiện dự kiến ​​(EI) để tìm ra nơi '' điền vào 'nhiều mẫu hơn để làm cho chính xác hơn bằng cách lấy mẫu f . Điều này thực sự được nghiên cứu tốt hơn về mặt lý thuyết so với vẻ ngoài của nó, và tiêu chí EI được nghiên cứu rất kỹ. Tiêu chí EI cũng không phải là một tiêu chí tham lam, vì vậy cả hai bạn đều có được sự cải thiện tổng thể tốt về độ chính xác của mô hình, trong khi ưu tiên độ chính xác gần tối ưu tiềm năng.cf
  4. Nếu mô hình của bạn không đủ chính xác, hãy lặp lại bước 3, nếu không, hãy sử dụng thói quen tối ưu hóa yêu thích của bạn để tìm ra mức tối ưu của , sẽ rất rẻ để đánh giá (vì vậy bạn có thể sử dụng bất kỳ thói quen nào bạn muốn, ngay cả những thói quen cần dẫn xuất hoặc đơn giản đánh giá chức năng trong một lưới tốt).c

Nói chung, đây là ý nghĩa của EGO, Tối ưu hóa toàn cầu hiệu quả, như @barron đề xuất. Tôi muốn nhấn mạnh rằng đối với ứng dụng của bạn, điều này có vẻ hoàn toàn phù hợp - bạn có được một mô hình chính xác đáng ngạc nhiên dựa trên tương đối ít đánh giá của , và sau đó có thể sử dụng bất kỳ thuật toán tối ưu hóa nào bạn muốn. Điều thường cũng thú vị là bây giờ bạn có thể đánh giá c trên một lưới và vẽ đồ thị, từ đó hiểu rõ hơn về diện mạo chung của f . Một điểm thú vị khác là hầu hết các kỹ thuật mô hình thay thế cũng cung cấp các ước tính lỗi thống kê, do đó cho phép ước tính độ không đảm bảo.fcf

Làm thế nào để xây dựng tất nhiên là một câu hỏi mở, nhưng thường sử dụng Kriging hay còn gọi là mô hình ánh xạ không gian.c

Tất nhiên, đây là tất cả khá nhiều công việc mã hóa, nhưng rất nhiều người khác đã thực hiện rất tốt. Trong Matlab, tôi chỉ biết hộp công cụ phần mềm DACE DACE là miễn phí. TOMLAB cũng có thể cung cấp gói Matlab, nhưng tốn tiền - tuy nhiên, tôi tin rằng nó cũng hoạt động trong C ++ và có nhiều khả năng hơn DACE từng có. (Lưu ý: Tôi là một trong những nhà phát triển phiên bản DACE mới, sắp được phát hành, sẽ cung cấp hỗ trợ bổ sung cho EGO.)

Hy vọng rằng tổng quan sơ bộ này đã giúp bạn, vui lòng đặt câu hỏi nếu có những điểm có thể được làm rõ hơn hoặc những thứ tôi đã bỏ lỡ, hoặc nếu bạn muốn có thêm tài liệu về chủ đề này.


Fwiw, google surrogate-model mang đến một Phòng thí nghiệm mô hình hóa thay thế tại Đại học Ghent và một cuốn sách Thiết kế kỹ thuật thông qua mô hình Surrogate , 2008 228p 0470770791. Một vấn đề với bất kỳ phương pháp rất chung nào là bạn sẽ sớm có một bồn rửa nhà bếp với đầy đủ các biến thể phương pháp, hơn nữa hơn chức năng kiểm tra thực tế .
chối


3

Để có chức năng trơn tru, phương pháp Tối ưu hóa toàn cầu hiệu quả sẽ hoạt động khá tốt và hiệu quả hơn đáng kể so với TRỰC TIẾP. Việc triển khai có sẵn trong TOMLAB (bản thân tôi chưa sử dụng) và DAKOTA (mà tôi đã có một số thành công).


1

Vì chức năng hoạt động trơn tru, phương pháp của Newton sẽ là phương pháp hiệu quả nhất để tìm mức tối thiểu. Vì hàm này không lồi nên bạn sẽ phải áp dụng các thủ thuật thông thường để làm cho phương thức của Newton hội tụ (sửa đổi Levenberg-Marquest, tìm kiếm dòng hoặc vùng tin cậy để toàn cầu hóa). Nếu bạn không thể nhận được các dẫn xuất của hàm, hãy thử tính toán nó thông qua các khác biệt hữu hạn hoặc sử dụng bản cập nhật BFGS. Nếu bạn nghi ngờ rằng vấn đề có nhiều hơn một mức tối thiểu cục bộ, thì người ta chỉ cần bắt đầu phương pháp của Newton từ một loạt các điểm được chọn ngẫu nhiên hoặc không hoàn toàn ngẫu nhiên và xem nơi chúng hội tụ.


Vấn đề của tôi thực sự có cực tiểu địa phương. Có những phương pháp nào để chọn điểm bắt đầu?
Victor ngày

1
Trừ khi bạn biết bất cứ điều gì về vấn đề, lấy mẫu thống kê về cơ bản là sự lựa chọn duy nhất của bạn.
Wolfgang Bangerth

@Wolfgang: Có ý tưởng nào để tiếp cận "lấy mẫu thống kê" không? Chỉ cần thử 10, 100, ... dự đoán ban đầu ngẫu nhiên? Có cách tiếp cận "khắt khe hơn" không? Tôi hỏi, bởi vì tôi có ít nhiều một vấn đề tương tự (xem scicomp.stackexchange.com/q/4708/1789 )
André

Tất cả phụ thuộc vào những gì bạn biết về chức năng. Nếu bạn biết một cái gì đó như "thang đo chiều dài điển hình" cho chức năng của bạn sẽ đưa ra một dấu hiệu cho thấy mức độ cực đoan cục bộ sẽ được tách ra. Điều này cũng sẽ cung cấp cho bạn một dấu hiệu bạn có thể phải bắt đầu với bao nhiêu điểm và khoảng cách giữa chúng nên được chọn với nhau.
Wolfgang Bangerth

0

Vì các đánh giá của bạn rất tốn kém, bạn cần tận dụng việc chạy các đánh giá chức năng thứ bảy song song.

Tôi muốn giới thiệu bạn hãy xem này . Toán học đằng sau được mô tả ở đây .


1
mã này và bài viết được viết bởi bạn? Nếu vậy, bạn có thể nói rõ ràng như vậy trong câu trả lời của bạn? Ngoài ra, ngay bây giờ, bạn có thể cải thiện câu trả lời bằng cách cung cấp mô tả về đề xuất của bạn.
nicoguaro
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.