Rozmiar kroku opadającego gradientu adaptacyjnego, gdy nie można przeprowadzić wyszukiwania linii

9

Mam funkcję celu E zależy od wartości ϕ(x,t=1.0), gdzie ϕ(x,t)jest rozwiązaniem dla PDE. OptymalizujęEprzez opadanie gradientu w początkowym stanie PDE:ϕ(x,t=0.0). To znaczy aktualizujęϕ(x,t=0.0)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!

NLi10Me
źródło
Nie sądzę, żebym chciał w tej chwili zmodyfikować sposób integracji PDE, ponieważ dla mnie byłoby to poważne przepisanie kodu. Poza tym PDE nie jest trudne, ponieważ muszę go rozwiązać na bardzo gęstej siatce w czasoprzestrzeni, ponieważ wymagam bardzo dużej dokładności numerycznej.
NLi10Me
Z drugiej strony metoda BB (której nie znałem) wydaje się całkiem dobra; wszystko, co muszę zrobić, to śledzić stan i gradient poprzedniej iteracji i otrzymuję przybliżenie drugiego rzędu ... to wydaje się bardzo miłe. Jednak wyprowadzenie zakłada kwadrat wypukły, a mój problem prawie na pewno nie jest. Chociaż z pewnością znajduję (i jestem zadowolony) z minimów lokalnych zamiast globalnych. Czy wiesz, jak dobrze BB radził sobie z problemami o bardzo dużych wymiarach?
NLi10Me
Chyba chodziło mi o lokalne minima, że ​​w sąsiedztwie lokalnego minimum żadna funkcja nie jest w przybliżeniu kwadratowa? Myślę, że mój stan początkowyϕ(0)(x,t=0.0)jest wystarczająco bliski minimum, ponieważ w wielu przypadkach uzyskuję płynną zbieżność nawet przy statycznym rozmiarze kroku. Tak więc, mimo że ma bardzo duże wymiary, i ogólnie biorąc pod uwagę całą przestrzeń poszukiwań, problem nie jest wypukły / niekwadratowy, czy BB nadal może być dobrym wyborem bez przeszukiwania linii?
NLi10Me
Inne „składniki” do E są eksperymentalnymi danymi obrazu. ϕ(x,t=1.0)próbuje dopasować jeden obraz, aby „dopasować” do drugiego (mierzony za pomocą funkcji dopasowania, takiej jak norma L2 zintegrowana z wokselami). W przypadku niektórych par obrazów uzyskuję płynną zbieżność z (moim obecnym wyborem) statycznym rozmiarem kroku. W przypadku innych par obrazów mam dużo oscylacji. System musi być w pełni zautomatyzowany, więc nie mogę cofnąć się i ręcznie edytować rozmiaru kroku dla kłopotliwych par obrazów.
NLi10Me
Racja, muszę rozwiązać system przylegania, aby uzyskać gradient (który jest paskudniejszy i zajmuje więcej czasu). Ok, myślę, że spróbuję BB z wyszukiwaniem linii powrotnej. Dziękuję bardzo za radę; moi doradcy są często trudni do zdobycia i wielu z nich nie jest zainteresowanych wdrożeniem tak bardzo jak sam model. Uważam, że metody numeryczne są kluczowym elementem do wykazania, czy model jest dobry, czy nie, więc dzięki jeszcze raz bardzo to doceniam.
NLi10Me

Odpowiedzi:

15

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:

  1. Użyj informacji drugiego rzędu (która koduje krzywiznę), na przykład stosując metodę Newtona zamiast spadku gradientu (dla którego zawsze możesz użyć długości kroku1 wystarczająco blisko minimizatora).
  2. Próba i błąd (przez co oczywiście mam na myśli właściwe wyszukiwanie linii, takie jak Armijo).

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 tylko O(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,...:

  1. Zestaw sk=αk1gk i xk+1=xk+sk
  2. Oceniać gk+1=f(xk+1) i nastaw yk=gk+1gk
  3. Zestaw αk+1=(yk)Tyk(yk)Tsk

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,αk1) (np. przez cofanie), takie jak

f(xkσkgk)maxmax(kM,1)jkf(xj)γσk(gk)Tgk,
gdzie jest typowym parametrem Armijo, a kontroluje stopień monotoniczności (np. ). Istnieje również wariant, który używa wartości gradientu zamiast wartości funkcji, ale w twoim przypadku gradient jest nawet droższy do oceny niż funkcja, więc nie ma to sensu. (Uwaga: Możesz oczywiście spróbować ślepo zaakceptować długość kroku BB i zaufać swojemu szczęściu, ale jeśli potrzebujesz jakiejkolwiek solidności - jak napisałeś w komentarzach - byłby to naprawdę zły pomysł).γ(0,1)MM=10

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 Broyden2f(xk)H0=Idk=0,

