Chính xác thì một người giải quyết thế nào là tối ưu hóa?


8

Tôi thực sự bối rối bởi việc sử dụng bộ giải trong tối ưu hóa tính toán. Tôi đã xem xét khoảng một tháng để xem liệu tôi có thể hiểu rõ ý nghĩa của thuật ngữ này hay không nhưng tôi vẫn không hiểu rõ về nó.

Có vẻ như, nếu tôi muốn giải quyết vấn đề tối ưu hóa trong học máy hoặc ở nơi khác, tôi sẽ đề cập đến quy trình tính toán chính xác như một thuật toán thay vì một bộ giải. Ví dụ: nếu tôi có chương trình bậc hai, tôi sẽ sử dụng hàm Quadprog của MATLAB để giải QP.

Cá nhân tôi sẽ không đề cập đến chức năng Quadprog như một bộ giải QP, bởi vì nó chỉ là một hàm MATLAB hoặc một tập lệnh. Tôi sẽ không đề cập đến thuật toán chính xác đằng sau Quadprog như một bộ giải QP, tôi không quan tâm nếu nó là độ dốc gốc, phương pháp điểm bên trong, Newton Raphson ... tất cả chúng đều là thuật toán đối với tôi. Cuối cùng, tôi sẽ không đề cập đến MATLAB như một người giải QP vì đó không phải là mục đích duy nhất của MATLAB. Vì vậy, có vẻ như từ "người giải quyết" bị thiếu trong vốn từ vựng hàng ngày của tôi mặc dù phải thường xuyên làm việc với tối ưu hóa, điều này làm tôi bối rối khá nhiều, nó chỉ cảm thấy tôi không cập nhật với biệt ngữ.

Vì vậy, theo lý luận của tôi, các thuật toán và MATLAB không phải là người giải quyết. Nhưng giả sử tôi đã tải xuống một số phần mềm như Gurobi hoặc YALMIP để giải quyết các vấn đề tối ưu hóa, những phần mềm này có được gọi là bộ giải không? Tôi thường có thời gian nghe mọi người nhắc đến "người giải quyết" bạn đang sử dụng theo cùng một giai điệu với "phần mềm" nào bạn đang sử dụng. Điều gì phân biệt phần mềm tối ưu hóa và giải quyết?

Tôi biết điều này nghe có vẻ như là một câu hỏi thực sự thô sơ, nhưng tôi chỉ mới thực hiện tối ưu hóa trong MATLAB.


Tôi đã hiểu "người giải quyết" có nghĩa là trình tối ưu hóa cho các vấn đề với các giải pháp độc đáo, nhưng có lẽ tôi đang hiểu sai.
Sycorax nói Phục hồi Monica

Nói chung, một người giải quyết tối ưu hóa cũng tương tự như động cơ là lái xe. Tôi sẽ gọi Gurobi là người giải quyết, nó giống như một động cơ. MATLAB giống như một thương hiệu xe hơi, đó là tên của môi trường tổng thể.
Matthew Gunn

Tôi thường nghe "bộ giải" được sử dụng để mô tả phần mềm , có nghĩa là nó áp dụng cho việc triển khai thuật toán. Nói chung, thuật ngữ này sẽ được dành riêng cho các vấn đề toán học với "giải pháp được xác định rõ". Một giải pháp độc đáo là đủ, như @Sycorax nói, và người giải quyết Gurobi dường như là vấn đề trong lớp này. Nhưng tôi không nghĩ rằng duy nhất là cần thiết, ví dụ cả các vấn đề tối ưu hóa cục bộ và toàn cầu có thể có các giải pháp được xác định rõ nhưng không độc đáo.
GeoMatt22

Câu trả lời:


4

Tôi đề nghị một người giải là:

  • gói phần mềm
  • kết hợp một hoặc nhiều thuật toán
  • để tìm giải pháp cho một hoặc nhiều lớp vấn đề

Các lớp của vấn đề là một phần của nó. Nó là một bộ giải X.

