Giảm thiểu một chức năng giống như cố gắng tìm điểm thấp nhất trên bề mặt. Hãy suy nghĩ về bản thân bạn đi trên một bề mặt đồi núi và bạn đang cố gắng để đạt đến điểm thấp nhất. Bạn sẽ tìm thấy hướng đi xuống dốc và đi bộ cho đến khi nó không đi xuống dốc nữa. Sau đó, bạn sẽ chọn một hướng mới mà đi xuống dốc và đi theo hướng đó cho đến khi nó không đi xuống dốc nữa, và như vậy. Cuối cùng (hy vọng) bạn sẽ đạt đến một điểm mà không có hướng đi xuống dốc nữa. Sau đó, bạn sẽ ở mức tối thiểu (địa phương).
Thuật toán LM và nhiều thuật toán giảm thiểu khác, sử dụng lược đồ này.
Giả sử rằng hàm được giảm thiểu là F và chúng ta đang ở điểm x (n) trong lần lặp của chúng ta. Chúng tôi muốn tìm lần lặp tiếp theo x (n + 1) sao cho F (x (n + 1)) < F (x (n)), tức là giá trị hàm nhỏ hơn. Để chọn x (n + 1), chúng ta cần hai thứ, một hướng từ x (n) và kích thước bước (khoảng cách đi theo hướng đó). Thuật toán LM xác định các giá trị này như sau:
Đầu tiên, tính toán xấp xỉ tuyến tính với F tại điểm x (n). Thật dễ dàng để tìm ra hướng xuống dốc của một hàm tuyến tính, vì vậy chúng tôi sử dụng hàm xấp xỉ tuyến tính để xác định hướng xuống dốc. Tiếp theo, chúng ta cần biết chúng ta có thể đi được bao xa theo hướng được chọn này. Nếu hàm tuyến tính xấp xỉ của chúng ta là một xấp xỉ tốt cho F cho một vùng rộng xung quanh x (n), thì chúng ta có thể thực hiện một bước khá lớn. Nếu đó là một xấp xỉ tốt chỉ rất gần với x (n), sau đó chúng tôi có thể chỉ mất một bước rất nhỏ. Đây là những gì LM làm - tính toán một xấp xỉ tuyến tính với F tại x (n), do đó đưa ra hướng xuống dốc, sau đó nó tìm ra cách lớn một bước để thực hiện dựa trên chức năng tuyến tính xấp xỉ F tại x (như thế nào) n). LM tìm ra cách hàm xấp xỉ tốt như thế nào về cơ bản là thực hiện một bước theo hướng do đó xác định và so sánh mức xấp xỉ tuyến tính với F giảm xuống bao nhiêu mà hàm F thực tế giảm. Nếu chúng ở gần, hàm gần đúng là tốt và chúng ta có thể thực hiện một bước lớn hơn một chút. Nếu chúng không đóng thì hàm gần đúng là không tốt và chúng ta nên lùi lại và thực hiện một bước nhỏ hơn.
Nguồn
2009-10-30 19:27:03
Bạn đã thành công trong việc triển khai thuật toán này trong OpenCL chưa? Tôi cũng sẽ rất thích thú. – Dan
Tôi vừa viết xong về nó theo cách dễ hiểu. Liên kết bên dưới bao gồm toàn bộ quá trình tiến hóa của 5 thuật toán tối ưu hóa kết thúc bằng LAM. Tôi đã sử dụng một số phép so sánh từ các môn thể thao trượt tuyết để làm cho nó dễ hiểu hơn. http://stackoverflow.com/a/22394465/457687 – Vlad