Luento 9: Newtonin iteraation sovellus: optimointiongelma ilman rajoitusehtoja Optimointiongelmassa tehtävänä on löytää annetun reaaliarvoisen jatkuvan funktion f(x 1,x,,x n ) maksimi tai minimi jossain suljetussa joukossa Ω R n Joukkoa kutsutaan suljetuksi jos se sisältää reunansa Käytetty notaatio maksimoitaessa on maxf(x) (1) x Ω ja minimoitaessa minf(x) () x Ω Pistettäα R n kutsutaanf:n aidoksi paikalliseksi maksimiksipisteeksi (vast aidoksi minimipisteeksi) jos f(x) < f(α) (vast jos f(x) > f(α)) kaikilla x α kunhan x on riittävän lähellä α:aa Tällöin f(α) on f:n paikallinen maksimiarvo (vast minimiarvo) Jokin paikallinen ääriarvopiste on usein löydettävissä mutta se ei välttämättä ole ongelman ratkaisu Pitäisi löytää ne kaikki ja niistä valita se joka antaa suurimman (pienimmän) arvon Optimiointiongelmia esiintyy tietenkin käytännössä valtavasti Ensimmäisen ongelman muodostaa se, kuinka f pitäisi valita, jotta se mallintaisi todellista tilannetta riittävän hyvin Toinen ongelma on, kuinka valita joukko Ω Sekä f että Ω vaikuttavat ratkaisualgoritmin valintaan merkittävästi Oletamme seuraavaksi, että f on ainakin kaksi kertaa differentioituva Palautetaan mieleen mitä nämä käsitteet tarkoittavat yhden muuttujan tapauksessa Muistamme, että f:n derivaattojen nollakohdista löytyvät ne pisteet, joissa funktion kuvaaja mahdollisesti saavuttaa paikallisen lakipisteen tai laakson pohjan, ts paikallisen maksimin tai minimin Mikäli Ω = [a, b], niin derivaatan nollakohtien lisäksi piti tarkastaa funktion arvot välin [a, b] reunapisteissä a ja b Näistä valittu suurin ja pienin arvo ratkaisi (1):n ja ():n Tämän algoritmin edellytyksenä tietenkin on, että derivaatan nollakohdat saatiin laskettua Tässä vaiheessa tarvitaan yleensä Newtonin iteraatiota, sillä nollakohtien löytäminen ei yleisesti ole helppoa Useamman muuttujan tapaus ratkaistaan samalla algoritmilla Erityisen ongelman muodostaa kuitenkin tällöin reunapisteiden joukko, joka ei ole enää äärellinen kun n > 1 Siten reunapisteiden yksinkertainen tarkastelu ei enää onnistu suoraviivaisesti vaan voi olla erittäin hankalaa Nimittäin reunan dimensio on n 1 eli lähes yhtäsuuri kuin n heti kun n on vähän suurempi Vain tapauksessa n = voi reunan vielä jotenkin onnistua hallitsemaan Esimerkki 1 Olkoon n = ja Ω origokeskinen yksikkökiekko, ts Ω = {(x 1,x ) : x 1 +x 1} 1
Nyt Ω:n reuna on origokeskinen yksikköympyrä eli {(x 1,x ) : x 1 +x = 1} Funktion arvojen tarkastelu Ω:n reunalla voi vielä onnistua Esimerkiksi jos f(x 1,x ) = x 1 + x niin maksimipiste (ihan vain f:n kuvaajan perusteella) on ( 1 1, ) ja f:n maksimiarvo Ω:ssa on tällöin f( 1 1, ) = Ei siis ole tavatonta, että alueen reunalta löytyy f:n ääriarvopisteitä Koska tämä ei ole varsinaisesti optimoinnin kurssi, niin keskitymme opimointiongelmaan ilman rajoitusehtoja, ts Ω = R n Tällöin Ω:lla ei ole reunaa, mikä on siis huomattava helpotus (Esimerkiksi ns lineaarinen ohjelmointi on algoritmi jonka avulla voidaan ratkaista eräs erittäin tärkeä luokka optimointiongelmia pelkästään reunaa tutkimalla) Siten f:n lokaalit ääriarvopisteet löytyvät f:n gradientin nollakohdista joita kutsutaan f:n kriittisiksi pisteiksi Funktion f gradientti on f(x 1,,x n ) = joka oletusten perusteella on siis funktio f : R n R n Nyt samalla perusteella kuin yhden muuttujan tapauksessa, paikalliset ääriarvopisteet löytyvät kriittisistä pisteistä f x 1 f x n, Perustellaan tämä f:n 1 asteen Taylorin polynomia T 1 (x+ x) = f(x)+ f(x) T x (3) tarkastelemalla (Virhe on tällöin O( x ), joten T 1 kertoo kuinka f käyttäytyy pisteen x lähellä) Jos kehityskeskus x ei ole kriittinen piste, T 1 kasvaa esimerkiksi suuntaan f(x) siirryttäessä, sillä jos x = t f(x) kun t > 0, niin f(x) T x = t f(x) > 0 Tämä on f:n niin sanottu nopeimman kasvun suunta pisteessä x Vastaavasti T 1 pienenee nopeiten suuntaan f(x) siirryttäessä Muihin suuntiin siirryttäessä kasvu- tai pienenemisnopeus on näiden välissä Siten ääriarvopiste on aina välttämättä kriittinen piste Kriittiset pisteet löytääksemme joudumme siis tarkastelemaan epälineaarista yhtälöryhmää f(x 1,,x n ) = 0 Kaikkien ratkaisujen löytäminen ei yleisesti ottaen ole mikään helppo tehtävä Merkitään x = [ x 1 x k ] T Tällöin Newtonin iteraatio saa muodon x k+1 = x k H(x k ) 1 f(x k ), (4)
missä H(x) on f:n Hessen matriisi H(x) = x 1 x n x 1 x 1 x n x 1 x x n x x n (5) Tämä on siis miellettävä vektorimuutujan reaaliarvoisen funktion f toiseksi derivaataksi Newtonin (4) iteraatio suppenee kohti jotain f:n nollakohtaa, eli f:n kriittistä pistettä, edellyttäen että alkuarvaus on riittävän hyvä Oletetaan, että yksi nollakohta x on näin löytynyt Kuinka päätellä onko kriittinen piste paikallinen ääriarvo (minimi-tai maksimipiste) vaiko ei kumpikaan eli niin sanottu satulapiste? Voimme edetä samoin, kuin yhden muuttujan tapauksessa, eli tarkastella f:n toista derivaattaa, eli H:ta pisteessä x seuraavasti Nyt oletusten perusteella H on symmetrinen matriisi Tällöin f:n toisen asteen Taylorin polynomi saa muodon (johdetaan kuten 1 asteen tapaus, joka käsiteltiin Newtonin iteraation yhteydessä) T (x+ x) = f(x)+ f(x) T x+ x T H(x) x, (6) kun kehityskeskus on x Koska tällöin f(x) = 0, saamme T (x+ x) = f(x)+ x T H(x) x Sopivien differentioituvuusoletusten pätiessä, f:n käytöksen x:n lähellä määrää riittävän hyvin T (Virhe on tällöin O( x 3 ) pisteen x lähellä) Siten T :n avulla pystymme päättelemään onko x ääriarvopiste vai ei Lineaarialgebrasta toivottavasti muistamme, että symmetrinen matriisi voidaan esittää ominaisarvohajotelmansa avulla siten, että H(x) = QDQ T, missä Q on ortogonaalinen matriisi, jonka sarakkeet ovat H(x):n ominaisvektoreita ja D on diagonaalimatriisi, jonka diagonaalilla on H(x):n ominaisarvot d j, j = 1,,n Tämän avulla, nähdäksemme kuinka T käyttäytyy kriittisen pisteen x lähellä, kannattaa tehdä muuttujan vaihto Nimittäin T (x+ x) = f(x)+ y T D y, (7) jos asetamme uudeksi muuttujaksi y = Q T x Nyt jos merkitään y = (y 1,,y n ), niin n y T D y = d j yj j=1 Tämän etu on siinä, että sitä on helppo tutkia 3
Näemme, että x on paikallinen minimi jos d j > 0 kaikille j = 1,,n Jos tämä pätee, matriisin H(x) sanotaan olevan positiividefiniitti Vastaavasti x on paikallinen maksimi jos d j < 0 kaikille j = 1,,n Jos osa ominaisarvoista on negatiivisia ja osa positiivisia, on kyseessä satulapiste (Tällöin tietyissä suunnissa on kasvua ja tietyissä suunnissa vähenemistä) Hessen matriisitesti ei kerro mitään tapauksesta jossa H(x):llä on vain saman merkkisiä ominaisarvoja niin, että osa= 0 Käytännön optimointiongelmat voivat olla suuria, ts n saattaa olla jopa suuruusluokkaa 10 5 tai enemmän Tällöin Newtonin iteraatio (4) ei välttämättä ole houkutteleva vaihtoehto kriittisten pisteiden etsimiseksi sillä työmäärä jo yhdenkin askeleen laskemiseksi voi olla kohtuuton Tämä johtuu siis siitä, että H(x k ) 1 :llä operoiminen (eli H(x k ):n LU-hajotelman laskeminen) vie liikaa aikaa Yksi vaihtoehto tässä kohtaan on käyttää samoja ideoita kuin yksinkertaistetun Newtonin iteraation yhteydessä Tällöin H(x k ) korvataan jollain matriisilla M(x k ), jonka käänteismatriisilla on helpompi operoida Tällaiset ideat johtavat ns kvasi-newtonin menetelmiin kriittisten pisteiden löytämiseksi Toinen selkeästi yksinkertaisempi vaihtoehto on käyttää niin sanottuja laskeutumismenetelmiä eli jättää Newtonin iteraatio (4) kokonaan väliin Tällöin askeleet ovat edullisia, mutta niitä voi joutua ottamaan runsaasti Laskeutumismenetelmien kuvaamiseksi tarkastellaan nyt minimointiongelmaa (Huomaa, että maksimointiongelma muuttuu minimointiongelmaksi, kun tarkastelet f:ää f:n sijaan) Helpoin tapa välttää moniulotteinen Newtonin menetelmä on vaatia vain, että askellus pisteestä x k seuraavaan pisteeseen x k+1 tapahtuu aina siten, että f(x k+1 ) < f(x k ) (8) pätee Tämä saavutetaan esimerkiksi muuntamalla tehtävä yksiulotteiseksi minimointitehtäväksi, niin että valitaan laskeutumissuunta d k siten, että f pienenee kun x k :stä siirrytään suuntaan d k Jos tämä pätee, tarkastellaan yhden muuttujan funktiota ψ(t) = f(x k +td k ), jossa t > 0 valitaan siten, että ψ minimoituu Tämän ratkaisemiseksi tarvitsee vain löytää ψ:n derivaatan nollakohdat Siihen tässä tapauksessa riittää käyttää vain yksiulotteista Newtonin menetelmää Se on edullista Kuinka sitten valita d k? Jos kullakin askeleella valitaan d k = f(x k ), niin saadaan ns nopeimman laskeutumisen menetelmä Nimittäin kyseiseen suuntaan f pienenee nopeiten kunhan vain f(x k ) 0 Tämä nähtiin (3):stä (Jos f(x k ) = 0 niin olet jo kriittisessä pisteessä) Iteraatio pysäytetään, kun f(x k ) < ǫ, missä ǫ > 0 on jokin ennalta asetettu toleranssi Tällöin siis k askeleen jälkeen f(x k ) 0 4
Laskeutumismenetelmiä voidaan käyttää myös lineaarisen yhtälöryhmän Ax = b, b R n, (9) iteratiiviseen ratkaisemiseen, kun A R n n on symmetrinen positiividefiniitti matriisi (Siis A T = A ja kaikki A:n ominaisarvot ovat positiivisia) Idea perustuu siihen, että (9):n rinnalla tarkastellaan kvadraattista funktiota f(x) = 1 xt Ax b t x (10) Tekemällä muuttujan vaihdos A = QDQ T, missä D on diagonaalimatriisi ja Q on ortogonaalinen, on helppo nähdä että f on alhaalta rajoitettu, ts f(x) > C jollain C R kaikilla x Siten f:n absoluuttinen minimi löytyy kriittisistä pisteistä Niitä on vain yksi, sillä f(x) = 0 jos ja vain jos x = A 1 b (Harj teht) Siispä (9):n ratkaisemisen sijaan minimoidaankin funktiota (10) käyttämällä laskeutumismenetelmiä f:n minimipisteen löytämiseksi Suoraviivainen lasku antaa ψ(t) = f(x k +td k ) = f(x k )+td T k f(x k)+ 1 t d T k Ad k (11) Nyt d k on laskeutumissuunta kunhan vain d T k f(x k) < 0 Tämän ehdon toteutuessa, laskemalla (11):n derivaatan nollakohdan t:n suhteen, saamme Tällöin siis askellamme siten, että t = dt k f(x k) d T k Ad k x k+1 = x k dt k f(x k) d T k Ad d k (1) k Luonnollinen valinta laskeutumissuunnaksi d k on tietenkin nopeimman laskeutumisen menetelmä Yllättäen kokonaisuuden kannalta se ei ole paras vaihtoehto Paras vaihtoehto kullakin askeleella on valita ns konjugaattisuunta, joka johtaa konjugaattigradienttimenetelmään (9):n iteratiiviseksi ratkaisemiseksi Konjugaattigradienttimenetelmä ei kuitenkaan kuulu tämän kurssin vaatimuksiin vaikka menetelmän idea onkin kuvatun kaltainen 5