Keresés részleges információ mellett Eddig a környezet teljesen megfigyelhető és determinisztikus volt, az ágens tisztában volt minden cselekvésének következményével. Ebből kifolyólag az ágens pontosan ki tudja számítani, hogy egy tetszőleges cselekvésszekvenciának milyen állapot az eredménye, és azt is tudja, hogy ő maga milyen állapotban van. Az érzékelései nem nyújtanak új információt az egyes cselekvések után. De mi van akkor, ha a cselekvésekről és állapotokról alkotott tudás nem teljes?
Keresés részleges információ mellett A nemteljesség különböző formái három problématípushoz vezetnek: Szenzor nélküli (conformant) problémák: ha az ágensnek egyáltalán nincsenek szenzorai, akkor a több lehetséges kezdeti állapot egyikében lehet, és minden cselekvése a lehetséges követő állapotok egyikéhez vezethet.
Keresés részleges információ mellett Eshetőségi (contingency) problémák: ha a környezet részben megfigyelhető, vagy ha a cselekvések bizonytalanok, akkor az ágens érzékszervei új információt nyújtanak minden cselekvés után. Minden lehetséges érzékelés egy eshetőséget határoz meg, amire az ágensnek terveznie kell. A problémát ellenfél problémának (adversarial) hívják, ha a bizonytalanságot egy másik ágens cselekvései okozzák.
Keresés részleges információ mellett Felfedezéses (explorational) probléma: Ha a környezet állapotai nem ismertek, az ágensnek külön cselekednie kell, hogy azokat felderíthesse. A felfedezési problémákat az eshetőségi problémák szélsőséges változatának lehet tekinteni.
Szenzor nélküli problémák 3.20
Szenzor nélküli problémák Tegyük fel, hogy a porszívóágens ismeri az összes cselekvésének a hatását, de szenzorokkal nem rendelkezik. Ekkor csak azt tudja, hogy kezdeti állapota a (1,2,3,4,5,6,7,8) halmaz egy eleme. Mivel tudja, hogy cselekvései mire képesek, kiszámíthatja, hogy a Jobbra cselekvés a (2,4,6,8) állapotok egyikébe viszi, a Jobbra,Szív cselekvéssorozat eredményeképpen a (4,8) állapot egyikében köt ki. A Jobbra, Szív, Balra, Szív sorozattal garantáltan eléri a (7) célállapotot függetlenül a kezdeti állapottól. Erre azt mondjuk, hogy az ágens a világot a 7. állapotba bele tudja kényszeríteni (coerce) akkor is, ha nem tudja honnan indult.
Szenzor nélküli problémák Ha a világ nem teljesen megfigyelhető, az ágensnek az egyedi állapotokkal szemben azon állapothalmazokra kell tudni következtetni, amely halmazok állapotaiba eljuthat. Minden ilyen állapothalmazt egy hiedelmi állapotnak nevezünk (belief state), amely az ágens pillanatnyi hiedelmét fejezi ki, hogy ő maga vajon milyen fizikai állapotban lehet most. A teljesen megfigyelhető környezetben minden hiedelmi állapot egyetlen fizikai álapotból áll.
Szenzor nélküli problémák Ahhoz, hogy egy szenzor nélküli problémát megoldhassunk, a fizikai állapotok terében történő keresés helyett a hiedelmi állapotok terében kell keresni. A kezdeti állapot egy hiedelmi állapot, és minden cselekvés egy hiedelmi állapotot egy másik hiedelmi állapotba képez le.
Szenzor nélküli problémák 3.21
Szenzor nélküli problémák Csak 12 hozzáférhető hiedelmi állapot létezik, az egész hiedelmi állapottér azonban tartalmazza a fizikai állapotok minden lehetséges halmazát, azaz 2 8 =256 hiedelmi állapotot. Ha a fizikai állapottérnek S állapota van, a hiedelmi állapottér állapotainak száma 2 S.
Eshetőségi problémák Ha a környezet jellege olyan, hogy az ágens a cselekvéseit követően szerezhet új információt a szenzorai réven, eshetőségi problémáról (contingency problem) beszélünk. Egy eshetőségi probléma megoldása sokszor egy fa alakját veszi fel, ahol egy-egy ágnak a kiválasztása azon múlik, hogy odáig az ágens milyen érzékelésekhez jutott.
Eshetőségi problémák Tegyük fel, hogy az ágens rendelkezik helyzetérzékelővel és lokális koszérzékelővel, de nincs olyan szenzora amely detktálná a koszt más négyzetekben. A [B,kosz] érzékelés azt jelenti, hogy az ágens az [1,3] állapotok egyikében van. A [szív, jobbra, szív] cselekvéssorozat biztosan feltakarítja mind a két helyiséget, de lehet, hogy felesleges lépést is végre fog hajtani.
Eshetőségi problémák Cél: mind a két helyiség tiszta [B,kosz](1,3) állapotok valamelyike szív(5,7) állapotok egyike jobbra(6,8) állapotok egyike szívha (6) akkor cél, ha (8) akkor felesleges szívás Egy rögzített cselekvéssorozat se garantálja a probléma megoldását.
[B,kosz] Akkor lesz megoldásunk ha lemondunk a cselekvések szigorú sorrendjéről: [szív, jobbra, ha(jobbra,kosz) akkor szív] A megoldások terét azzal a lehetőséggel bővítjük, hogy a cselekvéseket a végrehajtás alatt megjelenő eshetőségek alapján választjuk. Mivel a pontos előrejelzés sűrűn lehetetlen, a valós világ számos problémája eshetőségi probléma.
Informált keresési és felfedező módszerek A nem informált keresés szisztematikusan új állapotokat generálnak, és összehasonlítják azokat a célállapottal. Ezek a stratégiák általában rossz hatékonysággal dolgoznak. Ide tatoznak a lokális keresési algoritmusok amelyeket a statisztikai fizika inspirálta módszerek (szimulált lehűtés, simulated annealing), és az evolúciós biológia sugallta módszerek (genetikus algoritmusok, genetic algorithms). Van meg online keresés is (online search). Itt az ágens egy teljesen ismeretlen állapottérrel találja magát szemben.
Informált (heurisztikus) keresési stratégiák A legjobbat először keresés (best-first search). Ez a fa-keresés olyan speciális esete ahol egy csomópont kifejtésre való kiválasztása egy f(n) kiértékelő függvénytől (evaluation function) függ. Hagyományosan a legkisebb értékű csomópontot választjuk kifejtésre, mert a kiértékelő függvény a céltól való távolságot méri. Ez a módszer nem a legjobb (keresünk, nem ismerjük), hanem a legjobbnak tűnő csomópontot választja.
Legjobbat először Ezeknek az algoritmusoknak a kulcseleme egy h(n) heurisztikus függvény (heuristic function): h(n)=az n csomóponttól a célig vezető legolcsóbb út becsült útköltsége. Ha n egy célállapot, akkor h(n)=0.
Mohó legjobbat-először keresés Greedy best first search: azt a csomópontot fejti ki a következő lépésben amelyiknek az állapotát a legközelebbinek ítéli meg a célállapothoz. A csomópontokat az algoritmus az f(n)=h(n) heurisztikus függvénnyel értékeli ki.
Mohó legjobbat-először keresés Románia példáján legyen a légvonalban mért távolság h LMT. Ha a cél Bukarest, akkor h LMT (Benn(Arad))=
Mohó legjobbat-először keresés 4.2.a
Mohó legjobbat-először keresés 4.2.b
Mohó legjobbat-először keresés Ez az algoritmus soha nem fejt ki olyan csomópontot amely nem a megoldási úton fekszik. Ezért minimális a keresési költsége, de nem optimális: Az Arad-Nagyszeben-Fogaras-Bukurest 32km- rel hosszabb mint Arad-Nagyszeben-Rimnicu Vilcean-Pitestin-Bukurest. Az algoritmus azért mohó mert minden lépésben igyekszik annyira közel kerülni a célhoz amennyire csak lehet.
Mohó legjobbat-először keresés A h(n) minimalizálása érzékeny a hibás kezdő lépésekre. Pl. Iasi-Fogaras út. A heurisztika alapján először Neamtot kellene először kifejteni, de ez zsákutca. A megoldás, hogy előbb elmenjünk Vasluira (a céltól távolabb van), majd Csalános, Bukarest, Fogaras. Ebben az esetben az algoritmus egy felesleges csomópontot is kifejt. Ha nem figyelünk az ismétlődő állapotokra, sose találjuk meg a megoldást (Neamt és Iasi között fogunk mozogni).
Mohó legjobbat-először keresés A mélységi keresésre hasonlít a legjobban. Egyetlen út követését preferálja a célig, de zsákutcából visszalép. Nem optimális és nem teljes (elindulhat egy végtelen úton). Az idő-és tárigény O(b m ), ahol m a keresési tér maximális mélysége.
A* keresés Ez a teljes becsült útköltség minimalizálása (A csillag). f(n)=g(n)+h(n) g(n) - az aktuális csomópontig megtett út költsége h(n) – az adott csomóponttól a célhoz vezető út költségének becslője
A* keresés g(n) megadja a kiinduló csomóponttól az n csomópontig számított útköltséget, és h(n) az n csomóponttól a célcsomópontba vezető legolcsóbb költségű út költségének becslője, ezért: f(n) = a legolcsóbb, az n csomóponton keresztül vezető megoldás becsült költsége.
A* keresés Az A* optimális lesz, ha h(n) egy elfogadható heurisztika (admissible heuristic), azaz ha h(n) soha nem becsüli felül a cél eléréséhez szükséges költséget. Az elfogadható heurisztika egyik nyilvánvaló példája a Bukarestbe történő utazás során felhasznált h LMT légvonalban mért távolság. A légvonalban mért távolság elfogadható mert bármely két pont között a legrövidebbb távolság a légvonalban mért távolság, így a légvonalban mért távolság soha nem becsülhet túl.
A* keresés 4.3.a
A* keresés 4.3.b
A* keresés 4.3.c
A* keresés Bukarest először az (e) lépés peremén jelent meg, de nem került kifejtésre, mert Bukarest f- értéke (450) magasabb mint Pitestié (417). Ezt úgy lehetne megmagyarázni, hogy lehet hogy Pitestin keresztül létezik egy 417 költségű olcsó megoldás, így az algoritmus nem fog választani egy 450 költségű megoldást. Az A*algoritmus optimális, ha h(n) elfogadható.
Heurisztikus függvények Vizsgáljuk újra a 8-kirakójátékot. A cél, hogy a számozott lapkákat vízszintesen és függőlegesen az üres helyre tolva a kiindulóállásból a célállásba jussunk. 4.7
Heurisztikus függvények Egy átlagos megoldás véletlen módon generált 8-as kirakójáték példányok esetén kb. 22 lépésből áll. Az elágazási tényező nagyjából 3 (2, 3 vagy 4). A 22 mélységig menő kimerítő keresés 3 22 (3.1x10 10 ). Ha kizárjuk az ismétlődő állapotokat 9!/2= elrendezés létezik. 15-ös kirakójáték esetén ez a szám már Ezért szükségünk van egy jó heurisztikára!
Heurisztikus függvények Ha a legrövidebb megoldásokat akarjuk megtalálni az A* algoritmussal, olyan heurisztikus függvényre van szükségünk, ami soha nem becsüli túl a célállapot eléréséhez szükséges lépések számát. Két lehetőség: h 1 – a rossz helyen lévő lapkák száma. h 2 – a lapkáknak a saját célhelyeiktől mért távolságaik összege.
Heurisztikus függvények h 1 : A 4.7. ábrán egyik lapka sincs a helyén, így a kiinduló állapotban h 1 =8. h 1 elfogadható heurisztikus függvény mivel nyilvánvaló, hogy minden lapocskát legalább egyszer mozgatni kell. h 2 : Mivel a lapkákat nem lehet átlósan mozgatni, a kiszámított távolság a vízszintes és függőleges távolságok összege lesz.
Heurisztikus függvények h 2 : ezt a távolságot háztömb távolságnak (city block distance), vagy Manhattan távolságnak (Manhattan distance) is szokás nevezni. h 2 szintén elfogadható heurisztikus függvény, mert minden egyes mozgatással egy lapkát csak egy hellyel lehet közelebb vinni a célhoz. A kiinduló állapotban az 1-8 lapkákra számított Manhattan távolság: h 2 = =18. Nem becsüli túl a megoldás költségét ami 26.
Lokális kereső algoritmusok és optimalizációs problémák Az eddig ismertetett keresési algoritmusokat úgy tervezték, hogy a keresési tereket szisztematikusan tárják fel. A szisztematikusságot úgy érik el, hogy egy vagy több utat tartanak a memóriában, és azt is feljegyzik, hogy minden pontban az út mentén melyik alternatívát vizsgálták már meg, és melyiket nem. Amikor megtalálják a célt, a célhoz vezető út egyben a probléma megoldása.
Lokális keresés Számos problémában a célhoz vezető út érdektelen. A 8-királynő problémában a királynők végleges konfigurációja számít, nem pedig a sorrend ahogy az új királynőket felhelyezzük. A lokális keresési algoritmusok (local search) csak egy aktuális állapotot (current state) vesznek figyelembe, és általában csak ennek az állapotnak a szomszédaira lépnek tovább. A keresés által követett utat tipikusan el sem tárolják.
Lokális keresés A lokális keresési algoritmusok nem szisztematikusak, de ennek ellenére két kulcsfontosságú előnyük van: 1.Igen kevés (általában konstans mennyiségű) memóriát használnak. 2.Sokszor nagy vagy végtelen keresési térben elfogadható megoldást produkálnak (a szisztematikus algoritmusokkal ellentétben).
Lokális keresés Alokális keresés megértéséhez elemeznünk kell az állapottérfelszínt (state space landscape) 4.10
Lokális keresés A felszínnek van „pontja” (amit az állapot definiál) és „magassága” (amit a heurisztikus vagy a célfüggvény értéke határoz meg). Ha a magasság a költséggel arányos, akkor a cél a legalacsonyabban fekvő völgyet (globális minimum) megtalálni. Ha a magasság a célfüggvénynek felel meg, akkor a cél a legmagasabb csúcs (globális makszimum) megtalálása. Az egyikről a másikra könnyen átválthatunk előjelcserével.
Lokális keresés Egy teljes lokális keresés mindig talál megoldást, ha az egyáltalán létezik. Egy optimális algoritmus mindig megtalálja a globális minimumot vagy makszimumot.
Hegymászó keresés A hegymászó keresési algoritmus (hill climbing) egyszerűen egy ciklus amely mindig javuló értékek felé (felfelé) lép. Az algoritmus akkor áll meg ha felér a csúcsra, ahol nincsenek magasabb értékű szomszédok. Az algoritmus nem tart nyilván keresési fát. A hegymászó keresés nem néz előre az aktuális állapotot közvetlenül követő szomszédokon túl. Arra hasonlít mintha a Mount Everest csúcsát syeretnénk megtalálni sűrű ködben és emlékezetkihagyásban szenvedve.
Hegymászó keresés Illusztrálásra a 8-királynő problémát (8-queens) fogjuk használni. A lokális keresési algoritmusok tipikusan a teljes állapot leírással élnek (complete state formulation), ahol minden állapotban a táblán 8 királynő helyezkedik el, oszloponként egy. Az állapotátmenet függvény minden olyan lehetséges állapotot visszaad, amit úgy kapunk, hogy egy királynőt ugyanabban az oszlopban egy másik mezőre mozgatunk (minden állapotnak 8x7=56 követője van.)
Hegymászó keresés A h heurisztikus függvény az egymást támadó királynők száma. E függvény globális minimuma 0, ami csak a tökéletes megoldásban érhető el. A 4.12.a. Ábra egy h=17 értékű állapotot mutat. Az ábra az összes követőnek az értékét is mutatja, ahol a legjobb követőé h=12. Ha a legjobból több van, az algoritmus véletlenül választ egyet.
Hegymászó keresés 4.12
Hegymászó keresés Ezt a keresést néha mohó lokális keresésnek is hívják (greedy local search) mert egy jó követő állapotot megragad, anélkül hogy megfontolná hogy merre érdemes továbbmenni. A hegymászás gyakran igen gyorsan halad a megoldás felé, mert egy rossz állapoton nagyon könnyű javítani. A 4.12.a. Állapotból indulva 5 lépés elegendő hogy elérjük a 4.12.b. Állapotot melynek költsége h=1, és amely közel van a megoldáshoz. A hegymászás gyakran megakad a következő problémák miatt:
Hegymászó keresés Lokális makszimumok: a lokális makszimum egy csúcs, amely minden szomszédjánál magasabb, de a globális makszimumnál alacsonyabb. A hegymászó algoritmusok, ha egy lokális makszimum közelébe érnek, kénytelenek a csúcs felé tartani, ott azonban megakadnak (4.10.). A 4.12.b. egy példa erre. Bármely királynő bármely lépése csak ront a helyzeten.
Hegymászó keresés Fennsík (plateaux): ez az állapottérnek egy olyan területe ahol a kiértékelő függvény gyakorlatilag lapos. Lehet ez egy lapos lokális makszimum, ahonnan nincs tovább felfelé, de lehet egy váll (shoulder) is, ahonnan még leheetséges az előrehaladás. Egy hegymászó keresés képtelen lehet arra, hogy megtalálja a fennsíkról kivezető utat.
Hegymászó keresés Az algoritmus elér egy pontot ahonnan már nem tud továbblépni. Egy véletlen módon generált 8-királynő állapotból kiindulva a hegymászó algoritmus az esetek 86%-ában elakad, és csak 14%- ban oldja meg a problémát. Az algoritmus gyors, átlagban 4 lépést tesz amikor sikerrel jár, és 3 lépést tesz amikor elakad. Mivel az állapottér 8^8=17 millió, ez egyáltalán nem rossz.
Hegymászó keresés Az algoritmus megáll ha fennsíkra ér, ahol a legjobb követőnek ugyanaz az értéke mint az aktuális állapotnak. Ezért oldallépéseket is engedélyezünk (sideway move), és azt reméljük, hogy a fennsík valójában váll. Ha az oldallépéseket mindig megengedjük, akkor ha felfelé haladás nincs, végtelen hurokba kerülünk minden olyan esetben amikor az algoritmus olyan lapos lokális makszimumot talál ami nem váll.
Hegymászó keresés Gyakori megoldás az oldallépések számát korlátozni. Ha a 8-királynőnél megengedünk 100 egymás utáni oldallépést, a megoldott problémák aránya 14%-ról 94%-ra növekszik. A siker ára a lépések növekedésével jár. A megoldott eset átlagban 21 lépés, a kudarc átlagosan 64 lépés.
Hegymászó keresés Ezek az algoritmusok nem teljesek, sokszor kudarcot vallanak mert beragadnak egy lokális makszimumba. A vélrtlrn újraindítású hegymászás (random-restart hill climbing) az ismert közmondás szerint jár el: „Ha nem megy előre, csináld újra”. Véletlenül generált kiinduló állapotokból hegymászó keresést végez, am0g célba nem ér. Az algoritmus teljes mert előbb- utóbb a célállapotot kezdőállapotként fogja generálni.
Hegymászó keresés Ha minden hegymászó keresés p valószínűséggel sikeres, a véletlen újraindítások várható száma 1/p. A 8- királynő problémában, ha oldallépéseket nem engedünk meg, p=0.14, így a cél megtalálására átlagosan 7 iterációra van szükségünk (6 kudarc és 1 siker).
Hegymászó keresés A hegymászás sikere nagyban függ az állapottér felszínének alakjától: ha csak néhány lokális makszimum és fennsík található, az újraindításos módszer gyorsan meg fogja találni a megoldást.
Szimulált lehűtés A hegymászó keresés nem teljes mert beragadhat egy lokális makszimumba. Ezzel szemben a tisztán véletlen vándorlás teljes, de hihetetlenül nem hatékony. Értelmesnek tűnik a hegymászás és a véletlen vándorlás ötvözése, hogy megtartsuk a hatékonyságot és a teljességet is.
Szimulált lehűtés A kohászatban a lehűtés (annealing) a fémeket, illetve az üveget edző, keményítő folyamat, amikor azokat magas hőmérsékletre felmelegítjük, majd fokozatosan lehűtjük, hogy az anyag alacsony energiájú kristályos állapotba kerüljön.
Szimulált lehűtés Térjünk át a gradiens leereszkedésre (gradient descent). Képzeljük el, hogy az a feladatunk, hogy egy hepehupás asztalon egy pingponglabdát a legmélyebb szakadékba juttassunk. Ha a labdát gurulni hagyjuk, egy lokális minimumba kerül. Ha a felületet megrázzuk, a labdát kiugraszthatjuk a lokális minimumból.
Szimulált lehűtés A trükk az, hogy olyan erősen kell megrázni a felületet, hogy a labda a lokális minimumból kikerüljön, de mégsem olyan erősen, hogy a labda a globális minimumból kiugorjon. A szimulált lehűtés olyan megoldás, hogy először erősen rázunk (magas hőmérséklet), majd fokozatosan csökkentjük a rázás intenzitását (csökkentjük a hőmérsékletet).