Nếu người Hessian rất tốt để tối ưu hóa (xem ví dụ phương pháp của Newton ), tại sao dừng lại ở đó? Chúng ta hãy sử dụng các dẫn xuất thứ ba, thứ tư, thứ năm và thứ sáu? Tại sao không?
Nếu người Hessian rất tốt để tối ưu hóa (xem ví dụ phương pháp của Newton ), tại sao dừng lại ở đó? Chúng ta hãy sử dụng các dẫn xuất thứ ba, thứ tư, thứ năm và thứ sáu? Tại sao không?
Câu trả lời:
Tôi đang diễn giải câu hỏi là "Tại sao phương pháp của Newton chỉ sử dụng các đạo hàm thứ nhất và thứ hai, chứ không phải các đạo hàm thứ ba hoặc cao hơn?"
Trên thực tế, trong nhiều trường hợp, đi đến đạo hàm thứ ba sẽ giúp ích; Tôi đã làm nó với các công cụ tùy chỉnh trước đây. Tuy nhiên, nói chung, đi đến các công cụ phái sinh cao hơn làm tăng độ phức tạp tính toán - bạn phải tìm và tính toán tất cả các công cụ phái sinh đó, và đối với các vấn đề đa biến, có nhiều công cụ phái sinh thứ ba hơn nhiều so với các công cụ phái sinh đầu tiên! - điều đó vượt xa số tiền tiết kiệm trong số bước bạn nhận được, nếu có. Ví dụ: nếu tôi gặp vấn đề 3 chiều, tôi có 3 đạo hàm đầu tiên, 6 đạo hàm thứ hai và 10 đạo hàm thứ ba, do đó, đến phiên bản bậc ba nhiều hơn gấp đôi số lượng đánh giá tôi phải thực hiện (từ 9 đến 19), chưa kể đến sự phức tạp gia tăng của việc tính toán hướng / kích thước bước một khi tôi đã thực hiện các đánh giá đó, nhưng gần như chắc chắn sẽ không cắt giảm số bước tôi phải thực hiện một nửa.
Bây giờ, trong trường hợp chung với biến, tập hợp các đạo hàm riêng của n t h sẽ đánh số , do đó, đối với một vấn đề với năm biến, tổng số thứ ba, thứ tư và các đạo hàm riêng thứ năm sẽ bằng 231, tăng hơn 10 lần so với số các đạo hàm riêng thứ nhất và thứ hai (20). Bạn sẽ phải có một vấn đề rất, rất gần với đa thức bậc 5 trong các biến để thấy mức giảm đủ lớn trong số lần lặp để bù cho gánh nặng tính toán thêm đó.
Tôi thực sự không thấy khía cạnh thống kê của câu hỏi này là gì, vì vậy tôi sẽ trả lời phần tối ưu hóa.
Khá nhiều mỗi câu trả lời ở đây là chỉ tập trung vào chi phí lặp và lờ đi lặp đếm . Nhưng cả hai đều quan trọng. Một phương pháp lặp lại trong 1 nano giây nhưng phải mất lần lặp để hội tụ sẽ không giúp ích gì cho bạn. Và một phương pháp làm nổ tung sẽ không giúp được gì, cho dù chi phí lặp lại của nó rẻ thế nào.
Hãy tìm hiểu những gì đang xảy ra.
Một phần vì (và điều này cũng đúng với thứ tự 2, nhưng nhiều hơn về điều đó một chút):
Mặt khác, chúng nổ tung dễ dàng hơn khi chúng ở xa hơn mức tối ưu!
(Tất nhiên, đây không phải là luôn luôn đúng, ví dụ như một bậc hai sẽ hội tụ trong 1 bước với phương pháp của Newton Nhưng đối với các chức năng tùy ý trong thế giới thực mà không có đặc tính tốt đẹp, đây là. Nói chung là đúng.)
Điều này có nghĩa là khi bạn ở xa mức tối ưu, bạn thường muốn có một phương thức bậc thấp (đọc: bậc nhất). Chỉ khi bạn ở gần, bạn mới muốn tăng thứ tự của phương thức.
Để xem tại sao, trước tiên bạn phải hiểu "hội tụ bậc hai" nghĩa là gì .
Về mặt toán học, hội tụ bậc hai có nghĩa là, nếu là lỗi của bạn khi lặp k , thì cuối cùng sau đây đúng với một số hằng số c :
Trong tiếng Anh đơn giản, điều này có nghĩa là, một khi bạn ở gần mức tối ưu (quan trọng!), Mỗi bước thêm sẽ nhân đôi số chữ số chính xác .
Tại sao? Thật dễ dàng để xem với một ví dụ: cho và | ϵ 1 | = 0,1 , bạn có | ϵ 2 | ≤ 0,01 , | ϵ 3 | ≤ 0,0001 , v.v ... nhanh đến mức nực cười . (Đó là siêu cấp số nhân !)
Trên thực tế, mọi người thường làm điều này khi các công cụ phái sinh bậc hai trở nên quá đắt đỏ. Nhưng hội tụ tuyến tính có thể rất chậm. ví dụ: nếu bạn có thì bạn cần khoảng 10.000.000 lần lặp với hội tụ tuyến tính để có được | ϵ | < 0,5 , nhưng chỉ có 23 lần lặp với hội tụ bậc hai. Vì vậy, bạn có thể thấy tại sao có sự khác biệt lớn giữa sự hội tụ tuyến tính và bậc hai. Điều này không đúng với sự hội tụ bậc 2 và bậc 3, ví dụ (xem đoạn tiếp theo).
Tại thời điểm này, nếu bạn biết bất kỳ ngành khoa học máy tính nào, bạn hiểu rằng với sự hội tụ bậc 2, vấn đề đã được giải quyết . Nếu bạn không thấy lý do tại sao, thì đây là lý do: không có gì thực tế để đạt được từ việc tăng gấp ba số chữ số mỗi lần lặp thay vì nhân đôi số đó, nó sẽ mua gì cho bạn? Rốt cuộc, trong một máy tính, ngay cả một double
số chính xác cũng có 52 bit chính xác, khoảng 16 chữ số thập phân.
Có thể nó sẽ giảm số bước bạn yêu cầu từ 16 xuống còn 3 ... nghe có vẻ tuyệt vời, cho đến khi bạn nhận ra rằng nó phải trả giá khi phải tính toán các dẫn xuất thứ ba ở mỗi lần lặp, đó là lời nguyền của chiềuđánh bạn mạnh Đối với một vấn đề chiều, bạn chỉ cần trả một yếu tố của 6 để đạt được một yếu tố của ≈ 5 , đó là câm. Và trong thế giới thực, các vấn đề có ít nhất hàng trăm chiều (hoặc thậm chí hàng nghìn hoặc thậm chí hàng triệu), không chỉ 6 ! Vì vậy, bạn có được hệ số có thể là 20 bằng cách trả một nhân tố, ví dụ, 20.000 ... hầu như không phải là một sự đánh đổi khôn ngoan.
Một nửa khác là bạn thường có hành vi tồi tệ hơn khi bạn ở xa mức tối ưu, điều này thường ảnh hưởng xấu đến số lần lặp bạn phải làm.
Trong một thiết lập chung, các phương thức bậc cao hơn 2 là một ý tưởng tồi. Tất nhiên, nếu bạn có thể mang lại những giả định hữu ích bổ sung để bàn (ví dụ có lẽ dữ liệu của bạn không giống như một đa thức cao độ, hoặc bạn có cách bounding vị trí của tối ưu, vv), thì có lẽ bạn có thể thấy rằng họ là một ý tưởng hay, nhưng đó sẽ là một quyết định dành riêng cho vấn đề và không phải là một quy tắc chung để sống theo.
Thông thường, sự đánh đổi không thuận lợi cho việc đi sau cao hơn Hessian. Ý tôi là sự đánh đổi giữa mức tăng tiềm năng về tốc độ thông qua việc sử dụng xấp xỉ bậc cao hơn so với khuếch đại nhiễu. Bạn luôn có tiếng ồn trong đầu vào vì chúng ta đang nói về các ứng dụng thống kê. Tiếng ồn này sẽ được khuếch đại bởi các dẫn xuất.
Nếu bạn chơi golf thì sự tương tự trong tối ưu hóa là trước tiên hãy cố gắng để chuyển sang màu xanh lá cây, không phải lo lắng nhiều về một lỗ. Một lần, trên green, chúng ta sẽ nhắm vào một cái lỗ.
Thông thường, khi bạn phân tích tính hiệu quả của các thuật toán đó, bạn sẽ tìm thấy các kết quả như một bước của thuật toán bậc bốn có hiệu quả gần tương đương với hai bước của thuật toán bậc hai.
Vì vậy, việc lựa chọn sử dụng thuật toán nào là tương đối đơn giản: nếu một bước của thuật toán bậc bốn mất gấp đôi công việc hoặc nhiều hơn một bước của thuật toán bậc hai, bạn nên sử dụng thuật toán thứ hai thay thế.
Đó là tình huống điển hình cho các loại phương pháp này: thuật toán cổ điển có tỷ lệ hiệu quả công việc tối ưu cho các vấn đề chung. Mặc dù đôi khi có một số vấn đề trong đó cách tiếp cận bậc cao dễ tính toán hơn và có thể vượt trội hơn so với biến thể cổ điển, nhưng chúng tương đối không phổ biến.
Bạn có thể nghĩ về thứ tự của các đạo hàm là thứ tự của một xấp xỉ đa thức cho hàm. Hầu hết các thói quen tối ưu hóa đều dựa vào độ lồi. Một đa thức bậc hai sẽ lồi / lõm ở mọi nơi trong khi đa thức bậc 3 hoặc cao hơn sẽ không bị lồi ở mọi nơi. Hầu hết các thói quen tối ưu hóa dựa trên các xấp xỉ liên tiếp của các hàm lồi với tứ giác vì lý do này. Một phép tính gần đúng bậc hai là lồi đòi hỏi một điều kiện xác định dương được áp đặt để bậc hai được lồi.
Tại sao mô hình đơn hàng thứ 3 có thể có lợi? Ví dụ, vì đạo hàm gần bằng 0 theo hướng này về cơ bản có nghĩa là hai kịch bản thay thế: cao nguyên hoặc điểm uốn - chỉ trước đây yêu cầu kích thước bước lớn hơn và đạo hàm thứ 3 cho phép phân biệt chúng.
Tôi tin rằng chúng ta sẽ hướng tới các phương pháp đa thứ tự lai: Phương pháp bậc 2 trong không gian con chiều thấp, ví dụ từ PCA của các gradient gần đây, những gì vẫn cho phép giảm độ dốc đồng thời bậc 1 miễn phí xuống một phần của trực giao gradient cho không gian con này ... và thêm vào đó Tôi sẽ thêm ví dụ mô hình thứ 3 cho một hướng phù hợp nhất.