Metoda gradientu prostego
Transkrypt
Metoda gradientu prostego
Metoda gradientu prostego Metoda gradientu prostego jest pojęciem z zakresu optymalizacji matematycznej. Jest to algorytm numeryczny mający na celu znalezienie minimum zadanej funkcji celu. Jest to jedna z prostszych metod optymalizacji. Przykładami innych metod są metoda najszybszego spadku, czy metoda Newtona Zadanie Metoda gradientu prostego jest iteracyjnym algorytmem wyszukiwania minimum zadanej funkcji celu f: gdzie . Założenia dla metody są następujące: • • (funkcja jest ciągła i różniczkowalna), f jest ściśle wypukła w badanej dziedzinie. Opis Na samym początku algorytmu wybierany jest punkt startowy . W punkcie tym obliczany jest kierunek poszukiwań . Punkt w następnym kroku obliczany jest według wzoru: jeśli obliczony punkt nie spełni warunku stopu algorytmu, całe postępowanie jest powtarzane. Kierunkiem poszukiwań w metodzie gradientu prostego jest antygradient funkcji celu Współczynnik αk jest współczynnikiem długości kolejnych kroków. W wielu przypadkach przyjmuje się stałe niewielkie wartości: Jeśli f jest funkcją kwadratową o dodatnio określonym hesjanie H to można przyjąć: gdzie jest największą wartością własną macierzy H. Współczynnik może również dynamicznie zmieniać się podczas procesu szukania minimum. Kolejne kroki w algorytmie powinny być wybierane tak aby: . Jeżeli warunek ten nie jest w danym kroku spełniony, to należy powtórzyć krok z mniejszą wartością . Algorytm ogólnie można zapisać: 1. Wybierz punkt startowy 2. 3. Sprawdź kryterium stopu, jeśli jest spełniony to STOP. 4. Jeżeli to zmniejsz wartość 5. Powtórz punkt 2 dla następnego kroku (k + 1) i powtórz punkt 2 dla kroku k-ego. Kryterium stopu W celu określenia, czy punkt w danym kroku dostatecznie dobrze przybliża minimum funkcji celu w metodzie gradientu prostego, można użyć następujących kryteriów stopu (dla zadanej precyzji ε oraz normy ): • (test stacjonarności). • Zbieżność Metoda gradientu prostego jest metodą o zbieżności liniowej. Oznacza to, iż przy spełnieniu założeń metody, odległości pomiędzy kolejnymi przybliżeniami, a minimum funkcji maleją liniowo: Przykład Na poniższych rysunkach zilustrowane zostały kolejne kroki metody gradientu prostego dla funkcji: Gradient – w analizie matematycznej, a dokładniej rachunku wektorowym, pole wektorowe wskazujące w danym punkcie kierunek najszybszego wzrostu danego pola skalarnego, a jego moduł (długość) jest równy szybkości wzrostu. Wektor przeciwny do gradientu nazywa się często antygradientem. Uogólnieniem gradientu na funkcje przestrzeni euklidesowej w inną jest macierz Jacobiego. Dalej idącym uogólnieniem na funkcje między przestrzeniami Banacha jest pochodna Frécheta. Wprowadzenie Na powyższych obrazkach pole skalarne jest czarno-białe, przy czym czerń reprezentuje wyższe wartości, a odpowiadającemu go gradientowi odpowiadają niebieskie strzałki. Przykładem może być pokój, w którym temperatura opisana jest polem skalarnym T. Tak więc w każdym punkcie (x,y,z) temperatura wynosi T(x,y,z) (zakładamy, że nie zmienia się ona w czasie). Wówczas w każdym punkcie pokoju gradient T w tym punkcie pokazuje kierunek (wraz ze zwrotem), w którym temperatura rośnie najszybciej. Moduł gradientu wskazuje jak szybko rośnie temperatura w tym kierunku. Innym przykładem może być powierzchnia, dla której H(x,y) oznacza wysokość nad poziomem morza w punkcie (x,y). Gradientem H w punkcie jest wektor wskazujący kierunek największego pochylenia w tym punkcie. Miara tego pochylenia jest dana jako moduł wektora gradientu. Dzięki iloczynowi skalarnemu gradient można wykorzystać do mierzenia nie tylko tego jak pole skalarne zmienia się w kierunku największej zmiany, lecz także w innych kierunkach. Niech w przykładzie ze wzgórzem największe pochylenie wzgórza wynosi 40%. Jeśli droga biegnie prosto pod górę, to największe pochylenie drogi również będzie wynosić 40%. Jeśli jednak droga biegnie wokół wzgórza pod pewnym kątem (względem wektora gradientu), to będzie miała mniejsze nachylenie. Przykładowo jeśli kąt między drogą a kierunkiem w górę, rzutowany na płaszczyznę poziomą, wynosi 60°, to największe nachylenie wzdłuż drogi będzie wynosić 20%, co jest równe 40% razy cosinus 60°. Ta obserwacja może być wyrażona matematycznie w następujący sposób. Jeśli funkcja wysokości wzgórza H jest różniczkowalna, to gradient funkcji H pomnożony skalarnie przez wektor jednostkowy daje pochylenie wzgórza w kierunku tego wektora. Dokładniej, jeśli H jest różniczkowalna, to iloczyn skalarny gradientu H przez dany wektor jednostkowy jest równy pochodnej kierunkowej H w kierunku tego wektora jednostkowego. Podobnie obrazuje się zmianę innych wielkości fizycznych takich jak: stężenie, współczynnik pH, gęstości ładunku elektrycznego, jasność, kolor itp. w określonej przestrzeni. Definicja Gradient funkcji f(x,y) = −(cos2x + cos2y)2 przedstawiony jako pole wektorowe na dolnej płaszczyźnie. oznaczany Gradient (lub gradientowe pole wektorowe) funkcji skalarnej gdzie (nabla) to wektorowy operator różniczkowy nazywany nabla. Innym oznaczeniem gradientu f jest Gradient f definiuje się jako pole wektorowe o składowych będących pochodnymi cząstkowymi f, tzn. Gradient jest wektorem kolumnowym, jednak bywa zapisywany jako wektor wierszowy. Jeżeli funkcja zależy także od parametru takiego jak czas, to zwykle gradient oznacza wtedy wektor jej pochodnych przestrzennych. Gradient funkcji wektorowej f = (f1,f2,f3) to lub też transpozycja macierzy Jacobiego Jest to tensor drugiego rzędu. Ogólniej gradient może być zdefiniowany za pomocą pochodnej zewnętrznej: Symbole oraz oznaczają tutaj izomorfizmy muzyczne. Postać w trójwymiarowej przestrzeni współrzędnych Postać gradientu zależy od użytego układu współrzędnych. W układzie: • współrzędnych kartezjańskich ma postać • współrzędnych walcowych zapisuje się jako • współrzędnych sferycznych dany jest wzorem Jeśli oznaczyć przez można zadać jako wersory osi układu współrzędnych kartezjańskich, to gradient Podobnie ma się rzecz dla innych układów współrzędnych. Przykład Gradientem funkcji f(x,y,z) = 2x + 3y2 − sinz we współrzędnych kartezjańskich jest Związek z pochodną i różniczką Przybliżenie liniowe funkcji Gradient funkcji f przestrzeni euklidesowej w prostą euklidesową w dowolnym punkcie p należącym do charakteryzuje najlepsze przybliżenie liniowe f w punkcie p. Rozumie się przez to dla x bliskiego p, gdzie oznacza gradient f obliczony w punkcie p, a kropka to iloczyn Równanie to jest równoważne dwóm pierwszym wyrazom rozwinięcia szeregu skalarny na Taylora wielu zmiennych dla f w punkcie p. Różniczka i pochodna (zewnętrzna) Najlepszym przybliżeniem liniowym funkcji w punkcie x należącym do jest przekształcenie liniowe oznaczane często lub i nazywane różniczką bądź pochodną zupełną funkcji f w punkcie x. Stąd gradient związany jest różniczką następującym wzorem dla dowolnego Funkcja która przekształca x na nazywa się różniczką lub pochodną zewnętrzną f. Jest to przykład 1-formy różniczkowej. Jeśli postrzegać jako przestrzeń wektorów kolumnowych o n składowych rzeczywistych, to można uważać za wektor wierszowy tak, iż jest dana poprzez mnożenie macierzy. Gradient jest wówczas odpowiadającym mu wektorem kolumnowym, tzn. Gradient jako pochodna Niech U będzie zbiorem otwartym w Jeśli funkcja Frécheta), to różniczką f jest pochodna Frécheta f. Stąd jest różniczkowalna (w sensie jest funkcją z U w taką, że gdzie oznacza iloczyn skalarny. Stąd gradient spełnia standardowe własności pochodnej: Liniowość Gradient jest liniowy w tym sensie, iż jeżeli f i g są dwiema funkcjami o wartościach rzeczywistych różniczkowalnymi w punkcie zaś α i β są dwoma skalarami (stałymi rzeczywistymi), to kombinacja liniowa αf + βg jest różniczkowalna w a i co więcej: Reguła iloczynu Niech f i g są dwiema funkcjami o wartościach rzeczywistych różniczkowalnymi w punkcie wówczas reguła iloczynu zapewnia, że iloczyn (fg)(x) = f(x)g(x) funkcji f i g jest różniczkowalny w a oraz Reguła łańcuchowa Niech będzie funkcją o wartościach rzeczywistych określoną na podzbiorze A przestrzeni różniczkowalną w punkcie a. Istnieją dwie postaci reguły łańcuchowej związanej z gradientem. Wpierw niech g oznacza krzywą parametryczną, tj. funkcję odwzorowującą podzbiór w Jeśli g jest różniczkowalna w punkcie takim, że g(c) = a, to Ogólniej, jeśli jest to prawdziwa jest równość: gdzie oznacza macierz Jacobiego, zaś oznacza transpozycję macierzy. Drugą postać reguły łańcuchowej można przedstawić następująco: niech bedzie funkcją o wartościach rzeczywistych określoną na podzbiorze I prostej przy czym h jest różniczkowalna w punkcie Wówczas Macierz Jacobiego Macierz Jacobiego – macierz zbudowana z pochodnych cząstkowych (pierwszego rzędu) funkcji, której składowymi są funkcje rzeczywiste. Nazwa pojęcia pochodzi od nazwiska niemieckiego matematyka Carla Gustawa Jacobiego, który je wprowadził (niezależnie pojęcie to badał Michaił Ostrogradski). Macierz Jacobiego i jej wyznacznik, nazywany jakobianem, znajdują zastosowanie w teorii funkcji uwikłanych, a także zagadnieniach związanych z zamianą zmiennych w całkach wielokrotnych, gdyż opisują one pochodną Frécheta funkcji wielu zmiennych (przestrzeni euklidesowych) w danym punkcie, o ile istnieje. Definicja Niech U oznacza otwarty podzbiór przestrzeni euklidesowej Niech ponadto dana będzie funkcja zbioru U w przestrzeń której m składowych stanowią funkcje fi zbioru U o wartościach rzeczywistych. Jeżeli funkcja f ma wszystkie pochodne cząstkowe w punkcie wzorem to macierzą Jacobiego Obok zależnej od punktu macierzy funkcji f w punkcie x nazywa się macierz daną można rozpatrywać macierz postaci Jeśli m = n, to macierz jest kwadratowa. Wówczas można rozpatrywać wyznacznik macierzy Jacobiego, który nazywa się wtedy jakobianem i oznacza lub bądź mniej standardowo: Macierz Jacobiego można postrzegać jako wektor gradientów funkcji składowych fi funkcji f, tzn. Metoda gradientu sprzężonego jest algorytmem numerycznym służącym do rozwiązywania niektórych układów równań liniowych. Pozwala rozwiązać te których macierz jest symetryczna i dodatnio określona. Metoda gradientu sprzężonego jest metodą iteracyjną, więc może być zastosowana do układów o rzadkich macierzach, które mogą być zbyt duże dla algorytmów bezpośrednich takich jak np. rozkład Choleskiego. Takie układy pojawiają się często w trakcie numerycznego rozwiązywania równań różniczkowych cząstkowych Metoda gradientu sprzężonego może również zostać użyta do rozwiązania problemu optymalizacji bez ograniczeń. Opis metody Rozpatrzmy rozwiązania poniższego układu równań: Ax = b gdzie macierz A n na n jest symetryczna, rzeczywista i dodatnio określona. Oznaczmy rozwiązanie tego układu przez x*. Bezpośrednia metoda gradientu sprzężonego Mówimy, że dwa niezerowe wektory u i v są sprzężone (względem A) jeśli Ponieważ A jest symetryczna i dodatnio określona, lewa strona definiuje iloczyn skalarny: Więc, dwa wektory są sprzężone jeśli są ortogonalne względem tego iloczynu skalarnego. Sprzężoność jest relacją symetryczną. Przypuśćmy, że {pk} jest ciągiem n wzajemnie sprzężonych kierunków. Wtedy pk tworzą bazę Rn, wektor x* będący rozwiązaniem Ax = b możemy przedstawić w postaci: Współczynniki otrzymujemy w następujący sposób: Co daje nam następującą metodę rozwiązywania równania Ax = b. Najpierw znajdujemy ciąg n sprzężonych kierunków, następnie obliczamy współczynniki αk. Metoda gradientu sprzężonego jako metoda iteracyjna Jeśli właściwie dobierzemy sprzężone wektory pk, możemy nie potrzebować ich wszystkich do dobrej aproksymacji rozwiązania x*Więc chcielibyśmy spojrzeć na CG jak na metodę iteracyjną. Co więcej, pozwoli nam to rozwiązać układy równań, gdzie n jest tak duże, że bezpośrednia metoda zabrałaby zbyt dużo czasu. Oznaczmy punkt startowy przez x0. Bez starty ogólności możemy założyć, że x0 = 0 (w przeciwnym przypadku, rozważymy układ Az = b − Ax0). Zauważmy, że rozwiązanie x* minimalizuje formę kwadratową: Co sugeruje, by jako pierwszy wektor bazowy p1 wybrać gradient f w x = x0, który wynosi Ax0−b, a ponieważ wybraliśmy x0 = 0 otrzymujemy −b. Pozostałe wektory w bazie będą sprzężone do gradientu (stąd nazwa metoda gradientu sprzężonego). Niech rk oznacza rezyduum w k-tym kroku: Zauważmy, że rk jest przeciwny do gradientu f w x = xk, więc metoda gradientu prostego nakazywałaby ruch w kierunku rk. Tutaj jednak założyliśmy wzajemną sprzężoność kierunków pk , więc wybieramy kierunek najbliższy do rk pod warunkiem sprzężoności. Co wyraża się wzorem: Wynikowy algorytm Upraszczając, otrzymujemy poniższy algorytm rozwiązujący Ax = b, gdzie macierz A jest rzeczywista, symetryczna i dodatnio określona. x0 jest punktem startowym. repeat if rk+1 jest "wystarczająco mały" then exit loop end if end repeat Wynikiem jest Przykład metody gradientu sprzężonego w Octave function [x] = conjgrad(A,b,x0) r w z a x B = = = = = = b - A*x0; -r; A*w; (r'*w)/(w'*z); x0 + a*w; 0; for i = 1:size(A)(1); r = r - a*z; if( norm(r) < 1e-10 ) break; endif B = (r'*z)/(w'*z); w = -r + B*w; z = A*w; a = (r'*w)/(w'*z); x = x + a*w; end end Ortogonalność (z gr. ortho – proste, gonia – kąt) – uogólnienie pojęcia prostopadłości znanego z geometrii euklidesowej na przestrzenie z określonym iloczynem skalarnym (przestrzenie unitarne). Definicja Elementy x,y przestrzeni unitarnej X z iloczynem skalarnym 〈•,•〉 nazywamy ortogonalnymi, gdy <x,y> = 0 Zdanie elementy x i y są ortogonalne zapisuje się krótko x ⊥ y . Podzbiór A ⊆ X nazywamy ortogonalnym, gdy każde dwa różne elementy tego zbioru są ortogonalne. Zbiory o tej własności często nazywane są układami ortogonalnymi. Uwaga Wektor zerowy jest ortogonalny do każdego wektora przestrzeni unitarnej. Często zamiast o ortogonalności, mówi się o prostopadłości danych wektorów, choć przypadek wektora zerowego pokazuje, że intuicje geometryczne nie zawsze są w tym przypadku pomocne. Przykłady Przestrzenie euklidesowe W przestrzeni euklidesowej ℜ 2 (ze standardowym iloczynem skalarnym oznaczonym tutaj symbolem ο) wektory • [ − 1,3] ο [3,1] są ortogonalne (oraz prostopadłe), ponieważ <x ,y> = 0; • [0,0] ο [3,1] są ortogonalne (ale nie są prostopadłe), gdyż <x ,y> = 0 Przestrzenie funkcyjne Ortogonalność pojawia się również w kontekście przestrzeni funkcyjnych, gdzie określony jest pewien iloczyn skalarny. Z tego powodu mówi się często o funkcjach ortogonalnych, czy wielomianach ortogonalnych. Klasycznym przykładem jest tutaj przestrzeń L2[a,b], tj. przestrzeń wszystkich funkcji, określonych na przedziale [a,b] o wartościach zespolonych, całkowalnych w drugiej potędze. Iloczyn skalarny elementów f i g z tej przestrzeni wyraża się wzorem . Jeżeli [a,b]=[-π,π], to ważnym przykładem układu ortogonalnego, studiowanego w analizie harmonicznej jest rodzina . Inne przykłady ortogonalnych układów funkcji to np. wielomiany Legendre'a czy wielomiany Czebyszewa. Wektor własny macierzy to taki wektor , dla którego istnieje taka wartość λ, że zachodzi równość: . Wartość nazywamy wartością własną macierzy lub przekształcenia. Intuicyjnie można rozumieć wektor własny przekształcenia, jako taki wektor, którego kierunek nie zmienia się po przemnożeniu go przez macierz. Natomiast jego długość zmienia się tyle razy ile wynosi wartość własna odpowiadająca temu wektorowi. Wartości własne macierzy są pierwiastkami jej wielomianu charakterystycznego: gdzie oznacza macierz jednostkową, macierz charakterystyczną, natomiast – wyznacznik macierzy charakterystycznej czyli wielomian charakterystyczny. Znając wartości własne można obliczyć odpowiadające im wektory własne rozwiązując następujące równania: ze względu na wektor . Własności • • • Wektory własne odpowiadające różnym wartościom własnym są liniowo niezależne. Jeśli macierz A potraktować jako macierz przekształcenia liniowego pewnej przestrzeni liniowej V, to wektory własne odpowiadające tej samej wartości własnej tworzą podprzestrzeń. Jeśli suma wymiarów podprzestrzeni z powyższej własności jest równa wymiarowi V to wektory własne odpowiadające różnym wartościom własnym tworzą bazę przestrzeni V.