Là cung cấp độ dốc gần đúng cho một trình tối ưu hóa dựa trên độ dốc vô dụng?


9

Có phải là vô nghĩa khi sử dụng thuật toán tối ưu hóa dựa trên độ dốc nếu bạn chỉ có thể cung cấp một gradient số? Nếu không, tại sao lại cung cấp một gradient số ở vị trí đầu tiên nếu nó không quan trọng để thực hiện phân biệt hữu hạn cho chính thư viện tối ưu hóa?

[BIÊN TẬP]

  • Chỉ cần làm rõ, câu hỏi của tôi thực sự là trong một ý nghĩa chung hơn là một ứng dụng cụ thể. Mặc dù lĩnh vực ứng dụng của tôi xảy ra là khả năng tối ưu hóa theo các khung thống kê khác nhau.

  • Vấn đề của tôi với sự khác biệt tự động là dường như luôn luôn có một nhược điểm. Thư viện AD không thể truyền tới các cuộc gọi thư viện bên ngoài (như BLAS) hoặc bạn phải làm lại quy trình công việc của mình mạnh mẽ đến mức gây khó khăn cho việc xử lý ... đặc biệt là nếu bạn đang làm việc với các ngôn ngữ nhạy cảm. Sự kìm kẹp của tôi với AD là một vấn đề riêng biệt hoàn toàn. Nhưng tôi muốn tin!

  • Tôi đoán tôi cần phải hình thành tốt hơn câu hỏi của mình nhưng tôi đang làm một công việc tồi tệ. Nếu có một tùy chọn để sử dụng thuật toán tối ưu hóa không có đạo hàm hoặc thuật toán tối ưu hóa dựa trên đạo hàm với sự cảnh báo mà tôi chỉ có thể cung cấp cho nó một độ dốc số, thì trung bình sẽ vượt trội hơn?


2
Bạn đang cố gắng hỏi tại sao người ta sẽ cung cấp một gradient phân tích thay vì chỉ tính toán một xấp xỉ bằng cách sử dụng các khác biệt hữu hạn?
spektr

1
Câu hỏi của tôi là, đã nói một cách khác, giả sử các phương trình của bạn quá liên quan để bạn tính toán độ dốc phân tích, thuật toán tối ưu hóa phụ thuộc độ dốc có thể vẫn vượt trội hơn so với phương trình không yêu cầu độ dốc không?
giáo sư bigglesworth

Đó là một câu hỏi khác nhau mà bạn đặt ra ở trên. Bạn có thể tính các đạo hàm số bằng các phương tiện khác, ví dụ: các phần tử hữu hạn.
nicoguaro

1
@nicoguaro Vâng, trong bối cảnh tối ưu hóa với các phương trình vi phân từng phần, đó chắc chắn là trường hợp (và, đây là một trong những lĩnh vực nghiên cứu của tôi, đó cũng là suy nghĩ đầu tiên của tôi). Nhưng câu hỏi không đề cập đến bất cứ điều gì theo hướng đó (và hữu ích hơn trong tính tổng quát này. Tôi nghĩ vậy).
Christian Clason

1
Ngoài ra, ngay cả trong trường hợp đó, đó là một câu hỏi hợp lý: Điều gì xảy ra nếu (hệ thống) PDE của bạn phức tạp đến mức bạn không thể rút ra một phương trình liên kết để được giải bằng số để có được độ dốc? (Những điều này có thể trở nên khá khó chịu, đặc biệt là nếu các điều kiện biên không chuẩn có liên quan.)
Christian Clason

Câu trả lời:


11

