4 INFORMOITU ETSINTÄ AHNE PARAS ENSIN -STRATEGIA

Samankaltaiset tiedostot
Haku osittaisen informaation vallitessa

4 Heuristinen haku. Eero Hyvönen Helsingin yliopisto

Kognitiivinen mallintaminen 1

Ohjelmistotekniikan laitos OHJ-2550 Tekoäly, kevät

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö

13 Lyhimmät painotetut polut

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Kombinatorinen optimointi

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010

Algoritmit 2. Luento 11 Ti Timo Männikkö

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

.. X JOHDATUS TEKOÄLYYN TEEMU ROOS

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Ohjelmistotekniikan laitos OHJ-2550 Tekoäly, kevät

Kimppu-suodatus-menetelmä

Luetteloivat ja heuristiset menetelmät. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Algoritmit 2. Luento 10 To Timo Männikkö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Mat Lineaarinen ohjelmointi

3.4 Peruutus (backtracking)

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

JOHDATUS TEKOÄLYYN TEEMU ROOS

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Algoritmit 2. Luento 2 To Timo Männikkö

Implementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely)

JOHDATUS TEKOÄLYYN TEEMU ROOS

Algoritmit 1. Luento 8 Ke Timo Männikkö

Harjoitus 6 ( )

Algoritmit 2. Luento 2 Ke Timo Männikkö

JOHDATUS TEKOÄLYYN TEEMU ROOS

Johdatus verkkoteoriaan 4. luento

Algoritmit 1. Luento 13 Ti Timo Männikkö

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Algoritmi on periaatteellisella tasolla seuraava:

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luento 8: Epälineaarinen optimointi

Algoritmit 2. Luento 6 To Timo Männikkö

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia

Kognitiivinen mallintaminen I

JOHDATUS TEKOÄLYYN TEEMU ROOS

Turingin koneen laajennuksia

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Algoritmit 2. Luento 14 Ke Timo Männikkö

Luku 8. Aluekyselyt. 8.1 Summataulukko

Algoritmit 2. Luento 13 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Geneettiset algoritmit

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

Minimilatenssiongelman ratkaisualgoritmeja (valmiin työn esittely)

GA & robot path planning. Janne Haapsaari AUTO Geneettiset algoritmit

Algoritmit 1. Luento 12 Ti Timo Männikkö

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Algoritmit 1. Luento 13 Ma Timo Männikkö

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

7.4 Sormenjälkitekniikka

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

Datatähti 2019 loppu

Algoritmit 2. Luento 6 Ke Timo Männikkö

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Malliratkaisut Demo 1

Skedulointi, kuormituksen tasaus, robotin navigaatio

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

2 Osittaisderivaattojen sovelluksia

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Matematiikan tukikurssi

Algoritmit 1. Demot Timo Männikkö

Malliratkaisut Demot

Algoritmit 1. Luento 12 Ke Timo Männikkö

Numeeriset menetelmät

Algoritmit 1. Luento 14 Ke Timo Männikkö

Bayesin pelit. Kalle Siukola. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly

Harjoitus 6 ( )

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

Tarkennamme geneeristä painamiskorotusalgoritmia

Luentorunko keskiviikolle Hierarkkinen ryvästäminen

5. Rajoitelaskenta (Constraint Satisfaction)

Rationaalinen agentti. Kognitiivinen mallintaminen I. Rationaalinen agentti. Rationaalinen agentti. Kognitiivinen mallintaminen I, kevät /1/08

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

10. Painotetut graafit

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

Johdatus tekoälyn taustalla olevaan matematiikkaan

Pisteen x lähistö koostuu kaikista ratkaisuista, jotka on saatu x:stä tekemällä siihen yksi siirto:

Osakesalkun optimointi

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

b 1. b m ) + ( 2b Ax) + (b b)

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Transkriptio:

