Metoda gradientu sprzężonego - Conjugate gradient method

Porównanie zbieżności gradientu opadania z optymalną wielkością kroku (na zielono) i wektorem sprzężonym (na czerwono) w celu zminimalizowania funkcji kwadratowej związanej z danym układem liniowym. Gradient sprzężony, zakładając arytmetykę dokładną, jest zbieżny w co najwyżej n krokach, gdzie n jest wielkością macierzy układu (tu n  = 2).

W matematyce The koniugat gradient metoda jest algorytm do numerycznego rozwiązania poszczególnych systemów równań liniowych , to znaczy te, których matryca jest dodatnio określony . Metoda gradientu sprzężonego jest często implementowana jako algorytm iteracyjny , mający zastosowanie do rzadkich systemów, które są zbyt duże, aby można je było obsłużyć przez implementację bezpośrednią lub inne metody bezpośrednie, takie jak rozkład Cholesky'ego . Duże rzadkie układy często powstają podczas numerycznego rozwiązywania równań różniczkowych cząstkowych lub problemów optymalizacyjnych.

Metodę gradientu sprzężonego można również wykorzystać do rozwiązywania problemów optymalizacji bez ograniczeń , takich jak minimalizacja energii . Jest powszechnie przypisywany Magnusowi Hestenesowi i Eduardowi Stiefelowi , którzy zaprogramowali go na Z4 i intensywnie badali.

Sposób biconjugate gradientu zapewnia uogólnienie do matryc niesymetrycznej. Różne nieliniowe metody gradientów sprzężonych poszukują minimów równań nieliniowych i funkcji celu czarnoskrzynkowego.

Opis problemu, którego dotyczą gradienty sprzężone

Załóżmy, że chcemy rozwiązać układ równań liniowych

dla wektora , gdzie znana macierz jest symetryczna (tj . AT = A ), dodatnio określona (tj. x T Ax > 0 dla wszystkich niezerowych wektorów w R n ) i rzeczywista , a także jest znana. Unikalne rozwiązanie tego systemu określamy symbolem .

Wyprowadzenie jako metoda bezpośrednia

Metodę gradientu sprzężonego można wyprowadzić z kilku różnych perspektyw, w tym ze specjalizacji metody kierunku sprzężonego do optymalizacji oraz wariacji iteracji Arnoldiego / Lanczosa dla problemów z wartościami własnymi . Pomimo różnic w ich podejściach, te derywacje mają wspólny temat — udowadnianie ortogonalności reszt i koniugacji kierunków wyszukiwania. Te dwie właściwości są kluczowe dla opracowania dobrze znanego zwięzłego sformułowania metody.

Mówimy, że dwa niezerowe wektory u i vsprzężone (w odniesieniu do ) jeśli

Ponieważ jest symetryczny i dodatnio określony, lewa strona definiuje iloczyn skalarny

Dwa wektory są sprzężone wtedy i tylko wtedy, gdy są ortogonalne względem tego produktu wewnętrznego. Bycie sprzężonym jest relacją symetryczną: jeśli jest sprzężony z , to jest sprzężony z . Przypuszczam, że

jest zbiorem wzajemnie sprzężonych wektorów względem , tj. dla wszystkich . Następnie tworzy podstawę dla i można wyrazić roztworu o na tej podstawie:

Mnożenie lewej strony przez plony

Daje to następującą metodę rozwiązania równania Ax = b : znajdź sekwencję kierunków sprzężonych, a następnie oblicz współczynniki .

Jako metoda iteracyjna

Jeśli starannie dobierzemy wektory sprzężone , możemy nie potrzebować ich wszystkich, aby uzyskać dobre przybliżenie rozwiązania . Tak więc, chcemy traktować metodę gradientu sprzężonego jako metodę iteracyjną. Pozwala nam to również w przybliżeniu rozwiązać systemy, w których n jest tak duże, że metoda bezpośrednia zajęłaby zbyt dużo czasu.

Początkowe przypuszczenie dla x oznaczamy przez x 0 (możemy założyć bez utraty ogólności, że x 0 = 0 , w przeciwnym razie rozważmy zamiast tego system Az = bAx 0 ). Zaczynając od x 0 szukamy rozwiązania iw każdej iteracji potrzebujemy metryki, która powie nam, czy jesteśmy bliżej rozwiązania x (którego nie znamy). Ta metryka wynika z faktu, że rozwiązanie x jest również unikalnym minimalizatorem następującej funkcji kwadratowej

