Konjugerad gradientmetod
I matematik är den konjugerade gradientmetoden en algoritm för den numeriska lösningen av särskilda system av linjära ekvationer , nämligen de vars matris är positiv-definitiv . Den konjugerade gradientmetoden implementeras ofta som en iterativ algoritm , tillämpbar på glesa system som är för stora för att kunna hanteras av en direkt implementering eller andra direkta metoder som Cholesky-nedbrytningen . Stora glesa system uppstår ofta när man numeriskt löser partiella differentialekvationer eller optimeringsproblem.
Den konjugerade gradientmetoden kan också användas för att lösa obegränsade optimeringsproblem som energiminimering . Den tillskrivs vanligtvis Magnus Hestenes och Eduard Stiefel , som programmerade den på Z4:an och undersökte den mycket.
Den bikonjugerade gradientmetoden ger en generalisering till icke-symmetriska matriser. Olika olinjära konjugerade gradientmetoder söker ett minimum av olinjära optimeringsproblem.
Beskrivning av problemet med konjugerade gradienter
Antag att vi vill lösa systemet med linjära ekvationer
för vektorn , där den kända matrisen är symmetrisk (dvs. A T = A ), positiv-definit (dvs x T Ax > 0 för alla vektorer som inte är noll i R n ), och real , och är också kända. Vi betecknar den unika lösningen för detta system med .
Härledning som en direkt metod
Den konjugerade gradientmetoden kan härledas från flera olika perspektiv, inklusive specialisering av den konjugerade riktningsmetoden för optimering, och variation av Arnoldi / Lanczos iterationen för egenvärdesproblem . Trots skillnader i deras tillvägagångssätt delar dessa härledningar ett gemensamt ämne - vilket bevisar ortogonaliteten hos residualerna och konjugationen av sökriktningarna. Dessa två egenskaper är avgörande för att utveckla metodens välkända kortfattade formulering.
Vi säger att två vektorer som inte är noll, u och v är konjugerade (med avseende på om
Eftersom är symmetrisk och positiv-definitiv, definierar den vänstra sidan en inre produkt
Två vektorer är konjugerade om och endast om de är ortogonala med avseende på denna inre produkt. Att vara konjugerat är en symmetrisk relation: om är konjugerad till , då är konjugerad till . Anta att
är en uppsättning av ömsesidigt konjugerade vektorer med avseende på , dvs för alla . Då en grund för , och vi kan uttrycka lösningen av på denna grund:
Vänstermultiplicera problemet med vektorn ger
och så
Detta ger följande metod för att lösa ekvationen Ax = b : hitta en sekvens av konjugerade riktningar och beräkna sedan koefficienterna .
Som en iterativ metod
Om vi väljer de konjugerade vektorerna noggrant, behöver vi kanske inte alla för att få en bra approximation till lösningen . Så vi vill betrakta den konjugerade gradientmetoden som en iterativ metod. Detta gör att vi också kan ungefärligen lösa system där n är så stort att den direkta metoden skulle ta för mycket tid.
00 Vi betecknar den initiala gissningen för x ∗ med x 0 (vi kan utan förlust av generalitet anta att 0 x = 0 , annars betrakta systemet Az = b − Ax istället). Börjar med x söker vi efter lösningen och i varje iteration behöver vi ett mått för att tala om för oss om vi är närmare lösningen x ∗ (det är okänt för oss). Detta mått kommer från det faktum att lösningen x ∗ också är den unika minimeraren för följande kvadratiska funktion
Förekomsten av en unik minimerare är uppenbar eftersom dess hessiska matris av andraderivator är symmetrisk positiv-definitiv
och att minimeraren (använd D f ( x )=0) löser det initiala problemet följer av dess första derivata
000000 Detta tyder på att den första basvektorn p är den negativa av gradienten för f vid x = x . Gradienten för f är lika med Ax − b . Om man börjar med en initial gissning x , betyder det att vi tar p = b − Ax . De andra vektorerna i basen kommer att vara konjugerade till gradienten, därav namnet conjugate gradient method . Observera att p också är den rest som tillhandahålls av detta initiala steg i algoritmen.
Låt r k vara resten i det k: te steget:
Som observerats ovan är den negativa gradienten för vid så gradienten nedstigningsmetod skulle kräva att röra sig i riktningen r k . Här insisterar vi dock på att riktningarna måste vara konjugerade till varandra. Ett praktiskt sätt att upprätthålla detta är att kräva att nästa sökriktning byggs av den aktuella resterande och alla tidigare sökriktningar. Konjugationsbegränsningen är en begränsning av ortonormaltyp och därför kan algoritmen ses som ett exempel på Gram-Schmidt-ortonormalisering . Detta ger följande uttryck:
(se bilden överst i artikeln för effekten av konjugationsbegränsningen på konvergens). Efter denna riktning ges nästa optimala läge av
med
där den sista likheten följer av definitionen av . Uttrycket för kan härledas om man ersätter uttrycket för x k +1 med f och minimerar det med avseende på
Den resulterande algoritmen
Ovanstående algoritm ger den mest enkla förklaringen av den konjugerade gradientmetoden. Till synes kräver algoritmen som sagt lagring av alla tidigare sökriktningar och restvektorer, såväl som många matris-vektormultiplikationer, och kan därför vara beräkningsmässigt dyr. En närmare analys av algoritmen visar dock att är ortogonal mot , dvs för i ≠ j. Och är -ortogonal mot , dvs j . Detta kan anses vara att allteftersom algoritmen fortskrider, spänner och över samma Krylov-delrum . Där utgör den ortogonala basen med avseende på standardinre produkten, och utgör den ortogonala basen med avseende på till den inre produkten inducerad av . Därför betraktas som projektionen av på Krylov-underrummet.
0 Algoritmen beskrivs nedan för att lösa Ax = b där är en reell, symmetrisk, positiv-definitiv matris. Ingångsvektorn kan vara en ungefärlig initiallösning eller . Det är en annan formulering av den exakta proceduren som beskrivs ovan.
Detta är den vanligaste algoritmen. Samma formel för β k används också i Fletcher–Reeves olinjära konjugerade gradientmetod .
Startar om
Vi noterar att beräknas med metoden för gradientnedstigning som tillämpas på . Inställning av skulle på liknande sätt göra beräknad med metoden gradient descent från , dvs kan användas som en enkel implementering av en omstart av de konjugerade gradientiterationerna. Omstarter kan sakta ner konvergensen, men kan förbättra stabiliteten om konjugatgradientmetoden inte beter sig, t.ex. på grund av avrundningsfel .
Explicit restberäkning
Formlerna och båda håll i exakt aritmetik, gör formlerna och matematiskt ekvivalent. Den förra används i algoritmen för att undvika en extra multiplikation med eftersom vektorn redan är beräknad för att utvärdera . Den senare kan vara mer exakt och ersätter den explicita beräkningen för den implicita av rekursionen föremål för ackumulering av avrundningsfel, och rekommenderas därför för en tillfällig utvärdering.
En norm för restvärdet används vanligtvis för stoppkriterier. Normen för den explicita residualen ger en garanterad noggrannhetsnivå både i exakt aritmetik och i närvaro av avrundningsfel, där konvergensen stagnerar naturligt. Däremot implicita residual är känd för att bli mindre i amplitud långt under nivån för avrundningsfel och kan därför inte användas för att bestämma stagnationen av konvergens.
Beräkning av alfa och beta
I algoritmen är α k vald så att är ortogonal mot . Nämnaren förenklas från
eftersom . β { k är vald så att är konjugerat till . Inledningsvis är βk _
använder sig av
och motsvarande
täljaren för β k skrivs om som
eftersom och är ortogonala till sin design. Nämnaren skrivs om som
med att sökriktningarna pk är konjugerade och återigen att residualerna är ortogonala . Detta ger β i algoritmen efter att ha avbrutit α k .
Exempelkod i MATLAB / GNU Octave
funktion x = konjgrad ( A, b, x ) r = b - A * x ; p = r ; rsold = r ' * r ; för i = 1 : längd ( b ) Ap = A * p ; alpha = rsold / ( p ' * Ap ); x = x + alfa * p ; r = r - alfa * Ap ; rsnew = r ' * r ; if sqrt ( rsnew ) < 1e-10 break end p = r + ( rsnew / rsold ) * p ; rsold = rsnew ; slutändan _
Numeriskt exempel
Betrakta det linjära systemet Ax = b givet av
vi kommer att utföra två steg av den konjugerade gradientmetoden som börjar med den första gissningen
för att hitta en ungefärlig lösning på systemet.
Lösning
För referens är den exakta lösningen
0000 Vårt första steg är att beräkna restvektorn r associerad med x . Denna residual beräknas från formeln r = b - Ax , och är i vårt fall lika med
00 Eftersom detta är den första iterationen kommer vi att använda restvektorn r som vår initiala sökriktning p ; metoden för att välja p k kommer att ändras i ytterligare iterationer.
Vi beräknar nu skalären α 0 med hjälp av sambandet
Vi kan nu beräkna x 1 med formeln
Detta resultat fullbordar den första iterationen, resultatet är en "förbättrad" ungefärlig lösning på systemet, x 1 . Vi kan nu gå vidare och beräkna nästa restvektor r 1 med hjälp av formeln
Vårt nästa steg i processen är att beräkna den skalära β 0 som så småningom kommer att användas för att bestämma nästa sökriktning p 1 .
Nu, med hjälp av denna skalära β 0 , kan vi beräkna nästa sökriktning p 1 med hjälp av relationen
Vi beräknar nu skalären α 1 med vår nyförvärvade p 1 med samma metod som den som används för α 0 .
Slutligen hittar vi x 2 med samma metod som den som användes för att hitta x 1 .
0 Resultatet, x 2 , är en "bättre" approximation av systemets lösning än x 1 och x . Om exakt aritmetik skulle användas i detta exempel istället för begränsad precision, så skulle den exakta lösningen teoretiskt ha uppnåtts efter n = 2 iterationer ( n är systemets ordning).
Konvergensegenskaper
Den konjugerade gradientmetoden kan teoretiskt ses som en direkt metod, eftersom den i frånvaro av avrundningsfel producerar den exakta lösningen efter ett ändligt antal iterationer, som inte är större än matrisens storlek. I praktiken erhålls aldrig den exakta lösningen eftersom konjugatgradientmetoden är instabil med avseende på även små störningar, t.ex. är de flesta riktningar i praktiken inte konjugerade, på grund av en degenerativ karaktär av att generera Krylov-underrymden.
Som en iterativ metod förbättrar den konjugerade gradientmetoden monotont (i energinormen) approximationerna till den exakta lösningen och kan nå den erforderliga toleransen efter en relativt liten (jämfört med problemets storlek) antal iterationer. Förbättringen är vanligtvis linjär och dess hastighet bestäms av villkorsnumret för systemmatrisen : desto större är, desto långsammare är förbättringen.
Om är stor, används förkonditionering vanligtvis för att ersätta det ursprungliga systemet med så att är mindre än , se nedan.
Konvergenssats
Definiera en delmängd av polynom som
där är mängden polynom med maximal grad .
Låt vara de iterativa approximationerna av den exakta lösningen , och definiera felen som . Nu kan konvergenshastigheten approximeras som
där anger spektrumet och anger villkorsnumret .
Observera att den viktiga gränsen när tenderar att
Denna gräns visar en snabbare konvergenshastighet jämfört med de iterativa metoderna för Jacobi eller Gauss–Seidel som skalas som .
Inget avrundningsfel antas i konvergenssatsen, men konvergensgränsen är allmänt giltig i praktiken som teoretiskt förklaras av Anne Greenbaum .
Praktisk konvergens
Om det initieras slumpmässigt är det första steget av iterationer ofta det snabbaste, eftersom felet elimineras inom Krylov-underrummet som initialt återspeglar ett mindre effektivt villkorsnummer. Det andra steget av konvergens är vanligtvis väl definierat av den teoretiska konvergensen bunden med men kan vara superlinjär, beroende på en fördelning av spektrumet för matrisen och spektralfördelningen av felet. I det sista steget uppnås den minsta möjliga noggrannheten och konvergensen stannar eller metoden kan till och med börja divergera. I typiska vetenskapliga datortillämpningar i flyttalformat med dubbel precision för matriser av stora storlekar, använder den konjugerade gradientmetoden ett stoppkriterie med en tolerans som avslutar iterationerna under det första eller andra steget.
Den förkonditionerade konjugerade gradientmetoden
I de flesta fall är förkonditionering nödvändig för att säkerställa snabb konvergens av konjugatgradientmetoden. Om är symmetrisk positiv-definitiv och har en bättre villkorsnummer än , kan en förkonditionerad konjugerad gradientmetod användas. Den har följande form:
-
upprepa
- om r k +1 är tillräckligt liten, gå ur loopslut om
- avsluta upprepning
- Resultatet är x k +1
Ovanstående formulering är ekvivalent med att tillämpa den vanliga konjugatgradientmetoden på det förkonditionerade systemet
var
Den Cholesky sönderdelningen av förkonditioneringsmedlet måste användas för att bibehålla systemets symmetri (och positiva bestämdhet). Denna nedbrytning behöver dock inte beräknas, och det räcker med att känna till . Det kan visas att har samma spektrum som .
Förkonditioneringsmatrisen M måste vara symmetrisk positiv-definitiv och fixerad, dvs den kan inte ändras från iteration till iteration. Om något av dessa antaganden på förkonditioneringsmedlet kränks, kan beteendet hos den förkonditionerade konjugerade gradientmetoden bli oförutsägbart.
Ett exempel på en vanlig förkonditioneringsmedel är den ofullständiga Cholesky-faktoriseringen .
Den flexibla förkonditionerade konjugatgradientmetoden
I numeriskt utmanande applikationer används sofistikerade förkonditioneringsmedel, vilket kan leda till variabel förkonditionering, växlande mellan iterationerna. Även om förkonditioneraren är symmetrisk positiv-definitiv vid varje iteration, gör det faktum att den kan ändras argumenten ovan ogiltiga, och i praktiska tester leder det till en betydande nedgång av konvergensen av algoritmen som presenteras ovan. Använder Polak-Ribière -formeln
istället för Fletcher-Reeves formel
kan dramatiskt förbättra konvergensen i detta fall. Denna version av den förkonditionerade konjugatgradientmetoden kan kallas flexibel, eftersom den tillåter variabel förkonditionering. Den flexibla versionen har också visat sig vara robust även om förkonditioneraren inte är symmetrisk positiv definit (SPD).
Implementeringen av den flexibla versionen kräver lagring av en extra vektor. För en fast SPD-förkonditionering, så båda formlerna för β k är ekvivalenta i exakt aritmetik, dvs utan avrundningsfelet .
Den matematiska förklaringen av metodens bättre konvergensbeteende med Polak–Ribière- formeln är att metoden är lokalt optimal i detta fall, i synnerhet konvergerar den inte långsammare än den lokalt optimala brantaste nedstigningsmetoden.
Mot. den lokalt optimala brantaste nedstigningsmetoden
I både den ursprungliga och den förkonditionerade konjugerade gradientmetoden behöver man bara ställa in för att göra dem lokalt optimala, med hjälp av linjesökning , metoderna för brantast nedstigning . Med denna substitution är vektorer p alltid desamma som vektorer z , så det finns inget behov av att lagra vektorer p . Således är varje iteration av dessa brantaste nedstigningsmetoder lite billigare jämfört med den för konjugerade gradientmetoder. De senare konvergerar dock snabbare, såvida inte en (mycket) variabel och/eller icke-SPD förkonditionerare används, se ovan.
Konjugerad gradientmetod som optimal återkopplingskontroll för dubbelintegrator
Konjugatgradientmetoden kan också härledas med hjälp av optimal kontrollteori . I detta tillvägagångssätt faller den konjugerade gradientmetoden ut som en optimal återkopplingskontroller ,
Konjugera gradient på normalekvationerna
Den konjugerade gradientmetoden kan appliceras på en godtycklig n - by- m matris genom att applicera den på normala ekvationer A T A och höger sida vektor A T b , eftersom A T A är en symmetrisk positiv-semidefinit matris för vilken A som helst . Resultatet är konjugerad gradient på normalekvationerna (CGNR).
- A T Axe = A T b
Som en iterativ metod är det inte nödvändigt att bilda A T A explicit i minnet utan endast att utföra matris-vektor och transponera matris-vektor multiplikationer. Därför är CGNR särskilt användbart när A är en gles matris eftersom dessa operationer vanligtvis är extremt effektiva. Men nackdelen med att bilda de normala ekvationerna är att villkorstalet κ( AT A ) är lika med κ 2 ( A ) och därför kan konvergenshastigheten för CGNR vara långsam och kvaliteten på den ungefärliga lösningen kan vara känslig för avrundning fel. Att hitta en bra förkonditionering är ofta en viktig del av att använda CGNR-metoden.
Flera algoritmer har föreslagits (t.ex. CGLS, LSQR). LSQR- algoritmen påstås ha den bästa numeriska stabiliteten när A är dåligt konditionerad, dvs. A har ett stort villkorsnummer .
Konjugerad gradientmetod för komplexa hermitiska matriser
Den konjugerade gradientmetoden med en trivial modifiering kan utökas till att lösa, givet komplexvärderad matris A och vektor b, systemet av linjära ekvationer för vektorn x med komplext värde, där A är hermitisk (dvs. A' = A) och positiv-definitiv matris , och symbolen ' anger den konjugata transponeringen med stilen MATLAB / GNU Octave . Den triviala modifieringen är helt enkelt att ersätta den konjugerade transponeringen med den verkliga transponeringen överallt. Denna substitution är bakåtkompatibel, eftersom konjugerad transponering förvandlas till verklig transponering på vektorer och matriser med realt värde. Ovanstående exempelkod i MATLAB/GNU Octave fungerar alltså redan för komplexa hermitiska matriser som inte behövde modifieras.
Se även
Vidare läsning
- Atkinson, Kendell A. (1988). "Avsnitt 8.9". En introduktion till numerisk analys (2:a uppl.). John Wiley och söner. ISBN 978-0-471-50023-0 .
- Avriel, Mordecai (2003). Icke-linjär programmering: analys och metoder . Dover Publishing. ISBN 978-0-486-43227-4 .
- Golub, Gene H.; Van Loan, Charles F. (2013). "Kapitel 11". Matrix Computations (4:e upplagan). Johns Hopkins University Press. ISBN 978-1-4214-0794-4 .
- Saad, Yousef (2003-04-01). "Kapitel 6" . Iterativa metoder för glesa linjära system (2:a uppl.). SIAM. ISBN 978-0-89871-534-7 .
- Gérard Meurant: "Detektion och korrigering av tysta fel i konjugatgradientalgoritmen", Numerical Algorithms, vol.92 (2023), s.869-891. url= https://doi.org/10.1007/s11075-022-01380-1
externa länkar
- "Conjugate gradients, method of" , Encyclopedia of Mathematics , EMS Press , 2001 [1994]