FIGYELEM!
Szeretsz programozni? Szereted a kihívásokat? Szeretnél pénzt is keresni?
Az új CodeX ForeX minderre ITT lehetoséget ad!




Bevezetés a mesterséges inteligencia alapjaiba

Bevezetés a mesterséges intelligenciába - 1. Rész

Egy kis ízelítő

Ez a cikk a mesterséges intelligenciáról szóló sorozat első részének készült, és - hogy ne vegyük el mindenkinek a kedvét a sok matematikával és program részlettel, amikben azért később lesz részünk - kezdjük inkább egy kis ízelítővel. Mint általában az ilyen cikksorozatoknál itt is beszéljünk egy kicsit az előzményekről, célokról, lehetőségekről. Már csak azért is, mert sokan hajlamosak túlzásokba esni, félismeretek alapján ítélni, és nem ritkán - internetes fórumok vándor filozófusai - scifi élmények alapján érvelni, és biztosként állítani mindenfélét erről a tudományágról.

Ahhoz, hogy bármit is elkezdhessünk, nem árt tisztázni, hogy mik azok a határtudományok, melyekkel kapcsolatba kerülünk a későbbiek során. Először is a matematika. Két okból is, egyrészt mert a matematika számtalan területén kiválóan alkalmazzák a mesterséges intelligencia megoldásokat (automatikus tételbizonyítás, függvény analízis, integrálás ... stb.), másrészt mert a matematika adja azt az egységes és közös leíró nyelvet, amelyet a számítógép és a programozó is beszél. Amivel le lehet írni a minket körülvevő jelenségeket, világot. Itt pedig rögtön meg kell említenünk a második fontos elemet, amit sokszor fogunk használni. A programírás. Mi a JAVA nyelvet fogjuk használni a későbbiekben, ingyenessége és főként objektumorientáltsága miatt, ami szintén segíti leírni a minket, illetve jelen esetben az alkalmazásunkat körülvevő világot. Harmadszor, meg kell említenünk a kognitív tudományokat (pszihológia), melyek segítségével megismerhetjük saját agyunk működését, és ezzel alapvető ötleteket és ismereteket szerezhetünk alkalmazásaink, eljárásaink mikéntjéhez. Valamint érdemes megemlíteni például a biológiát, amelyből kölcsönvett ötlet alapján született meg a genetikus algoritmusok alapja (öröklődés), ami persze a problémamegoldás része, és így teljesen eltávolodott a valódi örökítéstől, de jól példázza, hogy ha nyitott szemmel és értelemmel közlekedünk a világban akkor az onnan ellesett ötletek milyen jól hasznosíthatóak.

A mesterséges intelligencia kutatás célja az embert segítő, és nem őt kiváltó, túlszárnyaló gépek létrehozása. Erre jó példa a következő: Nem túl bonyolult dolog az ember számára különbséget tenni egy élőlény és egy guruló szikla között. Feltételezzük, hogy az emberiség eljuttat egy robotot (holdjárót) egy távoli bolygóra. Ha az a bolygó mondjuk olyan messze van a Földtől mint a Mars, akkor a bolygók helyzetétől függően 4-20 perc kell, hogy a jelek eljussanak onnan ide és ugyanennyi, hogy vissza is érjenek. Azt mondtuk a robotunknak, hogy vegyen talajmintát. A képernyőt figyelve egyszer csak meglátunk egy szaladó „zöld emberkét”. De hát az jóval azelőtt történt, hogy mi észlelnénk. Ráadásul, mire utána küldhetnénk a robotot, már jókora előnye lenne. Reménytelen. Gondolhatnánk az a megoldás, hogy írunk egy programot, ami mindenre rávetődik, ami mozog. Mintavételezés közben elindul robotunk felé egy  nagy szikla. Robotunk boldogan „szalad” (gurul) felé, és mire szólnánk neki, hogy ez meggondolatlanság, már vége is. Ezért a legjobb megoldás, ha maga a robot dönti el, hogy mi is legyen. Ehhez persze szükséges, hogy meg tudja állapítani mivel áll szemben, és mi legyen a helyes reakciója.

Persze a Földtől kevésbé elrugaszkodott példákat is lehet hozni a mesterséges intelligencia alkalmazására a különféle szakértői rendszerek, útvonaltervező rendszerek és irányítási rendszerek területéről. Itt már olyan bonyolult és sokféle helyzettel találkozhatunk, hogy szinte lehetetlen az összes be- és kimenet leprogramozása. Itt csak az segíthet, ha alkalmazásunk a rendelkezésre álló ismeretek alapján meghatározza az elérhető legoptimálisabb megoldást. (Később majd azt is látni fogjuk, hogy erre hány különféle megoldást találtak már ki.)