Istnienie unikatowego minimalizatora jest oczywiste, gdyż jego drugą pochodną dana jest symetryczna macierz dodatnio określona

i że minimalizator (użyj D f ( x )=0) rozwiązuje początkowy problem jest oczywiste z jego pierwszej pochodnej

Sugeruje to przyjęcie pierwszego wektora bazowego p 0 jako ujemnego gradientu f przy x = x 0 . Gradient f jest równy Axb . Zaczynając od początkowego przypuszczenia x 0 , oznacza to, że bierzemy p 0 = bAx 0 . Pozostałe wektory w bazie będą sprzężone z gradientem, stąd nazwa metoda gradientu sprzężonego . Zauważ, że p 0 jest również resztą dostarczoną przez ten początkowy krok algorytmu.

Niech r k będzie resztą na k- tym kroku:

Jak zaobserwowano powyżej, jest to ujemny gradient at , więc metoda gradientu opadania wymagałaby poruszania się w kierunku r k . Tutaj jednak nalegamy, aby kierunki były ze sobą sprzężone. Praktycznym sposobem na wymuszenie tego jest wymaganie, aby następny kierunek wyszukiwania był zbudowany na podstawie bieżącej pozostałości i wszystkich poprzednich kierunków wyszukiwania. Ograniczenie sprzężenia jest ograniczeniem typu ortonormalnego, a zatem algorytm można postrzegać jako przykład ortonormalizacji Grama-Schmidta . Daje to następujące wyrażenie:

(patrz rysunek na górze artykułu, aby zobaczyć wpływ ograniczenia koniugacji na zbieżność). Idąc w tym kierunku, kolejną optymalną lokalizację podaje

z

gdzie ostatnia równość wynika z definicji . Wyrażenie for można wyprowadzić, podstawiając wyrażenie x k +1 do f i minimalizując je wrt

Powstały algorytm

Powyższy algorytm daje najprostsze wyjaśnienie metody gradientu sprzężonego. Pozornie wspomniany algorytm wymaga przechowywania wszystkich poprzednich kierunków wyszukiwania i wektorów reszt, a także wielu mnożeń macierz-wektor, a zatem może być kosztowny obliczeniowo. Jednak bliższa analiza algorytmu pokazuje, że jest ortogonalny do , tj. dla i ≠ j. I jest -ortogonalna do , czyli do . Można to uznać, że wraz z postępem algorytmu i obejmuje tę samą podprzestrzeń Kryłowa . Gdzie tworzą bazę ortogonalną w odniesieniu do standardowego iloczynu skalarnego i tworzą bazę ortogonalną w odniesieniu do iloczynu skalarnego indukowanego przez . Dlatego można ją traktować jako rzutowanie na podprzestrzeń Kryłowa.

Poniżej opisano szczegółowo algorytm rozwiązywania Ax = b, gdzie jest rzeczywistą, symetryczną, dodatnio określoną macierzą. Wektor wejściowy może być przybliżonym rozwiązaniem początkowym lub 0 . Jest to inne sformułowanie dokładnej procedury opisanej powyżej.

Jest to najczęściej używany algorytm. Ten sam wzór na β k jest również stosowany w nieliniowej metodzie gradientu sprzężonego Fletchera-Reevesa .

Ponowne uruchamianie

Zauważmy, że jest to obliczane przez metodę gradientu opadania stosowaną do . Ustawienie w podobny sposób sprawiłoby, że obliczone metodą gradientu opadania z , tj. może być użyte jako prosta implementacja ponownego uruchomienia iteracji gradientu sprzężonego. Ponowne uruchomienie może spowolnić zbieżność, ale może poprawić stabilność, jeśli metoda gradientu sprzężonego nie będzie działać, np. z powodu błędu zaokrąglenia .

Wyraźne obliczenia rezydualne

Wzory i , które zarówno w dokładnym chwyt arytmetyki, sprawiają, że wzory i matematycznie równoważne. Pierwszy jest używany w algorytmie, aby uniknąć dodatkowego mnożenia przez, ponieważ wektor jest już obliczony do oceny . Ta ostatnia może być bardziej dokładna, zastępując jawną kalkulację za niejawną rekurencją podlegającą akumulacji błędów zaokrąglenia , a zatem jest zalecana do sporadycznej oceny.