Vì thế

  • Tôi sẽ gọi Gurobi là "người giải quyết MIP / LP" .
  • Và tôi sẽ nói "Matlab kết hợp một bộ giải QP, nó sẽ hiển thị thông qua chức năng Quadprog." , Trong trường hợp này, "bộ giải QP" thực tế có thể tồn tại hoặc không tồn tại dưới dạng một sản phẩm độc lập.
  • Concorde là một người giải TSP
  • Concorde kết hợp QSopt, một bộ giải LP

Tôi nghĩ rằng việc sử dụng này phù hợp với (ví dụ) tài liệu JuMP

JuMP là ngôn ngữ lập mô hình dành riêng cho miền để tối ưu hóa toán học được nhúng trong Julia. Hiện tại nó hỗ trợ một số bộ giải mã nguồn mở và thương mại (xem bên dưới) cho nhiều loại vấn đề khác nhau, bao gồm lập trình tuyến tính, lập trình số nguyên, lập trình hình nón bậc hai, lập trình semidefinite và lập trình phi tuyến.

Dưới đây là danh sách những thứ mà JuMP gọi là người giải quyết . Không ai trong số họ là thuật toán, tất cả đều là chương trình cụ thể


5

Một người giải là một thói quen để tìm câu trả lời chính xác cho các hệ thống xác định. Ví dụ: khi sử dụng Newton-Raphson để tìm (các) gốc. Khi một hệ thống quá hạn thì người ta thường sử dụng các giải pháp gần đúng, ví dụ, hồi quy. Nhìn chung, người ta sẽ không coi hồi quy là một bộ giải, mặc dù, ngôn ngữ có thể dự đoán có thể bị sử dụng sai và nhiều thói quen gần đúng được gọi là bộ giải . Ví dụ, gói phần mềm tối ưu hóa CUTEr chứa các thuật toán ít nhất là một số trong số đó dành cho các hệ thống quá hạn và một số trong số đó là các bộ giải, do đó, thật dễ dàng để nói, tôi đang tải xuống một "bộ giải". Cả hai phương pháp giải và hồi quy là ví dụ về phương pháp tối ưu hóa.


Tại sao hệ thống phải được xác định? Nó không thể được xác định trước? Ví dụ. gọi hầu hết bất kỳ thói quen giải quyết hệ thống tuyến tính trênx+y=1sẽ trả lại một giải pháp.
Matthew Gunn

@MatthewGunn Có lẽ, nhưng cho x+y=1 người ta có thể sử dụng một trình tạo số ngẫu nhiên bởi vì bất kỳ ngẫu nhiên x sẽ tạo ra một y. Bây giờ tôi cho rằng người ta có thể gọi một trình tạo số ngẫu nhiên là "người giải". Tuy nhiên, tôi nghĩ bạn sẽ thừa nhận, đó là một sự kéo dài để làm như vậy. Thông thường, một người giải sẽ làm một cái gì đó hữu cơ hơn với các số ngẫu nhiên, nếu nó hoàn toàn sử dụng chúng.
Carl

2
Một người giải quyết đưa ra một giải pháp. Nếu vấn đề là "GIẢI PHÁPx+y=1" sau đó x=1,y=0là một giải pháp và nó có thể trả về giải pháp đó (hoặc bất kỳ giải pháp nào khác)! Nói cách khác, Python lstsqkhông phải là người giải hệ thống tuyến tính bởi vì nó có thể giải quyết các hệ thống không xác định?
Matthew Gunn

@MatthewGunn Bên cạnh đó, các phương pháp hồi quy lặp có thể được lập trình để giải quyết các hệ thống xác định, nhưng, điều đó sẽ không làm cho chúng giải quyết được, vì công dụng chính của chúng là dành cho các hệ thống quá hạn.
Carl