INFORMOITU ETINTÄ okeilla etsintämenetelmillä ei ole käytössään muuta informaatiota kuin etsintäongelman määrittely. Informoidut etsintämenetelmät (informed search strategies) ovat sellaisia, jotka voivat hyödyntää tehtäväkohtaista lisäinformaatiota. Niillä ratkaisu voidaan löytää sokeita menetelmiä tehokkaammin. Aina lisätietoa ei kuitenkaan ole käytettävissä. Yleistä informoitua etsintästrategiaa kutsutaan paras ensin -strategiaksi (best first). iinä laajennettavaksi valitaan solmu evaluointifunktioon (evaluation function) f perustuen. Usein evaluointifunktio arvioi kustannusta päämäärään ja laajennettavaksi valitaan solmu, jonka f-arvo on pienin. Implementointi tehdään käyttäen kekoa, joka on järjestetty funktion f mukaan nousevaan järjestykseen. Paras ensin -nimitys on harhaanjohtava sillä se tarkoittaa tietysti parhaalta vaikuttavaa. Jos paras solmu tiedettäisiin etukäteen, niin mitään etsintää ei tarvittaisi. Etsinnässä käytettävä funktio f voidaan valita eri tavoin. Yleensä se perustuu johonkin heuristiseen funktioon h: h(n) = arvioitu halvin kustannus solmusta n maalisolmuun. Esimerkiksi Romanian kartan tapauksessa heuristisena funktiona voi käyttää linnuntie-etäisyyksiä Bukarestiin: Bucharest Craiova Dobreta Eforie Fagaras iurgiu Hirsova Iasi Lugoj 66 0 60 6 76 77 5 6 Mehadia Neamt Oradea Pitesti Urziceni Vaslui 80 00 9 5 9 80 99 7 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 AHNE PARA ENIN -TRATEIA Ahne paras ensin -strategia pyrkii laajentamaan solmun, jonka arvioidaan olevan lähinnä maalia. Tässä tapauksessa siis f perustuu suoraan heuristiseen arvioon h, joten f(n) = h(n). Paras ensin muistuttaa aiemmin esiteltyä halvin ensin -menetelmää, mutta se pyrkii aina mahdollisimman lähelle maalia, kun taas halvin ensin pysytteli mahdollisimman lähellä lähtösolmua. Toisin kuin syvyyssuuntaisella etsinnällä ahne paras ensin -menetelmällä on "suuntavaistoa": hakua ei jatketa ensimmäisestä lapsesta vaan siitä, jonka arvioitu etäisyys tavoitteesta on pienin. Menetelmä kärsii samoista ongelmista kuin syvyyssuuntainen etsintä: se ei ole optimaalinen eikä täydellinen (voi jäädä äärettömään haaraan). Pahimman tapauksen aika- ja tilavaatimukset ovat luokkaa O(b m ), missä m on etsintäavaruuden maksimisyvyys. Tilavaatimus on näin suuri, sillä toisin kuin syvyyssuuntainen etsintä ahne etsintä joutuu pitämään muistissa kaikki etsintäpuun solmut mahdollista paluuta varten, eikä vain saman haaran solmuja. Jos heuristiikka on hyvin valittu, etsintää tehostuu huomattavasti, mutta tämä riippuu ongelmasta ja valitusta heuristiikasta. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 A* The initial state After expanding 66 Tunnetuin paras ensin -strategia on A*, joka evaluoi solmut niiden tämänhetkisen kustannuksen ja arvioidun kustannuksen summan perusteella: 5 9 7 (c) After expanding 7 9 Fagaras Oradea 66 76 80 9 (d) After expanding Fagaras 7 9 f(n) = g(n) + h(n), missä g on kustannus alusta solmuun n ja h arvio halvimman reitin kustannuksesta solmusta n maalisolmuun. iis f(n) on arvioitu halvimman n:n kautta kulkevan ratkaisun kustannus. Tässä siis eräällä tavalla yritetään yhdistää halvin ensin - ja paras ensin -menetelmien hyvät puolet. Jos heuristinen funktio h täyttää tietyt ehdot, A* onkin sekä täydellinen että optimaalinen. Fagaras Oradea 66 80 9 Bucharest 5 0 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.5/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.6/8 Puuetsinnässä optimaalisuuteen riittää että funktio h on luvallinen (admissible), mikä tarkoittaa sitä, että se ei koskaan yliarvioi jäljellä olevaa kustannusta. ellainen funktio on siis optimistinen, koska sen mukaan jäljellä oleva työmäärä näyttää pienemmältä (tai korkeintaan yhtä suurelta) kuin mitä se todellisuudessa on. Esimerkiksi etäisyyden arviointi linnuntietä on tällainen luvallinen heuristinen funktio. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.7/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.8/8

luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.9/8 Todistetaan, että A*, joka on toteutettu puuetsintänä algoritmin TREE-EARCH mukaisesti on optimaalinen, jos h(n) on luvallinen: Olkoon C optimaalisen ratkaisun kustannus. Oletetaan että laajennettavien solmujen tietovarastossa on alioptimaalinen maalisolmu. illoin h( ) = 0 koska on maalisolmu. illoin f( ) = g( ) + h( ) = g( ) > C. Varastossa on myös oltava jokin optimaalisella polulla oleva solmu (jos kerran optimaalinen ratkaisu on olemassa). Nimetään sitä solmua n:llä. Jos h ei yliarvioi kustannusta, niin f(n) = g(n) + h(n) C. Koska f(n) < f( ), niin haku ei etene alioptimaaliseen maalisolmuun, vaan laajentaa optimaalisella polulla olevaa solmua. ama päättely pätee jokaisella askeleella, joten A* palauttaa optimaalisen ratkaisun, jos h on luvallinen. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.0/8 Verkkoetsinnässä tämä ei enää päde, koska RAPH-EARCH-algoritmi voi hylätä optimaalisen polun toistuvaan tilaan, jos optimaalinen ratkaisu ei ole ensimmäiseksi löydetty solmu. Tämä ongelma voidaan korjata kahdella tavalla:. Joko modifioidaan algoritmia siten että se hylkää aina kalliimman toistuvista tiloista lisäkirjanpitoa.. Tai varmistetaan että lyhin reitti löytyy aina ensimmäisenä kuten halvin ensin -menetelmässä. Asetetaan heuristiselle funktiolle lisärajoitus: konsistenssi eli monotonisuus, joka pätee täsmälleen silloin kun kolmioepäyhtälö on voimassa (jokaiselle solmulle n, sen seuraajalle n ja teolle a): Jos h(n) on monotoninen, niin f(n):n arvot ovat kasvavia jokaisella polulla. Todistus: Olkoon n n:n seuraaja. illoin g(n ) = g(n) + c(n, a, n ) jollakin teolla a ja saadaan f(n) = g(n)+h(n) g(n)+c(n, a, n )+h(n ) = g(n )+h(n ) = f(n ). Tästä seuraa, että RAPH-EARCHiä käyttävä A* laajentaa solmut kasvavassa järjestyksessä, joten ensimmäisen laajennettavaksi valitun maalisolmun on oltava optimaalinen. h(n) c(n, a, n ) + h(n ). Jokainen monotoninen heuristiikka on myös luvallinen. A* joka käyttää RAPH-EARCHiä on optimaalinen jos h(n) on monotoninen! luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 Koska f:n arvot ovat kasvavia, hakua voidaan havainnollistaa korkeuskäyrillä (contours): A T Z 80 O D L M 00 R C Haku etenee varovasti ylöspäin laajentaen solmuja f:n mukaan kasvavassa järjestyksessä ohjautuen kohti optimaalista polkua, jolloin ensimmäinen löytyvä ratkaisu on optimaalinen. A* on täydellinen, vaikka karsiikin ne solmut, joille f(n) > C (kuten kuvassa esimerkiksi n alla olevan alipuun). F P 0 N B I U V H E luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 Tällaisten algoritmien joukossa A* on myös optimaalisen tehokas (optimally efficient) millä tahansa heuristisella funktiolla. Mikään optimaalinen algoritmi ei siis selviä vähemmällä solmujen laajentamisella kuin A* (lukuunottamatta sitä että joskus voidaan joutua laajentamaan turhaan joitakin solmuja joiden kustannus on sama kuin optimaalisen ratkaisun). Kuitenkaan A* ei aina kelpaa käytännössä, sillä sen etsintäavaruus kasvaa usein eksponentiaaliseksi suhteessa ratkaisun syvyyteen. Näin tapahtuu aina paitsi jos heuristisen funktion virheen suuruus kasvaa korkeintaan logaritmisesti verrattuna todelliseen polun pituuteen. Kasvu pysyy siis hallittuna silloin kun h(n) h (n) O(log h (n)), missä h (n) on todellinen kustannus n:stä maaliin johtavalla polulla. Tämä on kuitenkin harvinaista. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 MUITIRAJOITETTU HEURITINEN ETINTÄ Virhe on lähes aina vähintääkin verrannollisessa suhteessa polkukustannukseen, joten eksponentiaalista kasvua ei yleensä voi välttää. iksi usein on luovuttava vaatimuksesta löytää optimaalinen ratkaisu. Tällöin voidaan käyttää A*:n variantteja, jotka löytävät nopeasti alioptimaalisen ratkaisun, tai heuristisia funktioita jotka eivät ole luvallisia eivätkä siis takaa optimaalisuutta. Toisaalta menetelmän epäkäytännöllisyyteen johtaa myös se seikka, että A*:n tilavaatimus on korkea, koska kaikki käsitellyt solmut säilytetään muistissa kuten aina verkkoetsinnässä (RAPH-EARCH). Tarkastellaan seuraavaksi algoritmeja, jotka tulevat toimeen vähemmällä muistilla mutta tuottavat silti optimaalisen ratkaisun. Useita menetelmiä: Iteroivasti syventävä A* eli IDA* Rekursiivinen paras ensin -etsintä (RBF) MA* (memory-bounded A*) MA* (simplified memory-bounded A*) luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.5/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.6/8