Để bổ sung cho câu trả lời xuất sắc của Brian, hãy để tôi cung cấp một chút về nền tảng (biên tập). Các phương thức tối ưu hóa không có đạo hàm được định nghĩa là các phương pháp chỉ sử dụng các đánh giá chức năng và về cơ bản là tất cả các biến thể của "mẫu tập hợp được chấp nhận ít nhiều có hệ thống và lưu giá trị hàm tốt nhất" - đó là tất cả những gì bạn có thể làm với thông tin. Các phương thức này có thể được chia nhỏ trong

  1. 1 về chức năng của bạn, đây là tất cả những gì bạn có thể làm và bạn có thể gặp may mắn.

  2. Các phương pháp xác định , trong đó việc lựa chọn các mẫu không phải là ngẫu nhiên, nghĩa là hoàn toàn dựa trên các đánh giá chức năng trước đó. Ví dụ nổi tiếng nhất có lẽ là phương pháp Nelder - Mead Simplex; những người khác đang tạo phương thức tìm kiếm thiết lập . Điều quan trọng là phải nhận ra rằng điều này chỉ có thể hoạt động nếu có bất kỳ mối quan hệ (có thể khai thác) nào giữa giá trị của hàm tại các điểm khác nhau - tức là, một số độ mịn của hàm. Trên thực tế, lý thuyết hội tụ cho, ví dụ, phương pháp Nelder - Mead dựa trên việc xây dựng một sự không đồng nhấtxấp xỉ sai phân hữu hạn của độ dốc dựa trên các giá trị hàm tại các đỉnh của đơn giản và cho thấy rằng nó hội tụ cả độ dốc chính xác và độ 0 khi đơn giản hợp đồng với một điểm. (Biến thể dựa trên xấp xỉ sai phân hữu hạn tiêu chuẩn được gọi là tìm kiếm la bàn .)

  3. Các phương thức dựa trên mô hình , trong đó các giá trị hàm được sử dụng để xây dựng mô hình cục bộ của hàm (ví dụ: bằng phép nội suy), sau đó được tối thiểu hóa bằng các phương thức chuẩn (dựa trên độ dốc / Hessian). Do một xấp xỉ sai phân hữu hạn tương đương với đạo hàm chính xác của phép nội suy đa thức, nên cách tiếp cận "gradient số" cổ điển cũng rơi vào lớp này.

Như bạn có thể thấy, ranh giới giữa các lớp này là trôi chảy và thường chỉ là vấn đề giải thích. Nhưng đạo đức cần phải rõ ràng: Đảm bảo bạn sử dụng tất cả thông tin có sẵn về chức năng bạn đang giảm thiểu. Để trích dẫn Cornelius Lanczos:

Việc thiếu thông tin không thể được khắc phục bằng bất kỳ thủ thuật toán học nào.

Rốt cuộc, nếu bạn không biết về chức năng của mình, thì nó cũng có thể hoàn toàn ngẫu nhiên và giảm thiểu một giá trị ngẫu nhiên là một việc vặt ...


17

Nếu mục tiêu của bạn trơn tru, thì việc sử dụng các xấp xỉ sai phân hữu hạn cho đạo hàm thường hiệu quả hơn so với sử dụng thuật toán tối ưu hóa miễn phí phái sinh. Nếu bạn có mã tính toán chính xác các đạo hàm thì thông thường tốt nhất là sử dụng mã đó thay vì sử dụng các xấp xỉ sai phân hữu hạn.

Mặc dù một số thư viện tối ưu hóa sẽ tự động tính toán các xấp xỉ sai phân hữu hạn để bạn tự động sử dụng phương pháp phỏng đoán để xác định các tham số kích thước bước, tốt hơn là sử dụng các thói quen của riêng bạn để tính các xấp xỉ sai phân hữu hạn vì bạn có kiến ​​thức tốt hơn về các kích thước bước thích hợp hoặc vì cấu trúc đặc biệt trong chức năng mà mã của bạn có thể khai thác.

Một tùy chọn khác thường có giá trị trong khi sử dụng các kỹ thuật phân biệt tự động để tạo ra một chương trình con tính toán các dẫn xuất phân tích từ mã nguồn để tự tính toán hàm mục tiêu.


3
+1 để phân biệt tự động . Điều này thường tốt hơn nhiều so với biểu thức biểu tượng a-tiên nghiệm cho độ dốc hoặc xấp xỉ sai phân hữu hạn.
rẽ trái

Tôi cũng sẽ khuyên bạn nên sử dụng phân biệt tự động. Đối với fortran, hãy thử tapenade từ INRIA Sophia-Antipolis, dựa trên chuyển đổi nguồn. Đối với C / C ++, có nhiều sự lựa chọn hơn như adol-c, adept, sacado (một phần của Trilinos). Tất cả những điều này dựa trên quá tải toán tử và dễ sử dụng hơn, mặc dù không hiệu quả cho các vấn đề rất lớn.
cfdlab

Cũng có một số trường hợp khó phân biệt tự động (AD), nhưng phân biệt bước phức tạp, đôi khi có thể tương tự như AD (ngoài việc có thể tính toán toàn bộ độ dốc cùng một lúc bằng chế độ đảo ngược của AD) có thể được áp dụng và tương đối dễ áp ​​dụng.
Mark L. Stone

Để trả lời cho câu hỏi đã sửa đổi: Nếu mục tiêu của bạn trơn tru (không có điểm nào trong việc sử dụng thuật toán tối ưu hóa dựa trên đạo hàm nếu không) và nếu số lượng biến số nhỏ một cách hợp lý (thực hiện các công cụ phái sinh khác biệt không hoạt động trong tối ưu hóa ràng buộc PDE ), sau đó rất có thể bạn sẽ tốt hơn khi sử dụng phương pháp tối ưu hóa dựa trên đạo hàm với các xấp xỉ sai phân hữu hạn thay vì sử dụng kỹ thuật DFO.
Brian Borchers

