Genel bir açıklama ile başlayacağım: birinci dereceden bilgi (yani, eğimi kodlayan degradeleri kullanmak) size sadece yönlü bilgi verebilir: Size fonksiyon değerinin arama yönünde azaldığını söyleyebilir, ancak ne kadar süreyle değil . Arama yönü boyunca ne kadar ilerleyeceğinize karar vermek için ekstra bilgiye ihtiyacınız vardır (dışbükey ikinci dereceden problemlerde bile sabit adım uzunluklu gradyan inişi başarısız olabilir). Bunun için temel olarak iki seçeneğiniz var:
- Kullanım ikinci dereceden bilgi Newton yöntemi yerine gradyan (kendisi için her zaman adım uzunluğunu kullanarak kullanılarak (örneğin, eğrilik kodlayan), yeterince yakın asgarileştirir için).1
- Deneme yanılma (tabii ki Armijo gibi uygun bir çizgi arama kullanarak demek istedim ).
Yazarken, ikinci türevlere erişiminiz yoksa ve obejctive fonksiyonunu değerlendirmek çok pahalıysa, tek umudunuz uzlaşmaktır: iyi bir aday adım uzunluğu elde etmek için yeterli yaklaşık ikinci dereceden bilgi kullanın. arama yalnızca değerlendirmeye ihtiyaç duyar (yani, gradyanızı değerlendirmek için gereken çabanın en fazla (küçük) sabit bir katı).O(1)
Bir olasılık Barzilai - Borwein basamak uzunluklarını kullanmaktır (bakınız örn. Fletcher: Barzilai-Borwein yönteminde . Uygulamalarla optimizasyon ve kontrol, 235–256, Appl. Optim., 96, Springer, New York, 2005 ). Fikir, adım boyutu hakkında bir tahmin elde etmek için eğriye arama yönü boyunca sonlu bir fark yaklaşımı kullanmaktır. Özellikle, keyfi seçin, ve ardından için :α0>0g0:=∇f(x0)k=0,...
- Takım vesk=−α−1kgkxk+1=xk+sk
- değerlendirin vegk+1=∇f(xk+1)yk=gk+1−gk
- Takımαk+1=(yk)Tyk(yk)Tsk
Bu seçim (çok hızlı pratikte) kuadratik fonksiyonlar için yakınsama gösterilmiştir fakat yakınsama edilebilir değil yani fonksiyon değeri (monoton daha büyük olabilir , ancak arada bir; 10. sayfadaki Fletcher'ın belgesine bakınız). Karesel olmayan işlevler için, bunu tekdüze olmayanlarla başa çıkmak için değiştirilmesi gereken bir satır aramasıyla birleştirmeniz gerekir. Bir olasılık seçmektir (örneğin, geri izleme ile), böylece
burada tipik Armijo parametresi vef(xk+1)f(xk)σk∈(0,α−1k)
f(xk−σkgk)≤maxmax(k−M,1)≤j≤kf(xj)−γσk(gk)Tgk,
γ∈(0,1)Mmonotonite derecesini kontrol eder (örneğin, ). Ayrıca işlev değerleri yerine degrade değerleri kullanan bir varyant da vardır, ancak durumunuzda degradeyi değerlendirmek işlevden daha pahalıdır, bu nedenle burada bir anlam ifade etmez. (Not: Elbette BB adım uzunluklarını körü körüne kabul etmeye ve şansınıza güvenmeye çalışabilirsiniz, ancak herhangi bir sağlamlığa ihtiyacınız varsa - yorumlarınızda yazdığınız gibi - bu gerçekten kötü bir fikir olacaktır.)
M=10
Alternatif (ve bence çok daha iyi) bir yaklaşım, bu sonlu fark yaklaşımını zaten arama yönünün hesaplanmasında kullanmak olacaktır; buna yarı Newton yöntemi denir . Fikir, gradyan farklılıklarını kullanarak Hessian kademeli olarak bir yaklaştırılmasıdır . Örneğin, sürebilir (kimlik matrisi) ve için çözmek
ve
ile yukarıdaki gibi ve . (Buna Broyden güncellemesi denir∇2f(xk)H0=Idk=0,…
Hksk=−gk,(1)
Hk+1=Hk+(yk−Hksk)T(sk)T(sk)Tsk
ykxk+1=xk+skve pratikte nadiren kullanılır; daha iyi ama biraz daha karmaşık bir güncelleme,
BFGS güncellemesidir , bunun için - ve daha fazla bilgi - Nocedal ve Wright'ın
Sayısal Optimizasyon kitabına atıfta bulunuyorum .) Dezavantajı, a) bunun her adımda doğrusal bir sistemin çözülmesini gerektireceği (ancak sadece sizin durumunuzda bir başlangıç koşulu olan bilinmeyenin büyüklüğünde, bu nedenle degradeyi elde etmek için PDE'leri çözerek çabaya egemen olunmalıdır; ayrıca, sadece tek bir matrisin hesaplanmasını gerektiren
ters Hessian'ın yaklaşımları için güncelleme kuralları vardır. -vektör ürünü) ve b) yakınsamayı garanti etmek için hala bir satır araması yapmanız gerekir ...
Neyse ki, bu bağlamda her fonksiyon değerlendirmesini kullanan alternatif bir yaklaşım vardır. Buradaki fikir, simetrik ve pozitif kesin (BFGS güncellemesi için garanti edilen) için çözümünün, modelini en aza indirmeye eşdeğer olmasıdır.
Bir güven bölgesi yönteminde , bunu ; burada uygun şekilde seçilmiş bir güven bölgesi yarıçapıdır (adım uzunluğunun rolünü oynar ). Ana fikir, bu yarıçapı hesaplanan adıma göre uyarlamalı olarak seçmektir. Özellikle, orana bakıyorsunuz
Hk(1)
qk(s)=12sTHks+sTgk.
∥s∥≤ΔkΔkσkρk:=f(xk)−f(xk+sk)f(xk)−qk(sk)
işlev değerinde gerçek ve tahmin edilen azalma. Eğer çok küçüktür, modeliniz kötüydü ve atmak ve tekrar deneyin . Eğer yakındır , modeliniz iyi ve ayarladığınız ve artış . Aksi takdirde, sadece yalnız bırakın . gerçek küçültücü değerini hesaplamak için
ρkskΔk+1<Δkρk1xk+1=xk+skΔk+1>Δkxk+1=xk+skΔkskmin∥s∥≤Δkqk(s), tam kısıtlı optimizasyon sorununu çözmek zorunda kalmamak için çeşitli stratejiler vardır; benim favorim
Steihaug'un kesilmiş CG yöntemidir . Daha fazla ayrıntı için tekrar Nocedal ve Wright'a başvuruyorum.