(1)Hksk=gk,
Hk+1=Hk+(ykHksk)T(sk)T(sk)Tsk
ykxk+1=xk+ski jest rzadko stosowany w praktyce; lepszą, ale nieco bardziej skomplikowaną aktualizacją jest aktualizacja BFGS , do której - i więcej informacji - odnoszę się do książki Nocedal i Wrighta pt . Optymalizacja numeryczna .) Minusem jest to, że a) wymagałoby to rozwiązania systemu liniowego na każdym etapie (ale tylko wielkości nieznanej, co w twoim przypadku jest warunkiem początkowym, dlatego wysiłek powinien być zdominowany przez rozwiązywanie PDE w celu uzyskania gradientu; istnieją też zasady aktualizacji przybliżeń odwrotnego Hesji, które wymagają obliczenia tylko jednej macierzy - produkt wektorowy) ib) nadal potrzebujesz wyszukiwania linii, aby zagwarantować zbieżność ...

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 stosunek Hk(1)

qk(s)=12sTHks+sTgk.
sΔkΔkσk
ρk:=f(xk)f(xk+sk)f(xk)qk(sk)
rzeczywistej i przewidywanej redukcji wartości funkcji. Jeśli jest bardzo mały, twój model był zły, a ty i próbujesz ponownie z . Jeśli jest bliskie , twój model jest dobry i ustawiasz i zwiększasz . W przeciwnym razie po prostu ustaw i pozostaw spokoju. Aby obliczyć rzeczywisty minimalizator zρkskΔk+1<Δkρk1xk+1=xk+skΔk+1>Δkxk+1=xk+skΔkskminsΔkqk(s), istnieje kilka strategii pozwalających uniknąć konieczności rozwiązania pełnego problemu optymalizacji; moją ulubioną jest skrócona metoda CG Steihauga . Aby uzyskać więcej informacji, ponownie odnoszę się do Nocedal i Wright.
Christian Clason
źródło
Właśnie teraz patrzę na to ponownie i zdaję sobie sprawę, że mam pytanie. W kroku trzecim dla metody BB masz ; gdzie i . Licznik i mianownik w wyrażeniu dla wyglądają jak produkty wewnętrzne. W moim przypadku , gdzie jest przestrzenią wektorową z nietrywialną metryką Riemanniana: K. To znaczy, . Czy to wpływa na definicję ? αk+1=(yk)Tyk(yk)Tskyk=gk+1gksk=αk1gkαk+1gkVVgk,gkV=gk,KgkL2αk+1
NLi10Me
Tak, jeśli masz nietrywialną strukturę przestrzeni wektorowej, powinieneś ją uszanować w algorytmach. W szczególności należy rozróżnić między iloczynami wewnętrznymi dwóch funkcji w tej samej przestrzeni (np. i ) i iloczynami dualności między funkcją w przestrzeni a jedną w przestrzeni podwójnej (np. i ) - w tym drugim przypadku musisz dołączyć mapowanie Riesz, aby najpierw przekształcić go w produkt wewnętrzny. (Można to interpretować jako warunek wstępny.)ykykskyk
Christian Clason,
Dr Clason, prześlę artykuł na ISBI 2017, szczegółowo opisujący niektóre eksperymenty, które przeprowadziłem przy użyciu metody wyszukiwania linii BB + dla zadania rejestrowania obrazu diffeomorficznego. Czy chciałbyś zostać uwzględniony jako autor manuskryptu? Nie napisałem tego jeszcze, ale większość eksperymentów mam ukończonych lub trwających. Proszę daj mi znać.
NLi10Me
@ NLi10Me Dziękuję za uprzejmą ofertę, ale nie zrobiłem nic, co zasługiwałoby na współautorstwo - wszystko, co napisałem, to standardowy podręcznik. Jeśli czujesz do tego silne zdanie, możesz podziękować za „pomocne uwagi na temat (cokolwiek to pomogło)”, ale nawet to nie byłoby wymagane. Wystarczy wiedzieć, że to, co napisałem, było pomocne!
Christian Clason
1
Przepraszamy, masz rację, to literówka - naprawione! (Warunek Armijo jest często zapisywany jako , gdzie jest kierunkiem wyszukiwania - niekoniecznie ujemnym gradient - i rozmiar kroku, co powinno wyjaśnić, co się dzieje.)f(x+σs)f(x)γf(x)T(σs)sσ
Christian Clason,