1
vâng, tôi đồng ý tôi là người nông nổi và xin lỗi vì điều đó. Nếu tôi đang viết câu trả lời, tôi sẽ không bao gồm văn bản "cho các hệ thống xác định." Nếu không, câu trả lời tuyệt vời! (Ví dụ: một ví dụ khác ... người giải quyết các vấn đề thỏa mãn boolean hầu như luôn có vô số giải pháp và mục tiêu chỉ đơn giản là tìm ra một trong số chúng (trong những vấn đề đó, các hệ thống hầu như không được xác định).
Matthew Gunn

1

Tôi thường nghe "bộ giải" được sử dụng để mô tả phần mềm, có nghĩa là nó áp dụng cho việc triển khai cụ thể của một thuật toán. Ví dụ, điều này dường như áp dụng cho hầu hết các câu hỏi của người giải quyết SciComp.SE được gắn thẻ .

Nói chung, thuật ngữ này dường như được dành riêng cho các vấn đề toán học với "giải pháp được xác định rõ". Một giải pháp duy nhất sẽ đủ điều kiện là "được xác định rõ", như Sycorax đã lưu ý trong các bình luận. (Người giải quyết Gurobi dường như là vấn đề trong lớp này; vì giá trị của nó, Gurobi trông giống như một bộ hoặc thư viện của người giải quyết đối với tôi).

Nhưng tôi không nghĩ độc đáo là cần thiết . Ví dụ: các vấn đề tối ưu hóa cục bộ và toàn cầu có thể có các giải pháp được xác định rõ nhưng không duy nhất (ví dụ: hàmf[x]=sin[πx]2 có mức tối thiểu toàn cầu f[k]=0 cho kZ).

Tôi không đồng ý với câu trả lời này , dường như đang thảo luận về "bộ giải hệ phương trình" hơn là "bộ giải tối ưu hóa". Ví dụ, trong bình phương tối thiểu tuyến tính, bài toán đại số tuyến tính được xác định quá mức, nhưng bài toán tối ưu hóalồi , với một giải pháp duy nhất (trong trường hợp không suy biến). Cũng lưu ý rằng trang "bộ giải" Wikipedia được liên kết trong câu trả lời đó liệt kê "Các vấn đề tối ưu hóa tuyến tính và phi tuyến tính, các vấn đề về đường đi ngắn nhất, các vấn đề về cây kéo dài tối thiểu" trong số các ví dụ của nó.


Đáp lại bình luận, tôi sẽ nói rõ ý của tôi trong trường hợp "hồi quy".

Cho một chức năng F:RnRm, một giải pháp cho hệ phương trình được chỉ định bởi

F[x]=0
là một vectơ xRn sao cho tất cả m các thành phần của F[x]bằng không. Tùy theo chức năngF, không thể có giải pháp, một giải pháp duy nhất hoặc nhiều giải pháp (thường là vô số), tùy thuộc vào kích thước của không gian rỗng củaF. Trong trường hợpF là tuyến tính, tức là F[x]=Axb cho một số ARm×n,bRm, sau đó không có giải pháp nào có thể tồn tại trừ khi mrank[A]n.

Mặt khác cho một chức năng mục tiêu nhất định EF:RnRthiết lập khả thi ΩFRn, phụ thuộc vào F, một giải pháp cho vấn đề tối ưu hóa được chỉ định bởi

ϵ=minxΩFEF[x]
là một vectơ sao cho cho tất cả .xΩFEF[x]EF[y]yΩF

Trong tối ưu hóa "bình phương tối thiểu", hàm là tổng bình phương. Hai hầu hết các vấn đề chung bình phương nhỏ nhất là 1) nơi tương ứng với một overdetermined hệ phương trình, và 2) trong đó tương ứng với một hệ phương trình chưa xác định .EF

EF[x]=F[x]2 , ΩF=Rn
F
EF[x]=x2 , ΩF={yRn F[y]=0}
F

Các nền tảng đại số tuyến tính phổ biến, chẳng hạn như Matlab, có thể kết hợp ba vấn đề toán học riêng biệt này "dưới mui xe" trong hàm tiện lợi như linsolve () . Tuy nhiên, các thư viện cấp thấp ("người giải"), chẳng hạn như LAPACK , sẽ không.