IDA* REKURIIVINEN PARA ENIN (RBF) Yksinkertaisin tapa rajoittaa A*-algoritmin muistin käyttöä on soveltaa ideaa iteroivasta syventämisestä. Tällöin saadaan iteroivasti syventävä A* eli IDA*-algoritmi. en suurin ero tavalliseen iteroivaan syventämiseen on, että syvyysetsintää ei rajoiteta tietylle syvyydelle, vaan tietyn f-arvon tasolle. Käytetään siis syvyysrajoitettua etsintää asettamalla alussa rajaksi juuren f-arvo ja jokaisella iteraatioaskeleella uudeksi f-rajaksi asetetaan f-arvoltaan pienimmän aiemmalla kerralla rajan ylittäneen solmun f-arvo. IDA* sopii hyvin tilanteisiin, joissa askeleilla on yksikkökustannukset, mutta se joutuu ongelmiin silloin kun tekojen kustannukset voivat olla reaalilukuja. Rekursiivinen paras ensin -etsintä (recursive best-first search) pyrkii jäljittelemään tavallisen paras ensin -etsinnän toimintaa, mutta käyttää vain lineaarista muistitilaa. Algoritmi toimii kuten tavallinen rekursiivinen syvyyssuuntainen etsintä, mutta merkitsee tarkasteltavaan solmuun muistiin parhaan vaihtoehtoisen löytyneen solmun f-arvoa ja jos tarkasteltavan solmun f-arvo ylittää tämän arvon, rekursiossa palataan takaisin parhaan vaihtoehtoisen reitin polulle. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.7/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.8/8 After expanding,, Fagaras Oradea 5 56 66 Fagaras Oradea 66 5 56 59 After unwinding back to and expanding Fagaras 7 Bucharest 50 9 9 (c) After switching back to and expanding Pitesti 9 Fagaras Oradea 66 5 50 56 5 7 Craiova Pitesti 56 7 55 7 66 Craiova Pitesti 56 7 55 Bucharest Craiova 8 607 65 9 66 66 9 9 RBF on jonkin verran tehokkaampi kuin IDA*, mutta laajentaa silti ylimääräisiä solmuja. Esim. kuvassa ensin, sitten Fagaras ja jälleen. Kuten A* myös RBF on optimaalinen, jos heuristiikka h(n) on luvallinen. Tilavaativuus on luokkaa O(bd), mutta aikavaativuus riippuu heuristiikasta ja siitä kuinka usein etsintäsuunta vaihtuu. Verkkoetsinnässä sekä IDA* että RBF tulevat helposti eksponentiaalisiksi koska ne eivät voi tarkistaa tilojen toistumista muuten kuin kultakin tarkasteltavalta polulta kerrallaan, joten samoja tiloja voidaan joutua tutkimaan useita kertoja. IDA* ja RBF käyttävät tavallaan liiankin vähän muistia koska ne pyrkivät rajoittamaan muistitilan käyttöä vaikkei siihen olisi tarvettakaan. Jos muistia on, sitä kannattaisi hyödyntää ja rajoittaa sen käyttöä vasta kun on pakko. Näin tekevät MA* (memory-bounded A*) ja MA* (simplified memory-bounded A*). luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.9/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.0/8 MA* MA* toimii muuten kuten A*, laajentaen parasta lehteä, niin kauan kuin muistitilaa riittää. Muistitilan loppuessa se ei voi lisätä uutta solmua hakupuuhun pudottamatta ensin jotakin vanhaa solmua. illoin MA* unohtaa huonoimman lehtisolmun, siis sen, jonka f-arvo on korkein. Unohdetun lehtisolmun f-arvo talletetaan kuitenkin sen vanhempaan siltä varalta että sinne tarvitsisikin joskus palata. Tämä tapahtuu silloin, kun kaikki muualta saadut f-arvot ovat huonompia. Jos kaikilla lehtisolmuilla on sama f-arvo, MA* laajentaa viimeiseksi löydetyn ja unohtaa ensimmäiseksi löydetyn. (Tällä vältetään tilanne jossa laajennettavaksi ja unohdettavaksi valittaisiin sama solmu, esim. satunnaisvalintaa käytettäessä.) Jos käy niin huonosti että muisti loppuu kun vain yksi lehtisolmu on jäljellä, niin silloin on pakko lopettaa etsintä siihen, vaikka ratkaisuun asti ei ole vielä päästy. Jos ratkaisun etäisyys on muistitilan rajoissa, MA* on täydellinen. Jos parhaan ratkaisun etäisyys on muistitilan rajoissa, MA* on optimaalinen. Jos jokin ratkaisu löytyi muistitilan rajoissa niin silloin palautetaan paras löytyneistä. Jos muistia on kohtuullisesti, MA* pystyy ratkomaan paljon mutkikkaampia ongelmia kuin A*. Käytännön tilanteissa MA* onkin ehkä paras yleiskäyttöinen etsintäalgoritmi optimaalisten ratkaisujen löytämiseen. Erityisesti silloin, jos etsintäavaruus on verkko, tekojen kustannukset vaihtelevat ja solmujen laajentaminen on kallista verrattuna avoimen ja suljetun listan ylläpitoon. Toisaalta hyvin vaikeissa ongelmissa MA* voi joutua hyppimään edestakaisin polulta toiselle, jolloin se tuhlaa aikaa tuomalla samoja solmuja toistuvasti muistiin. Vaikka aika/tila-kysymykset ovatkin vaikeita, näyttää siltä että jos halutaan optimiratkaisu, niin ainakin toista kuluu. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 ETINNÄN TEHOTAMINEN OPPIMALLA Nyt on esitelty erilaisia etsintästrategioita, mutta olisiko mahdollista että agentti voisi dynaamisesti muunnella etsintästrategiaa ja näin oppisi etsimään tehokkaammin? Tämä on mahdollista. Kun agentti suorittaa etsintää objektitason tila-avaruudessa, etsinnän mahdollisia tiloja voidaan pitää metatason tila-avaruutena. Varsinaisen etsinnän vaiheet (puut) ovat siis metatason tiloja. Kun haku silloin tällöin joutuu tiloihin jotka eivät ole hyödyllisiä vaan joista esim. joudutaan vaihtamaan etsintäsuuntaa, metatason oppimisalgoritmi voi tehdä yleistyksiä tällaisista tilanteista ja oppia välttämään niitä. Tavoitteena on tällöin yhteiskustannuksen (total cost) minimointi, jossa tavoitellaan parasta tasapainoa ratkaisun polkukustannuksen ja etsintään käytettävien resurssien välillä. HEURITIET FUNKTIOT Heuristinen funktio voidaan valita monella tavalla. Esimerkiksi 8-liukupelissä voidaan käyttää vaikkapa väärässä paikassa olevien palojen lukumäärää tai ns. Manhattan-etäisyyttä. Molemmat ovat luvallisia, sillä ne eivät yliarvioi todellista kustannusta. (Katso kirjan kuva.8.) Heuristiikan valinta vaikuttaa suorituskykyyn efektiivisen haarautumiskertoimen kautta. Dominanssi: Olkoot h ja h luvallisia heuristisia funktioita. Jos h (n) h (n) kaikilla n, niin h dominoi h :ta. Dominoiva heuristiikka laajentaa vähemmän solmuja ja on siksi parempi etsinnän kannalta. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8