Norma wartości rezydualnej jest zwykle używana do kryteriów zatrzymania. Norma jawnej reszty zapewnia gwarantowany poziom dokładności zarówno w arytmetyce dokładnej, jak iw obecności błędów zaokrągleń , gdzie zbieżność naturalnie ulega stagnacji. W przeciwieństwie do tego wiadomo , że implicytna reszta ma coraz mniejszą amplitudę znacznie poniżej poziomu błędów zaokrągleń, a zatem nie można jej użyć do określenia stagnacji zbieżności.

Obliczanie alfa i beta

W algorytmie, α k jest dobrana tak, że jest prostopadły do . Mianownik jest uproszczony z

od . Β k jest tak dobrany, że jest sprzężony z . Początkowo β k jest

za pomocą

i równoważnie

licznik β k jest przepisany jako

ponieważ i są z założenia ortogonalne. Mianownik jest przepisany jako

używając, że kierunki wyszukiwania p k są sprzężone i ponownie, że reszty są ortogonalne. Daje to β w algorytmie po anulowaniu α k .

Przykładowy kod w MATLAB / GNU Octave

function x = conjgrad(A, b, x)
    r = b - A * x;
    p = r;
    rsold = r' * r;

    for i = 1:length(b)
        Ap = A * p;
        alpha = rsold / (p' * Ap);
        x = x + alpha * p;
        r = r - alpha * Ap;
        rsnew = r' * r;
        if sqrt(rsnew) < 1e-10
              break
        end
        p = r + (rsnew / rsold) * p;
        rsold = rsnew;
    end
end

Przykład liczbowy

Rozważmy układ liniowy Ax = b dany przez

wykonamy dwa kroki metody gradientu sprzężonego, zaczynając od wstępnego zgadywania

w celu znalezienia przybliżonego rozwiązania systemu.

Rozwiązanie

Dla porównania, dokładne rozwiązanie to

Naszym pierwszym krokiem jest obliczenie wektora resztkowego r 0 związanego z x 0 . Ta reszta jest obliczana ze wzoru r 0 = b - Ax 0 , a w naszym przypadku jest równa

Ponieważ jest to pierwsza iteracja, użyjemy wektora resztkowego r 0 jako naszego początkowego kierunku przeszukiwania p 0 ; sposób doboru p k zmieni się w kolejnych iteracjach.

Teraz obliczamy skalar α 0 używając zależności

Możemy teraz obliczyć x 1 za pomocą wzoru

Ten wynik kończy pierwszą iterację, wynikiem jest „ulepszone” przybliżone rozwiązanie systemu, x 1 . Możemy teraz przejść dalej i obliczyć następny wektor resztkowy r 1 ze wzoru

Następnym krokiem w tym procesie jest obliczenie wartości skalarnej β 0 , która zostanie ostatecznie użyta do określenia następnego kierunku przeszukiwania p 1 .

Teraz, używając tego skalaru β 0 , możemy obliczyć następny kierunek przeszukiwania p 1 używając zależności

Teraz obliczamy skalar α 1 przy użyciu naszego nowo uzyskanego p 1 przy użyciu tej samej metody, która została użyta dla α 0 .

Na koniec znajdujemy x 2 przy użyciu tej samej metody, która została użyta do znalezienia x 1 .

Wynik, x 2 , jest „lepszym” przybliżeniem rozwiązania systemowego niż x 1 i x 0 . Gdyby w tym przykładzie zastosowano arytmetykę dokładną zamiast ograniczonej precyzji, to teoretycznie dokładne rozwiązanie zostałoby osiągnięte po n = 2 iteracjach ( n jest porządkiem systemu).

Właściwości konwergencji

Metodę gradientu sprzężonego można teoretycznie traktować jako metodę bezpośrednią, ponieważ przy braku błędu zaokrąglenia daje dokładne rozwiązanie po skończonej liczbie iteracji, która nie jest większa niż rozmiar macierzy. W praktyce nigdy nie uzyskuje się dokładnego rozwiązania, ponieważ metoda gradientu sprzężonego jest niestabilna w odniesieniu do nawet małych perturbacji, np. większość kierunków nie jest w praktyce sprzężona, ze względu na degeneracyjny charakter generowania podprzestrzeni Kryłowa.

Jako metoda iteracyjna, metoda gradientu sprzężonego monotonicznie (w normie energetycznej) poprawia przybliżenia do dokładnego rozwiązania i może osiągnąć wymaganą tolerancję po stosunkowo niewielkiej (w porównaniu do wielkości problemu) liczbie iteracji. Poprawa jest zazwyczaj liniowa, a jej szybkość jest określona przez numer stanu macierzy systemu : im większa , tym wolniejsza poprawa.

Jeśli jest duża, hartowanie jest powszechnie stosowany w celu zastąpienia oryginalnego systemu z takimi, które jest mniejsze niż podano poniżej.

Twierdzenie o zbieżności

Zdefiniuj podzbiór wielomianów jako

gdzie jest zbiorem wielomianów o maksymalnym stopniu .

Niech będzie iteracyjnym przybliżeniem dokładnego rozwiązania i zdefiniuj błędy jako . Teraz tempo zbieżności można przybliżyć jako

gdzie oznacza widmo , a oznacza numer warunku .

Uwaga, ważny limit, kiedy ma tendencję do

Ten limit pokazuje szybszy współczynnik zbieżności w porównaniu z iteracyjnymi metodami Jacobiego lub Gaussa-Seidela, które skalują się jako .

W twierdzeniu o zbieżności nie zakłada się błędu zaokrąglenia , ale wiązanie zbieżności jest powszechnie ważne w praktyce, jak teoretycznie wyjaśnia Anne Greenbaum .

Praktyczna konwergencja

Jeśli inicjuje się losowo, pierwszy etap iteracji jest często najszybszy, ponieważ błąd jest eliminowany w podprzestrzeni Kryłowa, która początkowo odzwierciedla mniejszą liczbę warunków efektywnych. Drugi etap zbieżności jest zwykle dobrze zdefiniowany przez teoretyczną zbieżność związaną z , ale może być superliniowy, w zależności od rozkładu widma macierzy i rozkładu widmowego błędu. W ostatnim etapie osiągana jest najmniejsza osiągalna dokładność i przeciągnięcia zbieżności lub metoda mogą nawet zacząć się rozchodzić. W typowych naukowych zastosowaniach obliczeniowych w formacie zmiennoprzecinkowym podwójnej precyzji dla macierzy o dużych rozmiarach metoda gradientu sprzężonego wykorzystuje kryteria zatrzymania z tolerancją, która kończy iteracje podczas pierwszego lub drugiego etapu.

Wstępnie uwarunkowana metoda gradientu koniugatów

W większości przypadków wstępne kondycjonowanie jest konieczne, aby zapewnić szybką konwergencję metody gradientu koniugatów. Wstępnie uwarunkowana metoda gradientu sprzężonego przyjmuje następującą postać:

powtarzać
jeśli r k +1 jest wystarczająco małe, to koniec pętli wyjścia if
koniec powtarzania
Wynik to x k +1

Powyższe sformułowanie jest równoważne zastosowaniu metody gradientu sprzężonego bez wstępnego kondycjonowania układu

gdzie

Macierz warunków wstępnych M musi być symetryczna, dodatnio określona i stała, tj. nie może zmieniać się z iteracji na iterację. Jeśli którekolwiek z tych założeń na warunku wstępnym zostanie naruszone, zachowanie metody gradientu sprzężonego warunkowego może stać się nieprzewidywalne.

Przykładem powszechnie stosowanego warunku wstępnego jest niekompletna faktoryzacja Choleskiego .

Elastyczna, wstępnie uwarunkowana metoda gradientu koniugatów

W wymagających numerycznie aplikacjach stosuje się wyrafinowane uwarunkowania wstępne, które mogą prowadzić do zmiennych uwarunkowań wstępnych, zmieniających się między iteracjami. Nawet jeśli warunek wstępny jest symetryczny, dodatnio określony w każdej iteracji, to fakt, że może się on zmienić, powoduje, że powyższe argumenty są nieaktualne, a w testach praktycznych prowadzi do znacznego spowolnienia zbieżności algorytmu przedstawionego powyżej. Korzystanie z formuły Polaka-Ribière

zamiast formuły Fletchera-Reevesa

może radykalnie poprawić zbieżność w tym przypadku. Tę wersję wstępnie uwarunkowanej metody gradientu sprzężonego można nazwać elastyczną, ponieważ umożliwia zmienne uwarunkowanie wstępne. Wykazano również, że wersja elastyczna jest niezawodna, nawet jeśli kondycjoner wstępny nie jest symetryczny o wartości dodatniej (SPD).

Implementacja wersji elastycznej wymaga przechowywania dodatkowego wektora. Dla ustalonego warunku wstępnego SPD, więc obie formuły dla β k są równoważne w arytmetyce dokładnej, tj. bez błędu zaokrąglenia .

Matematycznym wyjaśnieniem lepszego zachowania zbieżności metody ze wzorem Polaka-Ribière'a jest to, że metoda jest w tym przypadku lokalnie optymalna , w szczególności nie ma zbieżności wolniej niż lokalnie optymalna metoda największego opadania.

Vs. lokalnie optymalna metoda najbardziej stromego zjazdu

Zarówno w oryginalnej, jak i wstępnie uwarunkowanej metodzie gradientowej koniugatu wystarczy ustawić , aby były one lokalnie optymalne, przy użyciu metody przeszukiwania linii , metody najbardziej stromego opadania . Przy takim podstawieniu wektory p są zawsze takie same jak wektory z , więc nie ma potrzeby przechowywania wektorów p . Tak więc każda iteracja tych najbardziej stromych metod opadania jest nieco tańsza w porównaniu z metodami gradientu sprzężonego. Jednak te ostatnie zbiegają się szybciej, chyba że jest używany (wysoce) zmienny i/lub warunek wstępny inny niż SPD , patrz powyżej.

Metoda gradientu sprzężonego jako optymalny kontroler sprzężenia zwrotnego dla podwójnego integratora

Metodę gradientu sprzężonego można również wyprowadzić przy użyciu optymalnej teorii sterowania . W tym podejściu metoda gradientu sprzężonego wypada jako optymalny regulator sprzężenia zwrotnego ,

dla systemu podwójnego integratora ,
Wielkości i są zmiennymi wzmocnieniami sprzężenia zwrotnego.

Gradient sprzężony na równaniach normalnych

Metodę gradientu sprzężonego można zastosować do dowolnej macierzy n -by- m , stosując ją do równań normalnych A T A i prawostronnego wektora A T b , ponieważ A T A jest symetryczną macierzą dodatnio-półokreśloną dla dowolnego A . Wynikiem jest gradient sprzężony na równaniach normalnych (CGNR).

A T Ax = A T b

Jako metoda iteracyjna nie jest konieczne tworzenie A T A bezpośrednio w pamięci, a jedynie wykonanie mnożenia macierz-wektor i transponowanie macierz-wektor. Dlatego CGNR jest szczególnie przydatny, gdy A jest macierzą rzadką, ponieważ te operacje są zwykle niezwykle wydajne. Jednak wadą tworzenia równań normalnych jest to, że liczba warunku κ( A T A ) jest równa κ 2 ( A ), a więc szybkość zbieżności CGNR może być wolna, a jakość przybliżonego rozwiązania może być wrażliwa na zaokrąglenie błędy. Znalezienie dobrego kondycjonera jest często ważną częścią stosowania metody CGNR.

Zaproponowano kilka algorytmów (np. CGLS, LSQR). LSQR algorytm rzekomo ma najlepszą stabilność numeryczną podczas jest źle uwarunkowane, czyli posiada dużą liczbę warunek .

Metoda gradientu sprzężonego dla złożonych macierzy hermitowskich

Metodę gradientu sprzężonego z trywialną modyfikacją można rozszerzyć do rozwiązania, przy danej macierzy A i wektorze b, układu równań liniowych dla wektora x o wartościach zespolonych, gdzie A jest hermitowskim (tzn. A' = A) i dodatnim -definite matrix , a symbol ' oznacza transpozycję sprzężoną przy użyciu stylu MATLAB / GNU Octave . Trywialna modyfikacja polega po prostu na zastąpieniu wszędzie sprzężoną transpozycją rzeczywistą transpozycją . To podstawienie jest kompatybilne wstecz, ponieważ sprzężone transpozycja zamienia się w rzeczywistą transpozycję na wektorach i macierzach o wartościach rzeczywistych. Dostarczony powyżej przykładowy kod w MATLAB/GNU Octave działa już w przypadku złożonych macierzy hermitowskich, nie wymagając żadnych modyfikacji.

Zobacz też

Bibliografia

Dalsza lektura

Zewnętrzne linki