Hai điểm cuối cùng của việc làm rõ:

  • Một "người giải" thường sẽ tương ứng với một vấn đề toán học được xác định rõ ràng nhưng trừu tượng . Ví dụ: "suy luận thống kê" hoặc "dự đoán thành công" không phải là vấn đề như vậy. Trong ngôn ngữ của Khoa học tính toán , bạn xác minh người giải, bạn xác nhận mô hình.

    • Các ý tưởng độc đáo / không độc đáo hoặc chính xác / gần đúng không hoàn toàn rõ ràng. Nói rằng chúng tôi chỉ tập trung vào trường hợp các hệ phương trình vuông, sẽ loại bỏ hầu hết các điểm tranh chấp. Rất phổ biến để nói về "người giải quyết lặp lại" trong lĩnh vực này (ví dụ: ~ 600.000 lượt truy cập trên Google Scholar ). Vì vậy, định nghĩa thực tế của "người giải" phải bao gồm lớp thuật toán này, theo định nghĩa về cơ bản là không chính xác.

Tuy nhiên, đối với bình phương tuyến tính tối thiểu bình thường . Giải pháp có thể là duy nhất, nhưng mang lại ước tính sai số ít nhất là , thường không phù hợp và thường không đồng ý với phương trình tạo bivariate sử dụng mô phỏng Monte Carlo trong khi hồi quy Deming tương quan kém hơn sẽ phục hồi dòng tạo cộng hoặc trừ hồi quy lỗi. OLS(x)OLS(y)y
Carl

Tôi cảm thấy rằng đó là một dịch vụ để gọi OLS tuyến tính trong ; một xấp xỉ chỉ có giá trị trong các điều kiện hạn chế thường bị bỏ qua là một "giải pháp" vì nó tồn tại một huyền thoại gây hiểu lầm. y
Carl

@Carl Tôi cập nhật để thử và làm rõ. Tôi không hiểu ý kiến ​​của bạn đầy đủ, nhưng dường như họ đang đề cập đến việc giải quyết các vấn đề "khoa học ứng dụng", chẳng hạn như suy luận thống kê hoặc dự đoán học máy. Theo kinh nghiệm của tôi (khá rộng trong khoa học tính toán), "người giải" được sử dụng để chỉ phần mềm giải quyết một vấn đề toán học thuần túy . Bạn có thể xác minh một người giải, nhưng điều này không giống như xác nhận một mô hình. Nếu bài toán khoa học ứng dụng của bạn không thỏa mãn các giả định của bài toán đã chọn, lỗi xác thực không phải do người giải.
GeoMatt22

Bạn là một cookie thông minh! Đừng bao giờ nghi ngờ điều đó. Tôi sẽ đọc qua câu trả lời của bạn và đóng góp nếu tôi có thể. Trong nhận xét của bạn ở trên, Người giải quyết có thể được xác nhận dễ dàng, hồi quy không quá dễ dàng. Bạn ngụ ý một nghịch lý, "khoa học không được áp dụng là gì?" Khoa học là kết quả của các giả thuyết thử nghiệm, bằng chứng hoặc thử nghiệm và sai sót. Trả lời, tất cả các khoa học được áp dụng.
Carl

Các thuật ngữ V & V là tiêu chuẩn, ví dụ: Xác minh, xác nhận và khả năng dự đoán trong kỹ thuật tính toán và vật lý "Tóm lại, xác minh là đánh giá độ chính xác của giải pháp đối với mô hình tính toán. Xác thực là đánh giá độ chính xác của mô phỏng tính toán bằng cách so sánh với Trong xác minh, mối quan hệ của mô phỏng với thế giới thực không phải là vấn đề. Trong xác nhận, mối quan hệ giữa tính toán và thế giới thực, tức là dữ liệu thực nghiệm, là vấn đề. "
GeoMatt22

0

Tôi nghĩ rằng trình giải từ xuất phát từ chức năng tương tự để giải một số giải pháp khả thi, vì trong phần bổ trợ của Bộ giải của Excel, tùy chọn "giá trị", cố gắng tìm sao cho và một số khác ràng buộc bình đẳng và bất bình đẳng. Trong toán học, hàm giải quyết tương tự.Xf(X)=Y

Tiếng Anh (đặc biệt là nhờ các phương tiện truyền thông của Hoa Kỳ) có xu hướng phát triển bởi những sai lầm được sao chép như 'cracker' ~ 'hacker'. Bộ giải có thể tương tự. Nó đủ trừu tượng để ẩn tên của các thuật toán tối ưu hóa thực tế. Thông thường các triển khai thực tế không hoàn toàn là một thuật toán đơn lẻ.

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.