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.