LUVALLITEN HEURITIIKKOJEN KEKIMINEN Heuristiikkojen keksiminen: ongelmien väljentäminen (relaxation) 7 osaongelmat (subproblems) hahmotietokannat (pattern databases) 5 6 5 Heuristiikkojen oppiminen: 8 6 7 8 induktiivinen oppiminen tart tate oal tate piirteet (features) 5 6 5 6 8 7 8 tart tate oal tate luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.5/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.6/8 PAIKALLINEN ETINTÄ JA OPTIMOINTI Jos ratkaisun löytymisreitistä (polusta) ei tarvitse välittää, vaan ainoastaan ratkaisun lopputulos on merkitsevä, voidaan käyttää paikallisia (local) etsintästrategioita. Käsitellään yhtä ainoata tilaa (tai ratkaisua) ja muunnellaan sitä paikallisesti toisenlaiseksi naapuruston (neighbourhood) idea. Haussa kuljettuja polkuja ei tarvitse varastoida, joten muistitilan tarve on vähäinen, vain vakio. Yleensä käsitellään täydellisiä tiloja (complete state) kuten kahdeksan kuningattaren asetelmia tai kokonaisia kaupunkireittejä, joihin sitten tehdään pieniä paikallisia muutoksia. Löytävät hyviä ratkaisuja suurissakin etsintäavaruuksissa, joissa systemaattiset hakumenetelmät eivät ole käyttökelpoisia. Tärkeitä käsitteitä: optimointiongelmat kohdefunktio (objective function) tilamaisema (state space landscape) paikallinen/lokaali optimi (maksimi/minimi) globaali optimi (maksimi/minimi) objective function shoulder global maximum current state local maximum "flat" local maximum state space luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.7/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.8/8 VUORIKIIPEILYALORITMIT 8 5 7 8 6 8 7 6 5 5 8 5 7 5 5 5 6 6 5 6 6 6 6 8 Tila, jonka arvo (uhkausten lukumäärä) on 7. Ruutuihin on merkitty mahdollisten seuraajatilojen (saman sarakkeen kuningattaren siirtäminen kyseiseen ruutuun) arvot. Paikallinen minimi, jonka arvo on. Vuorikiipeilyalgoritmit (hill-climbing algorithms) ovat ahneita paikallisia etsintämenetelmiä: valitaan aina nykyisen tilan naapureista se, jolla kohdefunktion arvo on korkein. Jos tilaa ei voi enää parantaa, haku päättyy. Tavanomainen vuorikiipeily juuttuu helposti paikalliseen optimiin (joka ei ole globaali) tai tasangolle. Tämän korjaamiseksi on kehitetty useita variantteja: sivuttaissiirtymien salliminen varottava juuttumista stokastinen vuorikiipeily: valitaan satunnaisesti nykytilannetta parantavista naapureista ensimmäisen valinnan vuorikiipeily (first-choice hill climbing): tutkitaan naapureita satunnaisesti ja valitaan ensimmäinen joka on nykyistä parempi vuorikiipeily satunnaisella uudelleenaloituksella (random restart): aloitetaan uudestaan satunnaisesta alkutilasta kunnes ratkaisu löytyy täydellisyys luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.9/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.0/8 IMULOITU JÄÄHDYTY function HILL-CLIMBIN( problem) returns a state that is a local maximum inputs: problem, a problem local variables: current, a node neighbor, a node current MAKE-NODE(INITIAL-TATE[problem]) loop do end neighbor a highest-valued successor of current if VALUE[neighbor] VALUE[current] then return TATE[current] current neighbor Jos sallitaan vain nykytilan parantaminen, juututaan paikalliseen optimiin eikä haku ole täydellinen Toisaalta satunnaiskulku (random walk) on täydellinen mutta tehoton etsintämenetelmä. Yksi ratkaisu on sallia tilanteen huononeminen joskus: imuloitu jäähdytys (simulated annealing) sallii siirtymisen huonompaan vaihtoehtoon mutta sallimisen todennäköisyys pienenee eron kasvaessa. Lisäksi pidetään yllä "lämpötilaa", joka kuvaa tilannetta huonontavien siirtymien todennäköisyyttä. Lämpötila pienenee ajan myötä joten alussa sallitaan suuriakin huononnuksia, mutta lopulta vain hyvin pieniä. Jos lämpötilan jäähtyminen on riittävän hidasta, niin menetelmä päätyy globaaliin optimiin ykköstä lähestyvällä todennäköisyydellä. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8