Mielőtt nekifognánk a mesterséges intelligencia területének komolyabb  és átfogó megismerésének, vessünk egy pillantást az eddigi eredményekre, persze a teljesség igénye nélkül. A számítógép és az intelligencia kapcsolatát legkorábban talán Alan Turing vizsgálta. Arra volt kíváncsi, hogy a számítógép képessé tehető-e a gondolkodásra. Nem azt fogalmazta meg, hogy mi is a gondolkodás - valószínűleg erre egzakt, minden tudományágat lefedő meghatározást nem is lehet adni - hanem egy tesztet dolgozott ki. Ez a TURING teszt, amelynek lényege, hogy ha az ember egy terminálon keresztül kommunikál egy géppel, akkor ne tudja eldönteni, hogy géppel, vagy emberrel beszélget. Joseph Weizenbaum 1966-ban elkészítette az ELIZA nevű rendszert, amely mintaillesztéses elven működött. Ismer néhány mondatsémát, amelyekben bizonyos szavak helyén változók állnak. A felhasználó által beírt mondatokat meghatározott séma szerint lebontja, és egy előre megadott mondatba, a változók helyére beilleszti a felhasználó mondataiból kivett szavakat. Ha elegendően nagy adatbázist töltünk fel a sémákkal, akkor elég jó rendszert építhetünk. Az ELIZA továbbfejlesztett változatait pszichológusok is alkalmazták. Persze azért a figyelmes szemlélő bizonyos idő elteltével észreveszi, hogy a mondatok visszatérnek, túl egyszínűek. Ha valaki készíteni szeretne egy ilyen programot, akkor annak a Perl nyelvet ajánlom. A Perlnek nagyszerű és könnyen használható mintaillesztő operátorai vannak, jó adatbázis modulokkal rendelkezik, és a széles tesztelhetőség érdekében akár CGI-ként megírva programunkat az interneten is közzétehetjük. Ami pedig a legjobb tulajdonsága a Perlnek, hogy ingyenes, és mind Windows mind Linux környezethez alkalmazható. Természetesen ezek a mintaillesztésen alapuló programok nem túl intelligensek, inkább egy betanított majomra hasonlítanak. Ez természetesen nem lebecsülésük, hanem csak az MI alkalmazások közti helyüket mutatja. Ezek a programok nem problémákat oldanak meg, hanem adott bemenetre előre definiált kimenetekkel válaszolnak.

Továbbhaladva az időben, a 70-es években általános problémamegoldó rendszereket próbáltak kifejleszteni (pl. Newel). Ezekhez a rendszerekhez szükség volt egy modellre, amellyel a problémák egységesen és jól reprezentálhatóak. A feladat azután mindig oda vezetett, hogy ebben a reprezentációs modellben kerestünk egy utat, a kiinduló probléma és a lehetséges célok valamelyike között. Itt már igazi, bár igen egyszerű MI alkalmazásokról beszélhetünk. A későbbiekben megismerjük a Hanoi tornyai nevű problémát, és az azt megoldó néhány algoritmust, kereső rendszert. Azonban ha nem ilyen rendszereket akarunk építeni, hanem egy egész szakterületet lefedő rendszert, akkor hatékonyabbak az ismeretalapú technológiák, amelyek a 80-as évek alatt fejlődtek ki. Az ezeknél is fejlettebb rendszerek már képesek a tanulásra, és egyéb emberszerű cselekvésre is (látás, szövegértés...). Az ilyen rendszerek készítéséhez jól alkalmazhatóak a genetikus algoritmusok. Természetesen korántsem említettük meg az összes eljárást ami a rendelkezésünkre áll, és aki komolyabban elmélyül a témában, maga is láthatja, hogy ez a napjainkban erősen fejlődő tudomány még számtalan fel nem tárt lehetőséget tartogat.

Végezetül csak felsorolás jelleggel néhány terület, amit lefednek az MI alkalmazások, kutatások, fejlesztések:

Talán zárógondolatként annyit, hogy a nem is olyan távoli jövőben megvalósulhat egy olyan mérvű számítástechnikai robbanás, mint az internet, vagy maga a számítógép elterjedése volt. Hiszen az MI technológiák életünk egész területén segíthetnek, az orvosdiagnosztikai rendszerektől a repülés-irányításon át a fogyatékosok segítéséig, a tudományok előremozdításáig, az oktatásig, stb. Érdemes tehát időt szakítani a témára, hiszen lehet, hogy holnaptól együtt kell dolgoznunk, és élnünk ezekkel az alkalmazásokkal.

Horváth Richárd - hricsih@icqmail.com