SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu
Mesterséges intelligencia oktatás a DE Informatikai Karán Évtizedes hagyományok Az oktatási kínálatban számos a témához kötődő, magas színvonalon oktatott kurzus szerepel folyamatosan A téma hangsúlyosan jelenik meg a képzésben A képzés gerincét jelentő GI, MI és PTI BSc szakokon kötelezőként teljesítendő egy bevezető MI kurzus, amely jelenleg A mesterséges intelligencia alapjai címen fut
A bevezető MI kurzus A tárgyalt főbb témakörök: problémák állapottér-reprezentálása, megoldást kereső rendszerek, kétszemélyes stratégiai játékok és lépésajánló algoritmusok Fontossága: eszközt ad problémák számítógép által kezelhető megfogalmazásához (állapottérreprezentáció), másrészt pedig univerzális, bizonyítottan helyesen működő algoritmusokat azok megoldásához Célok: a hallgatók önállóan legyenek képesek valós problémák formalizálására, ennek alapján el tudjanak készíteni egy a problémát megoldó számítógépes programot Az oktatás előadások és gyakorlatok formájában történik
A MI gyakorlati oktatása A félév első felében a gyakorlatokon problémák formalizálása, az állapottér-reprezentációk és megoldáskereső algoritmusok implementálása műhelymunka keretében A félév végén hasonló felfogásban kerülnek tárgyalásra a kétszemélyes stratégiai játékok és lépésajánló algoritmusok Szilárd matematikai logikai és programozási alapok szükségesek (megfelelő tantárgyi előfeltételek) Az utóbbi években a gyakorlatok programozási nyelve elsősorban a Java Nagyon hasznos a szemléltetés (alapfogalmak és az algoritmusok működése kapcsán)
Szoftverek a gyakorlatok oktatásához Az előadó által kifejlesztett nyílt forrású (GNU GPL licenc alatt terjeszett) osztálykönyvtár, amely az alábbiakat tartalmazza: OO keretrendszer számítógépes problémamegoldáshoz A tárgyalt megoldáskereső algoritmusok valamint számos különböző probléma állapottérreprezentációjának implementációja a keretrendszerben OO keretrendszer kétszemélyes stratégiai játékokhoz Néhány kétszemélyes stratégiai játék (például Othello és malom játék) valamint lépésajánló algoritmus (minimax módszer, negamax módszer, alfa-béta vágás) implementációja a keretrendszerben Eszközök alapfogalmak és a megoldáskereső algoritmusok működésének szemléltetéséhez
A programcsomag szemléltető eszközei Az eszköztár: Programok állapottérgráfok és játékfák grafikus ábrázolásához Explicit gráfok Programok megoldáskereső algoritmusok működésének grafikus ábrázolásához Az előadó nem ismer más ilyen képességekkel rendelkező eszközt
Állapottérgráfok és játékfák rajzolása Ha az állapottér-reprezentációs Java osztály megfelelően implementálja a programcsomag interfészeit, akkor tetszőleges probléma és kétszemélyes stratégiai játék esetén képes a program ábrázolni a teljes állapottérgráfot vagy játékfát Nagy gráfok esetén megadható mélységi korlát illetve előállítható makroszkópikus nézet Utóbbi a gráf szerkezetét szemlélteti olyan módon, hogy minden csúcs csupán egy címke nélküli pontként jelenik meg rajta
Állapottérgráf megjelenítése (1): a 8-as játék 3 mélységig felépített gráfja
Állapottérgráf megjelenítése (2): a misszionáriusok és kannibálok probléma gráfja makroszkópikus nézetben (16 csúcs és 17 irányítatlan él)
Állapottérgráf megjelenítése (3): a 8-as játék 6 mélységig felépített gráfja makroszkópikus nézetben (103 csúcs és 104 irányítatlan él)
Explicit gráfok A csomag részeként implementált problémák az állapottérgráf tipikusan nagy mérete miatt nem alkalmasak a megoldáskereső eljárások működésének szemléltetéséhez Egy explicit gráf egy XML-ben leírt, tipikusan kisméretű állapottérgráf (azonban méretére nincs felső korlát), amelynek célja kifejezetten szemléltetés A formátum egy XML séma formájában adott A csomag valamennyi megoldáskereső eljárása képes explicit gráfokat is kezelni Egy gráfot leíró XML dokumentumban meg lehet adni: a gráf csúcsait (opcionális heurisztikus értékekkel), a gráf éleit (opcionális élköltségekkel), néhány kiegészítő információt (például az élköltségek mértékegységét)
Egy explicit gráf XML-ben <?xml version="1.0" encoding="utf-8"?> <graph xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="graph.xsd" root="budapest" cost.unit="km" directed="false"> <node id="budapest"/> <node id="cegléd"/> <goalnode id="debrecen"/> <node id="eger"/> <node id="füzesabony"/> <node id="hatvan"/> <node id="karcag"/> <node id="miskolc"/> <node id="nyíregyháza"/> <node id="tiszafüred"/> <node id="szolnok"/> <node id="újszász"/> <edge source="budapest" target="cegléd" cost="73"/> <edge source="budapest" target="hatvan" cost="67"/> <edge source="budapest" target="újszász" cost="84"/> <edge source="cegléd" target="szolnok" cost="27"/>... </graph>
Az explicit gráf a programmal ábrázolva
Megoldáskereső algoritmusok működésének ábrázolása Adottak a tárgyalt megoldáskereső algoritmusok olyan megvalósításai, amelyek a működésüket szemléltető képsorozatokat állítanak elő A képsorozatok elemei a megoldáskereső adatbázisának tartalmát ábrázolják lépésrőllépésre Ábra szemlélteti a programok által előállított megoldást is
A probléma az optimális keresővel előállított megoldása a programmal ábrázolva
Az optimális kereső működését szemléltető képsorozat (1) (a) (b) (c)
Az optimális kereső működését szemléltető képsorozat (2) (d) (e)
Az optimális kereső működését szemléltető képsorozat (3) (f)
Az optimális kereső működését szemléltető képsorozat (4) (g)
Az optimális kereső működését szemléltető képsorozat (5) (h)
Az optimális kereső működését szemléltető képsorozat (6)
Az optimális kereső működését szemléltető képsorozat (7)
Az optimális kereső működését szemléltető képsorozat (8)
A programok futtatása (1) A szemléltető programokat az ai.framework.visualization csomag tartalmazza Futtatás parancssorból megfelelő paraméterezéssel lehetséges Fontosabb parancssori argumentumok: Az explicit gráf elérési útvonalának megadása --xml <elérési-útvonal> formában Az állapottér-reprezentációs Java osztály teljes minősített nevének megadása --classname <osztálynév> formában A program által generált képeket tartalmazó könyvtár megadása --outputdir <elérésiútvonal> formában (alapértelmezés az aktuális könyvtár)
A programok futtatása (2) Például a korábbi képsorozatot a java ai.framework.visualization.optimalsearch --xml graph.xml parancs végrehajtásával állíthatjuk elő Az explicit gráfot a graph.xml állomány tartalmazza Az aktuális könyvtárban jönnek létre a 0.png, 1.png, 2.png, képállományok, amelyek az algoritmus egyes lépéseiben mutatják az adatbázis tartalmát Ugyancsak az aktuális könyvtárban jön létre a probléma állapottérgráfjába berajzolt megoldást tartalmazó solution.png képállomány
Megvalósítás A programcsomag teljes egészében Java-ban készült A gráfok rajzolása a nyílt forrású Graphviz szoftverrel történik http://www.graphviz.org/ A Graphviz nem Java nyelven készült, sajnos Java interfész sem létezik hozzá Az ai.util.graphviz csomagban egy Java API a Graphviz által kezelt DOT formátumú gráfok generálásához A DOT állományokból képeket előállító bináris futtatható konverziós programok meghívása a java.lang.runtime osztály segítségével
Továbbfejlesztési lehetőségek Grafikus felhasználói felület explicit gráfok felhasználóbarát készítéséhez, amely nem igényli az XML formátum használatának ismeretét sem Grafikus felhasználói felület a szemléltető programok felhasználóbarát futtatásához A szemléltető programokban különálló képállományok helyett animáció előállítása
További információk A szoftver szabadon elérhető az alábbi címen: http://www.inf.unideb.hu/~jeszy/mestint/