PAIKALLINEN KEILAHAKU function IMULATED-ANNEALIN( problem, schedule) returns a solution state inputs: problem, a problem schedule, a mapping from time to temperature local variables: current, a node next, a node T, a temperature controlling prob. of downward steps current MAKE-NODE(INITIAL-TATE[problem]) for t to do T schedule[t] if T = 0 then return current next a randomly selected successor of current E VALUE[next] VALUE[current] if E > 0 then current next else current next only with probability e E/T Paikallinen keilahaku (local beam search) pitää yllä k kappaletta tarkasteltavia tiloja, joiden kaikki seuraajatilat generoidaan. Jos mikään niistä ei ole maalitila, valitaan seuraajista k parasta laajennettaviksi seuraavalla kierroksella. Ei ole sama asia kuin vuorikiipeily satunnaisella uudelleenaloituksella, koska rinnakkaiset haut riippuvat toisistaan haku ohjautuu nopeasti lupaaville alueille jolloin huonot polut hylätään. Tämä voi olla ongelmakin. tokastinen keilahaku toimii muuten samoin, mutta ei valitakaan parhaita vaan käytetään satunnaisuutta siten että paremmilla on huonompia suurempi todennäköisyys tulla valituksi. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 ENEETTIET ALORITMIT eneettisissä algoritmeissa (genetic algorithms) on samantapainen idea kuin edellisessä, mutta jatkoon ei valita tilojen seuraajia vaan tilaparien yhdistelmiä. Terminologia biologiasta: puhutaan populaatiosta ja sen yksilöistä, jotka ovat yleensä merkkijonoja. Yksilöiden hyvyyttä mitataan kelpoisuusfunktiolla (fitness function) ja niiden todennäköisyys päästä valinnassa jatkamaan seuraavaa sukupolvea riippuu niiden kelpoisuudesta. Yhdistämistä kutsutaan risteytykseksi (crossover) ja se tapahtuu valitsemalla kummastakin merkkijonosta jokin katkaisukohta josta niiden loppuosat vaihdetaan keskenään. Lopuksi jälkeläiset saattavat pienellä todennäköisyydellä joutua mutaation kohteeksi, jossa jokin merkki vaihdetaan toiseksi. Tämän jälkeen sama toistuu uudella sukupolvella. Toimivuus edellyttää sopivaa merkkijonokoodauksen valintaa ja risteytys- ja mutaatio-operaatioiden rajoittamista sellaiseksi että jälkeläiset ovat mielekkäitä. 7855 % 75 7855 75 9% 7855 75 5 0 6% 75 75 5 % 5 5 (c) (d) Initial Population Fitness Function election Cross Over + = 785 75 5 57 (e) Mutation luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.5/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.6/8 PAIKALLINEN ETINTÄ JATKUVIA AVARUUKIA Jos kohdefunktio on jatkuva-arvoinen, naapuruston idea ei enää suoraan toimi. Jos tila-avaruus voidaan diskretisoida, aiemmat menetelmät toimivat. Toinen mahdollisuus on soveltaa vuorikiipeilymenetelmiä käyttäen hyväksi kohdefunktion f gradienttia f, joka on vektori joka kertoo jyrkimmän nousun suunnan ja suuruuden. Esimerkiksi kuuden jatkuva-arvoisen muuttujan funktiolle f(x, y, x, y, x, y ) gradientti f = ( f x y x y x y ) (Lokaalissa) maksimissa gradientti on nolla. Yleensä yhtälöä ei voi ratkaista globaalisti, mutta sitä voidaan hyödyntää lokaalisti. Jyrkimmän nousun vuorikiipeilyä voi tehdä päivittämällä nykyistä tilaa x x + α f( x), missä α on pieni vakio. Menetelmä on herkkä α:n arvolle, sillä jos se on liian pieni, etsintä kestää kauan, ja jos se on liian suuri, maksimikohta ohitetaan helposti. Jos kohdefunktio ei ole derivoituva, voidaan yrittää muodostaa empiirinen gradientti kokeilemalla kohdefunktion arvoa nykyisen tilan lähistöllä tekemällä hyvin pieniä muutoksia eri koordinaattien arvoihin. Tämä vastaa aiemmin mainittua diskretisointia. Joskus kohdefunktiolle ja ratkaisuille voidaan asettaa rajoitteita. Esimerkiksi lineaarisessa ohjelmoinnissa kohdefunktio on lineaarinen funktio ja ratkaisujen täytyy toteuttaa tietyt lineaariset epäyhtälöt jotka muodostavat konveksin alueen. Tällöin ratkaisu voidaan tehdä polynomisessa ajassa muuttujien määrän suhteen. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.7/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.8/8 ONLINE-ETINTÄ JA TUNTEMATTOMAT YMPÄRITÖT Aiemmin käsiteltiin offline-tyyppisiä etsintämenetelmiä, jotka laskevat ratkaisun kokonaan valmiiksi ennen kuin suorittavat mitään tekoja todellisessa maailmassa. Nyt käsitellään online-menetelmiä, jotka vuorottelevat toimintojen etsimistä ja suorittamista. aatuaan havaintoja seurauksista online-toimijat jatkavat etsintää. Online-etsintä sopii hyvin dynaamisiin tai semidynaamisiin ympäristöihin, joissa tilanne (tai suoritusfunktion arvo) voi muuttua etsinnän aikana. amoin stokastiset ympäristöt, joissa tekojen vaikutukset vaihtelevat, sopivat online-etsinnälle. Online-etsintä on välttämätöntä tutkimisongelmissa (exploration problem) joissa agentti ei tunne ympäristön tiloja ja tekojen seurauksia vaan sen täytyy tunnustella ympäristöään ja kokeilla toimintojaan. (Esim. robottinavigointi tuntemattomassa ympäristössä.) ONLINE-ETINTÄONELMAT Online-etsintäongelmiksi kutsutaan sellaisia ongelmia, joita ei voi ratkaista ainoastaan laskemalla etukäteen vaan ainoastaan vuorottelemalla etsintää ja kokeiluja. Oletetaan, että toimija tietää ainoastaan mahdolliset teot, ACTION(s) tekojen kustannukset, c(s, a, s ) (ei voi käyttää ennen kuin s tunnetaan) maalitestin, OAL-TET(s) Toimija ei siis tiedä toimintojensa seuraajatilaa ennen kuin se suorittaa toiminnan. Voi olle esim. ettei agentti seuraavan sokkelossa tiedä että toiminto Up ruudussa (,) johtaa ruutuun (,) ja vaikka se kokeilisi sitä, niin se ei tiedä, että toiminto Down vie sen takaisin ruutuun (,). Joskus tosin tällaiset suhteet toimintojen välillä voivat olla tunnettuja, jolloin ainoastaan ympäristö on tuntematon. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.9/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.0/8

