Bevezetés a mesterséges intelligencia alapjaiba

Ez a cikk egy 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él ismeretek 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.

1. Rész: Egy kis ízelítő

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 alkalmazá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 (pszicholó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éma megoldá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 bolygóra. Ha az a bolygó mondjuk olyan messze van a Földtől mint a Mars, akkor kb. 8 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 nyolc perccel azelőtt történt, hogy mi látnánk. Ráadásul mire utána küldhetnénk a robotot, már negyed óra előny lenne. Reménytelen. Gondolhatnánk 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 Ő dönti el, hogy mi is legyen. Ehhez persze szükséges, hogy meg tudja állapítani, hogy mivel áll szemben, és, hogy mi a helyes reakció.

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 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óbb megismerésének néhány szó az eddigi eredményekről, 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 firtatta. Azt vizsgálta, 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 egy géppel, vagy egy 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, amikben 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 feltöltünk 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-zos mind Linuxos környezethez is 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ább haladva 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, amelyikkel a problémák egységesen és jól reprezentálhatóak. A feladat aztá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 ismeret alapú technológiák, amelyek a 80-as évek alatt fejlődtek igazán. Az ezeknél is fejlettebb rendszerek már képesek a tanulásra, és egyéb emberszerű cselekvésre (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 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:

  • Szakértő rendszerek
  • Mesterséges látás
  • Természetes nyelvmegértés
  • Beszéd megértés, felismerés
  • Gépi tanulás
  • Robotika

Talán zárógondolatként annyit, hogy 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