Lanczos algoritm
Lanczos -algoritmen är en iterativ metod utarbetad av Cornelius Lanczos som är en anpassning av potensmetoder för att hitta de "mest användbara" (som tenderar mot extremt högsta/lägsta) egenvärden och egenvektorer för en Hermitisk matris , där ofta men inte nödvändigtvis är mycket mindre än . Även om den är beräkningseffektiv i princip, var metoden som den ursprungligen formulerades inte användbar på grund av dess numeriska instabilitet .
1970 visade Ojalvo och Newman hur man gör metoden numeriskt stabil och tillämpade den på lösningen av mycket stora tekniska strukturer utsatta för dynamisk belastning. Detta uppnåddes genom att använda en metod för att rena Lanczos-vektorerna (dvs. genom att upprepade gånger ortogonalisera varje nygenererad vektor med alla tidigare genererade) till vilken grad av noggrannhet som helst, som när den inte utfördes producerade en serie vektorer som var starkt kontaminerade av de som var associerade med de lägsta naturliga frekvenserna.
I sitt ursprungliga arbete föreslog dessa författare också hur man väljer en startvektor (dvs. använd en slumptalsgenerator för att välja varje element i startvektorn) och föreslog en empiriskt bestämd metod för att bestämma m {\displaystyle m} , talet av vektorer (dvs. den bör väljas till att vara ungefär 1,5 gånger antalet önskade exakta egenvärden). Strax därefter följdes deras arbete av Paige, som också gav en felanalys. 1988 producerade Ojalvo en mer detaljerad historia av denna algoritm och ett effektivt egenvärdesfeltest.
Algoritmen
-
Mata in en hermitisk matris av storleken , och valfritt ett antal iterationer (som standard, låt ).
- Strängt taget behöver algoritmen inte tillgång till den explicita matrisen, utan endast en funktion som beräknar produkten av matrisen med en godtycklig vektor. Denna funktion kallas högst gånger.
- Mata ut en matris med ortonormala kolumner och en tridiagonal reell symmetrisk matris av storleken . Om , då är enhetlig , och .
-
Varning Lanczos-iterationen är benägen till numerisk instabilitet. När de körs i icke-exakt aritmetik bör ytterligare åtgärder (som beskrivs i senare avsnitt) vidtas för att säkerställa resultatens giltighet.
- Låt vara en godtycklig vektor med euklidisk norm .
- Förkortat inledande iterationssteg:
- Låt .
- Låt .
- Låt .
- För gör:
- Låt (även euklidisk norm ).
- Om , låt ,
- annars välj som en godtycklig vektor med euklidisk norm som är ortogonal mot alla .
- Låt .
- Låt .
- Låt .
- Låt vara matrisen med kolumner . Låt .
- Notera 1 .
Det finns i princip fyra sätt att skriva iterationsproceduren. Paige och andra verk visar att ovanstående ordningsföljd är den mest numeriskt stabila. I praktiken kan initialvektorn tas som ett annat argument för proceduren, med och indikatorer på numerisk unrecision inkluderas som ytterligare loopavslutningsvillkor.
Utan att räkna matris-vektormultiplikationen, gör varje iteration aritmetiska operationer. Matris-vektormultiplikationen kan göras i aritmetiska operationer där är det genomsnittliga antalet element som inte är noll i en rad. Den totala komplexiteten är alltså , eller om ; Lanczos-algoritmen kan vara mycket snabb för glesa matriser. Schema för att förbättra numerisk stabilitet bedöms vanligtvis mot denna höga prestanda.
Vektorerna kallas Lanczos-vektorer . Vektorn används inte efter att har beräknats, och vektorn används inte efter beräknas. Därför kan man använda samma lagring för alla tre. På samma sätt, om bara den tridiagonala matrisen söks, då behöver den råa iterationen inte efter att ha beräknat , även om vissa scheman för att förbättra det numeriska stabilitet skulle behöva det senare. Ibland beräknas de efterföljande Lanczos-vektorerna om från vid behov.
Tillämpning på egenproblemet
Lanczos-algoritmen tas oftast upp i samband med att hitta egenvärdena och egenvektorerna för en matris, men medan en vanlig diagonalisering av en matris skulle göra egenvektorer och egenvärden uppenbara från inspektion, är detsamma inte sant för tridiagonaliseringen som utförs av Lanczos. algoritm; icke-triviala ytterligare steg behövs för att beräkna även ett enda egenvärde eller egenvektor. Icke desto mindre är tillämpningen av Lanczos-algoritmen ofta ett betydande steg framåt för att beräkna egennedbrytningen. Om är ett egenvärde av , och om ( är en egenvektor till ) så är är motsvarande egenvektor för (eftersom ). Sålunda transformerar Lanczos-algoritmen egennedbrytningsproblemet för till egennedbrytningsproblemet för .
- För tridiagonala matriser finns det ett antal specialiserade algoritmer, ofta med bättre beräkningskomplexitet än generella algoritmer. Till exempel, om är en tridiagonal symmetrisk matris då:
- Den kontinuerliga rekursionen gör det möjligt att beräkna det karakteristiska polynomet i operationer och utvärdera det vid en punkt i operationer.
- Dela -och-erövra-egenvärdesalgoritmen kan användas för att beräkna hela egenuppdelningen av i operationer.
- Den snabba multipolmetoden kan beräkna alla egenvärden i bara operationer.
- Vissa allmänna egennedbrytningsalgoritmer, särskilt QR-algoritmen , är kända för att konvergera snabbare för tridiagonala matriser än för allmänna matriser. Asymptotisk komplexitet för tridiagonal QR är precis som för dela-och-härska-algoritmen (även om konstantfaktorn kan vara annorlunda); eftersom egenvektorerna tillsammans har element är detta asymptotiskt optimalt.
- Även algoritmer vars konvergenshastigheter är opåverkade av enhetliga transformationer, såsom effektmetoden och invers iteration , kan ha prestandafördelar på låg nivå genom att appliceras på den tridiagonala matrisen snarare än den ursprungliga matrisen . Eftersom är mycket gles med alla element som inte är noll i mycket förutsägbara positioner, tillåter den kompakt lagring med utmärkt prestanda gentemot caching . Likaså är en reell matris med alla egenvektorer och egenvärden reella, medan i allmänhet kan ha komplexa element och egenvektorer, så reell aritmetik är tillräcklig för att hitta egenvektorerna och egenvärdena för .
- Om är mycket stor, då reducering av så att har en hanterbar storlek kommer fortfarande att göra det möjligt att hitta de mer extrema egenvärdena och egenvektorerna för ; i -regionen kan Lanczos-algoritmen ses som ett förlustkompressionsschema för hermitiska matriser, som betonar att bevara de extrema egenvärdena.
Kombinationen av bra prestanda för glesa matriser och förmågan att beräkna flera (utan att beräkna alla) egenvärden är de främsta anledningarna till att man väljer att använda Lanczos-algoritmen.
Applikation för tridiagonalisering
Även om egenproblemet ofta är motivet för att tillämpa Lanczos-algoritmen, är operationen som algoritmen primärt utför tridiagonalisering av en matris, för vilken numeriskt stabila hushållartransformationer har gynnats sedan 1950-talet. Under 1960-talet ignorerades Lanczos-algoritmen. Intresset för det föryngrades av Kaniel-Paiges konvergensteorin och utvecklingen av metoder för att förhindra numerisk instabilitet, men Lanczos-algoritmen förblir den alternativa algoritmen som man bara försöker om Householder inte är tillfredsställande.
Aspekter där de två algoritmerna skiljer sig är:
- Lanczos drar fördel av att är en gles matris, medan Householder inte gör det, och kommer att generera fill-in .
- Lanczos fungerar genomgående med den ursprungliga matrisen (och har inga problem med att den bara är känd implicit), medan raw Householder vill modifiera matrisen under beräkningen (även om det kan undvikas).
- Varje iteration av Lanczos-algoritmen producerar ytterligare en kolumn i den slutliga transformationsmatrisen , medan en iteration av Householder producerar en annan faktor i en enhetlig faktorisering av . Varje faktor bestäms dock av en enda vektor, så lagringskraven är desamma för båda algoritmerna, och kan beräknas i tid.
- Hushållaren är numeriskt stabil, medan rå Lanczos inte är det.
- , med endast synkroniseringspunkter (beräkningarna av och ). Hushållaren är mindre parallell, med en sekvens av beräknade skalära kvantiteter som var och en beror på den föregående kvantiteten i sekvensen.
Härledning av algoritmen
Det finns flera resonemang som leder till Lanczos-algoritmen.
En mer försynt kraftmetod
Potensmetoden för att hitta egenvärdet av största storleken och en motsvarande egenvektor för en matris är ungefär
-
- Välj en slumpmässig vektor .
- För (tills riktningen för har konvergerat) gör:
- Låt
- Låt
- I den stora -gränsen närmar sig den normerade egenvektorn som motsvarar det största egenvärdet.
En kritik som kan riktas mot denna metod är att den är slösaktig: den lägger ner mycket arbete (matris-vektor-produkterna i steg 2.1) på att extrahera information från matrisen A {\displaystyle A} , men uppmärksammar mycket sista resultat; implementeringar använder vanligtvis samma variabel för alla vektorer där varje ny iteration skriver över resultaten från den föregående. Tänk om vi istället behöll alla mellanresultat och organiserade deras data?
En bit information som trivialt är tillgänglig från vektorerna är en kedja av Krylov-underrymden . Ett sätt att påstå det utan att införa set i algoritmen är att hävda att den beräknar
- en delmängd av en bas av så att för varje och alla
detta är trivialt tillfredsställt av så länge som är linjärt oberoende av (och om det finns ett sådant beroende kan man fortsätta sekvensen genom att välja som en godtycklig vektor linjärt oberoende av . En bas som innehåller vektorerna är dock sannolikt numeriskt dåligt konditionerad , eftersom denna sekvens av vektorer är avsedd att konvergera till en egenvektor av . För att undvika det kan man kombinera kraftiterationen med en Gram–Schmidt-process , för att istället producera en ortonormal bas av dessa Krylov-delrum.
- Välj en slumpmässig vektor av euklidisk norm . Låt .
- För gör:
- Låt .
- För alla låt . (Dessa är koordinaterna för med avseende på basvektorerna .)
- Låt . (Avbryt komponenten av som är i )
- Om så låt och j
- + en godtycklig vektor av euklidisk norm som är ortogonal mot alla .
Relationen mellan power iterationsvektorerna och de ortogonala vektorerna är att
- .
Här kan det observeras att vi faktiskt inte behöver vektorerna för att beräkna dessa , eftersom mellan och är i som avbryts av ortogonaliseringsprocessen. Således beräknas samma grund för kedjan av Krylov-delrum av
- Välj en slumpmässig vektor av euklidisk norm .
- För gör:
- Låt .
- För alla låt .
- Låt .
- Låt .
- Om så låt ,
- annars välj som en godtycklig vektor av euklidisk norm som är ortogonal till alla .
uppfyller koefficienterna
- för alla ;
definitionen kan verka lite udda, men passar det allmänna mönstret sedan
Eftersom power iterationsvektorerna som eliminerades från denna rekursion uppfyller vektorerna och koefficienter innehåller tillräckligt med information från för att alla kan beräknas , så ingenting gick förlorat genom att byta vektorer. (Det visar sig faktiskt att data som samlas in här ger betydligt bättre approximationer av det största egenvärdet än vad man får från lika många iterationer i effektmetoden, även om det inte nödvändigtvis är uppenbart vid denna tidpunkt.)
Denna sista procedur är Arnoldi-iterationen . Lanczos-algoritmen uppstår sedan som förenklingen man får genom att eliminera beräkningssteg som visar sig vara triviala när är hermitisk — särskilt de flesta koefficienterna visa sig vara noll.
Elementärt, om är hermitisk då
För vet vi att och eftersom genom att konstruktionen är ortogonal mot detta delrum måste denna inre produkt vara noll. (Detta är i grunden också anledningen till att sekvenser av ortogonala polynom alltid kan ges en tre-term recurrencerelation .) För får man
eftersom den senare är verklig på grund av att den är normen för en vektor. För får man
vilket betyder att detta också är sant.
Mer abstrakt, om är matrisen med kolumner då talen kan identifieras som element i matrisen , och för matrisen är övre Hessenberg . Eftersom
matrisen är hermitisk. Detta innebär att också är lägre Hessenberg, så det måste i själva verket vara tridiagional. Eftersom den är hermitisk är dess huvuddiagonal verklig, och eftersom dess första subdiagonal är verklig genom konstruktion, gäller samma sak för dess första superdiagonal. Därför en verklig, symmetrisk matris - matrisen i Lanczos algoritmspecifikation.
Samtidig approximation av extrema egenvärden
Ett sätt att karakterisera egenvektorerna för en hermitisk matris är som stationära punkter i Rayleigh-kvotienten
I synnerhet är det största egenvärdet det globala maximum av och det minsta egenvärdet är det globala minimum av .
Inom ett lågdimensionellt delrum av kan det vara möjligt att lokalisera maximalt och minimum av . Att upprepa det för en ökande kedja producerar två sekvenser av vektorer : och så att och
Frågan uppstår då hur man väljer delrymden så att dessa sekvenser konvergerar med optimal hastighet.
Från den optimala riktningen för att söka större värden på den för gradienten , och likaså från den optimala riktningen för att söka mindre värden på den negativa gradienten . I allmänhet
så intresseriktningarna är lätta nog att beräkna i matrisaritmetik, men om man vill förbättra både och så finns det två nya riktningar för att ta hänsyn till: och eftersom och kan vara linjärt oberoende vektorer (är faktiskt nära ortogonala), man kan i allmänhet inte förvänta sig att och är parallella. Är det därför nödvändigt att öka dimensionen på med för varje steg? Inte om tas för att vara Krylov-underrymden, eftersom för alla alltså särskilt för både och .
Med andra ord kan vi börja med någon godtycklig initialvektor konstruera vektorrymden
och sök sedan så att
Eftersom :te potensmetoden iterate tillhör följer det att en iteration för att producera x och potensmetoden, och kommer att uppnå mer genom att approximera båda egenvärdesextrema. För underproblemet att optimera på vissa , det är bekvämt att ha en ortonormal bas för detta vektorutrymme. Sålunda leds vi återigen till problemet med att iterativt beräkna en sådan grund för sekvensen av Krylov-underrum.
Konvergens och annan dynamik
När man analyserar dynamiken i algoritmen är det bekvämt att ta egenvärdena och egenvektorerna för som givna, även om de inte är explicit kända för användaren. För att fixa notation, låt vara egenvärdena (dessa är kända för alla att vara verkliga och därmed möjliga att beställa) och låt vara en ortonormal uppsättning egenvektorer så att för alla .
Det är också bekvämt att fixa en notation för koefficienterna för den initiala Lanczos-vektorn med avseende på denna egenbas; låt för alla , så att . En startvektor utarmad på någon egenkomponent kommer att fördröja konvergensen till motsvarande egenvärde, och även om detta bara kommer ut som en konstant faktor i felgränserna förblir utarmningen oönskad. En vanlig teknik för att undvika att konsekvent drabbas av det är att välja genom att först rita elementen slumpmässigt enligt samma normalfördelning med medelvärde och skala sedan om vektorn till norm . Före omskalningen gör detta att koefficienterna också är oberoende normalfördelade stokastiska variabler från samma normalfördelning (eftersom ändringen av koordinater är enhetlig), och efter omskalning av vektorn kommer att ha en enhetlig fördelning på enhetssfären i . Detta gör det möjligt att binda sannolikheten för att till exempel .
Det faktum att Lanczos-algoritmen är koordinatagnostisk – operationer tittar bara på inre produkter av vektorer, aldrig på enskilda element av vektorer – gör det enkelt att konstruera exempel med känd egenstruktur att köra algoritmen på: gör A {\displaystyle en diagonal matris med de önskade egenvärdena på diagonalen; så länge som startvektorn har tillräckligt många element som inte är noll, kommer algoritmen att mata ut en allmän tridiagonal symmetrisk matris som .
Kaniel–Paiges konvergensteori
Efter iterationssteg av Lanczos-algoritmen är en reell symmetrisk matris, som på samma sätt som ovan har egenvärden Med konvergens förstås i första hand konvergensen av till (och den symmetriska konvergensen av till ) när växer, och sekundärt konvergensen av något område av egenvärden för till sina motsvarigheter av . Konvergensen för Lanczos-algoritmen är ofta storleksordningar snabbare än den för kraftiterationsalgoritmen.
Gränserna för kommer från ovanstående tolkning av egenvärden som extremvärden för Rayleigh-kvoten . Eftersom är a priori maximum av på hela medan är bara maxvärdet på en -dimensionellt Krylov-underrum får vi trivialt . Omvänt ger vilken punkt i det Krylov-underrummet en nedre gräns för , så om en punkt kan vara visas för vilken är liten så ger detta en snäv gräns på .
Dimensionen Krylovs delrum är
så vilket element som helst av det kan uttryckas som för något polynom av högst grad ; koefficienterna för det polynomet är helt enkelt koefficienterna i den linjära kombinationen . Polynomet vi vill ha kommer att visa sig ha reella koefficienter, men för tillfället bör vi även tillåta komplexa koefficienter, och vi kommer att skriva för polynomet som erhålls genom att komplext konjugera alla koefficienter för . I denna parametrisering av Krylov-underrummet har vi
Genom att nu använda uttrycket för som en linjär kombination av egenvektorer får vi
och mer generellt
för vilket polynom som helst .
Således
En viktig skillnad mellan täljare och nämnare här är att termen försvinner i täljaren, men inte i nämnaren. Så om man kan välja är stor vid men liten vid alla andra egenvärden, får man en snäv gräns för felet .
Eftersom har många fler egenvärden än har koefficienter, kan detta tyckas vara en hög ordning, men ett sätt att möta det är att använda Chebyshev-polynom . Skriva för graden Chebyshev-polynom av det första slaget (det som uppfyller för alla ), har vi ett polynom som stannar i intervallet på det kända intervallet men växer snabbt utanför det. Med viss skalning av argumentet kan vi låta det mappa alla egenvärden utom till . Låta
(om , använd istället det största egenvärdet strikt mindre än ), sedan maximalt värde på för är och det minimala värdet är , alltså
dessutom
kvantiteten
(dvs förhållandet mellan det första egengapet och diametern för resten av spektrumet ) är således av nyckelvikt för konvergenshastigheten här. Skriver också
vi kan dra slutsatsen att
Konvergenshastigheten styrs alltså huvudsakligen av , eftersom denna gräns krymper med en faktor för varje extra iteration.
Som jämförelse kan man överväga hur konvergenshastigheten för potensmetoden beror på men eftersom potensmetoden i första hand är känslig för kvoten mellan absoluta värden på egenvärdena behöver vi för egengapet mellan och att vara den dominerande. Under den begränsningen är det fall som gynnar potensmetoden mest att så tänk på det. Senare i effektmetoden, iterationsvektorn:
där varje ny iteration effektivt multiplicerar -amplituden med
Uppskattningen av det största egenvärdet är då
så ovanstående gräns för Lanczos-algoritmens konvergenshastighet bör jämföras med
som krymper med en faktor på för varje iteration. Skillnaden kokar alltså ner till den mellan och . I region, den senare är mer som och presterar som effektmetoden med ett egengap dubbelt så stort; en märkbar förbättring. Det mer utmanande fallet är dock det för där är en ännu större förbättring av egengapet; ρ regionen är där Lanczos-algoritmen konvergensmässigt gör den minsta förbättringen av effektmetoden.
Numerisk stabilitet
Stabilitet betyder hur mycket algoritmen kommer att påverkas (dvs. kommer den att ge det ungefärliga resultatet nära det ursprungliga) om det introduceras och ackumuleras små numeriska fel. Numerisk stabilitet är det centrala kriteriet för att bedöma användbarheten av att implementera en algoritm på en dator med avrundning.
För Lanczos-algoritmen kan det bevisas att med exakt aritmetik , uppsättningen av vektorer konstruerar en ortonormal bas, och de lösta egenvärdena/vektorerna är goda approximationer till den ursprungliga matrisen. Men i praktiken (eftersom beräkningarna utförs i flyttalsaritmetik där inexakthet är oundviklig), går ortogonaliteten snabbt förlorad och i vissa fall kan den nya vektorn till och med vara linjärt beroende av den mängd som redan är konstruerad. Som ett resultat kan vissa av egenvärdena för den resulterande tridiagonala matrisen inte vara approximationer till den ursprungliga matrisen. Därför är Lanczos-algoritmen inte särskilt stabil.
Användare av denna algoritm måste kunna hitta och ta bort dessa "falska" egenvärden. Praktiska implementeringar av Lanczos-algoritmen går i tre riktningar för att bekämpa denna stabilitetsfråga:
- Förhindra förlust av ortogonalitet,
- Återställ ortogonaliteten efter att basen har genererats.
- Efter att alla goda och "falska" egenvärden har identifierats, ta bort de falska.
Variationer
Variationer på Lanczos-algoritmen finns där de involverade vektorerna är höga, smala matriser istället för vektorer och de normaliserande konstanterna är små kvadratiska matriser. Dessa kallas "block" Lanczos-algoritmer och kan vara mycket snabbare på datorer med ett stort antal register och långa minneshämtningstider.
Många implementeringar av Lanczos-algoritmen startar om efter ett visst antal iterationer. En av de mest inflytelserika omstartade varianterna är den implicit omstartade Lanczos-metoden, som är implementerad i ARPACK . Detta har lett till ett antal andra omstartade varianter som omstartad Lanczos-bidiagonalisering. En annan framgångsrik omstartad variant är Thick-Restart Lanczos-metoden, som har implementerats i ett mjukvarupaket som heter TRLan.
Nullutrymme över ett ändligt fält
1995 publicerade Peter Montgomery en algoritm, baserad på Lanczos-algoritmen, för att hitta delar av nollutrymmet för en stor gles matris över GF(2) ; eftersom mängden personer som är intresserade av stora glesa matriser över ändliga fält och mängden personer som är intresserade av stora egenvärdeproblem knappast överlappar varandra, kallas detta ofta även för block Lanczos-algoritmen utan att orsaka orimlig förvirring. [ citat behövs ]
Ansökningar
Lanczos algoritmer är mycket attraktiva eftersom multiplikationen med är den enda linjära operationen i stor skala. Eftersom vägda texthämtningsmotorer implementerar just denna operation, kan Lanczos-algoritmen tillämpas effektivt på textdokument (se latent semantisk indexering ) . Egenvektorer är också viktiga för storskaliga rankningsmetoder som HITS-algoritmen utvecklad av Jon Kleinberg , eller PageRank -algoritmen som används av Google.
Lanczos algoritmer används också inom den kondenserade materiens fysik som en metod för att lösa Hamiltonians av starkt korrelerade elektronsystem, samt i skalmodellkoder inom kärnfysik .
Genomföranden
NAG -biblioteket innehåller flera rutiner för lösning av storskaliga linjära system och egenproblem som använder Lanczos-algoritmen.
MATLAB och GNU Octave kommer med ARPACK inbyggt. Både lagrade och implicita matriser kan analyseras genom eigs() -funktionen ( Matlab / Octave ).
På liknande sätt, i Python , har SciPy - paketet scipy.sparse.linalg.eigsh som också är ett omslag för funktionerna SSEUPD och DSEUPD från ARPACK som använder den implicit omstartade Lanczos-metoden.
En Matlab-implementering av Lanczos-algoritmen (observera precisionsproblem) är tillgänglig som en del av Gaussian Belief Propagation Matlab-paketet . GraphLab - samarbetsfiltreringsbiblioteket innehåller en storskalig parallell implementering av Lanczos-algoritmen (i C++) för flerkärniga.
PRIMME - biblioteket implementerar också en Lanczos-liknande algoritm.
Anteckningar
Vidare läsning
- Golub, Gene H .; Van Loan, Charles F. (1996). "Lanczos metoder" . Matrisberäkningar . Baltimore: Johns Hopkins University Press. s. 470–507. ISBN 0-8018-5414-8 .
- Ng, Andrew Y .; Zheng, Alice X.; Jordan, Michael I. (2001). "Länkanalys, egenvektorer och stabilitet" (PDF) . IJCAI'01 Proceedings of the 17th International Joint Conference on Artificiell Intelligens . 2 : 903-910.