Saya akan mulai dengan komentar umum: informasi urutan pertama (yaitu, hanya menggunakan gradien, yang menyandikan kemiringan) hanya dapat memberi Anda informasi arah: Ini dapat memberi tahu Anda bahwa nilai fungsi menurun dalam arah pencarian, tetapi tidak untuk berapa lama . Untuk memutuskan seberapa jauh untuk pergi sepanjang arah pencarian, Anda memerlukan informasi tambahan (gradient descent dengan panjang langkah konstan dapat gagal bahkan untuk masalah kuadrat cembung). Untuk ini, Anda pada dasarnya memiliki dua pilihan:
- Gunakan informasi urutan kedua (yang menyandikan kelengkungan), misalnya dengan menggunakan metode Newton alih-alih gradient descent (yang Anda selalu dapat menggunakan panjang langkah cukup dekat dengan minimizer).1
- Trial and error (maksud saya menggunakan pencarian baris yang tepat seperti Armijo).
Jika, saat Anda menulis, Anda tidak memiliki akses ke turunan kedua, dan mengevaluasi fungsi objektif sangat mahal, satu-satunya harapan Anda adalah untuk berkompromi: gunakan informasi perkiraan tingkat kedua yang cukup untuk mendapatkan panjang langkah kandidat yang baik sehingga garis pencarian hanya memerlukan evaluasi (yaitu, paling banyak kelipatan konstan (kecil) dari upaya yang Anda perlukan untuk mengevaluasi gradien Anda).O(1)
Salah satu kemungkinan adalah menggunakan panjang langkah Barzilai - Borwein (lihat, misalnya, Fletcher: Pada metode Barzilai-Borwein . Optimasi dan kontrol dengan aplikasi, 235–256, Optimasi Aplikasi, 96, Springer, New York, 2005 ). Idenya adalah untuk menggunakan perkiraan perbedaan yang terbatas dari kelengkungan di sepanjang arah pencarian untuk mendapatkan perkiraan ukuran langkah. Secara khusus, pilih sewenang-wenang, atur dan kemudian untuk :g 0 :α0>0k = 0 , . . .g0:=∇f(x0)k=0,...
- Set danx k + 1 = x k + s ksk=−α−1kgkxk+1=xk+sk
- Evaluasi dan sety k = g k + 1 - g kgk+1=∇f(xk+1)yk=gk+1−gk
- Setαk+1=(yk)Tyk(yk)Tsk
Pilihan ini dapat ditunjukkan untuk menyatu (dalam praktik sangat cepat) untuk fungsi kuadrat, tetapi konvergensi bukan monoton (yaitu, nilai fungsi dapat lebih besar dari , tetapi hanya sesekali; lihat plot pada halaman 10 di kertas Fletcher). Untuk fungsi non-kuadrat, Anda perlu menggabungkan ini dengan pencarian garis, yang perlu dimodifikasi untuk menangani non-monotonicity. Salah satu kemungkinan adalah memilih (misalnya, dengan menelusuri ulang) sedemikian rupa sehingga
mana adalah parameter Armijo khas danf ( x k ) σ k ∈ ( 0 , α - 1 k ) f ( x k - σ k g k ) ≤ maks maks ( k - M , 1 ) ≤ j ≤ k f ( x j ) - γ σ k ( g k ) Tf(xk+1)f(xk)σk∈(0,α−1k)
f(xk−σkgk)≤maxmax(k−M,1)≤j≤kf(xj)−γσk(gk)Tgk,
M M = 10γ∈(0,1)Mmengontrol tingkat monotonitas (mis., ). Ada juga varian yang menggunakan nilai gradien alih-alih nilai fungsi, tetapi dalam kasus Anda gradien bahkan lebih mahal untuk dievaluasi daripada fungsinya, sehingga tidak masuk akal di sini. (Catatan: Anda tentu saja dapat mencoba secara membabi buta menerima panjang langkah BB dan memercayai keberuntungan Anda, tetapi jika Anda membutuhkan segala jenis kekuatan - seperti yang Anda tulis dalam komentar Anda - itu akan menjadi ide yang sangat buruk.)
M=10
Alternatif (dan, menurut saya, jauh lebih baik) pendekatan akan menggunakan pendekatan perbedaan hingga ini sudah dalam perhitungan arah pencarian; ini disebut metode kuasi-Newton . Idenya adalah untuk secara bertahap membangun perkiraan Hessian dengan menggunakan perbedaan gradien. Misalnya, Anda dapat mengambil (matriks identitas) dan untuk menyelesaikan
dan set
dengan seperti di atas dan . (Ini disebut pembaruan Broyden∇2f(xk)H0=Idk=0,…
Hksk=−gk,(1)
ykxk+1=xk+skHk+1=Hk+(yk−Hksk)T(sk)T(sk)Tsk
ykxk+1=xk+skdan jarang digunakan dalam praktik; pembaruan yang lebih baik tetapi sedikit lebih rumit adalah pembaruan
BFGS , di mana - dan lebih banyak informasi - saya merujuk pada buku Nocedal dan Wright's
Numerical Optimization .) Kelemahannya adalah a) ini akan membutuhkan penyelesaian sistem linear pada setiap langkah (tetapi hanya dari ukuran yang tidak diketahui yang dalam kasus Anda merupakan kondisi awal, maka upaya tersebut harus didominasi oleh pemecahan PDE untuk mendapatkan gradien, juga, ada aturan pembaruan untuk perkiraan Hessian
terbalik , yang hanya memerlukan komputasi matriks tunggal -Vektor produk) dan b) Anda masih memerlukan pencarian garis untuk menjamin konvergensi ...
Untungnya, dalam konteks ini terdapat pendekatan alternatif yang memanfaatkan setiap evaluasi fungsi. Idenya adalah bahwa untuk simetris dan pasti positif (yang dijamin untuk pembaruan BFGS), menyelesaikan setara dengan meminimalkan model kuadratik
Dalam metode wilayah kepercayaan , Anda akan melakukannya dengan kendala tambahan yang , di mana adalah radius wilayah trust yang dipilih dengan tepat (yang memainkan peran sebagai panjang langkah ). Gagasan kuncinya adalah sekarang untuk memilih jari-jari ini secara adaptif, berdasarkan langkah yang dihitung. Secara khusus, Anda melihat rasionya
(1)Hk(1)
qk(s)=12sTHks+sTgk.
∥s∥≤ΔkΔkσkρk:=f(xk)−f(xk+sk)f(xk)−qk(sk)
dari pengurangan aktual dan nilai fungsi yang diprediksi. Jika sangat kecil, model Anda buruk, dan Anda membuang dan coba lagi dengan . Jika mendekati , model Anda baik, dan Anda mengatur dan meningkatkan . Kalau tidak, Anda hanya mengatur dan meninggalkan sendirian. Untuk menghitung minimalizer dari
ρkskΔk+1<Δkρk1xk+1=xk+skΔk+1>Δkxk+1=xk+skΔkskmin∥s∥≤Δkqk(s), terdapat beberapa strategi untuk menghindari keharusan menyelesaikan masalah optimisasi terbatas penuh; favorit saya adalah
metode CG terpotong Steihaug . Untuk lebih jelasnya, saya kembali merujuk ke Nocedal dan Wright.