Oletetaan nyt, että toimija tunnistaa tilan, jossa se on ollut aikaisemmin ja että teot ovat deterministisiä. Toimijalla voi lisäksi olla käytössään heuristinen funktio h, joka kertoo sen etäisyyden maalitilasta. (Yllä esim. Manhattan-etäisyys.) Tehtävänä voi olla joko koko ympäristön kartoittaminen tai päämäärän löytäminen kustannuksia minimoiden. Kustannuksena voi olla esim. koko kuljetun reitin pituus. Tätä verrataan tavallisesti optimaalisen reitin pituuteen (joka siis voitaisiin saavuttaa jos alue tunnettaisiin). Agentin löytämän ratkaisun ja optimaalisen ratkaisun suhdetta kutsutaan kilpailusuhteeksi (competitive ratio). uhde on joskus ääretön: esimerkiksi jos teot eivät ole peruutettavia, online-etsintä voi päätyä umpikujaan. Mikään etsintäalgoritmi ei voi välttää umpikujia kaikissa tila-avaruuksissa: Kuvitellaan vastustaja joka voi sijoittaa maalit ja umpikujat haluamallaan tavalla (adversary argument). A A luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 ONLINE-ETINTÄAENTIT Turvallisesti tutkittavia (safely explorable) alueita ovat sellaiset, joissa umpikujiin ei voi joutua, vaan jokaisesta saavutettavasta tilasta päästään johonkin päämäärätilaan. Erityisesti sellaiset tila-avaruudet, joissa teot ovat peruutettavia, ovat turvallisesti tutkittavia, esimerkiksi 8-liukupeli ja sokkelot. Tällaisissakaan ympäristöissä ei voi antaa yleistä rajaa kilpailusuhteelle vaan etsintä voi olla mielivaltaisen vaikeaa. Katso edellisen kuvan kohta. Etsinnän ja toiminnan vuorottelun seurauksena online-algoritmit ovat hyvin erilaisia kuin offline-algorimit. Esimerkiksi A* voi laajentaa solmuja eri puolilta etsintäavaruutta, mutta ympäristöön sijoittuneen online-agentin on tehtävä tekoja siinä paikassa (siinä kohdassa etsintäavaruutta), jossa se kulloinkin on. iksi esimerkiksi syvyysuuntainen etsintä sopii paremmin online-agentin etsintäalgoritmiksi, koska solmuja laajennetaan paikallisesti (kunnes peruutetaan). Esim. aiemmassa sokkelossa voidaan joutua kulkemaan lähes kaikkia kaaria pitkin edestakaisin. Tutkittaessa tämä on hyväksyttävää, mutta reitin löytämisessä kilpailusuhde voi kasvaa mielivaltaisen huonoksi. Peruutus täytyy tehdä fyysisesti ja tekojen olisi hyvä olla kumottavissa. Jotkut algoritmit toimivat ilmankin mutta kilpailusuhteilla ei ole ylärajaa. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p./8 PAIKALLINEN ONLINE-ETINTÄ Vuorikiipeilyalgoritmikin etenee hakuavaruudessa paikallisesti ja koska se pitää vain yhden tilan muistissa, se on jo sellaisenaan online-algoritmi. Yksinkertaisessa muodossaan se ei kuitenkaan ole kovin hyödyllinen, koska se jättää agentin paikalliseen maksimiin eikä satunnaisia uudelleenaloituksia voida tehdä. Niiden sijasta voidaan käyttää satunnaiskävelyä (random walk). iinä kuljetaan satunnaiseen suuntaan (mahdollisesti) preferoiden niitä tekoja, joita ei vielä ole kokeiltu. Näin voidaan taata että maali joskus löytyy, jos etsintäavaruus on äärellinen (tai korkeintaan kaksiulotteinen ristikko tai hila (grid)). Tämä voi kuitenkin viedä eksponentiaalisen ajan, kuten esim. kuvassa: LRTA* Parempi idea on ottaa käyttöön muisti, jossa pidetään arviota kunkin käydyn tilan etäisyydestä maaliin H(n). Tämä vastaa heuristista funktiota h mutta sitä päivitetään etsintäavaruutta tutkittaessa, kuten seuraavassa kuvassa: (c) (d) (e) 8 9 8 9 8 9 8 9 5 8 9 5 5 Prosessi "tasoittaa" (flatten) paikallisen minimin, minkä jälkeen etsintää voidaan taas jatkaa normaalisti. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.5/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.6/8 OPPIMINEN ONLINE-ETINNÄÄ Tällaista menetelmää kutsutaan nimellä "oppiva tosiaikainen A*" (LRTA*) (learning real-time A*). LRTA* löytää varmasti maalin missä tahansa äärellisessä turvallisesti tutkittavassa ympäristössä. Toisin kuin A* se ei kuitenkaan ole täydellinen äärettömissä etsintäavaruuksissa vaan voi jäädä äärettömään haaraan. Pahimmassa tapauksessa alueen tutkiminen voi vaatia O(n ) askelta kun n on tilojen määrä, mutta yleensä algoritmi suoriutuu nopeammin. Toimija oppii "kartan" ympäristöstä tallettamalla tekojensa seuraukset. LRTA*:ssä toimija oppii lisäksi eri tilojen arvot, jotka konvergoituvat kohti todellisia arvoja, minkä jälkeen optimaalisia toimintoja voidaan tehdä yksinkertaisella vuorikiipeilyllä. Jotta agentti voisi oppia toimintojensa yleisiä vaikutuksia ja niiden välisiä suhteita, kuten sen että Up kasvattaa y-koordinaattia ja Down vähentää sitä, tarvitaan. tapaa, jolla tällaisia asioita voidaan esittää: tietämyksenesityskieltä, ja. algoritmeja, joilla tällaisia yleisiä sääntöjä voidaan oppia havainnoista. luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.7/8 luku0.tex 58066-7 Tekoäly ( ov / 8 op) Raul Hakli 8/9/005 :0 p.8/8