Mam funkcję celu zależy od wartości , gdzie jest rozwiązaniem dla PDE. Optymalizujęprzez opadanie gradientu w początkowym stanie PDE:. To znaczy aktualizujęa następnie muszę zintegrować PDE, aby obliczyć resztę. Oznacza to, że gdybym szukał linii dla wielkości kroku spadku gradientu (nazwij to), dla każdej potencjalnej wartości Musiałbym ponownie zintegrować PDE.
W moim przypadku byłoby to zbyt drogie. Czy istnieje inna opcja adaptacyjnego rozmiaru kroku spadku gradientu?
Nie szukam tu tylko schematów matematycznych (choć oczywiście lepiej, jeśli coś istnieje), ale byłbym zadowolony ze wszystkiego, co jest ogólnie lepsze niż statyczny rozmiar kroku.
Dzięki!
optimization
pde
conjugate-gradient
NLi10Me
źródło
źródło
Odpowiedzi:
Zacznę od ogólnej uwagi: informacje pierwszego rzędu (tj. Użycie tylko gradientów, które kodują nachylenie) mogą dać tylko informacje kierunkowe: mogą powiedzieć, że wartość funkcji maleje w kierunku wyszukiwania, ale nie na jak długo . Aby zdecydować, jak daleko iść w kierunku wyszukiwania, potrzebujesz dodatkowych informacji (opadanie gradientu ze stałymi długościami kroków może się nie powieść nawet w przypadku wypukłych problemów kwadratowych). W tym celu masz zasadniczo dwie możliwości:
Jeśli, jak piszesz, nie masz dostępu do drugich pochodnych, a ocena funkcji obejctive jest bardzo droga, jedyną nadzieją jest kompromis: użyj wystarczającej przybliżonej informacji drugiego rzędu, aby uzyskać odpowiednią długość kroku kandydata, na przykład linię szukaj tylkoO(1) oceny (tj. co najwyżej (mała) stała wielokrotność wysiłku potrzebnego do oceny gradientu).
Jedną z możliwości jest zastosowanie długości kroku Barzilai - Borwein (patrz np. Fletcher: W metodzie Barzilai-Borwein . Optymalizacja i kontrola za pomocą aplikacji, 235–256, Appl. Optim., 96, Springer, New York, 2005 ). Chodzi o to, aby użyć przybliżenia skończonej różnicy krzywizny wzdłuż kierunku wyszukiwania, aby uzyskać oszacowanie wielkości kroku. W szczególności wybierzα0>0 dowolne, ustawione g0:=∇f(x0) a następnie dla k=0,... :
Ten wybór można wykazać jako zbieżny (w praktyce bardzo szybko) dla funkcji kwadratowych, ale zbieżność nie jest monotoniczna (tj. Wartość funkcjif(xk+1) może być większy niż f(xk) , ale tylko raz na jakiś czas; patrz wykres na stronie 10 w pracy Fletchera). W przypadku funkcji niekwadratowych należy połączyć to z wyszukiwaniem linii, które należy zmodyfikować, aby poradzić sobie z niemonotonicznością. Jedną z możliwości jest wybórσk∈(0,α−1k) (np. przez cofanie), takie jak
Alternatywnym (i moim zdaniem znacznie lepszym) podejściem byłoby zastosowanie tego przybliżenia różnic skończonych już w obliczeniach kierunku wyszukiwania; nazywa się to metodą quasi-Newtona . Chodzi o stopniowe budowanie przybliżenia Hesji przy użyciu różnic gradientów. Na przykład możesz wziąć (macierz tożsamości), a dla rozwiązują i ustaw pomocą jak wyżej i . (To się nazywa aktualizacja Broyden∇2f(xk) H0=Id k=0,…
Na szczęście w tym kontekście istnieje alternatywne podejście, które wykorzystuje każdą ocenę funkcji. Chodzi o to, że dla symetryczny i dodatni określony (co jest gwarantowane w przypadku aktualizacji BFGS) rozwiązanie jest równoważne zminimalizowaniu modelu kwadratowego W metodzie regionu zaufania zrobiłbyś to z dodatkowym ograniczeniem, że , gdzie jest odpowiednio wybranym promieniem regionu zaufania (który odgrywa rolę długości kroku ). Kluczową ideą jest teraz, aby wybrać ten promień adaptacyjnie, w oparciu o obliczony krok. W szczególności patrzysz na stosunekHk (1)
źródło