Rationaalinen agentti Kognitiivinen mallintaminen I Yksinkertainen refleksiagentti Toiminta perustuu ainoastaan agentin havaintoihin kullakin ajanhetkellä. Luento III Symbolinen mallintaminen Ongelmanratkaisu Produktiosysteemit Rationaalinen agentti Ympäristöä mallintava refleksiagentti agentilla on sisäinen representaatio ympäristön tilasta Rationaalinen agentti Päämärätietoinen agentti (goal-based agent) päämäärä ohjaa agentin käyttäytymistä eri tilanteissa Saara Huhmarniemi 1
Rationaalinen agentti Utiliteettiin perustuva agentti jokaiselle agentin tilalle annetaan numeerinen utiliteettiarvo Rationaalinen agentti Oppiminen agentti saa palautteen toiminnastaan Ongelmanratkaisu Rationaalinen agentti Ongelma-avaruus Hakustrategiat ongelma-avaruudessa sokea haku tietoinen haku heuristiikat Ongelmanratkaisu Ongelmanratkaisu yleisesti: miten saavuttaa jokin päämäärä, joka ei ole heti saatavilla? suunnittelu, aikataulutus, vianetsintä, pelit, muut pähkinät kuten ristisanat "Älykäs" toimija ratkaisee ongelmat joko nopeasti tai jonkun "näkemyksen" avulla. Saara Huhmarniemi 2
Hyvinmääritellyt ongelmat Hyvinmääritellyt ja tietoon perustuvat ongelmat: Shakki Lähetyssaarnaaja ja ihmissyöjä -ongelma Hanoin torni Aritmetiikan ongelmat Hyvinmääritelty tietoon perustuva ongelma Hyvinmääritelty ongelma: määrittelee yksiselitteisesti ja kokonaan ongelmanratkaisijalle annetun informaation ongelmanratkaisijan vaihtoehdot halutun lopputilan Tietoon perustuva ongelma: ratkaisuun tarvitaan vain rajattu määrä tietoa ratkaisuun ei tarvita ulkopuolista tietoa. Tila-avaruus ja ongelmaavaruus Ongelmat kuvataan tilasiirtyminä ongelmaavaruudessa. Ongelma-avaruuden tila on ote ongelmanratkaisutilanteesta tietyllä ajanhetkellä. kuvaus objekteista ja relaatioista objektien välillä Esimerkiksi shakkipelin alkutila kuvaa nappuloiden värin ja sijainnin laudalla sekä sen että on valkoisen vuoro siirtää. Ongelman tila-avaruus Ongelmanratkaisu on alkutilan muuttaminen halutuksi lopputilaksi käymällä läpi sarja tilasiirtymiä. Usein mahdolliset tilasiirtymät voidaan jakaa luokkiin. sotilaan siirtäminen yhden eteenpäin lähetin siirtäminen diagonaalisesti Siirtymiä kutsutaan seuraajafunktioiksi. Saara Huhmarniemi 3
Hyvinmääritelty tietoon perustuva ongelma Täydellisesti määritelty alkutila Seuraajafunktiot Täydellinen määritelmä halutusta lopputilasta tai ne ehdot, jotka halutulla lopputilalla tulee olla. reitti Aradista Bukarestiin reitti Aradista Bukarestiin Alkutila: Arad, Romania Lopputila: Bukarest, Romania Seuraajafunktio: autoilu kaupungista toiseen. Pölynimuriagentti Yksinkertainen refleksiagentti (ympäristöä mallintava agentti) Havainnot: sijainti ja sisältö e.g., [A,Dirty] Toiminnot: Left, Right, Suck, NoOp Saara Huhmarniemi 4
Ongelman tila-avaruus Ongelman tila-avaruus muodostuu ongelman tiloista ja siirtymistä jotka muuttavat tilaa. siirtymät esittävät agentin toimintaa tai ympäristön muutosta Tila-avaruus voidaan esittää suunnattuna verkkona tai puuna, jonka solmut vastaavat tiloja ja nuolet siirtymiä tilojen välillä. Ongelma-avaruus Ongelma-avaruus on tila-avaruus laajennettuna alkutilalla ja halutulla lopputilalla. Lopputila annetaan usein ehtoina Onnistunut ongelmanratkaisu on niiden peräkkäisten siirtyminen valitseminen, jotka muuttavat alkutilan halutuksi lopputilaksi. Siirtymille tilasta toiseen voidaan määritellä hinta, jonka avulla ongelmanratkaisua ohjataan. Ongelma-avaruus Ongelma-avaruus Tilat, (alkutila), ehdot lopputilalle, toiminnot (seuraajafunktio), polun hinta? Tila: 0,1 likaisuudelle ja L, R robotin sijainnille (esim. (0,L). Toiminnot: L, R, S Loppuehto: (0,L) & (0,R) Hinta: 1 / toiminto Saara Huhmarniemi 5
Etsintä ongelma-avaruudessa Reitti Aradista Bukarestiin Usein ongelma-avaruuden tilassa on useita mahdollisia siirtymiä. Miten löydetään siirtymät, jotka ovat mahdollisia kulloisessakin tilassa? Millä perusteella oikea siirtymä valitaan? Ongelmanratkaisu voidaan nähdä etsintänä (search) ongelma-avaruudessa. Ratkaistakseen ongelman, systeemin on etsittävä oikea polku alkutilasta haluttuun tilaan. Saara Huhmarniemi 6
Etsintä ongelma-avaruudessa Hakustrategian arviointi: completeness: does it always find a solution if one exists? time complexity: number of nodes generated space complexity: maximum number of nodes in memory optimality: does it always find a least-cost solution? Time and space complexity are measured in terms of b: maximum branching factor of the search tree d: depth of the least-cost solution m: maximum depth of the state space (may be ) Hakustrategia On olemassa useita algoritmeja lyhimmän polun löytämiseen. Sokeat hakustrategiat (uninformed search, blind search) Tietoinen haku (informed search, heuristic search) Sokeita hakustrategioita syvyyshaku (depth-first) halvin ensin haku (uniform cost) leveyshaku (breadth-first search) rajoitettu syvyyshaku (depth-limited) asteittain syvenevä haku (iterative deepening) kaksisuuntainen haku (bidirectional) leveyshaku leveyshaku puun alkusolmu (juuri) laajennetaan ensin kaikki laajennetut solmut käydään läpi ja laajennetaan ennenkuin edetään syvemmälle puussa. algoritmin suoritus vaatii kaikkien solmujen pitämisen muistissa Saara Huhmarniemi 7
Arviointi Löytääkö ratkaisun? Kyllä (jos b on äärellinen) Aika? 1+b+b 2 +b 3 + +b d + b(b d -1) = O(b d+1 ) Tila? O(b d+1 ) (jokainen solmu on muistissa) Optimaalinen? Kyllä (polun hinta=1) Tilankäyttö on ongelma. syvyyshaku laajentaa aina puussa syvimmällä olevan solmun ensin käyttää vain vähän muistia (vain yhden polun kerrallaan syvyyshaku syvyyshaku Saara Huhmarniemi 8
Arviointi Löytääkö ratkaisun? Ei, epäonnistuu jos tilaavaruus ei ole äärellinen tai jos polussa on silmukka. Korjataan poissulkemalla toistuvat tilat toimii kun tila-avaruus on äärellinen Aika? O(b m ): paha jos m is on paljon suurempi d (m= maksimisyvyys, d=ratkaisun syvyys) Tila? O(bm), eli lineaarinen tilavaatimus! Optimaalinen? Ei hakustrategioita rajoitettu syvyyshaku asetetaan raja, johon syvyyshaku pysäytetään kullakin polulla ongelma on optimaalisen syvyyden valinta halvin ensin -haku valitaan seuraavaksi laajennettava solmu sen perusteella, mikä on polun "hinta" hinta kasvaa kun polulla edetään, ja jokin toinen polku voi tulla kannattavammaksi asteittain syvenevä haku Asteittain syvenevä haku yhdistää leveys- ja syvyyshaut algoritmi tekee syvyyshakua, mutta etsinnän syvyys on rajoitettu kun koko puu on etsitty rajoitettuun syvyyteen asti, aloitetaan etsintä alusta lisäten etsinnän syvyyttä puu generoidaan uudestaan jokaista syvyyttä varten algoritmi on kuitenkin tehokas Saara Huhmarniemi 9
Asteittain syvenevä haku Asteittain syvenevä haku Asteittain syvenevä haku asteittain syvenevä haku Löytääkö ratkaisun? Kyllä Aika? (d+1)b 0 + d b 1 + (d-1)b 2 + + b d = O(b d ) Tila? O(bd) Optimaalinen? Kyllä. Saara Huhmarniemi 10
kaksisuuntainen haku kaksi hakua; toinen eteenpäin alkutilasta ja toinen taaksepäin halutusta lopputilasta haut kohtaavat toisensa lyhimmällä polulla vaatii sen, että mahdolliset lopputilat on eksplisiittisesti listattu siirtyminen ongelma-avaruudessa taaksepäin ei aina ole helppoa Tietoinen haku Tietoisessa haussa käytettävissä on lisätietoa ongelmasta. paras ensin -haku (best first -search) laajennettava solmu valitaan heuristisen funktion avulla. h(n) = halvimman polun arvioitu hinta solmusta n haluttuun lopputilaan. Esimerkkitapauksessa heuristinen funktio h(n) voisi olla esimerkiksi matka linnuntietä kaupungista n Bukarestiin. reitti Aradista Bukarestiin Ahne paras-ensin haku Saara Huhmarniemi 11
paras ensin -haku Löytääkö ratkaisun? Ei, voi jäädä silmukkaan, esim. Iasi Neamt Iasi Neamt Aika? O(b m ), mutta parempi heuristiikka parantaa tuloksia dramaattisesti Tila? O(b m ) -- kaikki solmut muistissa Optimaalinen? Ei valittu heuristinen funktio voi yhä antaa huonon alun haulle haku voi eksyä harhapolulle, eikä enää palaa takaisin A*-haku minimoi polun kokonaiskustannuksen: siinä otetaan huomioon g(n) = jo kuljetun polun hinta solmussa n h(n) = arvioitu hinta solmusta n lopputilaan f(n) = arvioitu polun kokonaishinta n:n kautta lopputilaan A*-haku Saara Huhmarniemi 12
Etsintä ongelma-avaruudessa Ihmiset eivät yleensä käytä sokeaa hakua vaan käyttävät jotain heuristiikkaa. Esim. Taaksepäinketjutus (backward chaining): edetään lopputilasta kohti alkuehtoja. Välitavoite-analyysi (Means-Ends analysis): valitaan välitavoite johon pyritään lopputilan sijaan. hill-climbing hill-climbing Kukkulalle kapuaminen (hill-climbing): Valitaan aina tila, josta on lyhin matka lopputilaan. Alkutilasta riippuen voidaan juuttua lokaaliin maksimiin hill-climbing ongelmanratkaisija Ongelmanratkaisu voidaan siis nähdä matkana ongelma-avaruudessa seuraavien tilojen löytäminen, evaluointi ja oikean tilan valinta tavoitteiden ja välitavoitteiden asettaminen ja hallinta heuristiikkojen käyttö ongelman representaatio Saara Huhmarniemi 13
Produktiosysteemit Tarkastellaan erästä keskeistä kognitiivista mallia: produktiosysteemiä. Produktiosysteemejä on käytetty useissa kognitiivisissa arkkitehtuureissa, kuten ACT (Anderson 1983) ja SOAR (Laird et. al. 1987) Produktiosysteemit Produktiosysteemi on sovelluskohteesta riippumaton päätöksenteon ja järkeilyn malli. Kaksi muistivarastoa työmuisti produktiomuisti Prosessointi tapahtuu kahdessa vaiheessa: Tunnistus, jossa systeemi valitsee säännön. Toiminta, jossa systeemi käyttää sääntöä. Sääntö muuttaa työmuistin sisältöä ja/tai aiheuttaa jonkin ulkoisen toiminnon. Produktiosysteemit Työmuisti on tietokanta, joka on joukko toisistaan riippumattomia propositioita p 1, p 2, p 3,... Produktiosäännöt Sääntömuisti sisältää päättelysääntöjä, jotka ovat muotoa: p 1 " p 2... # act 1 " act 2... esim. shorter(anna, beth) Sääntömuisti sisältää päättelysääntöjä, jotka ovat muotoa: p 1 " p 2...# act 1 " act 2... IF : THEN: shorter(x,y) delete shorter(x,y) add taller(y,x) Saara Huhmarniemi 14
Produktiosäännöt Jos työmuistin sisältö on esimerkiksi shorter(anna, beth) voidaan soveltaa produktiosääntöä: IF: THEN: shorter(anna,beth) delete shorter(anna,beth) add taller(beth,anna) Nyt työmuistin uusi sisältö on taller(anna, beth) Produktiosysteemit Mahdollisia toimintoja ovat esimerkiksi elementtien lisääminen ja poistaminen työmuistista. Jokaisella suoritussyklissä systeemi etsii ne säännöt, joiden vasen puoli toteutuu työmuistin sisällön perusteella. (match phase) Tämän jälkeen systeemi päättää, mikä produktioista "laukeaa". (conflict resolution) Jokaisessa syklissä suoritetaan valittujen sääntöjen määrittelemä toiminta. Produktiosysteemit Produktiosysteemiin voidaan lisätä tavoitteita kuvaavia meta-produktioita, jotka ohjaavat ongelmanratkaisua. Konfliktinratkaisussa (conflict resolution) valitaan sopivista produktioista se joka laukeaa. Tähän voidaan käyttää erilaisia strategioita. Produktioille voidaan määritellä esim. että ne laukeavat vain kerran ongelmanratkaisun aikana. Oletetaan seuraava sääntömuisti, jossa kaikki produktiot ovat vain kerran laukeavia: 1. IF: nisäkäs(x) THEN: lisää jalat(x,4) 2. IF: nisäkäs(x) & ihminen(x) THEN: lisää jalat(x,2) 3. IF: jalat(x,2) THEN: lisää seisoo(x) 4. IF: jalat(x) THEN: lisää kävelee(x) 5. IF: kotieläin(x) & ihminen(y) THEN: lisää hoitaa(y,x) Oletetaan työmuisti: { kotieläin(lehmä), ihminen(pekka), nisäkäs(pekka)} Saara Huhmarniemi 15
1. syklissä etsitään sopivat säännöt: 1. IF: nisäkäs(x) THEN: lisää jalat(x,4) 2. IF: nisäkäs(x) & ihminen(x) THEN: lisää jalat(x,2), poista nisäkäs(x) 5. IF: kotieläin(x) & ihminen(y) THEN: lisää hoitaa(y,x) Työmuisti: { kotieläin(lehmä), ihminen(pekka), nisäkäs(pekka)} Säännöt 1 ja 2 muodostavat konfliktin, joka ratkaistaan tässä valitsemalla tarkempi sääntö. Suoritettavat toiminnot: lisää jalat(pekka,2), poista nisäkäs(x), lisää hoitaa(pekka, lehmä) Uusi työmuisti: {kotieläin(lehmä), ihminen(pekka), jalat(pekka,2), hoitaa(pekka,lehmä)} Sääntömuisti, josta käytetyt säännöt on poistettu: 1. IF: nisäkäs(x) THEN: lisää jalat(x,4) 3. IF: jalat(x,2) THEN: lisää seisoo(x) 4. IF: seisoo(x) THEN: lisää kävelee(x) 2. syklissä valitaan sääntö 3 jolloin toiminto on: lisää seisoo(pekka) Uusi työmuisti: {kotieläin(lehmä), ihminen(pekka), jalat(pekka,2), hoitaa(pekka,lehmä), seisoo(pekka)} Produktiosysteemin toiminta jatkuu sykleittäin, kunnes sopivia produktioita ei enää löydy tai päästään haluttuun lopputilaan. Oppiminen Systeemi "oppii" muodostamalla päättelyketjuista produktioita. Edellisessä esimerkissä esimerkiksi päättely: IF: nisäkäs(x) & ihminen(x) THEN: jalat(x,2) IF: jalat(x,2) THEN: seisoo(x) IF: seisoo(x) THEN: kävelee(x) voi päättelyketjun suorituksen jälkeen automatisoitua produktioksi: IF: nisäkäs(x) & ihminen(x) THEN: kävelee(x) Saara Huhmarniemi 16
Produktiosysteemi Produktiosysteemit Havainnot Tietopohjainen mietintä Refleksit Toiminta Nykyaikaiset modernit produktiosyteemit voivat käsitellä reaaliaikaisesti jopa yli miljoonaa sääntöä. Sääntöjen valinta voidaan toteuttaa rinnakkaisesti, joten se on tehokasta. Sen sijaan sääntöjen sovellus on sarjallista. Produktiosysteemit Mitkä produktiosysteemin ominaisuudet mallintavat ihmisen kognitiota? Psykologinen uskottavuus? Psykologinen uskottavuus? työmuisti, pitkäkestoinen muisti? ajattelu nähdään hahmontunnistuksena Tietty kuvio laukaisee pitkäkestoisesta muistista tietyn toiminnon. Vastaavasti, kun tiettyä vihjettä ei ole läsnä, haluttua ajatusta ei saada mieleen tai toimintoa ei pystytä suorittamaan. modulaarinen Saara Huhmarniemi 17
ketjutus ja taaksepäinketjutus Produktiosysteemi on käyttää loogista päättelyä ketjuttamalla (forward chaining): siinä lähdetään atomilauseista soveltaen Modus Ponens -sääntöä ja lisäten faktoja työmuistiin, kunnes kaikki mahdolliset johtopäätökset on tehty. Toinen tapa käyttää loogista päättelyä algoritmissa on taaksepäinketjutus (backward chaining). Tällaiset algoritmit lähtevät lopputilasta taaksepäin, kunnes löytävät faktoja jotka tukevat todistusta. Saara Huhmarniemi 18