Inversio-ongelmien laskennallinen peruskurssi Luento 7 8 Kevät 2011 1 Iteratiivisista menetelmistä Tähän mennessä on tarkasteltu niin sanottuja suoria menetelmiä, joissa (likimääräinen) ratkaisu saadaan kerralla esimerkiksi pseudoinverssiä käyttämällä. Suorat menetelmät kuitenkin tavallisesti vaativat matriisien käänteismatriisin laskemisen, mikä on suurien ongelmien tapauksissa numeerisesti raskas suoritus. Iteratiivisissa menetelmissä sen sijaan tavallisesti konstruoidaan jono likimääräisiä ratkaisuja, jotka (toivon mukaan) konvergoivat kohti jonkinlaista hyväksyttävää ratkaisua. Lisäksi iteratiiviset menetelmät eivät useimmiten vaadi matriisien kääntämistä, jolloin ne saattavat sopia paremmin isoille ongelmille. 2 Konjugaattigradienttimenetelmä (CG) Tarkastellaan ongelmaa m = Ax. oletetaan, että matriisi A on ns. SPD, symmetrinen ja positiividefiniitti. Toisin sanoen, matriisille A pätee: 1. A T = A (symmetrisyys), 2. kaikilla x R n, x 0, pätee x T Ax > 0 (positiividefiniittisyys) Jos matriisi A on symmetrinen, on sen singulaariarvohajotelma muotoa A = UΣU T. 1
Tällöin yo. hajotelma on myös matriisin A ominaisarvohajotelma: jos U = [u 1, u 2,..., u n ], niin Au j = σ j u j, ja erityisesti, jos A on positiividefiniitti, niin σ j = u T j σ j u j = u T j Au j > 0, matriisin A kaikki ominaisarvot ovat positiivisia. Matriisi A määrittelee ns. A-normin kaavalla x 2 A = x T Ax. Koska {u 1, u 2,..., u n } muodostavat ortogonaalisen kannan avaruudessa R n, voidaan kirjoittaa Tällöin x = j=1 n x j u j, x j = u T j x. ( j=1 ) T ( n ) x T Ax = x j u j x j σ j u j n k=1 n = σ j x 2 j = x 2 A, j=1 joten A on painotettu euklidinen normi {u 1, u 2,..., u n } koordinaattisysteemissä. Olkoon x R n ongelman m = Ax oikea ratkaisu, x = A 1 m. Kaikille x R n määritellään e = x x (virhe), r = Ae = Ax Ax = Ax m Virheen e koon mittaamiseksi määritellään (residuaali). φ(x) = e 2 A = e T Ae = e T r = r T A 1 r. Koska oikea ratkaisu x on tuntematon, ei funkionaalia φ(x) voida laskea. Huomaa, että φ(x) 0, φ(x) = 0 x = x. Siis minimoimalla φ voitaisiin saada oikeaa ratkaisua x lähellä oleva likimääräinen ratkaisu. Vaikka funktionaalin φ arvoa ei voida suoraan laskea, on se kuitenkin mahdollista minimoida iteratiivisesti. 2
Konjugaattigradienttimenetelmä on yksi vanhimmista ns. Krylovin aliavaruus -menetelmistä. Olkoon x 1 R n (usein voidaan valita x 1 = 0) ensimmäinen arvaus ratkaisuksi. Tällöin ensimmäinen residuaali on r 1 = m Ax 1, ja oletetaan, että r 1 0. Niin sanottu k. asteen Krylovin aliavaruus on K k (r 1, A) = sp{r 1, Ar 1, A 2 r 1,..., A k 1 r 1 }. Krylovin aliavaruus -menetelmissä ajatuksena on yrittää löytää likimääräsiratkaisu aliavaruudesta K k (r 1, A). Olkoon alkuarvaus x 1 ja ensimmäinen residuaali r 1 kuten edellä. Määritellään ensimmäinen hakusuunta s 1, s 1 = r 1, ja yritetään minimoida funktio R R, Nyt α φ(x 1 + αs 1 ). φ(x 1 + αs 1 ) = (x 1 + αs 1 x ) T A(x 1 + αs 1 x ) = α 2 s T 1 As 1 + 2αs T 1 A(x 1 x ) + (x 1 x ) T A(x 1 x ) = α 2 s T 1 As 1 2αs T 1 r 1 + φ(x 1 ), ja minimi saavutetaan derivaatan nollakohdassa 2αs T 1 As 1 2s T 1 r 1 = 0 α = st 1 r 1 s T 1 As 1. Määritellään nyt ratkaisun uusi iteraatio x 2, x 2 = x 1 + αs 1, ja uusi residuaali r 2, r 2 = m Ax 2 = r 1 αas 1. Huomaa, että s T 1 r 2 = s T 1 r 1 αs T 1 As 1 = 0, vektorit s 1 ja r 2 ovat kohtisuorassa toisiaan vastaan. 3
Tämän jälkeen jatketaan kuten edellä: valitaan uusi hakusuunta s 2 ja minimoidaan funktio α φ(x 2 + αs 2 ). Yleisesti iteraatiokierroksella k = 1, 2,..., α k = arg min φ(x k + αs k ) = st k r k s T k As k Ongelmana on, miten tulisi valita hakusuunta s k? Määritelmä 2.1. Olkoon {s 1, s 2,..., s k } joukko lineaarisesti riippumattomia vektoreita. Niitä sanotaan A-konjugaateiksi, jos Nyt s T j As l = 0, kun j l. Ideana on valita hakusuunnat siten, että 1. {s 1, s 2,..., s k } ovat A-konjugaatteja, ja 2. sp{s 1, s 2,..., s k } = K k (r 1, A). s 1 = r 1, sp{s 1 } = K 1 (r 1, A). Oletetaan, että olemme valinneet A-konjugaatit {s 1, s 2,..., s k }, ja että Olkoon sp{s 1, s 2,..., s k } = K k (r 1, A). r k+1 = m Ax k+1, ja oletetaan että r k+1 0. Etsitään uutta hakusuuntaa s k+1 muodossa s k+1 = r k+1 + βs k. Jotta A-konjugaattisuusehto toteutuisi, vaaditaan s T k As k+1 = s T k Ar k+1 + βs T k As k = 0, β = st k Ar k+1 s T k As. k 4
Nyt, kun j < k, s j As k+1 = s T j Ar k+1 + βs T j As k = (As j ) T r k+1, ja As j A(sp{s 1,..., s k 1 }) = AK k 1 (r 1, A) K k (r 1, A) = sp{s 1,..., s k } r k+1, joten s T j As k+1 = 0. Täten siis uusin hakusuunta s k+1 on A-konjugaatti vektoreille s 1, s 2,..., s k ja sp{s 1,..., s k+1 } = K k+1 (r 1, A). Huomioi vielä, että s T k r k = (r k + β k 1 s k 1 ) T r k = r T k r k + β k 1 s T k 1r k = r k 2, sillä s T k r k = 0, joten α k = st k r k s T k As k = r k 2 s T k As. k Lisäksi r k+1 2 = r T k+1r k+1 = r T k+1(m Ax k+1 ) = r T k+1(m Ax k α k As k ) = r T k+1r k α k r T k+1as k = α k r T k+1as k, koska r k K k (r 1, A) = sp{s 1,..., s k } r k+1. Täten joten r k+1 2 = r k 2 s k As k r T k+1as k = r k 2 β k, β = r k+1 2 r k 2. Kootaan nyt kaikki edellä oleva iteratiiviseksi algoritmiksi: 5
CG-algoritmi 1. k = 1: Valitse x 1 (esim x 1 = 0), r 1 = m Ax 1, s 1 = r 1 2. Iteroi, kunnes lopetusehto täyttyy: α k = r k 2 s T k As ; k x k+1 = x k + α k s k ; r k+1 = r k α k As k ; β k = r k+1 2 r k 2 ; s k+1 = r k+1 + β k s k. Lopetusehtona voi käyttää esimerkiksi Morozovin diskrepanssiperiaatetta, iterointi lopetetaan, kun r k ε, missä ε on (arvioitu) mittausvirheen normi. Lisäksi kannattaa myös asettaa iteroinneille jokin yläraja, mikä estää iterointisilmukan joutumisen äärettömään looppiin, jos Morozovin diskrepanssiehto ei täyty. 3 Conjugate Gradient for Least Squares (CGLS) CG-menetelmän rajoituksena on se, että matriisin A tulee olla symmetrinen ja positiividefiniitti. Yleinen (ylideterminoitu) ongelma voidaan kuitenkin palauttaa muotoon, jossa CG-menetelmää voidaan soveltaa. Tarkastellaan ongelmaa m = Ax, missä A R n n ja oletetaan, että A T A on kääntyvä. Tällöin yo. ongelman pienimmän nösumman ratkaisu saadaan kaavalla ˆx = A + m = (A T A) 1 A T m, Bˆx = b, 6
missä B = A T A ja b = A T m. Siis ongelman pienimmän nösumman ratkaisun ˆx löytämiseksi voidaan soveltaa CG-algoritmiä yhtälöön Huomaa, että nyt residuaali Bˆx = b. r k = b Bx k = A T m A T Ax k, joten määritellään erikseen diskrepanssi d k = m Ax k. Tällöin r k = A T d k, ja lisäksi nyt α k = r k 2 s T k Bs k = r k 2 As k 2. Kootaan ylläoleva iteratiiviseksi algoritmiksi: CGLS-algoritmi 1. k = 1: Valitse x 1, d 1 = m Ax 1, r 1 = A t d 1, y 1 = As 1. 2. Iteroi, kunnes lopetusehto täyttyy: α k = r k 2 y k 2 ; x k+1 = x k + α k s k ; d k+1 = d k α k y k ; r k+1 = A T d k+1 ; β k+1 = r k+1 2 r k 2 ; s k+1 = r k+1 + β k+1 s k ; y k+1 = As k+1. 7