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.