4

Câu hỏi của bạn hỏi về tối ưu hóa dựa trên độ dốc, vì vậy tôi nghĩ Brian đã đúng. Tôi chỉ chia sẻ, vì hiện tại tôi đang phải vật lộn với điều đó, một số vấn đề.

Các vấn đề với sự khác biệt hữu hạn là 1) hiệu suất, bởi vì bạn phải đánh giá lại chức năng một lần nữa cho mỗi thứ nguyên và 2) có thể khó để chọn kích thước bước tốt. Nếu bước quá lớn, giả định về độ tuyến tính của hàm có thể không giữ được. Nếu bước quá nhỏ, nó có thể chạy vào nhiễu trong chính hàm, vì các đạo hàm khuếch đại nhiễu. Cái sau có thể là một vấn đề thực sự nếu hàm liên quan đến việc giải các phương trình vi phân. Nếu có thể tính toán độ dốc một cách phân tích, hoặc sử dụng các phương trình độ nhạy, nó chắc chắn sẽ chính xác hơn và có thể nhanh hơn.

Có một cách tiếp cận khác mà bạn có thể thử nếu bạn chưa đầu tư quá nhiều thời gian vào phần mềm và đó là chạy nó với số học phức tạp. Nó được gọi là phân biệt bước phức tạp . Ý tưởng cơ bản là khi bạn đánh giá hàm, nếu bạn muốn độ dốc của nó liên quan đến tham số X, bạn đặt phần ảo của X thành một số rất nhỏ eps . Sau khi bạn thực hiện phép tính, phần ảo của giá trị của hàm, chia cho eps , là độ dốc tương ứng với X. Khi bạn muốn độ dốc đối với Y, tất nhiên bạn phải thực hiện lại. Điều thú vị về nó là epscó thể được thực hiện rất nhỏ. Lý do nó hoạt động là các quy tắc thông thường của phép tính vi phân được nhân đôi chính xác trong các quy tắc số học phức tạp.

Điều đó nói rằng, tôi coi nó không phải là thuốc chữa bách bệnh, bởi vì không phải lúc nào cũng dễ dàng thực hiện một hàm phức tạp trong số học phức tạp, sẽ không đáng nếu độ dốc có thể được tính toán một cách phân tích, và trong trường hợp phương trình vi phân, nó chính xác tương đương với phương trình độ nhạy , mà tôi đang làm khi cần thiết.


Tôi nghĩ một trong những lợi ích chính là việc bạn không thực hiện bất kỳ phép trừ nào trong công thức sai phân hữu hạn phức tạp này. Khi tôi đọc một bài báo trước đây nói về các dẫn xuất cho phương pháp này, đó là một trong những điểm mà họ dường như xác nhận bằng thực nghiệm so với các công thức khác biệt hữu hạn khác. Sự khác biệt này cho phép các kích thước bước nhỏ hơn được chọn trước khi các lỗi làm tròn trở thành một vấn đề.
spektr

@choward: Phải rồi. Đó là những gì đẹp về nó. Tôi đã hoài nghi mặc dù. Một số đồng nghiệp của tôi dường như nghĩ rằng đó là một viên đạn ma thuật. Tôi nghi ngờ nó tương đương với các phương trình độ nhạy và một trong những đồng nghiệp của tôi, một nhà toán học ứng dụng, đã chứng minh điều đó.
Mike Dunlavey

Điều đó thật tuyệt vời về phương trình độ nhạy. Đây là một cách tiếp cận thú vị nhưng chắc chắn nó có thể có sự đánh đổi thực hiện. Giả sử bạn muốn sử dụng nó, bạn phải xác định các phiên bản phức tạp của các hàm và sau đó thực hiện các phép tính đại số / tính toán biến phức tạp bổ sung, làm cho mỗi đánh giá hàm dài hơn. Đó là một trong những điều bạn phải tìm hiểu xem việc đánh giá hàm chậm có xứng với độ chính xác của đạo hàm được thêm vào hay không.
spektr

@choward: Đó là kết luận mà tôi đã đưa ra, cộng với việc chúng ta thường tối ưu hóa một vectơ, có nghĩa là đánh giá lặp đi lặp lại. Tất nhiên, sự thay thế là các phương trình độ nhạy có thể khó để rút ra. Tôi sử dụng sự khác biệt tượng trưng, ​​và chúng vẫn còn khó khăn. Toàn bộ chủ đề là một chút của một lĩnh vực mỏ.
Mike Dunlavey
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.