Alkalmazott Mesterséges Intelligencia

Dudás, László

Miskolci Egyetem, Alkalmazott Informatikai Tanszék

Miskolci Egyetem

Új Széchenyi Terv logó.

Kelet-Magyarországi Informatika Tananyag Tárház logója

Magyarország megújul logó.

Nemzeti Fejlesztési Ügynökség http://ujszechenyiterv.gov.hu/ 06 40 638-638

Lektor

Dr. Johanyák Zsolt Csaba

főiskolai docens, Kecskeméti Főiskola

A tananyagfejlesztés az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával a TÁMOP-4.1.2-08/1/A-2009-0046 számú Kelet-Magyarországi Informatika Tananyag Tárház projekt keretében valósult meg.

2011


Tartalom

1. Bevezetés
A könyv célja
A könyv témája
Kiknek készült a könyv?
A könyv felépítése
Javasolt alkalmazási mód
Az animációk használata.
2. Robotok
A robot fogalma
Robot kategóriák
Hobbi robotok
Ipari robotok
Gyógyászati robotok
Nanorobotok
Katonai robotok
Fogyasztói robotok
Humanoid robotok
A robotok intelligenciaszint szerinti osztályozása
Vezérelt robotok
Szenzorokkal ellátott szabályozott robotok
Mesterséges intelligenciával ellátott robotok
Robotstruktúrák
Humanoid robotok
Humanoid robotok szerkezeti kialakítása
A mechanizmus
Szenzorok
Mozgás tervezés
Vezérlés
Részecske-raj alapú optimálás (Particle swarm optimization, PSO)
A részecske-raj alapú optimálás algoritmusa
Paraméterválasztás
Belső működés
Konvergencia
Variánsok
Egyszerűsítések
Kapcsolódó témakörök
Emberszerű helyváltoztatás robotikája
Humanoid és kétlábú robotok evolúciója
Az IZIMAN Projekt
Az emberi járás elemzése
Hibrid megközelítés emberszerű testhelyzet generálásra
Diszkusszió és továbbfejlesztési lehetőségek
A humanoid robotika jövője
Multi-ágens robotrendszerek
Viselkedés-alapú robotika
Kérdések a fejezet anyagához
Felhasznált és ajánlott irodalom
3. Robotok látórendszerei
A gépi látás fogalma
Digitális képfeldolgozás
Képkinyerés
Egyszerű műveletek a képeken
Képzajok
Képtranszformációk
Képmanipulációk a frekvencia térben
Élek detektálása
Arcfelismerés
Soft Computing módszerek
Mesterséges neurális háló alapú képfeldolgozás
A látórendszerek feladata robotoknál
Sztereo látás
Kérdések a fejezet anyagához
Felhasznált és ajánlott irodalom
4. Verbális robotkommunikáció
Hangfeldolgozás
Természetes nyelvek feldolgozása
A mondat szintaktikai szerkezete
Beszédelem-címkézés
Valószínűségi mondatelemzés
Részleges elemzés
Szemantikus elemzés
Statisztikai elvű NLP
Morfológia
A morfológia szükségessége
Morfoszintaktikai ábrázolás véges állapotú automatával
Öntanuló morfológia
Beszédértés, a jelentés megragadásának szintjei
Szemantikai távolság alapú mondatkereső rendszer
Információ előhívó és információ szűrő rendszerek
NLP a gyakorlatban
Beszédgenerálás
Kérdések a fejezet anyagához
Felhasznált és ajánlott irodalom
5. Tanulás
A tanulás fogalma
Tanulás módszerei az intelligens robotoknál
Online, vagy offline tanulás
Viselkedésen belüli tanulás
Viselkedés tanulás
Egy figyelmeztetés
Túltanulás
Az egyensúly megtalálása
Játékágensek tanuló módszerei
Paraméter módosítás
Akció előrejelzés
Döntés tanulás
Virtuális robotok
A tanulás szerepe az önfejlesztésben
Tanulás multi-ágens környezetben
Robotfoci kategóriák
Egy virtuális robotfoci alkalmazás
Kérdések a fejezet anyagához
Felhasznált és ajánlott irodalom
6. Összefoglalás, jövőbetekintés

1. fejezet - Bevezetés

A könyv célja

A mű célja kitekintés nyújtása a mesterséges intelligencia informatikai kötődésű szakterületeken való alkalmazására, különös tekintettel a humanoid robotok és a játékágensek témakörére.

A könyv témája

Kiemelt területek a robotok, ezen belül a humanoid robotok, a gépi látás, beszédfeldolgozás. A tanulás a játékágensek fontos képességeként kerül bemutatásra. A megszerzett ismeretek hozzájárulnak a mesterséges intelligencia módszereinek alkotó felhasználásához az intelligens robotok és a játékprogramozás területén. A könyv anyaga előzetes ismereteket tételez fel a mesterséges intelligencia alapjairól, így a tudásszemléltetési technikák: logika alapú, szabály alapú, szemantikus háló alapú, keret, forgatókönyv alapú ismeretábrázolások, mesterséges neurális hálózatok alapjai, kognitív pszichológia, kereső algoritmusok területéről.

Kiknek készült a könyv?

A jegyzet elsősorban bevezető, alapozó mesterséges intelligencia ismeretekkel már rendelkező BSc, MSc hallgatóknak íródott. Elsősorban mérnök informatikus, programozó informatikus, gazdaság informatikus és villamosmérnök hallgatók érdeklődésére számít, de ajánlható gépészmérnök hallgatók számára is. Kellő motivációval és az ajánlott irodalmakban történő hozzáolvasással a mesterséges intelligencia területével ismerkedők is olvashatják.

Az elvárt ismeretek a következők: Matematikai ismeretek, lineáris algebra, analízis, valószínűségszámítás, statisztika, operációkutatás. Informatikai alapismeretek, elsősorban adatszerkezetekre és algoritmusokra vonatkozó, valamint programozási ismeretek valamely korszerű objektum orientált programozási nyelven, pl. C++, C#, Delphi, Java, stb. Térgeometria, számítógépi grafika, OpenGL, DirextX.

A könyv felépítése

A könyv a bevezető és az összefoglaló, jövőbetekintő fejezetek által közrefogott négy fő területből áll. Az első a robotok fogalmával, kategóriáival indít, majd a robotok intelligenciaszint szerinti osztályozása, a robotstruktúrák rövid áttekintése után a jövőt jelentő humanoid robotok szerkezetével, jellemzőivel, programozásával foglalkozik. A robotok emberszerű helyváltoztatásának programozása kapcsán kitér a részecske raj alapú optimalizálás alapjaira is. Röviden érinti a humanoid robotika jövőjét és a multiágens robotrendszerek témakörét. A fejezetet a viselkedés alapú robotika bemutatása zárja.

A második a robotok látórendszerének kérdéseibe ad rövid betekintést. Tisztázza a gépi látás fogalmát, a képfeldolgozás feladatát, alkalmazott főbb módszereit.

A harmadik a verbális robotkommunikáció témaköréből veszi a témákat és kitér a hangfeldolgozás, a természetes nyelvek feldolgozásának módszereire. A magyar nyelvre koncentrálva ismertet egy öntanuló morfológiai felbontót. A beszédértés szintaktikai, szemantikai, pragmatikus és intencionális szintjeit vázolva mintaalkalmazást mutat be a jelentés ábrázolására. Megemlíti a háttértudás fontosságát az NLP gyakorlatában, a beszélgető ágenseknél, chat robotoknál.

A negyedik nagy fejezet a tanulás fogalmát, fontosságát, módszereit mutatja be a játékágensekben. A tanulás multiágens környezetben témát egy mintaalkalmazáson keresztül ismerteti.

Javasolt alkalmazási mód

A könyv vezérfonala a humanoid robotok és a játékágensek intelligenciája, egységet képez, azonban az egyes fejezetek önállóan is olvashatók.

Az animációk használata.

A könyvet a számtalan képen túl nyolc animáció teszi érthetőbbé. Az animációk rákattintással indíthatók, filmszerűen működnek, kezelésük nem igényel kezelői ismereteket.

2. fejezet - Robotok

A robot fogalma

A robot jelentése a Carel Čapek által irodalmi magasságba emelt rabota = kemény munka szóból ered. Robot alatt önálló tevékenységre, mozgásra képes, többnyire nyílt kinematikai láncú gépet értünk, mely a környezetével interakcióban ismétlődő, az ember számára fáradságos, vagy veszélyes munkát végez. Mivel az ember helyettesítése a cél, a robotok egyre több emberi vonást mutatnak, melyek között a humanoid, emberszerű felépítés és a szándékos cselekvésre emlékeztető vonások egyaránt megjelennek. A mai robotok komplex mechatronikai-informatikai szerkezetek.

Boilerplate, a katonarobot (1903)

Robot kategóriák

Hobbi robotok

Ezek a robotok nem profitszerzési célt szolgálnak, hanem a tulajdonosuk, alkotójuk játékszenvedélyének, alkotási vágyának, kísérletező kedvének kielégülését szolgálják.

Boros Miklós miskolci egyetemista Bűvös kocka kitekerő robotja

Az öngyógyító szék, Max Dean, Raffaello D’Andrea és Matt Donovan kreációja, képes szétesni, majd összerakni magát. Lásd: http://www.youtube.com/watch?v=vlXh8RvvcuI

Öngyógyító robotszék

Ipari robotok

Az ipari robotok az iparban felmerülő, ember által nehezen, vagy gazdaságtalanul végezhető tevékenységek kiváltására szolgálnak. Jellemzőjük, hogy az automatákból, manipulátorokból fejlődtek ki az érzékelők és a programozhatóság révén megnövekedett rugalmasságukkal. Ezen képességük és intelligenciájuk napról-napra fejlődik. Jellegzetes képviselőjük a szerelő robot.

A Miskolci Egyetem Alkalmazott Informatikai tanszékén is alkalmazott Mitsubishi RV-2AJ robot FESTO bemutatókörnyezetben

Gyógyászati robotok

A gyógyászati robotok két fő alkalmazási területe a sebészet, valamint az emberi szervezet nehezen elérhető részeinek diagnosztizálása, gyógyítása miniatűr robotokkal.

Sebészeti robotok

A lehetőségek a manipulátor kiterjesztéseként felfogható távoperációs eszközöktől a teljesen embermentes automatikus eszközökig terjednek. A távoperációs eszközökre példa a da Vinci Si robot, melyet a mellette, vagy földrajzilag távol dolgozó sebész irányít. Lásd videón: http://www.viddler.com/explore/engadget/videos/378/ A ’kulcsluksebészet’ technológiájával dolgozó eszköz a kis vágásoknak köszönhetően gyorsabb felépülést eredményez.

da Vinci Si sebészeti robot

Nanorobotok

A nanorobotok sejt méretű beavatkozások elvégzésére készülnek. Feladataik között beteg sejtek és elváltozások beazonosítása, sejtek gyógyítása, gyógyszerek, jelölőanyagok bejuttatása szerepel. A meghajtó energia kapacitásokban tárolható elektromos, vagy nukleáris energia is lehet.

A jövő nanorobotja vérlemezkék között.

Katonai robotok

Ezek a robotok az ember számára elérhetetlen, vagy veszélyes helyeken végezhetnek felderítő, beavatkozó tevékenységet. Számtalan formájuk létezik. Lakott területekre, hegyekre, barlangokba szánt rovartól a repülő légyen át a teherhordó négylábúig terjednek a mesterséges katonai lények.

Intelligens rovar

Falmászó rovar

Felderítő műlégy

Felderítő műlégy

Big Dog, a négylábú robot

Fogyasztói robotok

Ezeket a sorozatgyártásban készülő robotokat a kereskedelem és a fogyasztók használják fel. Céljuk egyrészt a kereskedelem szükségleteinek, másrészt a fogyasztók igényeinek kielégítése. Tipikus példáik a bolti vevőinformáló robotok és a robotporszívók.

Reklámrobot

Porszívórobot

Humanoid robotok

A humanoid robotok emberi testre emlékeztető kialakítással és méretekkel bírnak, ennek következtében számukra az emberi környezetek és eszközök használata közvetlenül lehetséges. A humanoid robotok a jelenlegi fejlődési szintükön eltérnek abban, hogy mely emberi vonást, képességet modellezik erőteljesebben. Egyes megvalósítások a mozgásképesség hasonlóságát állítják előtérbe (egyensúlyozó, kerékpározó, futó, lépcsőjáró, táncoló, pingpongozó, focizó, stb. robotok), míg mások a kognitív képességeket helyezik előtérbe (látó, beszédértő, alakfelismerő, emlékező, tájékozódó, stb. robotok). A harmadik csoport, melynek egyedeit gyakran nevezik androidoknak is, a minél megtévesztőbb emberi kinézet és viselkedés megvalósítására törekszik. A feladat komplexitásából eredő értelemszerű specializálódás a jövőben integrálódásba fog átmenni, melyben az említett képességeket egyesítő ’műemberek’ jönnek majd létre.

A humanoid robotok témakörét a későbbiekben mélyebben részletezzük. Megjegyezzük, hogy a kutatások nem csak az embereket, hanem mindenféle, állatokat utánzó robot fejlesztését is célozzák.

Honda Asimo robotja lépcsőn jár
Perfect Woman beszélgető robot

Rövid részletet láthatunk az alábbi videón a Perfect Woman beszélgetőrobotról: video lejátszás

A robotok intelligenciaszint szerinti osztályozása

Vezérelt robotok

  • (táv)manipulátorok emberi irányítással. 

    Távolról manipulálható robotok

  • Mechanikus vezérléssel, pl. programtárcsával ellátott robotok. 

    Jacques de Vaucanson robotkacsája, 1738

  • Programvezérelt robotok.  A legáltalánosabb robotkategória, főként ipari robotok anyagmozgatásra, szerelésre, hegesztésre, stb. Ne feledjük, a jólét forrása az automatizált gyártás és szolgáltatás.

    Mitsubishi szerelőrobotok

    Autóhegesztő robotok

Szenzorokkal ellátott szabályozott robotok

Lego Mindstorms Nxt2 robot kitből épített robot

Boe-Bot Complete robot kit és a belőle épített robotjármű

Nagy Zoltán kutatómérnök Miskolci Egyetemen készült egyensúlyozó robotja

Japán egykerekű és kétkerekű kerékpározó robotok

Mesterséges intelligenciával ellátott robotok

Ezek a robotok már intelligens működésre képesek: beszélgetnek, felismerik a külvilág bizonyos aspektusait, reagálnak a külvilág változásaira, összetett, dinamikus feladatokat hajtanak végre.

Repliee Q1 valószerű megjelenésű és artikulációjú humanoid beszélgetőrobot

David Hanson és az általa készített Jules robot beszélgetés közben

Asimo, a legfejlettebb humanoid robot

Asimo képes megtanulni a látott tárgyak nevét és később felismerni azokat, sőt képes általánosítani, és korábban nem látott tárgyakat osztályozni.

Asimo megtanulja felismerni a Mini Cooper játékautót

Robotstruktúrák

Ebben a fejezetben röviden áttekintjük az ipari robotok legelterjedtebb struktúráit. A robotstruktúrák és a robotok kinematikája elsődlegesen a humanoid robotok hasonló szerkezete miatt tart érdeklődésünkre számot. A robotok, beleértve a humanoid robotokat is, nyílt kinematikai láncú mechanizmusok, ami vagy egyetlen kinematikai láncot jelent az ipari robotok többségénél, vagy egy törzsből kiinduló kinematikai láncok együttesét a humanoid robotoknál. Bár az ipari robotoknál előfordul transzlációs, azaz csúszó, haladó kényszer, tengely is, humanoid robotok kizárólag rotációs, csukló, forgó kényszerekkel működnek. A kényszereket T (transzlációs), illetve R (rotációs) rövidítésekkel jelöljük, a különféle robotstruktúrák könnyebb leírhatósága érdekében. A leggyakoribb ipari robotok TRT, RTT, RRT és RRR felépítésűek, amely ’törzs’-mozgásokat még kiegészít a megfogó több szabadságfoka. Az RRR felépítést az emberi karra emlékeztető csak forgó kényszerek miatt antropomorf robotstruktúrának is nevezik.

RRT és TRR törzsű robot

A forgó csuklók mozgatására alkalmazott hullámhajtóművek fejlődése miatt, továbbá a jobb hozzáférést eredményező ’hajlékonyságnak’ köszönhetően napjainkra az antropomorf robotok váltak uralkodóvá. Az ábra egy hat szabadságfokú antropomorf robotot mutat, mind a törzs, mind a megfogó RRR szerkezetű.

Hat szabadságfokú, RRR-RRR szerkezetű robot

A hullámhajtómű önzáró, nagy áttételt kis helyen megvalósító hajtás. A merev belsőfogazású kerék fogai közé a rugalmas ’pohár ’ peremén kiképezett külső fogazat fogait a belső forgó deformálótest (hullámgenerátor) kényszeríti bele. A nagy lassító áttétel a deformálótest és a két fogazott elem közül a nem rögzített között jelentkezik. A deformálótest egy fordulatára a forgó rész a fogszámkülönbségnek (1-2 fog) megfelelő szöggel fordul el. Lásd az animációt a forrásnál.

A hullámhajtómű működési elve és konkrét kialakítása

Rövid részletet láthatunk az alábbi videón a hullámhajtóműről (Forrás: Wikipédia): video lejátszás

Érdekes ipari robot alkalmazás a lemezlovas robot, mely a diszkózenét bakelit lemezek segítségével keveri. Az alkalmazott antropomorf KUKA robot RRRRRR struktúrájú. Lásd működés közben a YouTube forrást.

Lemezlovas KUKA robot és a köré helyezett lemezválaszték

Humanoid robotok

A humanoid robotok jellemzői:

  • Reaktív ágensek: komplex érzékelőkkel és emberre emlékeztető beavatkozó-szervekkel, a környezettel erőteljes kölcsönhatásban

  • Emberszerű felépítés, mozgás, egyensúlyozás. Az emberszerű felépítésnek köszönhetően képesek használni az emberi környezeteket, eszközöket. Képesek – lesznek - az emberek által elvégezhető feladatokban az ember helyettesítésére, kiváltására. Bár a kétlábú helyváltoztatás megoldása nem egyszerű az egyensúlyozás igénye miatt, a mai technika eredményeit felhasználva megoldható és egyre fejlettebb. Ma már léteznek futó, ugró kétlábú robotok. Ugyanakkor a kétlábú kialakítás kevesebb elvárást támaszt a környezettel szemben, a keréknél előnyösebb.

  • Autonóm működés, saját céljai érdekében alkalmazkodik a környezet változásaihoz, elvárásaihoz, tervez, kivitelez. ASIMO képes dinamikusan változó környezetben navigálni.

  • Önellátás, önkarbantartás

  • Tanulás belső vezérléssel, új ismeretek és képességek elsajátítása

  • Kommunikálás emberi nyelven, minél magasabb szintű megértéssel

  • Emberi tulajdonságok: mimika, artikuláció, érzelmek megjelenítése

  • Együtt tevékenykedés képessége emberi dolgozókkal

  • Robottörvények betartása: vigyázás a környezetre és az emberre.

A humanoidok embereknek szánt környezetekben tudnak mozogni: (Hiro Hirukawa, 2006)

  • Sima padlón, vagy durva terepen való közlekedés. A Mitsubishi robotja változatos terepen jár, HRP-2 egyenetlen terepen közlekedik.

  • Lépcsőkön és létrákon való fel- és lemenés. NAO robot lépcsőn. HRP-2 lépcsőn megy fel korlátba kapaszkodva.

  • Lefekvés, mászás, felállás

  • Biztonságos földreesés és felállás. HRP-2 bemutatja:

  • Ajtók nyitása, csukása.

Humanoid robotok szerkezeti kialakítása

A mozgások megvalósításának összetevői

  • Mechanizmus

  • Szenzorok

  • Mozgás tervezés

  • Vezérlés

A mechanizmus

Humanoid robot szerkezet irányzatok:

  • hagyományos ipari robotoknál alkalmazott mechanikus szerkezetek finomított változatai

  • biomechanikai építőelemek, pl. modellezett csontváz, mesterséges izom alkalmazása.

    Mesterséges izom

    Elektroaktív polimer: elektromos töltés hatására összeugrik

 

A mesterséges izmok egy másik típusánál az üzemanyag kémiai energiája hővé alakul egy, a levegővel bekövetezett katalitikus reakció hatására. A kapott hőmérsékletnövekedés hatására az úgynevezett "lerövidített üzemanyag cella izomzatnál" alkalmazott alakemlékező fém izomdrótok összerándulnak. A működési ciklust az ezt követő hűtés teszi teljessé az izom elernyesztésével.

Alakemlékező fémmel működő műizom

FESTO gyártmányú pneumatikus műizom

 
 --Szuperizmokat kaphatnak a robotok

További műizom-kutatások eredményeiről lásd: [bib.zrinyi]

A humanoid robotok bonyolult, összetett szerkezetek:

Humanoid robot és összetett szerkezete

Egy 7 szabadságfokú láb szerkezete, a meghajtómotorok által leadott teljesítményekkel és a hullámhajtóművekkel látható az alábbi ábrán. A szervomotorok, melyek egybe vannak építve a szöghelyzetmérő jeladóval (encoder), bordázott ékszíjjal adják át a hajtást a hullámhajtóművek hullámgenerátorának. Az önzáró hullámhajtóművek a szervomotor 6000-10000 fordulat/perc fordulatszámát csökkentik le 20-100 fordulat/perc közötti értékre. A nyomatékot 100-300 szorosára növeli. A hullámhajtóművek áttétele 1:160, kivéve a csípő hajlítást, ahol 1:120. Ehhez jön még a szíjáttétel közel 1:2 lassító hatása. A hullámhajtóművek ideálisak a feladat ellátására, hagyományos hajtóművek alkalmatlanok a nagy súlyuk és a holtjáték miatt. A hullámgenerátor csapágya igazodik a hullámgenerátorhoz belső gyűrűjének ovális alakjával és rugalmas külső gyűrűjével.

A láb felépítése

A combcsukló 3 szabadságfoka közül kettő:

A combcsukló mechanikája

Ovális hullámgenerátor a rugalmas külsőgyűrűjű golyóscsapággyal, a rugalmas pohár-fogaskerékkel és a belsőfogazású gyűrűkerék

A szervohajtás modul feladata a hullámhajtóműveket meghajtó szervomotorok elektromos jelének előállítása. Elvárás a kicsi, kompakt méret, kiszögellésekkel együtt H = 15mm-nél nem nagyobb vastagság, a nagyon nagy csúcsáramok – közel 20 Amper! – leadása, és két tengely egyidejű szabályozása.

Szervohajtás modul

Szenzorok

A szenzorok feladata a testhelyzet geometriai jellemzőinek, a gyorsulásoknak és a robot és a környezet közötti kapcsolatnak, érintkezésnek a mérése, észlelése, ezek alapján jelek generálása a szabályzó áramköröknek. A testhelyzet szenzorok között szervomotor jeladókat (encoderek), gyorsulásmérőket és giroszkópot találunk. A szervomotor jeladók szolgáltatják a csuklók szögértékére vonatkozó információt, a gyorsulásmérők a testrészek lineáris gyorsulását mérik. Ügyelni kell a hőmérsékletváltozás miatti elmászások figyelembevételére is. A giroszkópok, pörgettyűk felelősek a globális környezeti irányok megadására, amihez képest tudja viszonyítani helyzetét a robot, a szögsebességek mérésével. A giroszkópok elmászás miatti felhalmozódó hibája külön figyelmet igényel.

Honeywell gyártmányú gyorsulásmérő (B. Favre-Bulle, 2005) és LISY300AL típusú giroszkóp

A robot a környezettel legtöbbet a talpával érintkezik. A talpon fellépő erők ismerete elengedhetetlen a dinamikus testmozgások – járás, futás, stb. – közbeni egyensúlyozás kivitelezésére. A robotok durva talajfogásakor fellépő erős igényevételeket a bokában alkalmazott rugalmas tagok, gumibélések tompítják.

Erőszenzor és beépítése a bokába

Sztereo kamerák szolgáltatják a környezet látványát a felismeréshez, tájékozódáshoz.

A robot látórendszere

A robot hallását a fejbe szerelt mikrofonok biztosítják.

Mozgás tervezés

Lábak tervezése

A lábak és a felsőtest tervezése és kísérletei egymástól elkülönülve, párhuzamosan végezhetők.

A csuklók mozgástartományának megtervezése

A csuklók mozgástartományát pálcikaemberrel végzett grafikus szimulációk alapján határozták meg. A következő mozgásokat modellezték: Leülés a földre, leülés egy székre, statikus egyensúlyú járás, lépcsőjárás fel- és le irányban. Példát az alábbi ábra mutat.

Lépcsőjárás modellezése

A különféle mozgások elemzésével kialakultak az egyes csuklók szélső értékei. Pl. a csípő hajlító izületre -135 foktól +42 fokig terjedő szögtartomány adódott, az alábbi ábrán adott mozgások figyelembevételével.

A csuklók mozgástartományának behatárolása

A terpesztő tengelyek és a csavaró tengely esetére az oldalra lépő mozgások elemzéséből adódott értékek a következők:

A pálcikaember modell a láb csuklóival

A járás dinamikus szimulációját a test tömegközéppontját és tömegértékét pontosan visszaadó egyszerű törzset tartalmazó kétláb-mechanizmussal végezték, először cask számítógépen modellezve a mozgást.

Dinamikus járásszimuláció

A lábkonstrukció a HRP-2L humanoid robotnál a következő, valódi emberhez közelálló méretekkel bír (ez a konstrukció nem modellezte a lábfej hajlítást):

A láb méretei

A kísérleti lábakkal a próbasétálásokat egy görgőkön a robotot kísérő felfüggesztőkeret védelmében végzik, hogy elkerüljék a gyakori elesésből eredő károsodásokat.

A láb és a guruló felfüggesztőkeret

A felsőtest megtervezése

A felsőtest megtervezésének lépései hasonlóak a lábak megtervezéséhez. Az állványra szerelt felsőtesttel végzett kísérlet látható az ábrán.

A kezek tesztelése

Az elkészült HRP2-2P mechanikus szerkezet látható az ábrán.

A robot fő jellemzői

Vezérlés

A humanoid robot egy vezérelt, pontosabban szabályozott berendezés. Olyan többvégtagos szerkezet, amely nincs a környezethez rögzítve, mozog a környezetében, ill. mozgatja a környezet tárgyait a gravitációs mezőben a közte és a környezet között fellépő érintkezési erők által. A humanoid robotok vezérlési problémája a következő: adott a mozgás kezdeti és végállapota és ehhez keressük azt a mozgássort, amely az érintkezési állapotok sorozatával át tudja vinni a robotot a kiindulási helyzetből a célhelyzetbe.

A robot járásának megtervezése

A két alapvető vezérlő algoritmus a következő:

Inverz inga séma

  1. A robot mozgásainak megtervezése

  2. Változtassuk a következő lábnyom pozícióját úgy, hogy megtartsuk a robot tervezett konfigurációját!

ZMP (Zero Moment Point) alapú séma

  1. Tervezzük meg a robot lábnyomainak sorozatát.

  2. Változtassuk a robot konfigurációját, hogy megtartsuk a lábnyomok tervezett szerkezetét.

Mozgások szemben az érintkezési erővel

A robot dinamikus egyensúlyának feltétele, hogy a tömeg gyorsulását okozó erők tartsanak egyensúlyt az érintkezési erőkkel, ugyanakkor a tömeg gyorsulását okozó erőkből származó nyomatékkal tartson egyensúlyt a forgási tehetetlenségből eredő nyomaték plusz az érintkezési nyomaték.

A dinamikus egyensúly feltételei

A fordított inga séma

Ebben az esetben nem lényeges, hogy a dülöngélő robot hova lép, csak ne essen el, azaz tartsa meg az egyensúlyát. A módszer első alkalmazói Gubina, Hemami és McGee, 1974-ben. Dinamikusan egyensúlyozó, nagy talpak nélküli robot látható az alábbi ábrán.

Lépegető robot

A probléma ezzel a módszerrel az, hogy gyakran nem léphet a robot bárhová, a lábnyomok helye előre adott lehet.

A ZMP módszer

Ezt a problémát küszöböli ki a nulla nyomatékú pontot alkalmazó módszer, a ZMP (Zero Moment Point). A módszer első alkalmazói Vukobratovic és Stepanenko voltak a hetvenes évek elején. Az elvet számtalan robot alkalmazza. Jellemzőjük a jelentős méretű talp. Néhányukra az ábra hoz példát.

ZMP módszert alkalmazó robotok

A ZMP a robot talajjal érintkező talpán, illetve talpain ható erők eredőjének helye a talajon az úgynevezett támasztási sokszögön belül. A támasztási sokszög a talajjal érintkező talpat, vagy talpakat befoglaló legszűkebb sokszög, zárt görbe. A ZMP módszernek megfelelő helyváltoztató mozgást végez az ember, amikor egy teli tál levest tesz át a tűzhelyről a néhány lépésnyire lévő asztalra. A testsúlyát egyik lábára helyezve óvatosan keres a másik lábának biztos helyet, majd a súlypontját lassan áthelyezi arra a lábára. A rövid idejű két lábon állásos szakaszokat hosszabb, egy lábon állásos szakaszok váltják. Általában a kiindulás és a befejezés kétlábas alátámasztású.

A ZMP a támasztási sokszögön belül van

A ZMP soha nem hagyja el az aktuális támasztó poligont. Nagy előnye ennek a statikus egyensúlyi helyzeteket alkalmazó helyváltoztatási módszernek, hogy a ZMP helyét a talp erőszenzoraival meghatározhatjuk. Amikor a ZMP a támasztási sokszögön belül van, a robot statikus egyensúlyban van, mint egy szobor, és a talp és a talaj érintkezése megtartott. Ebből eredően a robot nem akar eldőlni, testtartása megtartható. Természetesen a robot nem a szobormerevségű testtartásra törekszik, hanem arra, hogy miközben testhelyzetét változtatja, az egyensúlyát megőrizze, azaz a ZMP ne kerüljön ki a támasztási sokszögből. Felfoghatjuk úgy is, hogy a tömegközéppontjának talajra eső vetülete a ZMP, de ez csak statikus egyensúlyra igaz, a ZMP módszer akkor is jó, ha a robot részei gyorsuló mozgást végeznek és a robotra nem csak a gravitáció hat, hanem tehetetlenségi erők és nyomatékok is. Ez a megközelítés figyelembe veszi azt, hogy a talaj és a láb között elegendő súrlódásnak kell ébrednie, hogy megakadályozza a csúszást. Mindenesetre, a tiszta ZMP módszerrel csak gyalogolni lehet, futni nem, hiszen futásnál van olyan fázis, amikor mindkét láb a levegőben van.

A helyváltoztató mozgás tervezése

A járás a kötött lépéshelyek miatt a ZMP görbe felvételével indul, melynek állandóan a szakaszosan változó alakú és helyű támasztó poligon által hagyott sávon belül kell haladnia. Mivel a ZMP helyére kihatással bír a robotra ható gravitációs erőkön túl a tehetetlenségi erők és nyomatékok fellépése is, a törzsből eredő különösen nagy tehetetlenségi hatások kezelésére kis törzsmozgásokat alkalmaznak, vagy az újabb módszerekben a törzs ellen-csavaró mozgását is alkalmazzák. Ha a tervezést jól végzik a robot mozgása simább, természetesebb lesz, ami a szervomotorok és a hajtóművek kisebb igénybevételét eredményezi. Az alábbi ábrán a kiinduló ZMP függvény és az ahhoz képest jelentősen simább tömegközéppont mozgásfüggvény látható (CoM = Center of Mass, tömegközéppont).

Felülnézeti ábrák a robot járásáról

A viszonylag nagy tömegű csukló szegmensek – comb, lábszár, és különösen a törzs – jelentős nagyságú tehetetlenségi nyomatékot generálnak, melyet a talajnál ébredő tartóerőknek és súrlódási erőknek kell a gravitáció hatásközéppontja körül keltett nyomatékkal kompenzálniuk.

A nyomatékok egyensúlya is fontos

Az előre mozgó robot tömegközéppontjának gyorsítása ellenében ható erők jótékony nyomatékot gyakorolnak a robotra, melynek következtében a támasztó poligonon kívülre kerülő tömegközéppont-vetület ellenére a ZMP a támasztási poligonon belül marad, amint mutatják ezt a következő ábrák. A képeken a lépéskor megfigyelhető jelenséget a kis alátámasztási felülettel bíró asztalon guruló kiskocsival modellezik. Az ábra a billenés határhelyzetét mutatja.

Kiskocsi-modell

A felbillenés elkerülhető, ha a törzs nagyobb gyorsulással mozdul előre, amint az alábbi ábrán látható.

A ZMP helyének számítása

Minél magasabban van a súlypont és minél dinamikusabb az előremozdulás, annál kisebb az x0 távolság és annál kevésbé billenhet fel a robot. Ily módon a tömegközéppont megfelelő mozgatásával (x) biztosíthatjuk a ZMP függvény megfelelő alakját (x0).

Járásminta generálás

A kívánt ZMP függvényt a szervo szabályozás feladata követni. A zárt visszacsatolt szabályozókör bemenő jele a ZMP biztosítandó pillanatnyi x0 referenciaértéke, melytől való eltérés a mért kimenő x0 visszacsatolásával adódik és vezérli a Controllert, melynek u kimenőjele működteti a szervomotort.

Szabályozókör

A visszacsatolás miatt a szabályozás csak kis hibával képes a kívánt referenciaértéket követni. Sheridan, Tomizuka és Rosenthal az Előretekintő vezérlés koncepciójának kitalálói és alkalmazói. Az ötlet lényege, hogy használjuk fel a rendelkezésre álló információt a jövőbeni elérendő x0 értékre vonatkozóan és a szabályozásba vonjuk be a pár lépéssel később következő elérendő x0 értékeket is.

A jó járásjel előretekintéssel adódik

A módszer analógiája a kanyargós úton való vezetés, ahol előre tudjuk, mennyire kell majd elfordítani a kormányt, hogy az úton maradhassunk. A szabályozási törvény az fi nyereségszorzókkal figyelembe veszi az N lépésnyire előre elérendő x0 referenciajeleket is.

Előretekintő szabályozás

A következőkben a humanoid robotok helyváltoztatásának modellezésére részecske-raj alapú optimálást alkalmazó tanulmányt mutatunk be, ami előtt tekintsük át a módszer működését!

Részecske-raj alapú optimálás (Particle swarm optimization, PSO)

Forrás: Particle swarm optimization - Wikipedia

A számítástudományban a részecske-raj alapú optimálás egy számítási módszer, mely iteratív módon optimalizál, megpróbálva egy megoldásjelölt minőségét fejleszteni, javítani. Ezek a technikák általánosságban metaheurisztikaként ismertek, mivel kevés, vagy semmi követelményt nem támasztanak az optimálandó feladattal szemben és a megoldásjelöltek hatalmas terében képesek keresni. Azonban, a metaheurisztikák, mint a részecske-raj alapú optimálás is, nem garantálják, hogy valaha is megtalálják az optimális megoldást.

Még konkrétabban, a részecske-raj optimálás nem használ gradienst az optimálandó problémában, ami egyúttal azt is jelenti, hogy nem igényli, hogy az optimálandó jellemző az állapottéren differenciálható legyen, mint ahogy az elvárás a gradiens módszer, vagy a kvázi-Newton módszerek esetében. A részecske-raj alapú optimálás emiatt olyan problémák esetén is alkalmazható, melyek részben szabálytalanok, hibákkal terheltek – zajosak –, időben változnak, stb. (Ebben hasonlítanak a Tabu keresésre, vagy a genetikus algoritmusra.)

A részecske-raj alapú optimálás a problémát a megoldásjelöltek, azaz részecskék populációján keresztül optimálja (v.ö. evolúciós algoritmusok), egyszerű matematikai formulák segítségével mozgatva ezeket a részecskéket a keresési térben. A részecskék mozgását a legjobb megtalált keresési tér pozíciók vezetik, amelyek frissítődnek, amint jobb pontokat találnak a részecskék.

A részecske-raj alapú optimálást eredetileg Kennedynek, Eberhartnak és Shinek tulajdonítják, és legelőször szociális viselkedés szimulálására szánták (Kennedy, J.; Eberhart, R. , 1995; Shi, Y.; Eberhart, R.C. , 1998). Az algoritmust egyszerűsítették és optimálásra alkalmasnak találták. Kennedy és Eberhart könyve (Kennedy, J.; Eberhart, R.C. , 2001) számtalan filozófiai aspektusát leírja a részecske-raj alapú optimálásnak és a raj-intelligenciának. A részecske-rajon alapuló optimálást használó alkalmazások kiterjedt áttekintését találjuk Poli műveiben (Poli 2007, 2008).

A részecske-raj alapú optimálás algoritmusa

Az algoritmus alapvariációja a megoldásjelöltek (részecskék) egy populációjával (nevezzük rajnak) dolgozik. Ezek a részecskék a keresési térben néhány egyszerű matematikai formulának megfelelően mozognak. A részecskék mozgását a keresési térben a saját ismert legjobb pozíciójuk, valamint a teljes raj ismert legjobb pozíciója határozza meg. Amikor jobb pontokat találnak ezek veszik át a raj vezérlő szerepét.

Formálisan, legyen f(p) a tér p pontjához tartozó, n dimenzióról 1 dimenzióra leképező fitness, vagy költségfüggvény, melyet minimalizálni kell. A függvény az n dimenziós, valós elemekből álló p argumentum alapján egyetlen valós függvényértéket ad, mely jelzi a p megoldásjelölt jóságát. Az f() függvény gradiense nem ismert. A cél egy a pont megtalálása a keresési térben, melyre f(a) ≤ f(b), ahol b a keresési tér bármely pontja lehet, magyarul az a pont globális minimumhely. Maximálás hasonlóan végezhető, ha f() ellentettjével dolgozunk.

Legyen N a részecskék száma a rajban. Minden i. részecskét (i = 1,…,N) jellemez az xi helye és a vi sebessége. Legyen továbbá pi az i. részecske (particle) eddigi legjobb értéket adó pozíciója a keresési térben, g pedig a raj (group, global) eddigi legjobb pozíciója. Ezekkel az alapalgoritmus:

  • Inicializálás minden egyes i = 1,…,N részecskére:

    • Inicializáld a részecske pozícióját a keresési téren egyenletes eloszlású véletlen vektorral: xi ← RandomPozició();

    • Inicializáld a részecskék eddigi legjobb pozícióját a kezdő pozíciójukkal: pixi

    • Ha i = 1, gp1, egyébként ha f(pi) < f(g), akkor frissítsd a raj legjobb pozícióját: gpi

    • Inicializáld a részecskék sebességvektorát (elmozdulásvektorát) a keresési térben elférő nagyságú, de ezen belül tetszőleges, egyenletes eloszlású véletlen értékű és véletlen előjelű komponensekből álló elmozdulásvektorokkal: vi ← RandomElmozdulásvektor();

  • Ismételd, amíg a leállási kritérium nem teljesül:

    • Minden egyes i = 1,…,N részecskére:

      • Végy a 0,…,1 valós tartományból két egyenletes eloszlású valós véletlenszámot: rp, rg

      • Frissítsd a részecskék sebességét (elmozdulásvektorát): vi ← ωvi + φprp(pi - xi) + φgrg(g - xi)

      • Frissítsd a részecskék pozícióját: xixi + vi

      • Ha a részecske jobb pontba került, azaz f(xi) < f(pi), jegyezd meg:

        • A részecske talált új jobb pozícióját: pixi

        • Ha ez jobb, mint a raj eddigi legjobbja (f(pi) < f(g)), akkor a raj legjobbját is: gpi

  • Ha a leállás bekövetkezett, g megadja a megtalált addigi legjobb, szerencsés esetben kvázioptimális minimumpontot.

Leállási kritérium lehet az iterációk számára megadott korlát teljesülése, vagy megfelelő fitnessérték elérése. Az ω, φp és φg paramétereket gyakorlati tapasztalatok alapján választjuk, ezekkel lehet kontrollálni az algoritmus viselkedését és változtatni a hatékonyságát.

Paraméterválasztás

Az ω, φp és φg paraméterek helyes megválasztása erőteljes kihatással bír a részecske-raj alapú optimálás hatékonyságára. (Egy másodlagos belső optimálási feladat…) A megfelelő paraméterértékek megválasztásával ezért sok kutatás foglalkozott, lásd pl. (Shi és Eberhart , 1998b), (Eberhart és Shi, 2000). A paramétereket egy másodlagos optimálóval is hangolhatjuk, ezt az elvet meta-optimálásként ismerik (Meissner és társai, 2006).

Belső működés

Többféle iskola létezik aszerint, hogy vajon milyen módon hajtja végre az optimálást a részecske-raj alapú módszer?

Minden kutató egyetért abban, hogy a raj viselkedése felfedező és hasznosító szakaszokra bomlik. Míg az első a keresési tartomány minél szélesebb tartományának feltárását jelenti, a másodikban egy lokális jellegű folyamatban határolja be pontosabban a (feltehetően lokális) optimumhelyet. Ezt az iskolát képviselik a módszer felfedezői is. Véleményük szerint az algoritmus paramétereinek megfelelő megválasztásával a keresés ezen két szakasza között egyensúlyozhatunk, megakadályozva a korai lokális optimumba ragadást. A paraméterek megválasztásából többféle algoritmus-variáció ered.

A másik iskola úgy képzeli, hogy az algoritmus viselkedését nem értjük olyan jól abban az értelemben, hogy a paraméterek megválasztása hogyan hat az aktuális eredményességére, különösen nem magasabb dimenziójú állapotterek és nemfolytonos, zajos és időben változó optimálási problémák esetén. Ez az iskola egyszerűen megpróbál olyan algoritmusokat és paramétereket találni, amely jó hatékonyságot eredményez függetlenül attól, hogy a raj viselkedése felfedezőnek, vagy hasznosítónak minősíthető-e. Ezek a tanulmányok vezettek az algoritmus egyszerűsítéséhez.

Konvergencia

Az algoritmus esetében a konvergencia kétféle dolgot is jelenthet, bár gyakran nem tisztázott, hogy melyiket értik és hibásan gondolják azonosaknak.

  • A konvergencia vonatkozhat a raj g legjobb ismert pozíciójának a probléma optimumához való tartására, a raj viselkedésétől függően.

  • A konvergencia vonatkozhat a raj összehúzódására, amelyben az összes részecske tart a keresési tér egy pontja felé, mely egyaránt lehet az optimum, vagy más pont.

Bár történtek próbálkozások a konvergencia egzakt matematikai leírására, lásd a Forrást, az eredmények nem egyértelműek és az algoritmus sokszínűsége miatt változatosak. Mindenesetre, a paraméterek okozhatnak konvergenciát, divergenciát és oszcillálást is a raj részecskéinél.

Variánsok

Még az alap algoritmusnak is számtalan variációja lehetséges, pl. az inicializálás variálásával. Új és finomított variációk folyamatosan jelennek meg a hatékonyság növelésének célzatával. Jelen van a hibrid optimálás irányába ható irányzat is. Több módszer, mint pl. a paraméterek keresés közbeni dinamikus változtatása jól ismertek pl. a szimulált lehűtés, vagy a mesterséges neurális hálók tanulási algoritmusaiból. Valószínűleg az algoritmus alkalmazása inkább problémaspecifikus, és a tapasztalat a próbák fontosságát emeli ki.

Egyszerűsítések

Egy másik irányzat a sokszínűség helyett az algoritmus anélküli egyszerűsítését célozza, hogy a hatékonysága jelentősen csökkenne, ehhez gyakran Occam borotvája elvét hivatkozva.

Kapcsolódó témakörök

A részecske-raj alapú optimálás alkalmazása előtt célszerű tanulmányozni a

  • Raj intelligencia és a

  • Méhecske/ Mesterséges méhecske kolóniák, hangyakolóniák

algoritmusait.

A következőkben a részecske-raj alapú optimálást humanoid robotok helyváltoztatásának modellezésében hasznosító tanulmányt mutatunk be (Rokbani és társai, 2009) műve alapján.

Emberszerű helyváltoztatás robotikája

Forrás: Nizar ROKBANI et.al

Humanoid és kétlábú robotok evolúciója

Egy humanoid robotot általában kétlábú robotként képzelünk el, csak néhány kerekes robotot publikáltak a kutatók (Berns és társai, 1999). A humanoid robotika magába foglalja az emberszerű gépek összes aspektusát, mint a járást, megfogást, érzelmeket vagy megismerést, stb. A humanoid helyváltoztató robotika a testtartás generálás, stabilitás szabályozás, járási energia optimálás eseteivel foglalkozik. A humanoid robotika iránt napjainkban megnyilvánuló növekvő érdeklődés segít kifejleszteni további humanoidokat: kisméretű robotokat ajánlanak szórakozásra, néhány modell alacsony költségű kutatási kísérleti platformként szerepel. A legkorábbi projektek egyike a Waseda Egyetemé, Japánból, ahol Kato és a csoportja 1966 óta építi WL1 típusjelű sétáló robotját. 1984-re egy dinamikus sétáló humanoid robotot, WL10 RD-t mutatták be, ez egy 12 szabadságfokú sétáló robot prototípus. Wabian egy igazi humanoid robot 52 szabadságfokkal, beleértve a karokat és a fejet, amely 0,21 méter/s járási sebességre képes. Másfelől kifejlesztettek néhány kifinomult robotot a japán iparvállalatok is, mint a SONY a QRIO humanoidot és a HONDA a jól ismert ASIMO robotját. A legfejlettebb humanoid projektek egyike minden bizonnyal a HRP2 japán projekt, ez a robot összemérhető ASIMO-val, azonban HRP2 egy embermagasságú és alakú robot, kis energiafogyasztással, hátizsák nélkül, szemben ASIMO akkumulátor tartójával. Lényeges, hogy különbséget tegyünk a teljes nagyságú és a kisebb méretű robotok között. A teljes méretű humanoidok, mint HRP2, vagy ASIMO, az emberekével összemérhető méretekkel bírnak. Az olyan robotok, mint Nimbro (Behnke és társai, 2007), vagy QRIO, egy métert meg nem haladó magasságúak. Nemrég egy csodálatos francia humanoid robotot, Naot mutatták be, amely fejlesztés alatt áll még. A Nao robot volt a hivatalos platform az IEEE Humanoid konferenciáján és a Robocup bajnokságban. Demót lásd itt.

Humanoid robotok: HRP2 (a) és ASIMO (b) emberléptékűek, Nimbro focizó robot (c) és NAO robot (d) közepes méretűek.

Európában Franciaországban, Belgiumban, Németországban és Olaszországban folytak projektek. A francia projektek a helyváltoztató rendszerre fókuszáltak. Bip és Rabbit a leghíresebb projektek, Bip egy autonóm sétáló, aki cipeli a vezérlőegységét, míg a Rabbit robot egy a dinamikus járás elemzésére és kísérleteire szolgáló platform volt (Azevedo és társai, 2004; Chemori, 2005). A belga Lucy robot szintén egy sétáló robot, melynek a specialitása a pneumatikus izmok és mozgatók. Johnnie egy német humanoid, a Müncheni Műszaki Egyetem megvalósításában. Jelenleg új javaslatok vannak az asztalon a ZMP megoldás általánosítására, új intuitív módszerek, mint pl. az (RTC) (Goobon, 2008), lehetővé téve a kétlábú robot stabilitásának ellenőrzését szabálytalan talajon, vagy a sétálás közben adódott akadály átugrása közben (Sabourin és társai, 2008).

Az IZIMAN Projekt

IZIMAN egy kutatási projekt, mely alternatív intelligens megoldások felvetését célozza a humanoid robotok számára. Az IZIMAN architektúra egy olyan sémát javasol, mely segíti a gépi intelligencia spontán kialakulását, szemben azzal, amikor egy intelligens gépet közvetlenül emberi mintára hoznának létre. A javasolt architektúra egy multi ágens szerkezet, vezérlő és döntéshozó központokból kialakítva melyeknek együtt kell működniük, hogy biztosítsák a humanoid robot emberszerű működését. Különleges figyelmet fordítanak a tanulási folyamatokra, a tanulásban evolúciós, fuzzy vagy neuro-fuzzy algoritmusokat alkalmaznak. Az ember utánzása szintén szóba kerül, mint a tanulási keretek forrása. Az ember utánzásán alapuló tanulás hatékony ember-észlelést és gesztikuláció követést igényel.

Feltéve, hogy a javasolt vezérlő rendszer hibrid és különböző típusú kontrollereket integrál, szükség van egy együttműködési séma definiálására, hogy elkerülhessük az ellentmondó parancsjelek párhuzamosan jelentkező kockázatát. Az együttműködési sémák hierarchiát alkalmaznak a kontrollerek között és megoldják a többszörös parancsok problémáját (Rokbani és tsai, 2007).

A járásmód generálásra a kétlábú helyváltoztató rendszerek számára egy raj-technikát választottak, mindegyik rajegyed egy csuklót vezérel. Ezt az architektúrát a későbbiekben fogjuk részletezni.

Az emberi járás elemzése

Az emberi járás egy összetett működés, mely egy 29 szabadságfokú helyváltoztató rendszert használ, ami különféle neurális központokhoz kapcsolódik, beleértve az agyat és a gerincvelői reflex-központokat. Több mint 48 izom koordinálja a lábak mozgását és szinkronizálja azokat a felsőtest kényszereivel. Minden egyes láb csuklói elemi mozgásokat hajtanak végre, hajlítást és nyújtást, melyek kiterjednek a csípőre, a térdre és a bokára. A járás ezen egyszerű mozgások koordinálásának eredménye. Fontos megjegyezni, hogy a törzs a medencén keresztül kapcsolódik a helyváltoztató rendszerhez, mi több, a törzs tartalmazza a fontos tömegközéppontot (COM, center of mass) is, és kulcsszerepet játszik az egyensúlyozásban, stabilitásban és a járás dinamikájában.

Az emberi helyváltoztató rendszer leírása

Anatómiai szempontból, a törzs alsó része az embernél a medencecsontból áll, mely a két lábhoz kapcsolódik. A láb két függőleges szakaszból áll: a combcsontból és a sípcsontból. A combcsont a combnyaki ízülettel kapcsolódik a medencecsonthoz míg a sípcsont a térdcsuklóhoz. (Wagner és Carlier, 2002). Az emberi alsórész biomechanikai elemzése azt mutatja, hogy a boka két tengely körüli forgást végez, a térd egyet és a combnyaki csukló három körülit. A legtöbb kétlábú konstrukció az emberi rendszerhez képest csökkentett szabadságfokú kialakítást használ. Egy ilyen korlátozás csökkenti a járás dinamikáját, de megkönnyíti a stabilitás kontrollját. Az emberi mozgások a hajlító és nyújtó izmokból erednek. Elfogadva az izmok hatékonyságát, pneumatikus izmokat javasoltak a kétlábú robotokhoz, mint pl. a Lucy kétlábúhoz. Az emberi helyváltoztató rendszerben a hajlító és a nyújtó izmok a csuklók forgását eredményezik. Egy humanoid helyváltoztató rendszerben ezek a forgások függenek a váz szerkezetétől és a használt aktuátoroktól, de akármilyen a vázszerkezet és az aktuátorok, a legtöbb kétlábú teljesen betartja az emberi csuklók szögtartomány korlátait.

A járó testtartás leírása

Az emberi test testrészekkel és ízületekkel jellemezhető, ez az egyszerűsítés általánosan használatos a biomechanikában. Egy láb vázlata hét anatómiai markerrel adható meg a három csuklónál (Winter, 1990), egy szegmenst megkaphatunk két egymást követő markert összekötve. Figyelembe véve az emberi járás összetettségét, általános az, hogy korlátozott számú állapotot használnak a járási ciklus jellemzésére. Csak a kulcs lépéseket részletezik és felteszik, hogy ezek reprezentálják a teljes ciklust. Wagner 16 állapotot használ (Wagner és Carlier, 2002), míg Winter 13-at (Winter, 1990). A robotikában a használatos fázisszám csökkentett a biomechanikai leíráshoz viszonyítva. (Azevedo és Heliot, 2005). Ez a reprezentáció egyszerűsíti a csuklók szöghatárainak a számítását, egy testtartás-elemzésből lehetővé válik ezen korlátok megbecslése.

Az emberi testhelyzetek feltérképezésére klasszikus jelölő módszer alkalmazható, ahol a résztvevők 20-24 év közötti fiatalok. A színpad 8 méter hosszú, 2 méter széles és 4 méter magas. A hátteret fekete színnel burkolják a jelölések, markerek könnyebb felismerhetősége érdekében. A kísérleteket biomechanikai járásspecialisták felügyelete alatt végzik. Hat résztvevőnek normál járással kellett végigmennie a start ponttól a színpad végéig, közbenső lassítás, vagy gyorsítás nélkül. Két kamera rögzítette a járást, egy oldalról, egy szemből. A csípő, a térd, a boka és a lábfej 3cm átmérőjű fehér markerekkel volt megjelölve.

A láb mozgásának filmrevétele

A járás ciklusokat két digitális kamerával rögzítik, 5,4m-re oldalt, és 8,25m-nyire szembe elhelyezve. A kép egy oldalsó nézetet mutat.

Hibrid megközelítés emberszerű testhelyzet generálásra

A sétáló inicializálása

Mivel ember inspirálta helyváltoztató rendszerről van szó, a humanoid test szegmensméreteinek közelítésére a humán antropometria került alkalmazásra. Az emberi antropometriában ezek a méretek a nem, a testfelépítés, a faji eredet, stb. függvényei. Az ismertetett munkában egy átlagos hosszt használtak, mely a (Winter, 1990)-ben található és a következő formulákkal részletezhető:

Ahol fl, fb a lábfej hossza és szélessége, tl a térd és a bokacsukló közötti szegmens hossza, a leg_l jelölés a lábszár hosszát reprezentálja, és Int_h a csípőcsuklók távolsága.

A sétáló vázának inicializálása után a klasszikus kinematikai modellezés helyett most egy pontraj, pontsokaság alapú keresési eljárásmódot mutatunk be a testhelyzetek generálására. A részecskék raját a sétáló csuklóin helyezzük el, a rajnak egy megfelelő új pozíciót kell találnia a csuklók számára, biztosítva a robot előrelépését elesés nélkül.

A részecske-raj alapú optimálásban, amint ezt Kennedy és Eberhart megadta (Kennedy és Eberhart, 1995), a raj részecskék egy halmazából áll össze. Minden egyes részecske saját pozícióval és sebességgel rendelkezik, továbbá egy fitness függvénnyel. Kezdetben a részecskék véletlenül inicializáltak egy-egy csukló pozíció körül, majd egy keresési teret határozunk meg a raj számára. A részecskéknek a keresési téren belül új pozíciót kell megtalálniuk, a raj összes részecskéje figyeli a saját legjobb pozícióját és a legjobb részecske pozícióját. A fitness függvényt használjuk minden egyes részecske jóságának a kiértékelésére, és a legjobb kiválasztására. A részecske-raj alapú optimálás kifejezése a következő formulával adott:

Ahol xi(t) az i. részecske pillanatnyi pozíciója, vi(t) pedig a sebessége. c1 módosítja a részecske személyes közreműködését, c2 pedig a szociális, azaz a raj közössége érdekében mutatott közreműködését. Az r1 és r2 0 és 1 közötti valós véletlenszámok. plbest reprezentálja a legjobb részecskét az i. részecske szomszédai között, pgbest a raj legjobb fitness értékével rendelkező részecskéje. A t jelöli az aktuális időpillanatot, t-1 pedig a megelőzőt.

A rajok jobbláb és balláb szerinti al-rajokba vannak csoportosítva. Mivel a járási ciklusban mindig van egy támasztóláb és egy felemelt láb, a láb al-rajok felváltva fognak mozogni. Amikor a láb támasztó, az összes részecskéje kereső módban van. Az együttműködés szintén nagyon fontos, egy érvényes előrelépés a teljes csontváz csuklóinak pozíciójától függ. A korlátok kielégítésére néhány együttműködési kapcsolatot állítunk fel a csukló rajok között, ezek a kapcsolatok a (b) ábrarészen jelennek meg. Valójában egy kapcsolat azt jelenti hogy a csukló legjobb pozíciója kapcsolatban van a felső csuklóval és a virtuális tömegközépponttal, abból a célból, hogy ellenőrizze és érvényesítse a stabilitását a soronkövetkező csukló elmozdulásoknak.

A rajfeldolgozás részletei

A javasolt architektúra két al-rajból áll össze; a (0) jelű al-raj a lábat reprezentálja, lásd az ábrát, és három fő részecskéből tevődik össze: p0.1, p0.2 és p0.3, a csípő, a térd és a boka. Hasonló szerkezet használatos a jobb láb esetén, mely az (1) jelű al-raj által adott. Ezek a részecskék valódi csontváz pozíciókat reprezentálnak és feltételezés szerint ritkán mozdulnak, ezek memória részecskék. Mindegyikük körül van egy korlátozott részecske halmaz mely a keresési tér felkutatásában működik közre. Egy lépés hét pont-koordinátát tartalmaz, melyek a csuklókat és a testet reprezentálják. A rendszer stabilitásának biztosítására mindegyik csuklóhoz rendelünk egy részecskét. Ez a részecske csak akkor lesz mozdítva, ha a következő pozíciója biztosít egy előrelépést és a gyalogos statikusan stabil testtartását.

(b) AI-raj architektúra és a következtetési gráf, a memória-részecskék szürkék, a kereső részecskék fehérek

(c) A kétlábú helyváltoztató rendszer oldalnézete

Ha a p0.1 részecskét tekintjük az ábra (b) részén, láthatjuk, hogy ez a részecske egy memória és nem engedélyezett a mozgása, mivel az új pozíciója nem jobb, mint az aktuális és az új pozíció nem biztosít stabilitást. A p0.1-hez kapcsolódó kereső részecskék inicializálva vannak és iterálnak, mozognak, keresve a legjobb pozíciót a számukra foglalt keresési térben. A helyileg legjobb pozíció egyrészt a helyi keresési stratégiának megfelelően, másrészt a gyalogló globális stabilitási stratégiájára tekintettel kerül kiválasztásra. A globális stabilitás attól függ, vajon a P0 által jelölt tömegközépponti részecske belül van-e az alátámasztási poligonon. P0 reprezentálja a tömegközéppontját a robot tömegének, ez egy virtuális részecske és nincs hozzákapcsolt keresőraj.

A rajok működését a következőképpen képzeljük: A memória részecskék hierarchikusan egymáshoz kapcsolódnak alulról felfelé, egy ilyen kapcsolat azt jelenti, hogy a p0.2 részecske, azaz a 0 jelű raj 2 jelű részecskéje kommunikál a pozíciójáról mind a p0.1 és a p0.3 részecskével, ezen részecskék viszonylagos pozícióit szintén összegyűjti. A p0.3 részecskének csak a p0.2 részecske pozíciója van meg. P0 egy speciális részecske melyet a test tömegközéppontjának a jelölésére használunk, pozícióját a legjobb al-raj részecskék felhasználásával becsüljük a (8) és (9) egyenletekkel. Ez a részecske kritikus, mivel a koordinátáinak az analízise fogja segíteni eldönteni vajon a generált csukló pozíciók stabil testtartásnak felelnek-e meg, vagy sem.

Stabilitás ellenőrzési eljárásmód

A dinamikus járás természetes emberi jellemző, a kétlábon állás nagyon ritka járás közben, gyakoribb az egy támasztólábas állapot. Statikus egyensúlyú járás leírható stabil álló pozíciók sorozataként, még abban az egyszerű támasztási fázisban is, amikor a járás leállt a járási ciklus közben, a robot még állva marad egyensúlyi pozícióban. A járás fázisait bemutató későbbi ábra mutatja a tömegközéppont pozícióját a járási ciklus alatt ahol egyszerű támasztó fázisok váltakoznak dupla támasztásos fázisokkal. Egy ember számára egyszerűbb elérni egy statikus egyensúlyt mint egy dinamikusat. Lassú előre haladásban a statikus stabilitás biztosítva van, ha

  1. kettős alátámasztásos esetben a robot tömegközéppontja az alátámasztási poligon közepéhez – belsejébe – esik

  2. egyszerű – egylábas – támasztási fázisban, a tömegközéppont a támasztó talpra esik. Ez a feltétel biztosítja, hogy a robot nem esik el miközben egyensúlyoz.

A javasolt algoritmus pszeudokódja:

Al-rajok számának inicializálása
Al-rajokban lévő részecskék számának inicializálása
n1, n2 = maximális iterációszám inicializálása
M(i,j) csuklómemóriák inicializálása
Begin
	Ciklus
		Támasztóláb választás
		Lengőláb al-rajainak inicializálása: Al-raj(i)= {Si.0, Si.1, Si.2}
		Lokális keresőrajok inicializálása S(i,j)
		Ciklus
			Al-raj(i) kiválasztása
			For i=1 to al-rajok darabszáma
				Al-rajok() futtatása
				Lokális legjobb kiértékelése: Gbest(i,j)
			Next i
			Lépés kiértékelése:
				Tömegközéppont (x,y) pozíció becslése
				Gyalogló stabilitásának ellenőrzése
			M(i,j) = Gbest(S(i,j))
			Támasztóláb váltás
			Részecske dinamika átadás()
		Mígnem (iterációszám = n1)
	Mígnem (iterációszám = n2)
End.
						

Biomechanikai szempontból a tömegközéppont koordinátái a (8),(9) egyenletek által becsültek. Ha a test n szegmensből áll (S1, S2, …, Sn) és ha a szegmensek súlya (m1, m2, …,mn), akkor a tömegközéppont helye megbecsülhető. Szükség van a tömegközéppont padlóra eső vetületére, ami azt jelenti, hogy kell a tömegközéppont (x,y) koordinátapárja. A szegmensek relatív tömege a csontváz súlyától, az alkalmazott mozgatók és szenzorok természetétől és arányától függ. Lehetőségként ez közvetlenül az emberi antropomorf vizsgálatoktól függhet, még akkor is, ha az emberi izom még jobb mint bármelyik ipari mozgatószerv.

ahol (i) az iterációk szama, n_Sw az al-rajok száma a javasolt modellben, most n_Sw= 6. M a helyváltoztató rendszer középpontja, és mj az Sj szegmens tömege.

Ha feltesszük, hogy a robot a helyváltoztató rendszer méreteivel arányos lábnyommal bír, és ez téglalap alakú, akkor egy egyszerű ábrázolást kapunk a támasztó sokszögre, mind kettős, mind egy támasztóláb esetére, lásd az alábbi ábrát. A lábnyomot téglalap alakúnak feltételezzük, fl hosszal és fb szélességgel, (1) és (2) összefüggéseknek megfelelően. Ha csak egytámaszos fázisok vannak a járás ciklusa alatt, a támasztó sokszög a p0.3 (bal bokától) a p1.3 (jobb bokáig) kapcsolódó szegmensre korlátozódik, akkor ez egy korlátozott megoldás az elsőhöz hasonlítva.

Statikus járás lábnyomai (téglalapok), valamint a tömegközéppont vetületei (körök). Üres téglalap: felemelt láb.

Fitness függvények

Esetünkben egyaránt szükségünk van lokális fitness függvényekre, hogy meghatározhassuk a lokálisan legjobb részecskéket, valamint globális fitness függvényre, hogy kiválaszthassuk a legjobb pózt a stabilak közül. Lokálisan azok a legjobb részecskék, amelyek minimálják a (10) összefüggés által számított hibát.

Ahol fSW(j) a j. raj fitness függvénye, psi,j pedig az (i,j) csukló memória-részecskéjéé. pthi,j a közvetlen kinematikai megoldó által szolgáltatott csuklópozíciónak megfelelő elméleti pont.

Ahol Msgi és Mfti az oldal és a frontális nézeteken értelmezett forgatásokat megadó mátrixok, a következőképpen számíthatók:

Megjegyezzük, hogy θj,i-1 a legutolsó stabil pozíció esetén a j. al-rajban lévő i. csukló szöge az oldalnézeten. A frontális síkbeli forgatómátrix az X tengelyre a (13) kifejezéssel adott:

Ahol αj,i-1 a legutolsó stabil pozíció esetén a j. al-rajban lévő i. csukló szöge a frontális nézeten.

Hogy kiértékeljük a globális legjobb pozíciókat és stabilitási stratégiát, megpróbáljuk minimalizálni a következő kifejezést; a legjobb mintázat az, amelyik minimalizálja a tömegközéppont vetülete és a támasztó poligon középpontjának a távolságát.

Ahol (xpolycenter, ypolycenter) jelenti a támasztó poligon középpontjának koordinátáit, melyek attól függően változnak, hogy a robot egy támasztólábas, vagy két támasztólábas fázisban van.

Diszkusszió és továbbfejlesztési lehetőségek

Bár általában a klasszikus kinematikai modellezést használják a csuklótrajektóriák generálására, itt egy biológiai ihletésű hibrid járásmód generálási módszert mutattunk be. Az alkalmazott részecske-raj optimálási módszert az evolúciós számításhoz sorolják, előnye a gyorsan számítható egyszerű kifejezésekben van, melyek kis memóriaigénnyel járnak.

3D lépések láthatók a következő ábrán.

Az optimalizált lépések

A következő ábra oldalnézetben mutatja a járás fázisait.

Lábhelyzetek

A tömegközéppont járás közbeni pályája látható három nézetben alább hagyományos kinematikai számítással meghatározva:

A tömegközéppont helyzetének vetületei

Összehasonlításként a tömegközéppont járás közbeni pályája látható három nézetben alább a részecske-raj alapú optimálással meghatározva:

A raj-optimalizálás szolgáltatta tömegközéppont pálya

A részecske-raj alapú optimálás globálisan hasonló eredményt ad, mit a klasszikus kinematikai módszer (Ammar, 2006) az x és y tengelyeken, míg a z vetület kissé eltér, mutatván, hogy a gyalogló nem szimmetrikusan mozog. (A könyv szerzőjének megjegyzése: a z görbe negatív értékeinél látható nagy közbenső púpok, melyek pozitívba is átmennek, megkérdőjelezik a robot stabilitását.)

A humanoid robotika jövője

Sok év szükséges, hogy a humanoid robotok milliói megjelenjenek a társadalomban, azonban a fenntartható fejlődéshez a humanoid robotok alkalmazása elengedhetetlen. A legfőbb fejlesztendő területek és képességek, valamint a távlati alkalmazás módozatai láthatók az alábbi összefoglaló ábrán.

Humanoid robotok fejlesztési lehetőségei

Multi-ágens robotrendszerek

A multi-ágens, csoportos ágens robotrendszer a multi-ágens rendszer (Multi-agent System, MAS) alesete, és ily módon hordozza annak jellemzőit. A multi-ágens robotrendszerekben több, kommunikációra és önszabályozásra képes robot működik együtt egy közös cél által vezérelten, önszervező módon. Tipikus példa a robotfocizó robotok csapata. Egy ilyen rendszer egyedeitől megkívánjuk az intelligencia bizonyos fokát. A multi-ágens robotrendszerek robotjait jellemzi az

  • autonómia, a robot önállóan is képes cselekedni

  • egyedre szabott informáltság: a robotegyed nincs birtokában a rendszer teljes információjának

  • decentralizáltság: a rendszer információi megoszlanak a robotegyedek között, nincs olyan egyed, amely a teljes rendszerre vonatkozó információt birtokolná.

Megfigyelhető, hogy a rendszer célja nem áll elő egyszerűen a robotegyedek egyedi céljainak összességeként, de az egyedi tevékenységek összessége a kollektív célt is megvalósítja ( a kapus csak véd, végül a csapat nyer). Liu és Wu (2001) könyvükben hangsúlyozták a tanulás fontosságát a környezet elvárásaihoz való adaptációban, valamint a független robotok autonómiáját és a csoport globális viselkedését miközben együttműködnek egy feladat megoldásán.

A rendszer egyedei között az alábbi kölcsönhatások állhatnak fenn:

  • direkt: kommunikálnak egymással,

  • indirekt: cselekedeteik által hatnak egymásra,

  • fizikai: érintkeznek egymással.

Az együttműködés a kommunikáción túl az együttes tevékenységben (kollaboráció) is megtestesül. Fontos fogalmak a

  • koordináció: tevékenységek összehangolása a csoport feladatainak megoldása, illetve a csoporttal szembeni korlátozások betartása érdekében

  • kooperáció: a csoport egy ágensének tevékenysége segíti a másik ágenst célja elérésében és megfordítva.

(Futó, 1999)

A multi-ágens robotrendszerek esetében, különösen a humanoid robotoknál tűnik természetesnek az intelligenciára törő robotok viselkedés alapú szervezése.

Viselkedés-alapú robotika

(Arkin, 1998)

A viselkedés az ingerre adott válasz.

Alapgondolat: az intelligencia a különféle viselkedésekre a környezetből jövő megítélés, sikeresség eredményeként formálódik.

A viselkedési formákat Arkin (1998) az alábbiak szerint csoportosította:

  • Felfedező/irányító viselkedés (mozgás általános irányban)

  • Célorientált, szükségletkielégítő viselkedés (mozgás a figyelemfelkeltő irányába)

  • Elhárító/védő viselkedés (ütközés megelőzése)

  • Pályakövető viselkedés(mozgás egy megtervezett úton)

  • Testtartási viselkedés (egyensúlyozás, stabilitásra törekvés)

  • Szociális/kooperatív viselkedés (osztozkodás, etetés, gyülekezés)

  • Érzékelési viselkedés (vizuális keresés, szemreflexek)

  • Gyalogló viselkedés (lábbal rendelkező robotoknál; testtartás kontrol)

  • Eszköz-specifikus viselkedés (kéz vezérlése; elérés, mozgatás)

  • Markoló viselkedés (tárgy megszerzése; megfogás).

Választás az ingerre adható viselkedések közül Floreano ás Mattiussi szerint:

  • Versengő módszerek: prioritás, aktiválási szint, megítélés-alapú

  • Kooperatív módszer: fuzionálás.

Az adott ingerre szóba jövő viselkedésválaszok közül a legmagasabb alárendeltségi szinthez tartozó kiválasztása. Pl. válasz egy köszönésre nem a reflexszerű Szia, hanem a magasabb alrendszer által kezelt: Szia, most jut eszembe, hogy köszöntselek névnapod alkalmából!

A legmagasabb aktivációs szintű viselkedés alkalmazása, pl. boltban fizetni kell, nem a készpénzes fizetést választja, hanem a kártyával történő fizetést, mert akkor nem merül fel a készpénzfelvétel pluszköltsége.

Választás: az adott ingerre alkalmazható viselkedések közül a legtöbb jó megítélést kapottat választja. Azt a dalt énekli el a táborban az éneklésre való felkéréskor, amire korábban több tapsot kapott.

Az adott ingerre a szóbajövő viselkedések súlyozott kombinációjával reagál. Pl. születésnapi ajándékként nem rózsát, nem is csokit vesz, hanem mindkettőt, de egyenként kisebb értékben.

A viselkedés-alapú robotika viselkedés-alapú mesterséges intelligenciát használ, intelligens robotokat feltételez. Mi az intelligens robot ismérve? Az intelligens robot egy olyan gép, amely környezetéből képes információt felvenni és használni a tudását arra, hogy értelmes és célorientált módon mozogjon, tevékenykedjen a környezetében.

A viselkedés alapú robotika a robot öntanuló fejlődését hangsúlyozza a világban végzett tevékenységei során nyert tapasztalatok alapján – emberhez hasonló módon – mintsem kívülről beprogramozott kész működésekkel rendelkezne. Benne van ebben az is, hogy az ilyen robot gyakran nem a legjobb megoldással próbálkozik és hibázik, de hibáiból tanul és ily módon fejlődik.

A viselkedés-alapú robotika szószólója professzor Rodney Brooks, MIT, aki meggyőződését az 1980-as évektől több cikkben hirdette.

Kapcsolódó fogalmak:

  • Egyéni viselkedés: egy, az adott környezeti szituációra adott inger/válasz páros, melyet a figyelem alakít és a szándék határoz meg.

  • Figyelem: rangsorolja a feladatokat és az érzékszerveket irányítja, az aktuális környezet által meghatározott.

  • Szándék: meghatározza, mely viselkedéskészletnek kellene aktívnak lennie a robot ágens belső céljai és célpontjai függvényében.

  • Nyílt, vagy felszínre kerülő viselkedés: a robot globális viselkedése, az aktív egyéni viselkedések egymásrahatásának a következménye.

  • Reflex-szerű, tisztán reaktív viselkedés: rövid érzékelő-beavatkozó láncon, behuzalozott reaktív viselkedésekként generált viselkedés, melynél az érzékelt információ nem tartós és a belső világmodell használatára nincs szükség.

Brooks (1991b) szerint a viselkedés-alapú metodológia néhány kulcs aspektusa a következő:

  • Tájékozottság: A robot egy entitás, mely a valós világba van helyezve, azáltal körülvéve. Nem a valóság absztrakt reprezentációja alapján működik, hanem inkább a valóság talaján.

  • Megtestesülés: A robot fizikai jelenléttel bír (egy test). Ez a térbeli valóság következményekkel bír a világgal való dinamikus interakciójában, melyet nem lehet pontosan szimulálni.

  • Intelligencia: Egyszerűbb állatokat kell alapul venni az intelligencia kifejlesztésénél. A környezettel való interakcióban nyilvánul meg az ágens intelligenciája. Az intelligencia a környezettel való kölcsönhatás terméke, nem az előre megtervezett belső komplexitásé.

  • Előbukkanás: Az intelligencia – Brooks szerint – nem rendelhető egyik részéhez sem a rendszernek. A komponensek együttműködése az, amin keresztül az intelligencia előbukkanhat.

  • Alárendelt architektúra

Az alárendelt architektúra jellemzői:

  • A szerkezet inkrementálisan épül

  • A legalacsonyabb szinttel indul az építés

  • Megfelelőség vizsgálat magán a roboton: hibakeresés, módosítás, ellenőrzés, hibakeresés, …

  • A robot azonnal működéskész (alacsony induló szinten)

  • Az újabb fejlődési réteg kiaknázza a korábbi kompetenciát

  • Korábbi viselkedések nem módosulnak

  • Tervezés, tesztelés, hibakeresés, módosítás, tesztelés, módosítás, …

Brooks gondolatai összecsengnek a szerző véleményével, miszerint nem biztos, hogy mindent modelleznünk és a robotnak beprogramoznunk kell. Lehet, hogy jobban járnánk, ha tanuló rendszert tennénk bele, és a járást sok elesés révén tanulná meg. (Lásd virtuális kreatúrák evolúcióját!) Ily módon nem a járni tudó robotnál kellene aggódni, hogy mi történik, ha elzuhan. Az evolúciós, öntanulásos folyamat már korábban kikényszerítette volna ennek a problémának a megoldását, az esésálló robottest kifejlődését.

A viselkedés-alapú megközelítés paradigmaváltozást jelent a mesterséges intelligenciában, a robotikában, a humanoid robotok fejlesztésében. A viselkedés-alapú megközelítés D. Floreano és C. Mattiussi szerint mind a hardver, mind a szoftver tervezésére kihat. Az új megközelítés által elvárt öntanuló, önszervező, önfejlesztő működést leginkább mesterséges neurális hálókkal lehet megvalósítani.

A hagyományos és a viselkedés-alapú megközelítés eltérése

Az ismert LEGO robotépítő kit, a LEGO MindStorms NXT programozható egységei számára elérhető a Java programozási környezetet és a viselkedés-alapú robotok programozását támogató Java osztályokat nyújtó leJOS szoftvercsomag (http://sourceforge.net/projects/lejos/).

LEGO-National Instruments NXT kitből épített robot

Kérdések a fejezet anyagához

  • Mik a humanoid robotokat a többi robotfajtától megkülönböztető alapvető vonások?

  • Milyen hajtóműveket alkalmaznak a humanoid robotok csuklóiban, hogyan működnek és milyen előnyös tulajdonságok miatt alkalmazhatók ilyen célra?

  • Milyen kétféle, az egyensúly megőrzésében alapvetően eltérő mozgástervezési módszer létezik humanoid robotok számára?

  • Mi a lényege a részecske-raj alapú optimálásnak?

Felhasznált és ajánlott irodalom

1. Csáki Tibor (2010) Robottechnika Jegyzet Miskolci Egyetem 2010 http://www.szgt.uni-miskolc.hu/~csaki/robot.pdf Elérés: 2010. 12.11.

2. Jonathan Strickland (2010) How Nanorobots Will Work 2010 http://electronics.howstuffworks.com/nanorobot.htm/printable Elérés: 2010. 12.14.

3. Clive Gifford (2004) Robots Kingfisher Publications Plc. 2003. Magyar verzió: Robotok. Ford.: Győrvári Borbála Tessloff és Babilon Kiadó, Budapest, 2004 ISSN 1785-3389 ISBN 963 9446 32 7

[bib.rokbani] 4. Nizar Rokbani, Boudour Ammar Cherif és Adel M. Alimi (2009) Toward Intelligent Biped-Humanoids Gaits Generation, In Humanoid Robots Edited by Ben Choi, In-Tech 2009. ISBN 978-953-7619-44-2 pp. 259-272

[bib.zrinyi] 5. Zrínyi Miklós (1999) A szintetikus izom és szabályozott hatóanyag-leadás Magyar Tudomány, 1999. június http://www.kfki.hu/chemonet/hun/olvaso/kemia/izom.html Elérés 2011.02.26.

6. Kennedy, J.; Eberhart, R. (1995). "Particle Swarm Optimization". Proceedings of IEEE International Conference on Neural Networks. IV. pp. 1942–1948. http://www.engr.iupui.edu/~shi/Coference/psopap4.html. Elérés:2010.12.15.

7. Shi, Y.; Eberhart, R.C. (1998). "A modified particle swarm optimizer". Proceedings of IEEE International Conference on Evolutionary Computation. pp. 69–73.

8. Kennedy, J.; Eberhart, R.C. (2001). Swarm Intelligence. Morgan Kaufmann. ISBN 1-55860-595-9.

9. Poli, R. (2007). "An analysis of publications on particle swarm optimisation applications". Technical Report CSM-469 (Department of Computer Science, University of Essex, UK). http://cswww.essex.ac.uk/technical-reports/2007/tr-csm469.pdf. Elérés: 2010.12.15.

10. Poli, R. (2008). "Analysis of the publications on the applications of particle swarm optimisation". Journal of Artificial Evolution and Applications: 1–10. doi:10.1155/2008/685175. http://downloads.hindawi.com/journals/jaea/2008/685175.pdf. Elérés: 2010.12.15.

11. Shi, Y.; Eberhart, R.C. (1998b). "Parameter selection in particle swarm optimization". Proceedings of Evolutionary Programming VII (EP98). pp. 591–600.

12. Eberhart, R.C.; Shi, Y. (2000). "Comparing inertia weights and constriction factors in particle swarm optimization". Proceedings of the Congress on Evolutionary Computation. 1. pp. 84–88.

13. Meissner, M.; Schmuker, M.; Schneider, G. (2006). "Optimized Particle Swarm Optimization (OPSO) and its application to artificial neural network training". BMC Bioinformatics 7.

14. B Ammar Cherif (2006) Simulation of biped walking robot, IZIMAN, master thesis dissertation, ENIS 2006.

15. K.Berns, T. Asfour és R.Dillman (1999) “ARMAR-an anthropomorphic arm for humanoid service robot”, IEEE Conf on Robotics and Automation, Volume 1, Issue , 1999 Page(s):702 - 707 ,1999

16. S.Behnke, M.Schreiber, J.Stückler, H.Strasdat és K.Meier (2007) "NimbRo TeenSize 2007 Team Description", In RoboCup 2007 Humanoid League Team Descriptions, Atlanta, July 2007.

17. C.Azevedo, P. Poignet és B.Espinau (2004) “Artificial locomotion control: from human to robots”, Robotics and Autonomous Systems, Vol 47, pp 203-204, 2004

18. A. Chemori (2005) Quelques contributions à la commande non linéaire des robots marcheurs bipèdes sous-actionnés, Thèse de l’INPG, Grenoble, 2005

19. C. Goobon (2008) Simple intuitive method for a planar biped robot to walk, in proc of Clawar 2008 conf, Coimbra, Portugal 2008.

20. C. Sabourin, K.Madani, W.Yu és J.Yan (2008) Obstacle avoidance strategy for biped robot based on fuzzy Q-learning, in proc of Clawar 2008 conf, Coimbra, Portugal 2008.

21. N.Rokbani, A.M ALMI és B.Ammar (2007) Architectural proposal for an intelligent robotized humanoid IZIMAN, in proc of iEEE Conf on logistics and automation, Xandho, China 2007.

22. J. Wagner és C. Carlier (2002) Biomécanique et physiologie du mouvement, Biomécanique de la marche revue de chirurgie orthopédique, p 69-73, 2002

23. D. A. Winter (1990) Biomechanics and motor control of human movement, Wiley-interscience Publication, NewYork, 1990.

24. Hiro Hirukawa (2006) A Humanoid Robot that has Two, Three or Four Feet , The Onassis Foundation Lecture Series 2006 http://mindtrans.narod.ru/pdfs/robo_design.pdf Elérés: 2009.09.06.

25. Wikipedia (2011) Zero Moment Point, http://en.wikipedia.org/wiki/Zero_Moment_Point, Elérés: 2011. 02.11.

26. Lantos B. (1991) Robotok irányítása, Akadémiai Kiadó, Budapest, 1991.

27. B. Favre-Bulle (2005) Robot Motion Trajectory-Measurement with Linear Inertial Sensors, In: Cutting Edge Robotics Szerk.: V. Kordic, A. Lazinica, M. Merdan 2005, Verlag Robert Mayer-Scholz, Germany ISBN 3-86611-038-3

28. Pelsőci M. (2010) Ifjúság, honvédelem, csapatszellem, http://www.regiment.hu/hirek/hazai_hirek/papahonvedelmiverseny_20100930, Elérés: 2010.09.28.

29. Futó I. (szerk.)(1999) Mesterséges intelligencia Aula Kiadó Kft Budapest 1999 ISBN: 9789639078994

30. Jiming Liu, Jianbing Wu (2001) Multi-agent robotic systems CRC Press, 2001

[bib.arkin] 31. R.C. Arkin (1998) Behavior-Based Robotics MIT, 1998, USA ISBN 0-262-01165-4

32. Brooks, R. A. (1991) Intelligence without representation, Artificial Intelligence 47 ( 1991), 139–159.

33. Brooks, R. A. (1991b). Intelligence Without Reason, Proceedings of 12th Int. Joint Conf. on Artificial Intelligence, Sydney, Australia, August 1991, pp. 569--595.

34. D. Floreano, C. Mattiussi (2010) Behavior-Based Robotics http://baibook.epfl.ch/slides/behaviorBasedRobotics-slides.pdf Elérés: 2010.12.12.

3. fejezet - Robotok látórendszerei

A gépi látás fogalma

A gépi látás fogalma tágabb a robotlátás fogalmánál. Legáltalánosabban a gépi látás a gép által a környezetéről, vagy a működése által érintett objektumokról készített kép számítógépes elemzését jelenti abból a célból, hogy a gép a készített képből az általa végzett működésben hasznosítható információt nyerjen ki. A látvány fényképező eszközzel, kamerával, vagy egyéb speciális szenzorral való elkészítése és a képállomány memóriában való letárolása után az érdemi folyamat a digitális képfeldolgozás témakörébe tartozik. Ezt a következő fejezetben ismertetjük.

Digitális képfeldolgozás

A digitális képfeldolgozás témakörét (Qidwai és Chen, 2010) könyve alapján tekintjük át.

A feldolgozandó kép: 3D-s látvány leképezése 2D-re, a színkódok mátrixaként. A mátrixelemek a pixelek, melyek a látványinformáción túl a leképezés nyomát, zaját is tartalmazzák.

A képfeldolgozás minden olyan műveletet takar, melyet a képpel végzünk, pl. a kép kinyerését, a színek memóriában történő leképezését, a kép javítását, a kép tömörítését, a kép osztályozását, a kép felismerését, stb. Minket elsősorban a mesterséges intelligencia témakörébe illeszkedő képfelismerés, arcfelismerés, számítógépes látás érdekel. Kiváló ingyenes szoftver a Linux alatt futtatható Khoros Cantata (Choros, 2011, Young, Argiro és Kubica, 2011, Jordán és Lotufo, 2011) digitális képmanipulációk tanulmányozására. A programban a képfeldolgozó műveletek kis dobozokkal vannak reprezentálva, melyek egymáshoz kapcsolhatók. Egy összetett műveletsor megadása látható alább a Cantata programban (Jordán és Lotufo, 2011).

Képfeldolgozás a Cantata programmal

A kép memóriabeli tárolása 2D-s, vagy több dimenziós tömbben történik. A színes képeket a három alkalmazott alapszínnek megfelelő három réteggel, három 2D-s mátrixban tároljuk. Az egyes pixelek egyes alapszíneinek tárolására alkalmazott memória mérete határozza meg a szín árnyalatainak leképezhető számát. Gyakran alkalmaznak 8 bitet alapszínenként az árnyalat tárolására, így a három alapszínt 24 bites színmélységgel tárolva. A folytonos valós látvány mintavételezési sűrűsége határozza meg a 2D-s mátrixok méretét, azaz a kép felbontását. A mintavételezés ritkítása információveszteséggel jár és ront a leképezett kép minőségén.

A színmélység hatása a kép árnyalatgazdagságára

Képkinyerés

A képkinyerés a képfeldolgozás első lépése. A képet számtalan eszköz szolgáltathatja: kamera, fényképezőgép, szkenner, digitális rajztábla, képlopó szoftver, mellyel filmek képkockáit, illetve képernyőképek egy részét menthetjük el, ill. speciális képforrások, pl. Computer Tomograph, CT. A képek alapesetben RGB színtérben adódnak.

A színkocka

A piros (Red, R), zöld (Green, G) és kék (Blue, B) rétegek tartalma egymástól függetlenül kezelhető, megjeleníthető. Az RGB színtér mellett a képfeldolgozásban gyakran alkalmazott a szürkeskála is. Ez hasonló ahhoz, mint amikor a színes képet fekete-fehér lézernyomtatón nyomtatjuk ki a szürke árnyalataival. A szürkeskála képek nemnegatív egész értékekkel azonosítják a pixel szürke árnyalatát, pl. 0-255 intervallumban. Egy szürkeskálás képből egyszerűen készíthetünk bináris képet, mely egy megadott szürkeskála érték alatti árnyalatokat 0, a többit 1 értékkel jelöl. Természetesen ez a képinformáció nagyfokú csökkenését jelenti.

A kép RGB rétegei, szürkeárnyalatos alakja és annak szűrt változatai

A kinyert képet Windows környezetben leggyakrabban a következő formátumok valamelyikében tároljuk:

  • .BMP (bitmap)

  • .JPG (Joint Photographic Experts Group)

  • .GIF (Graphics Interchange Format)

  • .TIF (Tagged Image File Format).

További, kevésbé gyakori formátumok:

  • .WMF (Windows Meta File)

  • .PNG (Portable Network Graphics)

  • .PS (Postscript)

  • .EPS (Encapsulated Postscript)

  • .EMF (Extended Meta File)

A különböző képfájl formátumok nem egyformán őrzik meg a látvány adottságait, a tömörítésmentes, nagy tárhelyigényű .BMP veszteségmentes, a tömörített formátumok közül a .JPEG sok szín, a .GIF kevés szín és átlátszóság, a .PNG sok szín és átlátszóság esetén célszerű.

Egyszerű műveletek a képeken

Az egy, vagy két hasonló méretű pixelmátrixon működő matematikai műveletek az összeadás, kivonás, szorzás, osztás, illetve skalárral történő szorzás. A mátrixok összeadásával képeket egyesíthetünk, képrészletet adhatunk hozzá, stb. A kivonásukkal eltérés észlelést, háttér eltávolítást, képen belüli differenciaképzést, részletek eltávolítását végezhetjük. Szorzással és osztással skálázhatunk, normalizálhatunk a kép javítása céljából. Szokásos művelet még a két kép pixelei közötti lineáris interpolációval újabb köztes, keverék kép létrehozása, illetve a pixelértékek adott érték alatt, ill. felett a minimumra, vagy a maximumra átírásával a képeket csonkíthatjuk. Az aritmetikai műveletek mellett a logikai műveletek is gyakran használatosak képek egyesítésénél, illetve bináris kép invertálásánál. Nem bináris pixelértékeknél, pl. 0-255 kódintervallum esetén a Q(i,j)= 255 – R(i,j) művelettel végezhető a szürkeárnyalatok invertálása. Az AND, NAND, OR, NOR, XOR logikai operátorokkal változatos helyi kiválasztást, maszkolást érhetünk el, megfelelő maszkoló képek alkalmazásával.

A képeken, illetve egyes részeiken alkalmazhatunk affin transzformációkat: eltolást, forgatást és skálázást.

Képzajok

A képeket terhelő zajok jellemzője a véletlenszerűség, szemben a determinisztikus torzulásokkal, mint például az árnyékolás, vagy az életlenség. A képzajok sokfélék lehetnek, de modellezésükre leginkább a normális eloszlás haranggörbe függvényét, vagy a bitek véletlenszerű ki-be kapcsolását szokták alkalmazni. Normális eloszlás esetén a pixelek értékeihez adott zajértékek eloszlása normális eloszlást követ, azaz a közepes értékkel torzítják leggyakrabban a pixelek kódértékét. Az ábra 0.1 és 1 szórásnégyzetű normális eloszlású zajjal terhelt képeket mutat.

Zajjal terhelt képek

A mozgás miatti elmosódás (motion blur), rossz fókuszálás miatti életlenség, légköri effektek az elmosódások (blurring) kategóriájába tartoznak, és mesterségesen egy, a képtől sokkal kisebb négyzetes mátrix tartalmával való ÉS műveletbe hozással származtatják. A kis mátrixot – a maszkot – a kép minden képpontjára illesztik. Motion blur-ral manipulált képet látunk az eredeti képtől jobbra alább. A gépkocsi egyes részeit kihagyták.

Motion blur, irányított elmosódás alkalmazása a kép kiválasztott részén mozgás érzékeltetésére

Képtranszformációk

A mesterséges intelligencia képfelismerési feladatának megoldásához a képtranszformációkon át vezet az út. A képtranszformációk feladata a kép olyan adatformára hozása, melyben a korábban nem látható jellemzők megjelennek. Rendszerint ezek az átalakítások megfordíthatók és a transzformált adathalmazból inverz transzformációval az eredeti tartalom visszaállítható. A képmódosító, képjellemző azonosító számításokat, beavatkozásokat az első transzformálással kapott frekvenciatartományban adódó adatokon végezzük, majd az így kapott „képet” visszatranszformáljuk a képtartományba. Pl. az eredeti kép éleinek simításához a frekvenciatartománybeli magas frekvenciákat ki kell szűrni. Élek kiemeléséhez pont fordítva, az alacsony frekvenciákat kell kiejteni egy felül áteresztő frekvenciaszűrő alkalmazásával, majd inverz Fourier transzformálással. A Fourier transzformáció a matematikában egy jól megalapozott technika mely hasznos a jeleknek a frekvencia-összetevőikkel történő leírásához. Egy kép esetében, a frekvencia összetevők értelmezhetők mind a kép magasság-, mind szélesség irányában. Pl. bármely hirtelen változás a szürkeskála értékekben magas frekvenciájú összetevőként értelmezhető. Egyenletes emelkedések vagy konstans értékek a szürkeskála értékekben alacsony frekvenciájú összetevőkre utalnak. A számítás módszerét illetően a diszkrét Fourier transzformációnak egy variációja, a gyors Fourier transzformáció (Fast Fourier Transformation, FFT) használatos. Ennek számítási komplexitása m∙log2n, míg a sima diszkrét Fourier transzformációé n∙m, ahol n és m a kép méretei képpontban. A hullám-transzformáció (Wavelet Transformation) a Fourier transzformációhoz hasonló dolgot csinál, de a nézet ablakot nagyról kicsire változtatja, skálázza. A skálázásos felbontás a frekvencia komponensek jobb elkülönítését eredményezi, a Fourier transzformációhoz képest. A Fourier transzformáció egyszerű szinusz/koszinusz függvényeivel szemben a hullám transzformáció anya-hullámoknak nevezett speciális alapfüggvényeket használ. A különféle alkalmazások különféle anya-hullámokat használnak, elsősorban képzaj eltávolításra és tömörítő programokban. Az alakfelismerés tipikus feladatához, az élek kapcsolódásának megállapításához az ún. Hough transzformációt alkalmazzák, mely eléggé számításigényes.

Képmanipulációk a frekvencia térben

A frekvencia térre való áttéréshez diszkrét Fourier transzformációt használunk. Az áttérés ahhoz hasonló, mint amikor egy periodikus függvényt néhány domináns szögfüggvény összegére bontunk fel. Az összetevőknek az amplitúdója és a frekvenciája is fontos. A frekvenciát a vízszintes tengelyen mérve, azokon a helyeken, amelyeknek megfelelő frekvenciájú összetevő szerepel a felbontásban, az összetevő szögfüggvény amplitúdójának megfelelő függőleges szakasz jelenik meg. Minél összetettebb az egyváltozós periodikus függvényünk, annál több frekvenciánál, helyen jelenik meg a frekvencia tartományban függvényérték, azaz függőleges szakasz.

A kétdimenziós képet ugyanakkora méretű kétdimenziós frekvenciatartományra képezi le a diszkrét Fourier transzformálás, megadva annak szinusz és koszinusz függvényösszetevőit, mint egy komplex szám trigonometrikus alakjának két komponensét. A transzformációs képletbeli írásmód a komplex számoknál megismert kétféle írásmód ekvivalenciáját használja ki. Ismert, hogy a z komplex szám trigonometrikus alakja, a z= r∙(cosϕ + j∙ sinϕ) megadható z= r∙ej∙ϕ alakban is, ahol r a komplex szám abszolút értéke, ϕ pedig a komplex sík valós tengelyével bezárt szöge.

Ezek után a diszkrét Fourier transzformáció a következő:

ahol F(u,v) a kétdimenziós Fourier függvény, M és N a kép méretei, m és n a képpont koordinátái, u és v a Fourier tartomány koordinátái (u= 0..M-1; v= 0..N-1), j a komplex egység. A diszkrét Fourier transzformáció diszkrét jelzője azt jelenti, hogy u és v diszkrét frekvenciaértékeket vesz fel a M∙N méretű téglalap alakú tartományban. A mindkét irányban diszkrét, rácspontbeli frekvenciaértékek azt is jelentik, hogy csak véges számú, a kiinduló képünk felbontása, N és M által meghatározott helyen vettünk mintát a képből és az N-1, ill. M-1 intervallumon adódó szürkeárnyalat függvénydarabkákról feltettük, hogy azok N, ill. M lépés után periodikusan ismétlődnek, ami csak a módszer használhatósága miatti feltevés. Másrészt a diszkrét jelleg a kimeneti oldalon abban is megnyilvánul, hogy diszkrét bázisfüggvények szerepelnek a Fourier tartomány értékeinek előállításában. A transzformációs képlet ugyanis a valós f(m,n) kép-pontértéknek és az exponenciális tényezőként jelen lévő, hozzá tartozó bázis függvény szorzatának összegzése a teljes képre. A bázisfüggvények szinusz és koszinusz hullámok egyre növekvő frekvenciákkal. Az F(0,0) sarokpont megfelel a kép átlagfényességhez adódó komponensének, míg az F(M-1, N-1) pont reprezentálja a legmagasabb frekvenciát. A valós alkalmazásokban a Fourier képet eltolják úgy, hogy a kép átlaga, azaz az F(0,0) érték a Fourier magnitúdó kép közepén adódjon. Minél messzebb vagyunk ettől a középtől, a frekvencia annál nagyobb. Egy további megjegyzés, hogy a transzformációt szürkeárnyalatos képeken szokták végezni, és a gyors Fourier transzformáció alkalmazhatósága érdekében M és N értékét kettő egész hatványának választják.

Az F értékek komplex számok, azaz van valós és képzetes összetevőjük. Ennek megfelelően ha az F valós, ill. képzetes értékeket szürkeárnyalatoknak feleltetjük meg, a két M∙N-es kép le is ábrázolható. A valós rész a magnitúdó, a képzetes pedig a fázis nagyságát adja. A képfeldolgozásban gyakran csak a magnitúdót ábrázolják, a fázist, eltolódást nem, mivel a magnitúdó tartalmazza a kép változatosságára vonatkozó információt és ez fontos az eredeti kép egységében való manipulálásához, pl. a meredek szürkeárnyalat-változások, azaz az élek egyöntetű kezeléséhez. Egy (u,v) pontbeli érték az u értékű vízszintes és egyidejűleg v értékű függőleges irányú frekvenciákkal jellemezhető pontok jelenlétének erősségét adja meg a teljes kiinduló képre vonatkozóan. Emiatt az induló fehér képen mindegy, hová teszünk egy kis ábrát, az így kapott két Fourier magnitúdó ábra azonos lesz. A magnitúdóra vezető leképezés a szürkeárnyalatok adott adott irányban vett változásaira, nem pedig a változások helyére érzékeny. Azonban, ha a transzformált Fourier függvényből az eredeti képet vissza akarjuk állítani, a teljes Fourier függvényre, azaz a képzetes résznek megfelelő fázis (eltolódás) értékekre is szükség van. Természetesen a magnitúdó függvénykomponensen végzett manipulációkból való módosult kép megkapásához is szükséges a változatlan fázis komponens is. Az inverz transzformáció:

Az alábbi példa mutat egy képet egy téglalappal és a kép Fourier transzformáltjának magnitúdó összetevőjét grafikusan szemléltetve, illetve a magnitúdó értékeket színeknek megfeleltetve (MathWorks, 2011). A térbeli magnitúdó diagramon középen a csúcs megfelel F(0,0)-nak. Ez az érték az f(m,n) összes értékének összege. Az ábrán az is látható, hogy a vertikális u frekvenciáknál több magas frekvenciaérték adódott, mint a v horizontális frekvenciáknál. Ez összhangban van azzal, hogy az m irányban keskeny, míg n irányban elnyújtott pukli van az f(m,n) képen.

A kép és a Fourier-transzformáltjának magnitúdó összetevője, kétféle ábrázolásban

A Fourier transzformáci segítségével végzett képtranszformáció leggyakrabban a transzformált alakon végzett szűrésekkel és az így kapott módosult tartalom visszatranszformálásával zajlik. Élek kiemelése, élek simítása, elmosódott, bemozdult képek javítása tartozik ide. Részletesen lásd (Qidwai és Chen, 2011)-ben.

Élek detektálása

A humanoid robot gépi látása szempontjából fontos dolog a környezetében való tájékozódáshoz, a képfelismeréshez a látványban található élek észlelése. A robot az élek segítségével tudja felismerni a környezet különböző objektumait, tagolni a látványt. (Qidwai és Chen, 2011) szerint az élek a világos és a sötét árnyalatokban jelentkező éles, hirtelen változásokként definiálhatók. Ezek a nagyfrekvenciás jelek egy felül áteresztő szűrővel választhatók le és adhatók át a további feldolgozásnak. Emiatt az éldetektálás közel áll a képszűrők témájához, hasonló alapalgoritmusok használhatók. Majdnem minden ilyen algoritmus két almátrixot számít a vízszintes és függőleges kiemelt élekkel. Azután egy általános él-síkot számítanak, amelyen végrehajtva egy bináris küszöbölő műveletet szolgáltatják az éleket. Általánosan használt éldetektorok a Sobel, Prewitt, Robert, Robinson, LoG, Zero-Crossing és Kirsch operátorok. A LoG operátor a képintenzitás jel második deriváltját számítja, és ahol az nulla, ott lehetnek élek.

Éldetektálás a képjel deriválásával

Az alábbi videón a deriváltak képzését követhetjük: video lejátszás

A második derivált nulla értékű inflexiós helyei mutatják az éleket. Mivel azonban a derivált képzése egy adott irányban működik, a tetszőleges irányú élek megtalálásához a következő technikát alkalmazzák: Az operátort kellően nagy számú irányban futtatják és annak az eredményét veszik, amelyik a legnagyobb értéket adta.

A Canny operátor esetében a kép Gauss-konvolúcióval történő kisimítása után a 2D deriváló operátorral kiemelik azokat a tartományokat, ahol a derivált magas értéket ad. Az élek jelentik az emelkedőket a magaslatokhoz, gerincekhez a gradiens képen. Az algoritmus azután végigmegy ezeknek a gerinceknek a tetején és lenulláz minden, nem pontosan a gerinc tetején lévő bitet, ezáltal egy vékonyvonalú kimenetet adva. A módszert nem-maximális elnyomásnak nevezik. A nyomkövető folyamat hiszterézissel bír, melyet a T1 és T2 küszöbök határoznak meg (T1>T2). A folyamat csak a gerinc egy T1-től magasabb pontjáról indítható. Majd a gerinckövetés mindkét irányba addig folytatódik, mígnem az aktuális gerincmagasság T2 alá nem fut. Ez a hiszterézis ezáltal biztosítja, hogy a zajos gerincek nem esnek szét éldarabkákra. A Canny operátor jól tűri a zajt, de a legidőigényesebb. Úgy tervezték, hogy optimálisan működjön bizonyos feltételek teljesülése esetén.

Az élek detektálásához hasonlóan kereshetünk egyeneseket a képen.

Arcfelismerés

Az arcfelismerés a humanoid robotok képességei között központi helyet foglal el, mivel működésüket emberek között fejtik ki és fontos, hogy felismerjék azokat. Az arcfelismerés egy adott arcképnek a beazonosítását jelenti egy arckép-adatbázis arcai közül. Az arcfelismerés előtérbe került az utóbbi időszakban, mivel a mi témánkon túl egyéb területeken is alkalmazzák, mint pl. jogi bizonyítások, biztonsági alkalmazások, vagy video indexálás. Az arcfelismerés egy igen nehéz feladat, nem létezik univerzális megoldás minden esetre és alkalmazásra, ahol szóbajöhet.

Az arcfelismerést alapvetően két alapfeladatra oszthatjuk: azonosításra és ellenőrzésre. Az azonosítási feladatban a felismerendő arc ismeretlen, és ismert arcokat tartalmazó adatbázissal vetjük össze. Az ellenőrzési feladatban a rendszer elfogadja, vagy elutasítja az állítólagos személyazonosságát az input arcnak. Az arcfelismerés témája napjaink aktívan kutatott fejlődő területe. A létező különféle megközelítéseket az alábbi ábra foglalja össze (Qidvai és Chen, 2010).

Arcfelismerő eljárások kategorizálása

A következőkben csak a klasszikus PCA (Principal Component Analysis) Fő Komponens Elemzés módszerrel foglalkozunk a lineáris altér elemző eljárások (PCA, LDA, ICA) közül.

Ez távolságméretek statisztikai adataival dolgozik és jó teljesítmény/idő aránnyal bír. A módszer célja a magas dimenziószámú vektorként felírt szürkeárnyalatos arcképből egy alacsonyabb dimenziójú altérre való leképezés, mely altérbe eső egyedek azután könnyebben összehasonlíthatók. A PCA, LDA, ICA módszerek eltérő statisztikai szempontok alapján megválasztott bázisvektorok terében adják meg az arcképet. A sok betanításhoz használt arckép által adott referenciavektor és a felismerendő arckép vektora közötti közelséget használják a felismerés fokának megadására. A tesztarcot azon személy arcaként azonosítják be, akinek a referenciavektorához közelebb esik. Ezt pl. vektorok által bezárt szöggel is mérhetjük. Az arckép eredeti vektoráról a redukált dimenziójú altér vektorára egy mátrix-vektor szorzás visz át, azaz lineáris transzformációról van szó.

A felismerésnél szóbajöhető arcképeket előzetesen egy adatbázisba összegyűjtik, ez szolgál betanító adatbázisként. Számtalan public-domain, szabadon használható arc adatbázis létezik, a Yale 15 személy/165 kép adatbázisától a FERET 1000-től több személy 10000-től több kép adatbázisig. A következő ábra arckép-adatbázis részletet mutat.

Betanító arckép adatbázis részlete

A PCA módszer kulcs eljárása a Karhunen-Loéve transzformáció. Ha a kép elemeit véletlen változóknak tekintjük, a kép felfogható egy sztohasztikus folyamat generálta mintaként. A PCA bázisvektorok az ST szórásmátrix sajátvektoraiként definiálhatók:

A lineáris redukáló transzformáció mátrixa a d dimenziójú redukált térre való leképezéshez a d db legnagyobb sajátértéknek megfelelő sajátvektorokból épül fel. A redukáló leképezés elvégzése során az eredeti n dimenziós arckép a jellemzővektorok d dimenziós alterében áll elő. A legtöbb esetben a nagyon kis sajétértékeknekmegfelelő sajátvektorokat zajnak tekintik és nem veszik figyelembe az azonosítás során. A PCA algoritmusnak számtalan továbbfejlesztése létezik, mint pl. a moduláris sajátvektorok és a valószínűségi alterek.

A módszerben a fő kihívás az a tény, hogy bármely tesztkép amikor összevetjük az adatbázis képeivel, eltér orientációban, megvilágításban, arckifejezésben és egyéb tulajdonságaiban az adatbázisban szereplőtől. Ebből eredően az egy-az-egyben történő illesztés lehetetlen. Rendszerint a mintaillesztés bizonyos formáját alkalmazzák arra a célra, hogy a képet néhány reprezentatív összetevőjével vegyék figyelembe, melyek meglehetősen függetlenek az előbb említett eltérésektől. A Principal Component Analysis (PCA) egy ilyen technika, amely az arcképet képes ’sajátkomponenseire’ bontani, melyek aztán felhasználhatók az osztályozásra. Miután ezek a komponensek ismertek az adatbázis összes arcképére, bármely teszt-arckép komponenseit egyszerűen a létező komponensekkel kell összehasonlítani. Az összehasonlítást rendszerint valamilyen távolságszámító módszerrel végzik. Azt az adatbázisban található osztályt, amelyikhez a legközelebb esik a teszt arckép, adják meg végül mint felismerési eredményt. A PCA elvű arcfelismerés folyamatát a következő folyamatábrán követhetjük.

PCA elvű arcfelismerés folyamata (Qidvai és Chen, 2010) szerint

A Betanítás fázisában a PCA módszer számítja a redukált tér bázisvektorait. Ezek a bázisvektorok a betanító vektorok legnagyobb eltérése, változékonysága irányába mutatnak. Egy sajátérték probléma megoldásaiként adódnak, azaz a bázisvektorok sajátvektorok. Ezek a sajátvektorok a redukált arckép térben vannak definiálva. Tekinthetők képeknek, valójában arcképekhez hasonlítanak. Gyakran sajátarcoknak nevezik őket. Az első sajátarc az átlagolt arc, a többi sajátarc pedig az átlagos arctól való eltéréseket reprezentálja. Az első sajátarc egy jó szűrő: minden egyes arc pixelenként, skalárszorzással szorozva ezzel az átlagarccal egy 1-hez közeli értéket ad, nem arcot ábrázoló képpel szorozva az érték 1-től sokkal kisebb. Az átlagostól való legnagyobb változatosság irányát a második sajátvektor adja meg. Az átlagostól való második legnagyobb változatosság irányát a harmadik sajátvektor adja meg, és így tovább. Minden egyes sajátvektor úgy tekinthető, mint egy jellemző. Amikor egy adott arcot ábrázolunk a redukált arc-térben, a vektorával megadja az egyes jellemzők fontosságát az arcon.

A következő lépéseken követhetjük a PCA alapú arcfelismerés működését. A folyamat a sok személy sok nézetét tartalmazó betanító arcfájlt fogadja inputként, majd PCA módszerrel előállítja a jóval kevesebb számú sajátarcot. Természetesen az első lépés minden kísérlethez a sajátarcok meghatározása. Ezután a redukált arctér benépesíthető az ismert arcképekkel, melyeket rendszerint a betanító arcképek közül veszünk. Minden egyes ismert arcot transzformálunk az arc-térbe és a komponenseiket eltároljuk a memóriába. Ezután kezdődhet az arcfelismertetés.

Egy ismeretlen arcot mutatunk a programnak. Az áttranszformálja az arctérbe és egyenként számítja a távolságát a tárolt arcképektől. Amelyikhez a legközelebb lesz, annak a tulajdonosát nevezi meg a program felismert személyként. A távolságot a sok lehetséges távolságszámító eljárás közül a Mahalanobis távolságként számítja.

Megjegyezzük, hogy a betanító adatbázisban nem szereplő személlyel a program rosszul működik.

Soft Computing módszerek

A digitális képfeldolgozás ismertetett hagyományos módszerei mellett erőteljesen törnek előre a soft computing módszerek, melyek képesek kezelni a képen megtalálható hibákat, zajt, hiányokat és közelítéseket. Az új képességekből eredően az algoritmusok rugalmassága, robusztussága megnő, mindez alacsony számítási költséggel. A soft computing módszerek közel állnak az emberi agy által mutatott működéshez, amely az egzakt számítás helyett emlékezéssel, ráérzéssel, valószínűségekkel, megítéléssel, becsléssel működik. A következő, a mesterséges intelligencia tárgykörébe tartozó módszerek ezek:

  • Fuzzy rendszerek

  • Neurális hálózatok

  • Evolúciós számítás

  • Harmónia kereső algoritmusok

  • Raj-intelligencia algoritmusok

  • Gépi tanulás

  • Káosz elmélet.

A módszerek jelentős része korábbi tanulmányainkból ismert, a raj-intelligencia módszerét a 2.7 pontban mutattuk be. A fuzzy logika képfeldolgozásban való alkalmazására példát (Quidvai és Chen, 2010) műve ad.

Mesterséges neurális háló alapú képfeldolgozás

Ez a terület nagyon kiterjedt, mivel a mesterséges neurális hálók (MNH) alkalmazásának egyik fő területe éppen a gépi látás. Az MNH az emberi agy szerveződését mintázza. Kulcsszerepben vannak a mesterséges neuronok, azok kapcsolódása és a tanulási mód. Képfeldolgozási, alakfelismerési feladatokra elsősorban a gyors működésű előrecsatolt többrétegű Perceptron hálók alkalmasak. Ezek betanítása a felismerendő alakzatokra egyszerűen az alakzatok, tárgyak képeinek többszöri bemutatásával elvégezhető. Az MNH előnye az alakfelismerésben a hibatűrés és a robusztusság. További előny, hogy nem programozással, hanem betanítással tesznek szert az alakfelismerés képességére. Komolyabb feladatok megoldásához a hálókat hierarchikus szerkezetben meg kell többszörözni, hogy a látványban rejlő többszintű elvonatkoztatást felismerhessék ( foltok, élek; szék, asztal; szoba, tárgyaló). A témához köthető példát ad az 5.3.3 fejezetben bemutatott MNH alapú amőba játékot játszó program.

A látórendszerek feladata robotoknál

A robotok alatt a könyvben elsősorban humanoid robotokat értünk. A robotok látásával foglalkozik (Horn, 2011) elmélet orientált műve. Általánosabb és újabb (Forsyth és Ponce, 2003) gépi látással foglalkozó könyve. Klette, Peleg és Sommer szerkesztésében robot látással foglalkozó cikkeket bemutató kiadvány jelent meg (Klette, Peleg és Sommer, 2001), mely a robot látás számtalan aspektusát érinti. Florczyk műve szabadon letölthető, korszerű és kiváló áttekintés az elmélet és gyakorlat oldaláról egyaránt (Florczyk, 2005).

A robot egyik alapvető feladata a környezetében való tájékozódás. Mobil robot esetében a látás a környezet felderítésében, az útvonaltervezésben, az objektumok kezelésében elengedhetetlen és hasznos lehet az egyensúlyozás támogatására is.

A látvány kinyerésére a robotok kamerákat használnak. A régebben alkalmazott analóg videokamerák helyét digitális kamerák veszik át. Felbontásuk változó, egy tipikus érték a 3000x2000 képpont. Egy ilyen kép memóriaigénye 6MB szürkeárnyalatos és 18MB színes képek esetén.

A robot tájékozódásánál alkalmazott technikákat megkülönböztetik aszerint, hogy álló robot által készített kép feldolgozása a feladat – passzív látás esete, vagy a környezet vizuális felderítésében a mozgásnak is szerepe van – aktív látás esete. Ez utóbbi megközelítés a biológiai lények által alkalmazott, az agyban meglévő környezeti kép egyes részleteinek frissítésén alapuló látási folyamatot feltételez. A legújabb tér-érzékeny aktív látás a retina közepének nagyobb érzékenységét is modellezi, miközben a perifériális látás kisebb adatfeldolgozási igényt jelent (Florczyk, 2005).

Sztereo látás

A sztereo, vagy térbeli látás az emberi látórendszerre alapoz, amely két szem segítségével jut térbeli információhoz. A sztereo látás képfeldolgozási ideje megduplázódik, mert két képet kell elemezni. A folyamat jelentős része azonban párhuzamosítható. A sztereo látás geometriai aspektusa mélyebben a (Sonka, Hlavac és Boyle, 1999) műből ismerhető meg, mely kifejti a háromdimenziós térbeli pont 2D-s felületen való leképezését, a kameramozgás felhasználását, kétdimenziós képeken adott látványból a 3D-s tér rekonstruálását, az egymáshoz tartozó képpontok megtalálásának módszerét a sztereo képek esetén.

Kérdések a fejezet anyagához

  • Mi az előnye a Fourier transzformációnak a képtranszformációk esetében?

  • Hogyan működik az éldetektálás?

  • Melyik összetevő adja a fázis értékét a Fourier transzformáció esetén?

  • Mi a Principal Component Analysis alapú arcfelismerés működésének két fő fázisa?

Felhasznált és ajánlott irodalom

1. U. Qidwai, C. H. Chen (2010) Digital Image Processing: An Algorithmic Approach with MATLAB, CRC Press, Taylor and Francis Group, Boca Raton, London, New York, 2010, p.286

2. Khoros Vizualizációs Rendszer (2011) http://www.agocg.ac.uk/reports/visual/vissyst/dogbo_45.htm Elérés: 2011.02.12.

3. M. Young, D. Argiro és S. Kubica (2011) Cantata : Visual Programming Environment for the Khoros System, Google dokumentumok, Elérés: 2011.02.12.

4. R. Jordán, R. Lotufo (2011) Khoros Lab for TEMPUS CIDEC Image Processing Course, http://www.cs.ioc.ee/~khoros2/ , Elérés: 2011.02.13.

5. MathWorks (2011) Fourier Transform. http://www.mathworks.com/help/toolbox/images/f21-17064.html Elérés: 2011. 02. 14.

6. B. Horn (1986) Robot Vision, The MIT Press, 1986, ISBN:0-262-08159-8, p528.

7. D. A. Forsyth és J. Ponce (2003) Computer Vision, A Modern Approach, Prentice Hall, 2003.

8. R. Klette, S. Peleg és G. Sommer (2001) Robot vision, Springer, 2001.

9. S. Florczyk (2005) Robot vision: video-based indoor exploration with autonomous and mobile robots http://download.robotsky.com/books/Florczyk.Robot.Vision.2005.pdf 2005 Elérés: 2011.02.21.

10. M. Sonka, V. Hlavac és R. Boyle (1999) Image processing, analysis, and machine vision, PWS Publishing, 1999.

4. fejezet - Verbális robotkommunikáció

A fejezet célja a robotok, elsősorban humanoid robotok és ember közötti szavakkal történő kommunikáció, társalgás kezelésére, megvalósítására szolgáló módszerek bemutatása. A tárgyalt témák a következők:

Hangfeldolgozás:  Az audio hangjel szöveges alakúvá való transzformálásának alkalmazott módszerei.

A természetes nyelvek feldolgozása:  A szöveg alakban adott konverzió értelmezésének alapvető lehetőségei. Lingvisztikai és statisztikai alapú technika.

Statisztikai elvű NLP:  Napjaink egyre jobban fejlődő irányzata a természetes nyelv által hordozott jelentés megragadására.

Morfológia:  A szöveg különböző szintű egységeinek beazonosítása, ábrázolás véges állapotú automatával. Öntanuló morfológia.

Beszédértés:  A jelentés megragadásának szintjei. Szintaktika, szemantika, pragmatika és intenció. A jelentés ábrázolása. A háttértudás fontossága.

NLP a gyakorlatban:  Beszélgető ágens, chat robotok.

Beszédgenerálás:  A közlendő formába öntése. Hanggenerálás.

Hangfeldolgozás

A hangfeldolgozás témakörét a témánkhoz illően szűkítően értelmezzük itt, mivel csak az emberi beszéd hangjainak feldolgozására koncentrálunk, pl. a zenei hangokra nem.

A hangfeldolgozás célja az analóg akusztikai jel szöveggé, karakterfolyammá való alakítása.

Az emberi beszéd hangfeldolgozásának nehézségéről képet alkothatunk (Szappanos, 2005) írása alapján: A nyelv fonológiai rendszere tartalmazza egyrészt a hangok hálózatát, másrészt a prozódiai jegyeket, azaz a hangok alapvető akusztikai sajátosságait, nevezetesen azok magasságát, erősségét, sebességét, ritmusát, továbbá olyan paralingvisztikai jellegzetességeket, melyek a hangképző szervek artikulációs lehetőségeinek köszönhetően különböző hangszíneket, hangminőséget (pitch) hoznak létre. Annak érdekében, hogy a gyermek – robot, (a szerző beszúrása) - megszerezzen bizonyos fokú fonológiai kompetenciát, először is meg kell tudnia különböztetni azon szegmentális variációkat, melyek kisebbek és árnyaltabbak, mint a szavak differenciálása esetében. Annak ellenére, hogy a beszédet különálló szavak sorozatának halljuk, valójában az egyik szó folyamatosan megy át a másikba, így a határokat csupán aszerint konstruáljuk, hogy anyanyelvünk fonotaktikai szabályai a fonémák milyen sorba rendeződését engedik meg (Gósy, 2004), illetve, hogy mely beszédegységek esnek egybe mentális lexikonunk elemeivel (Pinker, 1999).

Már ez az idézet is mutatja, hogy az emberi beszéd hangfeldolgozása igen összetett feladat. A legutolsó almondatban szereplő mentális lexikon fontosságát nem lehet eléggé hangsúlyozni az emberi hangfeldolgozásban. A hangfeldolgozás és a beszédértés egymást támogató, párhuzamos folyamatok. Szappanos szerint: A beszéd észlelésének folyamata egy hierarchikus szemléletű modellben az elsődleges hallási elemzéssel indul, amikor az inger különböző fizikai paraméterek mentén való kiértékelésén túl döntés születik arról, mi a hang forrása, beszédet vagy muzsikát hallunk-e, magasan vagy mélyen, és ehhez egyidejűleg társítunk szubjektív érzeteket. Ezután egy akusztikai elemzés következik, melynek eredményeképpen a hangsornak, mint hullámformának az akusztikai tulajdonságait azonosítjuk. Ennek kimeneteli adataira épül a fonetikai osztályozás, azaz az adott fonéma realizációjának meghatározása időben. A nyelvre jellemző beszédhangokra való szegmentálást követő utolsó lépcsőfok a fonémadöntés, amikor az ingert a megfelelő fonémakategóriába soroljuk.

A hangok beazonosítását, a fonémák egyértelműsítését segíthetik a humanoid robot - ember társalgásban a robot által leolvasott emberi szájmozgásból kinyerhető hangképzési információkkal (Czap, 2000)

A hangfeldolgozással, azon belül kiemelten a magyar beszéd speciális problémáival foglalkozik kimerítően a Németh és Olaszy (2010) szerkesztésében megjelent könyv.

Természetes nyelvek feldolgozása

A természetes nyelvek feldolgozása, végső célként az emberi nyelv által hordozott jelentés megértésével, kiemelten fontos az emberrel egyenrangú félként kommunikáló humanoid robotok kifejlesztéséhez. Természetesen egyértelmű az, hogy a nyelv jelentésének megértése a gépi intelligenciával azonos nehézségi szint.

A Természetes Nyelv Feldolgozás (Natural Language Processing, NLP) a számítástudomány egy területe, mely olyan számítógépek létrehozását tűzte ki célul, melyek inputként, vagy outputként természetes nyelvet használnak. A természetes nyelv kommunikációs eszközként való alkalmazása az ember igényeinek kiszolgálását jelenti, ugyanakkor nehéz feladatot ró a gépre. Különösen a bemeneti oldal, az emberi nyelv inputként való alkalmazása nehéz a beszélt nyelv sokszínűsége és a hordozott jelentés többszintűsége miatt. Míg a nyelv feldolgozása a nyelv megértését igényelné, addig a beszédgenerálás egy beparaméterezett egyirányú folyamat.

A természetes nyelv megértése azért nehéz a gép – és sokszor az ember – számára is, mert a beszéd témájához illeszkedő alapos háttértudást feltételez, továbbá a szavak egyszerű jelentése mögötti szándékolt közlendők, utalások megértését is kívánja. A Turing teszt óta tudjuk, hogy a természetes nyelv használata az igazi gépi intelligencia kritériuma.

Miközben a természetes nyelvek gépi feldolgozásának számtalan előnyös alkalmazási területe lehet, pl. egyszerű verbális információszolgáltató rendszerek, oktatórendszerek, addig a legfontosabb terület a robotkommunikáció, ezen belül is a humanoid robotok és ember közötti információátvitel. Megemlíthető itt még egy kapcsolódó terület, mely a nyelvfüggetlen nemverbális gondolati síkon való kapcsolatteremtést is jelenti, a gépi fordítás.

A beszélt nyelv megértéséhez vezető lépések a hangfeldolgozás által adott szövegalak és járulékos ingerek – hangszín, hangerő, ritmus, stb. és mimika, testbeszéd – által hordozott információk felhasználásával a szavak beszédbeli kategóriájának beazonosítása, majd a mondat szintaktikai szerkezetének figyelembevételével a mondat jelentésének meghatározása. Még közelebb jutunk a valóságos feladathoz, ha a beszédértés folyamatát egy tóvá duzzadó hegyi folyó formájában képzeljük el. A tóba ömlő patak a feldolgozóhoz eljutó beszéd szavainak, mondatainak, járulékos ingereinek folyama. Bár egy szó, különösen egy mondat önállóan is hordoz jelentést, a szituáció, szövegkörnyezet jelentéspontosító, jelentéstisztázó szerepe sok humorból jól ismert. A beszélő gyakorlatilag mindig egy szituációban van és abban hallja a mondatot. A szituációval kapcsolatos ismeretek jelentős részét tehetik ki a megelőzően hallottak. Továbbá kiemelten fontosak a korábbi életből rendelkezésre álló, a szituáció által felszínre hozott ismeretek, hitek, vélekedések. Mindezek a tóban összegyűlt víznek felelnek meg a hegyi tavas modellben. Természetesen ez a kontextus időben változik, nem csak a bejövő ingerek, hanem az elhalványulás, felejtés miatt is. Ezt a részét a tudatállapot változásnak a tóból kifolyó patak vize modellezi. A legfontosabb dolgok a tóban zajlanak, ahogy a vizek keverednek, kavarognak, pillanatról pillanatra változó tudatállapotokat mintázva.

A feladat nem könnyű, ezt már a szavak mondatbeli szerepének beazonosítása is jelzi: Ő szerezte a könyvet (Ő írta? – ő hozta?)

A kétértelmű kategóriák egyértelműsítésében, a többes jelentések közüli választásban fontos szerep hárul a kontextusra, szövegkörnyezetre, szituációra.

Sok szóelemző, morfoló alkalmazás kerüli el sikerrel az egyszerű toldaléklevágással való szótőkeresés buktatóit: eszik, esznek -> esz- ??, eszik. Evett -> eszik.

A mondat szintaktikai szerkezete

Az emberi beszédben kialakult szerkezetek gyakorisága szabállyá emelte a szerkezeteket. A sok kivétel azonban mutatja, hogy valójában a nyelvtani, lingvisztikai megközelítés a statisztikai nyelvészet tapasztalatainak idealizálása.

A gyakoriság törvényesíti a szerkezetet.

A mondat mondatrészeinek beazonosítását, a mondat szerkezetének ezekkel történő megadását parsingnak, mondatelemzésnek nevezzük. Ez a folyamat nagyon időigényes, a mondatelemek számától exponenciálisan függ, kivéve Earley algoritmusát, amely O(n3) időkomplexitású. Az ismert algoritmusok a Felülről-lefelé, az alulról felfelé haladó, és a táblázatos elemzés.

A szintaktika, azaz a mondat szavainak, szerkezetének beazonosítása a jelentés megragadásának legalsó szintje. A mondat nyers jelentését, a szemantikáját a szintaktikára építve, a szavak jelentését a toldalékok és a sorrend figyelembevételével kombinálva alakítjuk ki. Legalábbis a hagyományos elképzelés szerint, melyet a 4.6 pontban fogunk árnyalni.

A szemantikai elemzést támogathatjuk szemantikus szótárral. Egy ilyen adatbázis a szavakon kívül azok jelentése által meghatározott viszonyukat is tárolja, pl. a szinonímákat (óra, időmérő), a befoglaló osztálykategóriákat (a karóra az egyfajta óra). Ilyen módon egy szemantikus hálót realizál. Lásd pl. WordNet.

A természetes nyelvek megértése nehéz a benne rejlő kétértelműség miatt. Pl.:

Levette a körtét. - Négy lehetséges jelentés:

  1. Levette a polcról a gyümölcsöt.

  2. Levette a polcról az izzót.

  3. Lefényképezte a gyümölcsöt.

  4. Lefényképezte az izzót.

A természetes nyelvek feldolgozása során a következő tapasztalatok adódtak:

  • A természetes nyelvek formális elemzése túl nehéz és számításilag komplex, emiatt célszerű a teljes, korrekt megoldások elvetése és “közelítő” megoldások megcélzása olcsóbb, gyorsabb technikák alkalmazásával.

  • Az emberi elemzőmunka helyett, melyekkel nyelvészeti szabályok nyerhetők ki, célszerűbb számítógépekkel statisztikai adatok kinyerése a dokumentumokból (korpuszokból).

Beszédelem-címkézés

Egy egyszerű statisztikai módszer a beszédelem-címkézés. Lényege, hogy a dokumentumokból korpuszokból, melyek mondatainál a szófaji, beszédelem elemzést már elvégezték, n-szó láncok statisztikáit gyűjtik ki (n-gram) => beszédelem szekvenciák valószínűségei. Majd ezekre a statisztikákra alapozva egy adott címkézetlen mondat minden szavához a legvalószínűbb beszédelem címkét hozzárendelik, a megelőző szavak beszédelem címkéire alapozva, kezdve az első szón.

Népszerű módszerek:

  • Hidden Markov Model (HMM). A Hidden Markov Model egy irányított élekkel rendelkező állapotgráf, melynek állapotai a nyelvfeldolgozás esetén lexikai kategóriák, pl. főnév, vagy határozó. Az élek az állapotváltozás irányát és útját mutatják, és fontos, hogy az út használatának valószínűségével vannak ellátva. Az állapotokhoz is van valószínűségértéket adó függvény rendelve, amely azt határozza meg, milyen eséllyel bocsát ki az állapot elérésekor különféle szimbólumokat. Egy állapotba lépéskor egy szimbólumot bocsát ki. A nyelvfeldolgozás esetében a kibocsátott szimbólum egy szó az állapot által képviselt lexikai kategóriából, pl. egy főnév, pl. a ház, épület, barakk szavak egyike.

  • Transzformációs Szabályok

  • Változatos gépi tanuló, osztályozó algoritmusok, mint pl. a Maximum Likelihood, maximális valószínűség becslése. Ámbár nincs közvetlen módszer, hogy meghatározzuk egy nyelvi elem valószínűségét a jellemzői ismeretében, azonban használhatjuk a Bayes szabályt, hogy megbecsüljük a nyelvi elem osztályának valószínűségét az osztály jellemzőiből. Ezen a módszeren alapszik a maximális valószínűség osztályozó amely egy ismeretlen vektort rendel ahhoz az osztályhoz amely valószínűségi sűrűségfüggvénye maximális értékű. A módszer alternatívája a klaszterezés. A valószínűségi sűrűségfüggvény egy kellően nagyszámú betanítóhalmazt tételez fel.

Valószínűségi mondatelemzés

Lényege, hogy a korábbi statisztikai felmérések során nagyobb előfordulást mutató elemző fagráfot rendeljük a mondathoz. Még jobb megoldás a szövegkörnyezet felhasználása, a ’hegyi tó’ által tartalmazott szituációjellemzőkkel való összevetés.

Részleges elemzés

Lényege, hogy nem teljes mondatokat, hanem csak jellegzetes szófordulatokat elemzünk, adjuk meg hozzá az elemzőgráfot. A második lépésben a beazonosított szófordulat-szerkezetek egyesítése következik. A gyakorlati kivitelben a szófordulatok véges automatái egybe vannak fűzve.

Szemantikus elemzés

A természetes nyelvi mondatok többértelműek, főként amiatt, hogy a szavak több jelentéssel is bírnak.

  • pl. a "körte" (főnév) két jelentése:

    1. gyümölcs fajta

    2. izzólámpa

  • Melyik értelemben kell használni?

    1. “A körte rothadásnak indult.”

    2. “Kiégett a körte.”

Ez emberek számára könnyű, de nem a számítógép számára. A szó megfelelő jelentésének kiválasztása a mondatban történhet egy betanító korpusz segítségével, mely meg van címkézve a megfelelő jelentésekkel, és az ebből kinyert n-szó szekvencia statisztikákat használjuk fel.

Statisztikai elvű NLP

Amint az eddigiekből is kitűnt, a természetes nyelvek megértése a kisgyerekek által mindennap alkalmazott tapasztalati alapon, mindenféle előzetes nyelvészeti elemzés nélkül is elérhető. Az újabb statisztikai elvű irányzat azt vallja, hogy a nyelv megértéséhez szükséges ismeretek benne vannak a beszélt nyelvben és statisztikai módszerekkel kinyerhetők. Ehhez annyi kiegészítés kívánkozik, hogy az ember számára a dolgok, fogalmak jelentésének megtanulásához nem csak verbális információk állnak rendelkezésre. Közelebb jutunk a megértés lényegéhez, ha tisztázzuk a szó jelentését: a szó jelentése mindazon szituációk agyunkban hagyott emléknyomainak összessége, amelyben a szót használtuk, a szó elhangzott, szerepelt. Azaz a szó jelentése egy hatalmas, nem egyenszilárdságú asszociált érzéklet- és gondolathalmaz. Ezt kitágítva hasonlókat fogalmazhatunk meg a mondat jelentésére is. Ezt a kérdést a 4.6 pontban még tovább elemezzük és egy mintaalkalmazáson keresztül ismertetjük.

A statisztikai nyelvfeldolgozás előtérbe kerülését az is okozta, hogy a nyelvészeti alapokon álló természetes nyelvfeldolgozás nem érte el a jelentés megragadásában azt a szintet, amely összemérhető az emberi megértéssel. A statisztikai elvű feldolgozás nagyobb rugalmasságának köszönhetően precízebb jelentésmegragadást eredményezhet. A valószínűségi alapokon való megközelítésből eredően jobban kezeli a beszédben meglévő hibákat, hiányosságokat.

A statisztikai nyelvfeldolgozás nevéhez hűen komoly matematikai statisztikai apparátussal dolgozik és nyeri ki a hatalmas szövegekben rejlő nyelvi törvényszerűségeket. Az alkalmazott módszerek a valószínűségelmélet és az információelmélet területéről származnak.

A valószínűségelmélet alkalmazott fogalmai:

  • Valószínűségi terek

  • Feltételes valószínűség és függetlenség

  • Bayes-tétel

  • Véletlen változók

  • Várható érték és variancia

  • Szabványos eloszlások.

Az információelmélet alkalmazott fogalmai:

  • Entrópia

  • Együttes entrópia és feltételes entrópia

  • Kölcsönös információ

  • A zajos csatorna modell

  • Relativ entrópia vagy Kullback-Leibler divergencia

  • A nyelvhez való viszony: Kereszt entrópia

  • A nyelv entrópiája

  • Zavar.

Mi a statisztikai módszerek alkalmazásának előnye?

  • Egyértelműség érhető el sztohasztikus kontextfüggetlen nyelvtanoknál

  • Lehetővé teszi nyelvtani fokozatok alkalmazását

  • Természetes

  • Strukturális előválasztást segíti két módon is olvasható mondatoknál

  • Hibatűrő.

A sztochasztikus nyelvtanoknál a nyelvi kategóriák, pl. jelző, főnév, határozó, stb., illetve konkrét szavak egymásutániságának valószínűségét ismerjük, így egy megfelelő mondat összeállítása ezen előrejelző valószínűségek segítségével megvalósulhat.

A hagyományos nyelvészeti megközelítések nem ismernek közbenső értéket a nyelvtanban, egy mondat vagy jó, vagy rossz. Néhány esetben a mondat elfogadhatósága függhet a szerkezetétől, vagy a környezetétől.

Az emberi nyelvmegértés fontos jellemzője a hibatűrés. Sok olyan mondatot, amelyet a hagyományos nyelvtani felbontás, parsing nem szabályos mondatnak értékel, statisztikai nyelvfeldolgozással megérthetünk.

Morfológia

A morfológia a szavak alakjával, szerkezetével, felépítésével, a különféle szóalakokkal foglalkozik. Mivel a magyar nyelv az erősen agglutináló, toldalékoló nyelvek körébe tartozik, ezért különösen fontos foglalkoznunk a szavak felbontásával, illetve toldalékolásával, ragozásával. A szavak egy, vagy több morfémából állnak: ház; meg-ház-as-od-ott.

A morfológiai elemzés feladata a szó felbontása és az alkotórészek lexikai kategorizálása, címkézése.

A téma alapos feldolgozása (Prószéky, Kis, 1999) könyvében található meg. A mű alapján a következő, a szóösszetételek, a helyes morfémaláncolatok képzésének megadására alkalmas szabályokat megadó modelleket, morfológia típusokat említhetjük:

  1. Kétszintes morfológiák (Koskenniemi, 1983):  A felbontott szó morfémájához megadja az (esetleg kissé eltérő) alap (lexikális) morfémát a morféma nyelvtani kategóriájával együtt. Pl.: labdá + k → labda [főnév] + k [többesszám jele].

    A karakterről karakterre haladó elemzés véges automatát alkalmaz és jellemzője, hogy megfordítható: pl.: labda [főnév] + k [többesszám jele] → labdá + k.

  2. Folytatási osztályok:  egy morfémához megadja a lehetséges folytatómorfémákat. Pl.: labda [főnév] (+ t [tárgyrag], + val [eszközhatározó rag], + nak [birtokosrag], … ); + k [többesszám jele] (+ at [tárgyrag], + nak [birtokosrag], + val [eszközhatározó rag], + ból [helyhatározó rag] …)

    A morfémák osztályozhatók az egyes folytatási osztályok tartalma alapján.

  3. Unifikációs modellek:  nem a kapcsolódó morfémákat, hanem a morfémát megelőző és követő morfémák jellemzőit (morfoszintaktikai és fonológiai, hangképzési tulajdonságok) tárolja. Igekötőknél a megelőző, ragoknál a következő morféma hiányzik, így jellemzői is hiányoznak.

A morfológia szükségessége

A szavak összetevőikre, előtagra, szótőre, jelekre és ragokra való felbontása több okból is fontos. A szótő (lemma) megtalálása azért szükséges, mert a szó alapjelentését az hordozza. Mintaillesztéses szövegfeldolgozás esetén a ragozott szavak eltérő sztringekként különböző egységeknek minősülnek, holott a jelentésközelség érezhető (emberek, embert). Másrészt az azonos képzőknek, ragoknak, toldalékoknak azonos a jelentésmódosító hatásuk, ezért fontos az észlelésük és a jelentésmódosító hatás feltárása. Ez szorosan összefügg a toldalékok szófajképző hatásával is (ház – főnév, ház-as – jelző, ház-ban – határozó). További célja a morfológiai felbontásnak az eltérő szóalakok számának redukálása.

Morfoszintaktikai ábrázolás véges állapotú automatával

Példaként a kétszintes morfológiát mutatjuk, (Prószéky, Kis, 1999) alapján.

  • Az egyszerű véges automata csak a szintaktikai elemzés legelső lépését képes elvégezni egy toldalékolt szóval: megállapítja, hogy része a modellezett nyelvnek, vagy sem. (Jól írt szó – hibásan írt szó.)

  • Az automata kibővítésével az automata kimenete gazdagítható: képes megadni

    • a morfémák alap lexikális alakját (értelm -> értelem),

    • a morfémák morfoszintaktikai kódját ( -ja -> [birtokos jelző] )

    • stb.

  • Ilyenkor az automata az input szöveghez egy output leírást ad, azaz az inputot lefordítja az outputra. A szöveget (surface level) és a hozzátartozó leírást (lexical level) az automata által kezelt két szintnek tekinthetjük, mivel még az is jellemzi, hogy a leírás is szolgálhat inputként és ekkor az automata azt a szövegre fordítja. Az ilyen, két szint közötti transzformációt végző automatát véges fordítónak (finite state transducer, FST) nevezzük.

Szófelismerés és -címkézés véges fordítóval

Öntanuló morfológia

Az alfejezet az agglutináló, erősen toldalékoló nyelvek közé sorolt magyar nyelv esetére ad egy módszert a toldalékolt szavak toldalékainak beazonosítására, a nyelvben lehetséges toldalékok felismerésére tisztán statisztikai elven. A statisztikai elv azt jelenti, hogy a módszer nem igényli a nyelv nyelvtanának ismeretét, nem alkalmaz nyelvtani elemzést. Ebből következően a bemutatott módszer nyelvfüggetlen. A módszer a szerző saját fejlesztése.

Az elemzett probléma a szerző korábbi cikkében (Dudás, 2003) bemutatott, szemantikai távolság mérésével dolgozó, Tudor nevű öntanuló információs program használata közben merült fel. A Tudor minden kérdés, vagy állítás formájában beadott mondatot megjegyez, miközben a mondat szavai közötti kapcsolatrendszerrel, ill. új szó esetén magával a szóval bővíti az ismeretbázisát, mely gyakorlatilag egy szemantikus háló. A működés egyszerűsített váza: a beadott mondat szavaihoz korábban kapcsolt szóhalmazok unióját metszésbe hozza sorra az összes korábban megismert mondatra hasonlóan adódó uniós halmazzal és a legnagyobb metszetet, a legtöbb közös kapcsolódó szót adó tárolt mondatot hozza fel kimenetként, megvalósítva ezáltal egy szemantikus távolság minimálásán alapuló keresőt, kiaknázva azt a Quillian-i elvet, miszerint egy szó jelentését a szóhoz társított asszociációk hordozzák. Felismeri ilymódon a szinonímákat a hasonló asszociációs halmaz révén (kutya, eb) és segíti a homonímák kezelését (Ég a tűz. Dörög az ég. Tűz és Dörög asszociált halmazai eltérőek, irányítják az ég megfelelő jelentésének kiérzését.). Mivel a magyar nyelv az erősen toldalékoló nyelvek családjába tartozik, a százezres nagyságrendű alapszó mennyiséghez százmilliós nagyságrendű ragozott, toldalékolt szóforma társul. Ez három problémát is felvet: az egyik a hatalmas szómennyiség tárolásának gondja, a másik az önálló szintaktikai egységként megjelenő szavak elfedik a szótő által hordozott alapjelentést (Bár ezen a szemantikai hálóval való tárolás sokat segít, mivel hasonló asszociált szókörnyezetben fordul elő a kutya és a kutyát szó. Ekkor viszont az asszociációt leíró linkhalmaz duplikált tárolása jelent többletet.) A harmadik probléma, hogy a toldalékok nem élhetnek önálló életet és ezáltal a toldalék által önállóan hordozott jelentés – a jelentésmódosító, viszonymeghatározó tulajdonság – nem kristályosodhat ki, nem válhat a szemantikus háló csomópontjává. A toldalékolt, vagy igekötős szavak felbontása morfémákra, igekötőkre, szótőre, képzőkre, jelekre, ragokra megnöveli a szemantikus háló szövetének finomságát és árnyaltabb szemantikai közelségvizsgálatot tesz lehetővé. Hangsúlyozni kell azonban, hogy jelen megoldásban az igekötő, szótő, képző jel, rag kategóriák nem értelmezhetők és feleslegesek, egyszerűen csak az önálló jelentéssel, jelentésmódosító hatással bíró morfémák feltárása a cél.

Ismert módszerek

A toldalékolt szavak morfémákra való bontására alkalmas eljárások két fő csoportba tartoznak:

  • Nyelvtani elemzéssel működő

  • Statisztikai elven működő.

A nyelvtani elemzésen alapuló szóelemzők a nyelv nyelvtanát alaposan ismerők, többnyire nyelvészek közreműködésével készülnek. Jellemzőjük, hogy nem csak a szavak morfémákra bontását, hanem a morfémák lexikális alakjának meghatározását (fára → fá+ra → fa+ra) is elvégzik, továbbá meghatározhatják a morfémák morfoszintaktikai tulajdonságait is (fa: főnév; +ra: helyhatározó rag). Az általában kivételek, betűváltozások, hasonulások, stb. miatt nem egyszerű feladatot a kétszintes morfológia fő eszközével, a véges fordítóval (FST, Finite State Transducer) automatizálják, valamint kivételszótárakat alkalmaznak, mindezt nagy és alapos emberi előkészítő munka eredményeként (Prószéky G. - Kis B. 1999). A módszer alkalmazhatóságáról meggyőzhet minket a MorphoLogic cég munkássága, amelynek WORD-be integrált helyesírásellenőrző programmodulját használta ezen mondatok írása közben a szerző (Lásd Microsoft WORD™ Névjegye). Egy másik, szintén nyelvtani elemzést alkalmazó program Hornyánszky Simon (2005) beszélgető robotja.

A nyelvtani elemzésen alapuló rendszerek általában nem nyílt rendszerek, ami azt jelenti, hogy új szó, szókapcsolat megjelenésekor azt nem tudják emberi beavatkozás, módosítás nélkül kezelni.

A statisztikai elven működő szóelemzők a nyelv szavaiban található részek, kapcsolódások relatív gyakoriságából kiindulva tagolják a szavakat morfémákra. A statisztikai elvű nyelvfeldolgozás, a nyelvbeli törvényszerűségek, a nyelvtani szabályok szövegből való automatikus kinyerése újabb keletű tudomány, mely arra a megfigyelésre alapoz, hogy az emberek előbb tanulják meg a nyelvet használni és megérteni, mint ahogy megtanulnák a nyelvtani szabályokat az iskolában. Tehát a nyelv, a nagymennyiségű szöveg (és a szöveg használatakor társuló egyéb, pl. vizuális információ) teljességében hordozza a megértéséhez szükséges információt, benne a nyelvtaninak nevezett összefüggéseket. A statisztikai elvű nyelvfeldolgozás feladata ezt statisztikai, matematikai, adatbányászati eszközökkel kinyerni. Tehát ezek a rendszerek nyílt rendszerek, öntanuló módon tesznek szert a nyelvtani ismeretekre.

A témához legközelebb álló egyik ilyen eszköz Bodon Ferenc morfématanuló programja (Bodon, 2006). A program nyelvfüggetlen, a szavak morfémákra való tagolását, a morfémakategóriák kialakítását a nagymennyiségű szöveg megadása után automatikusan végzi. Módszere a következő: a szöveg szavait a Frey Tamás által kidolgozott algoritmussal létrehozott minimális méretű végesállapotú automatában tárolja, majd olyan állapotokat keres, melyekre a befutó élek és a kifutó élek számára teljesül egy paraméterezhető összefüggés, abból kiindulva, hogy a szótő és a ragok kapcsolódását az jellemzi, hogy sok szótőhöz járul ugyanaz a rag és egyúttal egy szótőhöz többféle rag szokott kapcsolódni. A módszer előnye, hogy a beazonosított állapot utáni összes toldalék hozzárendelhető az állapotba befutó bármely szótőhöz, és megfordítva, az összes befutó szótőhöz kapcsolható bármely toldalék, ilymódon a szótárban nem szereplő új, toldalékolt szavak létezése valószínűsíthető. A módszer kulcskérdése a kapcsolóállapot felfedezését szolgáló paraméterezhető összefüggés helyes meghatározása. Bodon szerint a befutó és kifutó élek számának szorzatára állítható fel alsó korlát, melyet meghaladó állapotok morfémakapcsoló állapotnak számítanak. További megszorítás tehető külön-külön a befutó és a kifutó élek minimális számára. A módszer hátránya, hogy az egyszer megkonstruált minimálfa egy szó miatt csak újraépítéssel bővíthető.

A Javasolt Morfémafeltáró Módszer

A Tudor programban alkalmazott módszernél célkitűzés volt, hogy inkrementálisan tanuljon, azaz a korábbi belső struktúra egyszerűen bővíthető legyen a felismert új toldalékkal. A rendszer a szó két részre – az egyszerűség kedvéért nevezzük szótőnek és ragnak – tagolása után az eredeti szót törli, a szótövet és a ragot beszúrja az adatbázisba. Már létező szavak újbóli beszúrása csak a szemantikus hálóban jelent változást, a szótárban nem.

A módszer jellemzője, hogy anélkül képes egy szót szótőre és ragra tagolni, hogy a szótárban már benne lenne a szótő. További jellemző, hogy a szavakat rendezetten tároló Szóvektor mellett a Fordítottvektor vektorban tárolja a szavak fordított alakját, szintén rendezett sorrendben. A következőkben egy példán keresztül mutatjuk be az algoritmus működését.

Az input mondat soronlevő szava a házat, mely már beszúrásra került a Szóvektorba és a Fordítottszó vektorba. A korábbi inputok révén a két vektorban a sok, itt nem feltüntetett szó között megtalálhatók a lentebb adott tartalmak. Hely hiányában az általános algoritmus megadása helyett egy konkrét példán keresztül mutatjuk be a módszert. A ragkereső szöveges algoritmust a vektorok után helyeztük el a könnyebb követhetőség érdekében.

Az alkalmazott fő vektorok

Potenciális szótő és potenciális rag keresése:

A szó darabolása ciklusban hátulról, egyre növekvő hosszúságú levágásokkal, ill. amíg ragot nem talált.
	
	háza|t → nem rag. (ez a folytatásból derült ki..)
	ház|at → rag lehet.
	Megkeresni a  Szóvektor-ban az összes, a potenciális szótővel kezdődő, annál hosszabb szót:
		háza
		házam
		házamat
		házamban
		házat
		házban
		
	Ha nincs legalább négy (K1 = 4) szó, akkor a szóról nem állapítható meg, hogy ragozott. Vége.
	
	Egyébként ciklus az ilyen szavakra:
		Feltételezzük, hogy a szó szótő+rag alak, ahol a ház a szótő.
		A Fordítottvektor-ban megkeresni a ciklusban éppen vizsgált szó fordított ragjával kezdődő fordított szavakat. Pl. a|… szavak:
			agam		mag
			atlobmorel	lerombolt
			atnári		iránt
			azáh		ház
		Levágva a ragot (a-), a kapott szavakat visszafordítva számláljuk, hány szerepel, mint szótő a szóvektorban. (Ezek a támogatószótövek.) 
		Minden fordítottraghoz számláljuk, hogy hány támogatószótő adódott. 
	Végül megszámláljuk, hány fordítottrag (a-,ma-,tama-, stb) esetén haladta meg a támogatószótövek száma a K2 = 6 értéket, ha ezek száma eléri a K3 = 4 limitet, akkor a visszaadott eredményben van a szótőre + ragra felbontott eredeti szó.
						

Természetesen a megadott K1, K2, K3 értékek csak irányértékek. A következő ábra mutatja a ragok megtalálásának részleteit. Megfigyelhető, hogy hamis felbontás (lerombolt+a) is részt vehet az új rag megtalálásának támogatásában. Ezek hatását a Ki konstansok növelésével csökkenthetjük. Egy levágott fordítottrag támogatószótöveinek keresése elmarad, ha a fordítottragnak megfelelő nemfordított alak már szerepel a ragok között, lásd az ábrán a 4. sorszámú naplóbejegyzést.

A ragok megtalálását dokumentáló Naplófájl részlete

Egy 50000 szót tartalmazó szövegből 65 ragot tanult meg a program, csak az új inputként kapott szavakat próbálva felbontani. Ez az érték növelhető a részben már felbontással adódott szótárbeli szavak, köztük már felismert toldalékok újbóli sorbavételével.

A tesztek megmutatták, hogy a statisztikus elvű morfológia esetén is előfordulhatnak hamis felbontások, főként kis Ki konstansértékek alkalmazása esetén. (Nevezhetjük emiatt valamennyire nyelvfüggőnek is az algoritmust.) Ezek elsősorban az egybetűs szavak – a,s,e – miatt adódnak, amint az alábbi ábra is mutatja, melyek szótőként való alkalmazását egy felügyelt tanítással megakadályozhatjuk, büntetve a programot, ha hibát vétett a tanulás során. Másik hibaok a szemetes forrásszöveg, melyben, mint a mutatott esetben is, ak szó is előfordult. Ilyen leginkább szóelválasztásokból származik, melyek elkerülésére a szöveg előfeldolgozását végezhetjük.

Az egybetűs szavak hibát okozhatnak

Összefoglalva az elmondottakat, megállapíthatjuk, hogy a bemutatott statisztikai elvű morfológiai program bizonyította alkalmasságát morfémák statisztikai alapokon történő automatikus feltárására. Az ismertetett algoritmus előnye a teljesen inkrementális öntanuló működés és a nagyfokú nyelvfüggetlenség. További elemzést igényel a kisszámú, de hatásában továbbterjedő hamis felbontás kiszűrése.

Beszédértés, a jelentés megragadásának szintjei

A beszéd és a beszéd megértése egy adó-vevő viszony, amelyben több szintet különböztethetünk meg. Az egyik felbontás szerint szintaktikai, szemantikai, pragmatikus és intencionális szinten zajlik a közlendők átadása. Míg a szintaktika a mindjét fél által elfogadható szerkezetű, közös nyelvtan alkalmazásával megfogalmazott mondatok képzésének ismereteit rögzíti, a szemantika a mondatnak a szavak jelentéséből összeálló alapjelentését takarja. Pragmatikus, gyakorlati jelentés alatt már a szövegkörnyezet, a szituáció által valószínűsített másodlagos jelentést értünk, míg a legmagasabb szint a beszélő szándékait, hitét, meggyőződését implicit módon, a tágabb kontextusból kiérezhetően kifejező jelentést takar.

Lássunk az előzőek megvilágítására egy példa párbeszédet!

Anya: Láttad a fiad ellenőrzőjét?
Apa: Miért? Mi van benne?
Anya: Már megint karót hozott.
Apa: No és. Nem kellene szegényt annyira hajtani.
Anya: Tudom, véded, mert Te sem voltál jótanuló...

Nézzük azt a mondatot, hogy Már megint karót hozott.

Szintaktikailag egy rejtett, az előző mondatokból ismert alanyú mondat, összetett időhatározóból, tárgyból és állítmányból áll. Szemantikailag azt jelenti: Újra egy nagy bottal jött haza. Pragmatikus jelentése az ellenőrző szó által felszínre hozott oktatási témakörben a karónak elégtelenre változik: Elégtelent kapott ismét. Végül, a „Te sem voltál jótanuló” szövegrész által megerősítetten kiérezhető a párbeszédből az Anya aggódása a fia sorsa iránt: Ő sem fogja többre vinni, mint az apja, ha így folytatja.

A következőkben a jelentés szemantikai szinten való megragadására mutatunk be egy megvalósított példaprogramot. Az alkalmazott algoritmushoz definiálásra kerül a jelentés fogalmának egy árnyaltabb megközelítése, valamint a mondatok jelentéstávolságának egy egyszintű, szemantikus hálón és morfémák statisztikai jellemzőin alapuló definíciója, alapvetően a Quillian-i jelentésdefinícióból kiindulva.

Szemantikai távolság alapú mondatkereső rendszer

A 21. század kezdetére az emberiség a tények, adatok hatalmas mennyiségét halmozta fel. A feladat mindezt aktivizálni, belőle tudást előállítani. Egy lehetséges út ehhez az adatok átstruktúrálása, új módon való reprezentálása. (V.ö. szemantikus web. A szemantikus web a web következő generációja, mely az adatokat olyan módon szervezve tárolja, hogy a felszíni adatok mellett az adatok jelentésére, belső összefüggéseire vonatkozó metaadatokat is tárol, llehetővé ezáltal, hogy olyan alkalmazások készüljenek, melyek segítségével a gépek komplex emberi problémafelvetésekre lesznek képesek választ adni. Nem csak az adatot, hanem annak jelentését is tárolni fogja, a jelentés pedig nem más, mint azok a szerepek, amelyben az adat valamilyen formában hasznosul.) A hangsúly az adatelemek közötti dinamikus asszociációkon van. Az adatelemek tárolása helyett a cél a tények és módszerek közötti hálózat felépítése, mely kapcsolatiság tükrözi azokat a viszonyokat, mely közöttük a valós világban, továbbá az emberi agyakban fennáll. Ebben a küldetésben az egyik fő kihívás a jelentés rekonstruálása, kinyerése. A legalkalmasabb tudásszemléltetési módszer erre a célra az elsőként Quillian által javasolt szemantikus háló. Ez az erőteljes technika reneszánszát éli napjainkban. Ehhez kapcsolódva az alfejezet a mondat jelentésének egy új definícióját adja és bemutat egy új technikát az olyan mondatok keresésére, melyek egy adott mondathoz közeli jelentéssel bírnak.

Információ előhívó és információ szűrő rendszerek

Az ezen rendszerek által kivitelezett funkció hozzásegíti az embereket, hogy kinyerjék a szükséges és releváns információt ebből a gigantikus adatfolyamból. A különbség az információ előhívó (information retrieval, IR) és az információ szűrő (information filtering, IF) rendszerek között a forrásadatok statikus vagy dinamikus jellege. Az előhívás egy adott adatmenyiségen dolgozik, míg a szűrés egy adatfolyamon fejti ki hatását. Az eredmény a kiválasztott adatok halmaza lesz, elsősorban dokumentumok. Az előhívás, vagy a szűrés kritériuma a szoros megfelelés egy kulcsszóhalmaz, egy adott téma, lekérdezés vagy felhasználói profil tartalmának.

Ezen alfejezet célja egy mondatkereső, válaszoló rendszer bemutatása, amely szintén egy információ előhívó rendszerként fogható fel. Milyen technikákat alkalmaznak az információ előhívó rendszerek? Az (O’ Riordan, Sorensen, 2006) alapján a következő választ adhatjuk:

  • Szövegkeresés, mintaillesztés

  • ÉS, VAGY, NEM logikai operátorokkal kiterjesztett szövegkeresés

  • Vektortér modell: a dokumentumot és a lekérdezést reprezentáló vektorok közötti szöget használja a hasonlóság számításához. A vektorokat a fogalmak terében súlyozott koordinátákkal adjuk meg. A súlyokat statisztikai elemzések szolgáltatják. Minél gyakoribb a fogalom előfordulása, a súly annál kisebb: wt = fit*log(N/Nt), ahol fit a t fogalom előfordulási száma az i dokumentumban, N pedig a dokumentumok száma a gyűjteményben, Nt pedig azon dokumentumok száma a gyűjteményben, amelyek tartalmazzák a t fogalmat.

  • Tezaurusz: szinonimacsoportokat alkotó szavak, kifejezések gyűjteménye. Ezekkel elkerülhetjük a hasonló jelentésű, szinonim szavakat, és az egyalakú homonimákat és olyan dokumentumokat is megtalálhatunk, melyek hasonló jelentésű, de eltérő alakú szavakat tartalmaznak.

  • Bayes következtető háló: egy ciklusmentes gráffal megadja a dolgok közötti függőségeket. A leszármaztatott dolgok valószínűségei a gyökér csomópontokban adott valószínűségekből számíthatók.

  • Rejtett szemantikus indexálás: a szövegben található koncepciókat, vagy szemantikus relációkat a szavak közötti asszociációkkal írja le. A dokumentum és a felhasználói profil közötti összehasonlítás ezen a magasabb szinten zajlik, nem a szavak szintjén. Ez a módszer a dokumentum egy részét használja fel a koncepciók leírására és a koncepciók terét használja szög számítással a dokumentum és a felhasználói profil közelségének számítására. Egy továbbfejlesztett modell, a téma mezők kódjaival (SFC, Subject Field Codes) dolgozik, melyek előredefiniált koncepciókat, kategóriákat tartalmaznak és a dokumentum minden szavát előzetesen ezekbe osztályozzák. Az egyalakú szavak problémája a szókörnyezetek révén megoldható. A kiválasztás a dokumentumokat reprezentáló vektorok által a kategória térben bezárt szög alapján történik.

  • A konnekcionista modellek főként mesterséges neurális hálókat jelentenek, melyek nagyon sok önálló számítási elemet alkalmaznak. Az előnyük a rugalmasság, mely lokalizálható az éppen működő neuronokra, melyek nem csak a közvetlenül kapcsolódó szavakat használják, hanem a fogalom környezetét is.

  • A Koncepcionális halmaz elmélet (Concept Set Theory) egy feljövőben lévő módszer az adathalmazoknak a koncepciók egy erőteljes hierarchiában való ábrázolására. Egy dokumentumban rejtett koncepciók, fogalmak meghatározhatók és egy koncepció halmazt formálnak. Ezek a halmazok összevethetők és az eredmények mint a dokumentumok közelségének, hasonlóságának mérőszámai használhatók (Kovács, 2002).

A következőkben bemutatandó módszer a szemantikus indexáló technikához áll közel, de különbségekkel is bír.

Az IF, információ szűrő rendszerek hasonló módszereket használnak a releváns információ kiválogatására egy hosszabb idejű adatfolyamból.

Beszélgető Robotok (Chat Robots)

Miért fontosak a beszélgetőrobotok ezen fejezet számára? A legtöbb beszélgetőrobot előredefiniált tudásbázist, mintaillesztést és véletlengenerálással választott válasz előállítást alkalmaz. Ezek a beszélgetőrobotok kívül esnek a jelen pont témáján. Azonban létezik egy másik csoportjuk, mely megpróbálja megérteni a párbeszédet, nem csak szintaktikai, hanem szemantikai szinten is. És létezik néhány olyan beszélgetőrobot is, mely képes tanulni, egy üres tudásbázisból indulva. Egy áttekintés és elérhetőségek találhatók a következő helyen: http://www.loebner.net/Prizef/loebner-prize.html.

Emeljük ki az öntanuló beszélgetőrobotok közül NICOLE-t! Ezen program céljai közel esnek a mi céljainkhoz:

  • Indulás üres tudásbázissal.

  • Tanulás a felhasználó által használt mondatokból.

  • Válaszgenerálás a tudásbázisból választott mondatok révén.

Sajnos, az alkalmazott technikákat nem publikálták.

A következőkben a fejezet egy saját fejlesztésű, hatékony tanuló képességgel bíró válaszoló rendszert mutat be, mely pl. egy kiváló memóriával bíró személyi titkárként használható. Egy ilyen MI ágens számára nagyon fontos, hogy megragadja a kérdés jelentését, amennyiben jó, releváns választ akar adni, melynek jelentése közel áll a kérdés jelentéséhez.

A mondat Jelentése – egy új definíció

Jól ismert, hogy egy mondat jelentése négy szinten is megragadható:

  1. Szintaktikai

  2. Szemantikai

  3. Pragmatikus

  4. Intencionális

A mondat szintaktikai elemzése eldönti, eleme-e a mondat az adott nyelvnek. A szemantikai szinten a szavak jelentése a kapcsolódásuk, viszonyuk felhasználásával kombinálásra kerül és előáll a mondat egy szószerinti jelentése. A pragmatikus szint már a szavak mögé tekint, felhasználja a kontextus, a szövegkörnyezet információit is, és egy relevánsabb, odaillőbb értelmezést ad. A mondat intencionális jelentését többnyire csak a kontextus, a szöveg- és szituációkörnyezet birtokában, az értelmező kellő tájékozottsága esetén lehet megkapni, és kifejeződik benne a beszélő szándéka, vágya, óhaja, stb. Tömören: olvasás a sorok között.

 

"Within the philosophy of language, one of the most central topics is inevitably the idea of meaning: the meaning of a word, the meaning of a sentence, or the meaning of an utterance, and also the relation between these three different notions."

"A nyelv filozófiáján belül, az egyik leginkább központi kérdés kétségtelenül a jelentés fogalma: a szó jelentése, a mondat jelentése, vagy a kifejezésmódban rejlő jelentés, és természetesen ezen három eltérő dolog viszonya."

 
 --White, 2011

Ha meg szeretnénk érteni a mondat jelentésének lényegét, a Sapir-Whorf Hipotézist szintén érdemes figyelembe venni:

  • Hogyan reprezentálják az emberek a tudást?

  • A tanulmányok megmutatták, hogy az emberek a lényegre emlékeznek inkább, semmint a szavakra. Létezik valamilyen nemverbális nyelv?

  • Sapir-Whorf: Az általunk beszélt nyelv alapvetően meghatározza, miként gondolkozunk. A nyelvek kategória struktúrákat építenek fel. (*, 2006)

Ez az utolsó állítás nagyon fontos: a számítógépi reprezentációnak rekonstruálnia kell ezeket a kategória struktúrákat, szemantikus hálók, keretek, vagy koncepciók hierarchiája formában. A jövőben célszerű lenne az információt rögtön ilyen szerkezetekkel tárolni, a szokásos .doc, vagy .html formátum helyett, megelőzendő az adatbányász feladatokat, az adatok újjászervezését a kereső szerverek által! A Semantic Web kezdeményezés ebbe az irányba hat.

A mondat jelentése több, mint a szavai jelentésének összessége. A szintaxis szócsoportokat, frázisokat szeparál el, kifejezések szerkezetét és hierarchiáját kódolja és egy sorrendet ad. Egyes kétértelműségek már szintaktikai szinten feloldhatók.

A mondat jelentésének ismerete magában rejti az ismeretét a szituációnak, amiről szó van, milyen objektumok, személyek, helyek, idő, és így tovább van említve. A (van Santen, 1994) referencia hangsúlyozza a szövegkörnyezet fontosságát.

A szerző definíciói a mondat jelentéséről, különböző nézőpontokból, a következők:

Az emberiség szemszögéből a mondat jelentése egy olyan struktúra, melynek alkotói az összes szituációnak, melyben a mondatot, vagy részeit használták, az asszociált jellemzői. A különféle jellemzők és asszociációk eltérő fontossággal, súllyal bírnak.

A statikus jelentése egy mondatnak egy ember számára egy többszintű hierarchiában asszociált verbális, és/vagy nem verbális, az ember számára belső és/vagy külső jellemzői mindazon szituációknak, amikor a mondatot, vagy részét használta, vagy felismerte. Ez a létrehozása, és/vagy megerősítése az asszociációs hierarchia aktív neurális reprezentációinak, beleértve a használt mondatot, építi fel a jelentést. Ez a jelentés nem abszolút statikus az ismétlés, felejtés, változó mentális állapotok miatt.

A mondat dinamikus jelentése az a mentális állapotváltozás, amely a többszintű hierarchiában lezajlott az agyban a hallott, vagy olvasott mondat hatására. A mondat dinamikus jelentése egy, a mondat és az értelmező közötti viszony. A mondat maga a társadalmi jelentést hordozza, és hogy abból az egyén számára mennyi elérhető, az alapvetően az értelmezőtől függ. A mondat jelentése az a változás, amit az értelmezőben létrehozott: függvénye annak, létezik-e már egyáltalán aktív egyező mintázat, melyet a korábbi asszociációk révén aktivizálhat. A mondat csak valami, vagy valaki számára bír jelentéssel. (V.ö. a kognitív pszichológia sémáival.)

Az objektumok szintén nem fontosak, az objektumokat az értelmező csak az asszociált jellemzőiben érzi. Az objektumok időben, és/vagy térben asszociált attribútumhalmazok. Az objektumok és a koncepciók, fogalmak ugyanazok egy értelmező számára: kapcsolt jellemzőhalmazok.

Egy szó jelentése hasonlóan definiálható egy kisebb többszintű hierarchiával, mely a szót tartalmazó mondat hierarchikus struktúrájának része.

Mondatkeresés szemantikus távolság alapján

A következőkben a jelentés alapján való mondatkeresésre kidolgozott alkalmazás, egy egyszerű szemantikus távolság minimáló kerül részletezésre. A rendszer egy válaszoló robotként működik és a tanulásnak egy nagyon egyszerű formáját alkalmazza: a kapott kérdést állítássá alakítja és tárolja. E mellett megtanulja a szavak közötti kapcsolatokat is, a háttérben felépítve egy asszociációs hálót. Általánosabban értelmezve a mondat lehetne egy bekezdés, egy szövegkörnyezet, egy szöveg. A cél egy olyan válasz kiválasztása, mely a legközelebbi egyezést mutatja jelentése szerint a kérdésből kapott állítással. Induláskor a válasz a kérdés állítássá alakított formája lesz, azaz a robot egy elfogadható választ ad, közel nulla új ismerettel. Összegyűjtve egy nagyobb mennyiségű mondatsokaságot, a válasz már más is lehet, mint a kérdés állítás alakban. Amiatt, hogy a válasz nagy százalékban a kérdés állító alakja lesz, az első tíz legrelevánsabb válasz kerül listázásra a relevancia értékkel, melyet a kérdés és a talált válasz jelentésközelségeként számít a rendszer. Ez a tíz mondat úgy fogható fel, mint a gondolatok, melyek a robot ’agyában’ a kérdés hatására keletkeztek.

Az alkalmazott egyszerű modell a következő jellemzőket veszi figyelembe a jelentést meghatározó paraméterekként:

  • A mondat jelentését: az egyidejűleg jelen volt, asszociált szavak halmazát

  • Egy szó specifikusságát

  • A mondatban előforduló két szó pozíciójának viszonyát

  • A két szó mondatokbeli egyidejű előfordulásának gyakoriságát.

Egy szó jelentését egy dinamikus rekord reprezentálja. A rekord frissül, ha a szó újabb mondatban fordul elő. A következő mezőket tartalmazza:

  • A hozzátársított különböző szavak féleségszáma, ezzel mérjük a specifikusságot

  • A hozzátársított különböző szavak vektora

A vektor egy eleme a következő mezőket tartalmazó rekord:

  • A társított szó azonosítója

  • A társított és a tulajdonos szó előjeles átlagos távolsága

  • A társított és a tulajdonos szó együttes előfordulási száma a látott mondatokban.

Egy mondat jelentését alapvetően a mondatban található szavakhoz társult szavak halmazainak egyesítése adja. Két mondat jelentésének közelségét alapvetően a két mondat egyesített halmazainak metszetével mérjük, minél nagyobb az egybeesés, a közelség annál nagyobb, lásd az ábrát.

A szemantikus távolság számításához használt társított szóhalmazok metszete

Az alap számítás megadja az erősségét a szói és a szój szavak egy metszetbeli közös szón keresztüli kapcsolatának, ha létezik olyan közös szó a metszetben, amelyen keresztül ezek a szavak kapcsolódnak. Pl. szói = kutya, szój = eb, és mindkettő előfordult együtt valamikor a harap szóval. Az erősséget a szói és a szój specifikusságának szorzatával számítjuk. Egy szó specifikusságát a társított különböző szavak darabszámának reciproka adja. Az ábrán a nagy kúp kis specifikusságot, a kis ’kúpszögű’ kúp nagy specifikusságot jelez a csúcsánál lévő szóra nézve. A jelentésközelség értékét ezután a szói és a szój között az azokat összekapcsoló közös szavakon át számított kapcsolaterősség értékek összegeként vesszük. A transzformált kérdés és a k. tárolt mondat közötti szemantikus közelséget az előzőekben két szó között bemutatott kapcsolaterősségek segítségével, egy dupla for-ciklussal számítjuk, mely a transzformált kérdés minden szavához a k. tárolt mondat minden szavát véve adódó kapcsolaterősségeket összegezve áll elő. A nagyobb érték nagyobb jelentésközelséget ad. A legnagyobb közelséget adó tíz mondat kerül kijelzésre.

Ez az alapalgoritmus még finomítható a két adott szó átlagos mondatbeli távolságának, két szó mondatbeli együttes előfordulása frekvenciájának, valamint a szói és az összekapcsoló szó mondatbeli átlagtávolságának a szój és az összekapcsoló szó mondatbeli átlagtávolságához való hasonlósága függvényében. Ezek a minősítő információk empirikus függvények által szolgáltatott szorzók segítségével fejtik ki hatásukat a szemantikai távolság értékre.

Az alkalmazott módszer a kérdés állítássá való transzformálásától eltekintve nyelvfüggetlen. Az ábra mutatja a futó alkalmazást egy olyan bekarikázott mondattal, amelyben nincs egyetlen, a kérdésben előforduló szó sem, jelentése alapján viszont egyértelműen közel áll ahhoz.

Szemantikus közelség alapján választott válaszok

Összegzés, a lehetséges továbbfejlesztések

A bemutatott válaszoló rendszer nagyon kontext-érzékeny. Használható pl. egy internetes kereső rendszer részeként a találatok további finomítására, jobban illeszkedő találatok kiválasztására a keresés által produkált sokaságból, alkalmazva a keresett tartalom és a talált dokumentumok mondatai közötti szemantikus közelség értéket.

További lehetséges és szükségesnek bizonyult továbbfejlesztés egy szóelemző, morfoló modullal történő kiegészítés, különösen addiktív, toldalékoló nyelvek esetében, a magyar nyelvnél ez elengedhetetlen. A válaszminőség fokozását szolgálná egy rövidtávú memória alkalmazása, mely figyelembe venné a válaszolási folyamatban felhasznált megelőző, korábbi mondatok jelentését is, letárolhatnánk a szomszédos mondatok jelentését is a letárolandó mondathoz, alkalmazhatnánk egy témakiemelő algoritmust a rövidtávú memória modellezéséhez, valamint gyorsíthatnánk a meglévő programkódon.

NLP a gyakorlatban

A számtalan lehetséges alkalmazási mód - automatikus szövegkivonatolás, párbeszéd-elemzés, morfológiai elemzés, gépi fordítás, beszélgető rendszerek – közül a humanoid robotok szempontjából az utolsó az érdekes. Az ezen a téren napjainkban elért áttörésről szólunk röviden a Wikipedia angolnyelvű verziója alapján.

Az IBM cég többször bizonyította elkötelezettségét a gépi intelligencia irányú kutatásokban. Elegendő emlékeznünk a Deep Blue sakkszámítógép 1997-ben Garri Kaszparov sakkvilágbajnok legyőzésével elért sikerére. Hasonlóan nagy eredményt ért el a kutatóegyetemek tudósainak bevonásával fejlesztett Watson, mely egy USA-ban honos memóriajáték, szellemi vetélkedő, a JEOPARDY! ember nyerteseinek legyőzésével vonult be a mesterséges intelligencia történelmének mérföldkövei közé. Watson a játékvezető által emberi nyelven feltett lexikális kérdésekre tudta a legkiválóbb emberjátékosoktól (Brad Rutter, Ken Jennings) jobban a válaszokat, és azokat a játék természetes menetébe belesimulva megválaszolta. Watson erejét mutatja, hogy 10:3:2 arányban, magasan verte az emberjátékosokat. A Turing tesztet azonban még nem állná ki, mivel tudása a vetélkedő témaköreire volt specializálva, csak a webről 200 millió oldalnyi információ, 4 Terabyte memórián volt tárolva. A komplett angol nyelvű Wikipédia anyagot is tárolta, ugyanakkor az Internettel nem állt élő kapcsolatban. Azonban fontos jellemzője, hogy képes tanulni. Napjainkban töltik fel mesterséges agyát orvosi ismeretekkel, hogy az orvosokat támogató szuperszakértőt hozzanak létre ezáltal. Watson megszemélyesítő képe dinamikus, színváltozással jelzi a válasz jóságába vetett bizalmát.

Watson megszemélyesítő képe

Watson Java és C++nyelveken írt szoftvere több mint 100 technikát alkalmaz a természetes nyelv elemzésére, a válaszhoz szükséges források beazonosítására, válaszjelöltek találására és generálására, ismeretelemek találására és relevanciájuk értékelésére, illetve a végső válasz összeállítására. Az alkalmazott tudásbázis szerteágazó forrásokból építkezett: enciklopédiák, szótárak, újságcikkek, irodalmi művek, Internet források. Tezauruszok, taxonomiák és ontológiák szolgálták a rugalmasságot és átfogó felfogást. A DBPedia, WordNet és Yago adatbázisokat is használta. A program fő szoftvermoduljait a következő ábra mutatja.

Watson kérdésmegválaszoló rendszerének felépítése

A Jeopardy! vetélkedőt megtekinthetjük a YouTube-on: http://www.youtube.com/watch?v=WFR3lOm_xhE

Rövid részletet láthatunk az alábbi videón:

video lejátszás

Beszédgenerálás

Kempelen Farkas beszélőgépétől hatalmas utat tettünk meg a mai kiváló szintű mesterséges beszédet használó gépekig, mint pl. Watson.

Kempelen Farkas beszélőgépe

A természetes emberi beszédhez hasonlító beszéd képessége fontos a robotok, és különösen a humanoid robotok számára. A gépi beszéd generálásával a beszédgenerálás, beszédszintézis tudománya foglalkozik. Egyszerűbb esetben egy felolvasó, azaz text-to-speech rendszer, melynek hangja nem hordoz érzelmeket és felismerhetően gépi.

A szintetizált beszédet felvett emberi beszéddarabkák egymáshoz fűzésével lehet a legegyszerűbben előállítani. Speciális célokra, ahol teljes szavak, vagy különösen teljes mondatok tárolhatók, a beszéd minősége kiváló, de alkalmazási területe szűk. Kisebb, fonéma szintű elemeket alkalmazó megoldások nagy szabadságfokkal bírnak, de a beszédminőség gyengébb.

A beszédgeneráló rendszerek tipikus felépítését mutatja az alábbi ábra:

A beszédgenerálás tipikus folyamata

A beszédgenerátor két fő része a front-end és a back-end. A front-end két fő feladata a szöveg normalizálása, előfeldolgozása, amelybe pl. a szám alakban adott értékek szó alakkal történő megadása tartozik, valamint a szöveg tagolása beszédegységekre, mint pl. mondatok, szófordulatok, szókapcsolatok, majd végül a szavak fonetikus átírása zajlik. Az előbbi prozódikus és fonéma átírás eredményét kapja a back-end, vagy más néven szintetizátor, mely a szimbolikus nyelvi információkat hanggá alakítja. Egyes rendszerekben ez még kiegészülhet hangszín és fonéma időtartam beállítással, mely finomítja a beszédet (van Santen, Sproat és társai, 1997; van Santen, 1994).

Napjainkban a beszédgenerátorok színvonala megfelel az elvárásoknak. Gyakorlatilag az összes számítógépi operációs rendszer nyújt támogatást a beszédfeldolgozáshoz és a beszédszintézishez. A gépi beszéddel, azon belül kiemelten a magyar beszéd speciális képzési problémáival is foglalkozik a Németh és Olaszy (2010) szerkesztésében megjelent könyv.

Kérdések a fejezet anyagához

  • Mondjon olyan eseteket a természetes nyelvek feldolgozásánál, amikor a kontextus segít a megoldásban!

  • Mit értünk morfológia alatt?

  • Milyen alapgondolatokon alapszik az öntanuló morfológia?

  • Melyek a mondat jelentésének szintjei?

Felhasznált és ajánlott irodalom

1. Szappanos A. (2005) A nyelvspecifikus hangfeldolgozás fejlődése: innátizmus és modularitás, 2005. http://www.kfteam.hu/iromanyok/nyelvspecifikus-hangfeldolgozas-fejlodes.pdf, Elérve: 2011.03. 28.

2. Gósy, M. (2004) Fonetika, a beszéd tudománya. Osiris Kiadó, Bp., 2004.

3. Pinker, S. (1999), A nyelvi ösztön. Hogyan hozza létre az elme a nyelvet? Typotex Kiadó, Bp., 1999.

4. Prószéky G. - Kis B. (1999) Számítógéppel emberi nyelven, SZAK Kiadó, 1999.

5. Czap, L. (2000) Lip representation by Image Ellipse. 6th International Conference on Spoken Language Processing Proceedings Bejging, China, Proceedings Vol. IV. pp93-96.

6. Dudás, L. (2003) A Semantic-Distance Based Sentence Searching System and a Few Possible Applications MicroCAD’2003 International Scientific Conference 6-7 March 2003, Miskolc, Section N. pp.23-28.

7. Hornyánszky S. (2005) Ragozott szavak kezelésére alkalmas, Magyar nyelvű beszélgető robotprogram kidolgozása Szakdolgozat, Miskolci Egyetem, 2005.

8. Bodon Ferenc (2006) Ragelemző szoftver - Suffix analyser http://www.cs.bme.hu/~bodon/magyar/program/c++/rag/ragelemzes.htm#nevezetes Elérve: 2006. 01.27.

9. C. O’ Riordan – H. Sorensen (2006) Information Filtering and Retrieval: An Overview http://citeseer.nj.nec.com/483228.html Elérve 2006.01.29.

10. L. Kovacs (2002) A Fast Algorithm for Building Concept Set MicroCAD 2002, International Scientific Conference 7-8 March 2002, Miskolc Section H, p.113-118.

11. R. White (2006) Theories of Meaning http://www.philosophy.leeds.ac.uk/Ugradinfo/Philosophy/Level2/2070_theories_of_mean.html, Elérve 2006.01.30.

12. * (2006) http://www.cs.duke.edu/~cig/cps170/notes/feb1/FEB1.htm, Elérve 2006.01.30.

13. **(2006) http://www.ohiou.edu/~linguist/soemarmo/l270/Notes/sentmean.htm, Elérve 2006.01.30.

14. J. P. H. van Santen, R. W. Sproat, J. P. Olive, és J. Hirschberg (1997) Progress in Speech Synthesis. Springer: 1997. ISBN 0-387-94701-9

15. J. P. H. van Santen (1994) Assignment of segmental duration in text-to-speech synthesis. Computer Speech and Language, 8:95-128, 1994.

16. Németh, G., Olaszy, G. (2010) A magyar beszéd. Beszédkutatás, beszédtechnológia, beszédinformációs rendszerek, Akadémiai Kiadó, Budapest, 2010.

5. fejezet - Tanulás

A tanulás fogalma

A tanulás az emberi kognitív, megismerést jelentő működés legfontosabb eleme. Lényege asszociációk képzése és eltárolása. Az asszociációk időben és térben közeli érzékleteket társítanak. Az érzékletek forrása lehet az ágens környezete, vagy belseje is, utóbbira példa lehet egy hascsikarás fájdalma. Az ágens környezetét célszerűbb úgy definiálni, hogy az a hely, ahol szenzorai vannak, ahonnan a szenzorai által közvetített ingerek érik. Az asszociációk érinthetnek egyszerűbb ismeretszerkezeteket, pl. egyedi érzékletek társítása, mint egy tüskeszúrás megtörténte és az okozott fájdalom társítása, vagy összetett érzékletsorozatokat, pl. verstanulás, illetve magasabb szintű, az agy kategóriaképzése révén kialakult ismerethierarchiában meglévő összetevők közötti kapcsolatképzést, pl. ma találkozott Obama és Sarkozy közlés hatására a tanulás összetett kognitív működéseket kísér: ma elnöki találkozó volt. Ilyen módon új cselekvéseket, viselkedéseket, összetett ismereteket is tanulunk.

A tanulás evolúciós úton szelektálódott alapvető működés, mely nélkül a környezethez való alkalmazkodás és létezés lehetetlen volna. Ebből ered a felejtés fontossága, a már kevésbé fontos, ritkábban előhívott tanultak háttérbe kerülése.

A mesterséges intelligencia tanuló képességének árnyaltsága és sokrétűsége még messze elmarad az emberi tanulás összetettségétől. Ezzel analóg az intelligenciájában megfigyelhető különbség, hiszen nincs tartós intelligencia tanulás nélkül. Megemlíthető itt az előzetes betanítás és a folytonos tanulás közötti különbség. Az első zárt világot feltételez, ahol nem várható fejlődés és elsősorban egyszerű reflex ágensre gondolunk, mely a világnak csak a betanított aspektusait veszi észre és azokra reagál. Fontos kiemelnünk azt, hogy a betanított szabályok nem vonatkoznak új asszociációk, új szabályok képzésének mikéntjére és hiányzik az új, tartós asszociációk képzésének képessége. Bár egy reflex ágens kötött szabálykészlettel is mutathat ugyanazon külső észleletekre eltérő viselkedést, ezek nem jelentenek tartós tanulást és a tárolt szabályhalmaz megváltozását. A változatos reflexiók előállíthatók random generátor általi válasz szelekcióval, mint a beszélgetőrobotok egyszerűbb fajtáinál, vagy rögzített érzékletkészletre reagálni képes belső tárolók alkalmazásával. Vegyük észre, hogy ilyenkor is kötött a szabályhalmaz, mely az ágensnek az észleletekre adott változás-válaszait tárolja.

Egyesek, pl. Russel-Norvig (2000) hajlamosak az összetett reflex ágensek egyik fajtáját, a célorientált ágenst külön kezelni. Hasonlóan megkülönböztetnek hasznosság orientált ágenst, mely szintén célorientált ágens, amennyiben a célja a cselekedetei hasznosságának maximálása. Fontos megjegyeznünk, hogy amíg az ágens beépített programja nem változik meg valamilyen külső, vagy belső hatásra, azaz nincs szabálytanulás, lehet a működés bármilyen változatos és változó elvárásokra, célokra adott válaszaiban tűnhet igen összetettnek és alkalmazkodónak, akkor is reflex ágens marad, legfeljebb a szabálykiértékelés bonyolult segédtevékenységeket is igényelhet, pl. keresést. Leginkább úgy éreztethetjük ezt, ha azt mondjuk, hogy az ágens másolatától is ugyanolyan működéseket várhatunk el – beleértve a random generátor okozta sokszínűséget is -, mint az eredetitől. Hiányoznak a tanulásra, új szabályok, algoritmusok, viselkedés beépítésére vonatkozó szabályok. Ebből a legutolsó megállapításból következik, hogy a reflex ágensek és a tanuló ágensek között nem húzódik nagy szakadék, a kategóriák határa egybemosódik. Másik példaként a reflex ágensek és a tanuló ágensek közötti eltérést érzékeltethetjük olyan számítógépi programokon keresztül, melyeknél első esetben a programkód futása csak az adatokat változtathatja – melyek nem kódolt szabályok és a program nem azok értelmezője –, míg a második esetben a program önmagát is felülírhatja, módosíthatja, különösen kívülről érkező hatásokra reagálva.

Tanulás módszerei az intelligens robotoknál

Amint a szakasz bevezetőjében már említettük, az intelligenciát tanulóképesség nélkül csak korlátozottnak tekinthetjük. Az intelligencia definíciók (Dudás, 2006) egyetértenek abban, hogy az intelligens működés adaptív, képes a környezet változásához, elvárásaihoz alkalmazkodni. Talán a legmodernebb szemlélet ezen a téren a C. Hewitt által képviselt nyílt rendszerek modell, melyek jellemzői:

  • A zárt világ feltételezés lehetetlensége

  • Folytonos változás és fejlődés

  • Állandó inkonzisztencia a tárolt ismeretek között

  • Kommunikációigény a rendszerkomponensek között

  • Decentralizált döntéshozatal.

Mivel a világ lezártsága nem igaz, az állandóan változó környezetben az életbenmaradási haszonra, boldogság-haszonra törekvő ágens akkor lehet sikeres, ha tud igazodni a környezet elvárásaihoz, ezt pedig akkor tudja leghatékonyabban végezni, ha tanulni tud új viselkedéseket, válaszokat, sőt kitalálni is, tehát kreatív. Egy ilyen rendszer egy szabályozott rendszerre emlékeztet, amely állandóan változó környezetben törekszik a célfüggvénye optimálására, de optimálás közben a környezet dinamikusan megváltozik, mielőtt a rendszer az optimumot elérné. Így ’élete’ kvázioptimális állapotok sorozata.

A következőkben Millington és Funge (2009) műve alapján áttekintjük a számítógépes játékokban megjelenő mesterséges intelligencia keretében működő tanulási technikákat. A játékokban a tanulás szerepe a gépi szereplő játék ágens intelligens viselkedésének biztosítása, azáltal, hogy az ágens megtanulja az emberjátékos ellenfél viselkedését, reakcióit, és ezek ismeretében hatékonyabb stratégiát dolgozhat ki ellene. Melléktermékként a gépi ágens karaktere természetesebb, kiszámíthatatlanabb lesz, ami növeli a játékélményt.

Ezeket a tanulási módszereket osztályozhatjuk aszerint, hogy mikor történik a tanulás, mit tanulnak meg és milyen hatással van a tanulás, a tanultak az ágens viselkedésére. A tanuló algoritmusokkal kapcsolatos néhány általános tudnivaló a következő:

Online, vagy offline tanulás

Az igazi tanulás az online tanulás, mely játék közben történik és lehetővé teszi, hogy a játékágens dinamikusan hozzáigazodjon az emberjátékos egyéniségéhez.

Meg kell azonban jegyezni, hogy az online tanulást nyújtó program tesztelése, debugolása igen nehéz az ismételhetetlenség miatt. Offline tanulás esetén a tanulás a játék szintjei közötti váltás közben történhet, vagy még gyakrabban a játék piacra kerülése előtt. Ezt a szorosan véve nem is adaptív működést sok valós játék lejátszásakor adódó adatok feldolgozásával nyerhető stratégiák, vagy programparaméterek formájában csatolják vissza a programba. Ilyen esetben a tesztelés alaposabb lehet. Az elmondottakból következően az offline tanulás sokkal gyakoribb.

Viselkedésen belüli tanulás

Ez az egyszerű és gyakori forma nem változtatja meg a teljes viselkedést, csak a létező viselkedés lefolyásának kismértékű módosítását jelenti. Pl. az ágens képes megtanulni alternatív utak közül egy optimálisat, véletlenül elhelyezkedő akadályok helyét, de nem képes új viselkedést bevonni, mondjuk a mamut lándzsával történő elejtése helyett vermet ásni neki.

Viselkedés tanulás

Ez a jövő játékainak jellemzője. Nehéz és gazdaságtalan implementálni a sok viselkedéselemet, melyből az ágens adott helyzetekre sikeres viselkedést építhet fel. A leginkább szóba jövő terület a döntéshozatal tanulása stratégiai játékokban. Sok rugalmatlan döntési technika helyettesíthető tanulási technikákra épülő döntésekkel.

Egy figyelmeztetés

A tanulás a játékokban korántsem olyan elterjedt, mint hinnénk. Ennek egyik oka a tanulási technikák viszonylagos összetettsége, pl. az útvonalkereső, vagy mozgásgeneráló technikákhoz képest. A legnagyobb gondot az ismételhetőség nehézkessége miatti minőségellenőrzés hiánya jelenti. A hibás tanuló algoritmus miatti hibás tudás kiküszöbölése a hiba megtalálásán túl a tanultakat eredményező hosszú tapasztalatgyűjtési folyamat megismétlését is igényelné, ami gyakorlatilag ellehetetleníti a tanuló algoritmusok tesztelését. A gondot növeli az is, hogy minél rugalmasabb a tanuló algoritmus, annál kevésbé rendelkezünk a játék felett kontrollal. Így kiszámíthatatlan, mit fog megtanulni a játék. Egy módszer lehet erre a megtanulható viselkedések korlátozása. A korlátozó pontokban adódó viselkedések tesztelésével ellenőrizhető a lehetséges tanultak elfogadhatósága.

Túltanulás

A többrétegű Perceptron mesterséges neurális hálók tanulásából ismert probléma egyes játéktanuló algoritmusokat is sújt. Nevezetesen, ha a háló túl sok neuront tartalmaz a megtanulandó mintaesetekhez képest, akkor hajlamos a mintákat adatbázis-szerűen megtanulni, ugyanakkor a tanítómintáktól kissé eltérő inputokra már durva hibával válaszol. Ez az n-edrendű polinomok illeszkedési pontok közötti erős oszcillálásával magyarázható. Megoldást és jó általánosítást a neuronok számának redukálása eredményez.

Az approximáló görbe jobb általánosítást eredményez

A számítógépi játékprogramokban alkalmazott tanulási módszerek széles skálán mozognak, és az egyszerűbb fajták számára a tanulási módszer megnevezés igen hízelgőnek tűnhet.

Az egyensúly megtalálása

A tanuló algoritmusok alkalmazása nagyon kényelmesnek és attraktívnak tűnhet, mivel kevés általános algoritmust kell leprogramozni és a működés mégis nagyon változatos lesz. A valóság azonban nem ilyen szép. A tanuló algoritmusok sok gyakorlatot, érzéket és tesztelést kívánnak. Ezért, bár nagy a csábítás, a javaslat az, hogy alaposan mérlegeljük a hagyományos és a tanuló algoritmusokkal elérhető előnyöket és a befektetendő munkát.

Játékágensek tanuló módszerei

A következőkben Millington és Funge (2009) művére támaszkodva rövid áttekintést adunk a számítógépes játékágensekben alkalmazott tanuló algoritmusokról, az egyszerű paramétermódosítástól az összetett mesterséges neurális hálókig. Meg kívánjuk jegyezni, hogy az összetettebb algoritmusok saját kiterjedt irodalommal bírnak.

Paraméter módosítás

A játék valamely paramétere kihat a játék minőségére, de a paraméterérték és a játékminőség közötti összefüggés előre nem ismert. A függvény pontjai a játék során állnak elő. Mivel a függvénygörbe nem folytonos és nem differenciálható, diszkrét állapottereken is működő optimumkereső algoritmusokat szükséges használni. Lehetnek a diszkrét pontokkal adott függvények többdimenziósak is, azaz több paraméter értékét kell keresni a függvényoptimum megtalálásához.

A legegyszerűbb módszer a mindenkori legjobb függvényértéket eredményezett paraméterértékek elmentése és alkalmazása a későbbiek során. Amennyiben kellő mennyiségű lejátszott játékból rendelkezésre áll egy diszkrét állapottéren kapott pontsokaság alapjában a játszmák jóságának függvénye, de valamilyen ok miatt a függvénypontok keletkezésével párhuzamosan nem tároltuk el az extremális értéket adó helyet, akkor megpróbálhatjuk megkeresni valamilyen lokális kereső algoritmussal. Leggyakrabban alkalmazott a hegymászó keresés, mely azonban gyakran csak lokális optimumot ad. Nagyobb esélyt adnak a globális optimum fellelésére a momentum módszer, vagy a többszörös indítású hegymászó algoritmus. A momentum módszernél a függvény bemenő értékét egy darabig még azután is szisztematikusan továbbléptetjük, amikor a függvényérték rossz irányba változik. Ezáltal átlendülhetünk rövid lefelé vivő függvényszakaszokon és találhatunk a lokális csúcstól jobb függvényértékű helyet. A többszörös indítású hegymászó algoritmus azáltal növeli meg a globális optimum megtalálásának esélyét, hogy a ’hegyre’ több hegymászót helyez véletlenszerű pontokra. Így megnő az esélye, hogy a globális optimum hegyoldalára is jut hegymászó.

Nagyobb eséllyel találja meg a globális optimumot a szimulált hűtést alkalmazó, vagy a tabu algoritmus, lásd pl. (Dudás, 2006). Ezen utóbbi algoritmusok megfelelő paraméterezés esetén képesek a globális optimum fellelésére, a gond csak az, hogy a megfelelő paraméterek megtalálása egy újabb keresési feladat… Sokszor azonban kompromisszumot kötünk, a keresés hatékonysága érdekében megelégszünk gyakorlatilag jó kvázioptimális, esetleg lokálisan optimális megoldással is.

Akció előrejelzés

A játékágens felruházása az előrelátás képességével. A játékok többségében a gép és az emberjátékos között vetélkedés folyik. Ilyenkor előnyös a gépi ágens számára, ha előre látja az ember cselekedeteit. Ez a fajta gépi intelligencia arra alapoz, hogy az emberekre jellemző a megszokás, a járt út el nem hagyása, a cselekvések ismétlése.

A továbbiak egyszerűbb követhetősége érdekében az emberjátékos által kivitelezett lépéseket jelöljük az ABC nagybetűivel, ahol ugyanaz a betű jelöljön ugyanolyan tevékenységet. Például egy négylépéses tevékenységsorozat jelölése lehet: BKLT.

Ezek után tételezzük fel, hogy rendelkezésre áll az emberjátékos játékára a korábbi játékrészben megtett lépéseinek a listája egy karaktersorozat, sztring formájában. A következő tevékenységét jól valószínűsítheti a gépi ágens, ha a karaktersorozatban meghatározza az egyes karakterek előfordulási gyakoriságát. Ha pl. a K cselekvés kétszer olyan gyakori, mint a B, akkor felteheti, hogy célszerűbb a K cselekvés bekövetkeztére számítani. Ennek az egyszerű valószínűségen alapuló módszernek az a hátránya, hogy az emberjátékos könnyen kifigyelheti és kihasználhatja a további játékában.

A cselekedetek gyakoriságának mintájára a gépi ágens megfigyelheti többlépéses cselekvéssorozatok előfordulási gyakoriságát is az emberjátékos játékában. Ha a többlépéses sorozat lépésszáma N, akkor az N hosszú mintázatok, ún. N-gramok előfordulási gyakoriságára alapozva, ha az emberjátékos utolsó N-1 lépése adott, akkor az azokkal kezdődő N-gramok gyakorisága megadja a következő lépés közelítő valószínűségét. Így az ágens a legvalószínűbb lépésre készülhet. Konkrét játékokban különböző hosszúságú N-gramok statisztikáját felvéve, megfigyelhető, hogy az előrejelzések jósága egy adott N esetén tetőzik, azaz ilyen hosszúságú N-gramokra alapozva teljesít az ágens legjobban. Ugyanakkor az is érthető, hogy nagyobb variációban előforduló N hosszúságú mintázatok esetén az előrejelzés hatékonysága csökken.

Az is érezhető, hogy kevés korábbi esetre támaszkodó N-gram statisztikák rossz előrejelzést tesznek lehetővé. Minél nagyobb az N, annál inkább így van. Mivel a hosszabb minták nagyobb variációszámban fordulhatnak elő, kis esethalmaz esetén megnő a valószínűsége, hogy egyes mintákra nulla gyakoriságot kapunk, ami gyenge játékteljesítményt eredményez. Ebből a megfigyelésből ered az alkalmazott N-gram hossz változtatása a játék előrehaladtával, azaz a játék kezdetén csak a rövid N-gramok adnak elfogadható előrejelzést, majd a korábbi esetszám növekedésével a hosszabb N-gramok jutnak szóhoz. Ezt az N-gram hosszt változtató technikát Millington és Funge (2009) Hierarchikus N-gram technikának nevezi. A technika párhuzamosan kiértékeli a különböző hosszúságú N-gramokat, majd megpróbál a hosszabb alapján dönteni. Ha az nem ad eléggé megbízható döntést, mert kevés esetre támaszkodik, akkor rövidebb N-grammal próbálkozik. Az hogy hány esetre alapozhat az N-gram megbízhatóan, függ a konkrét játéktól. On-line játékok hajlamosak kisebb esetszámra alapozó statisztikákkal is működni.

Az N-gram alapú akció előrejelzés a tapasztalatok alapján nagyon hatékonyan növeli a játékágens intelligenciáját, mindamellett egyszerű implementálni is. Leginkább az akciójátékokban terjedt el, lehetővé téve, hogy az ágens előre lássa az emberjátékos lépését és hatékony ellenakciót indíthasson.

Döntés tanulás

Az előzőekben említett módszerek viszonylag korlátozott tartományon működtek, megelégedtek néhány paraméter értékének javításával, vagy az adott szituációban legalkalmasabbnak tűnő tevékenységsorozat előválasztásával. Ebben a részben a tanulás is előtérbe kerül, melynek révén a játékágens döntéshozó képessége megnő. A játékágenseknél alkalmazott tanuló technikák a mesterséges intelligencia általános tanuló algoritmusainak specializált változatai. A tanulás alapvetően asszociálás, dolgok társítása. Játékágenseknél a játék adott állásánál felgyűlt és rendelkezésre álló információk alapján kell a lehetőségek közül választani, azaz a lehetőségeket az információkhoz társítani. Az asszociációk felhasználása növeli az ágens sikerességét. A megfigyelésből felgyűlt információk egy magasabb szinten vonatkozhatnak az asszociációk sikerességére is, megerősítve, vagy gyengítve azokat.

A tanulás fajtái alapvetően két csoportba sorolhatók: felügyelt és felügyelet nélküli tanulás. A felügyelt tanulás esetén az ágens megfigyeléseihez társítandó akcióiról az embernek határozott elképzelései vannak, és ezt elvárt tevékenységek formájában az ágens tudtára is hozza. Az ágens feladata ezek után olyan asszociációk kiépítése, melyek a felügyelő elvárásaival egyeznek. Ebben a folyamatban gyakran dicsérő, illetve büntető visszajelzések érik az ágenst az elvárást képviselő felügyelő, tanár részéről. Vagy történhet a társítás oly módon is, hogy az ágens a tanár lépéseit, válaszait megfigyelve igyekszik utánozni azokat. A másik, felügyelet, elvárás nélküli tanulásnál nem a konkrét választevékenységre van előírás, hanem az információkra, megfigyelésekre válaszként adott tevékenység minőségére, hasznosságára. Egy off-line formában a megítélés jöhet a játék fejlesztőjétől a fejlesztési folyamat során, de az igazi esetben a játék működése közben, egy beépített minősítő algoritmus fütyül, vagy tapsol. A visszajelzés minősíthet hosszabb idő alatt végzett működést is. Az implementálás könnyűsége szempontjából a felügyelt tanítás van előnyben, míg a felügyelet nélküli mellett a rugalmassága és a sokszínűsége, kiszámíthatatlansága, adaptivitása szól.

Játékágenseknél felmerül az a kérdés, mit tanuljon? Különösen a felügyelet nélküli tanulás esetén célszerű az általánostól a speciális felé tartó fokozatosság alkalmazása. Sokkal elfogadhatóbb egy olyan gépi játékos, amely minden helyzetben elfogadhatóan és néha egész jól dönt, mint egy olyan, amely egyes esetekben briliáns, de máskor teljesen rosszul lép. Bár a mai játékokban alkalmazott tanuló algoritmusok egyre jobbak, az emberi okosság elérése tanulás révén még nem várható tőlük.

A következőkben négy tanulási módszert ismerünk meg, a Naiv Bayes osztályozót, a döntési fa tanulását és két, inkább a jövőre nézve nagy lehetőségeket rejtő technikát, a megerősítő tanulást és a mesterséges neurális hálókat jellemző technikát. Az első kettőt könnyű implementálni, és a befektetett munkához képest jó eredményt adnak, míg az utóbbi kettő igen szerteágazó és mély elméleti hátérrel rendelkező technika, melyek külön könyvekből ismerhetők meg mélységükben és hatékony alkalmazásuk a játékprogramozásban még a kezdeti lépéseknél tart, bár nagyon ígéretesek.

A Naiv Bayes osztályozót (Millington és Funge, 2009) példáján keresztül érthetjük meg. Tételezzük fel, hogy egy autóverseny játékot készítünk, és azt szeretnénk, ha az ágens megtanulná az emberjátékosoktól a kanyar bevételekor követendő technikát.

Kanyarbevétel a játékprogramban

A kanyarodás stílusát több tényező is meghatározza, de az egyszerűség kedvéért csak azt tekintsük, amikor a játékos a kanyartól való távolsága és pillanatnyi sebessége alapján dönt a fékezésről. Az elinduláshoz rögzítenünk kell olyan adatokat, melyekből az ágens tanulni fog. Egy ilyen adathalmaz a következőképpen nézhet ki:

A táblázatot célszerű olyan egyszerűen megfogalmazni, amennyire csak lehet, hogy elkerüljük a sokféle mintából eredő hosszú számítási időt és sok adatot. Ezért alkalmazzuk most a következő egyszerűsítést: a távolság legyen csak kétféle, ’közel’, vagy ’messze’, attól függően, hogy az érték 10 alatti, vagy sem, a sebesség pedig 20 alatt legyen ’lassú’, ellenkező esetben pedig ’gyors’. Ezekkel az egyszerűsített tanító halmaz:

Nemcsak az ember számára áttekinthetőbbek a viszonyok a feltételek és a döntés között, hanem gyorsabb tanulásban is bízhatunk.

Komolyabb konkrét esetekben az adatok sokszínűségének redukálására és a statisztikailag jelentős kategóriák beazonosítására szóba jönnek osztályozó, klaszterező matematikai eszközök is, mivel az ésszerű attribútumok alkalmazása a gépi tanulás sikerének alapja.

Most pedig meg kell adni, mit is kell az ágensnek megtanulnia. Annak a feltételes valószínűségét akarjuk megtanítani, hogy mikor fékezzen a távolság és a sebesség ismeretében. Ezen feltételes valószínűség formulája:

P(fékez? | távolság, sebesség)

És itt van segítségünkre a Bayes szabály:

P(A|B) = P(B|A)P(A) / P(B)

A szabályban az a jó, hogy megkaphatjuk az A esemény bekövetkezésének valószínűségét, ha tudjuk, hogy B bekövetkezett abból is, ha éppen a B bekövetkezési valószínűsége ismert az A bekövetkezése esetére. Fogjuk látni, miért fontos ez, amikor majd megpróbáljuk alkalmazni. De előbb alakítsuk át egy kissé a szabályt:

P(A|B) = αP(B|A)P(A)

ahol α = 1 / P(B). Később látni fogjuk, hogy ezt az alakot könnyebb a mi céljainkra használni.

Itt a mi példánkra alkalmazott új alakja a Bayes szabálynak:

P(fékez? | távolság, sebesség) = αP(távolság, sebesség | fékez?)P(fékez?)

A következőkben egy naiv feltételezéssel fogunk élni, hogy megadjuk:

P(távolság, sebesség | fékez?) = P(távolság | fékez?) P(sebesség | fékez?)

Valószínűleg láttunk már példát összetett esemény valószínűségének ilyen módon való kiszámítására, független eseményeknél.

Egyesítve a Bayes szabályt a független események valószínűségére előbb megadottal, kapjuk:

P(fékez? | távolság, sebesség) = αP(távolság | fékez?) P(sebesség | fékez?) P(fékez?)

Az a jó ebben a végső formulában, hogy használhatjuk a szükséges valószínűségek meghatározására, helyesebben közelítésére a korábbiakban adott táblázatunkat. Hogy hogyan, arra nézzük azt a példát, amikor a játékágens próbál dönteni a fékezés szükségességéről a kanyartól 79,2 távolságra, miközben 12,1-es sebességgel halad. A döntéshozáshoz ki akarjuk számítani azt a feltételes valószínűséget, amellyel egy ember játékos fékezne hasonló szituációban és azt használni.

Csak két valószínűség van, azé, hogy fékezünk és azé, hogy nem. Annak a valószínűsége, hogy fékezünk:

P(fékez?=I | távolság=79,2, sebesség=12,1).

A pontos értékeket kategorizálva a korábbiaknak megfelelően írható:

P(fékez?=I | távolság=messze, sebesség=lassú).

És most alkalmazzuk az előbb levezetett végső formulát:

P(fékez?=I | messze, lassú) = αP(messze | fékez?=I) P(lassú | fékez?=I) P(fékez?=I)

Az értéktáblázatból közelíthetjük a szükséges valószínűségeket az esetek relatív gyakoriságával:

P(messze | fékez?=I) = 2/5; P(lassú | fékez?=I) = 2/5; P(fékez?=I) = 5/7.

A továbbiakban a táblázatos adatokból számított relatív gyakoriságokat is valószínűségnek fogjuk nevezni az egyszerűség kedvéért, de tudjuk, hogy azok csak többé-kevésbé jó közelítései a valószínűségnek.

A fékezés 5/7-es értékét apriori, előzetes valószínűségnek nevezhetjük, mivel anélkül adja meg a fékezés valószínűségét, hogy bármit tudnánk az aktuális szituációról. Az apriori valószínűségek jó becsléssel szolgálnak az események konkrét bekövetkezésének esélyére. Behelyettesítve az arányszámokat a képletünkbe, meghatározhatjuk, mekkora a feltételes valószínűsége annak, hogy egy emberjátékos fékezne egy hasonló szituációban:

P(fékez?=I | messze, lassú) = α∙4/35.

De mit mondhatunk az α-ról? Úgy tűnik, α értéke nem túl fontos. Hogy lássuk, miért nem, határozzuk meg a valószínűségét a nem fékezésnek!

P(fékez?=N | messze, lassú) = α∙1/14.

Az α értéke nem szól bele a fékezés? nem fékezés? kérdésébe, mivel kiesik. (α mindig pozitív, mert a valószínűségek nem negatív értékek.)

α∙4/35 > α∙1/14 = 4/35 > 1/14 = 0,11 > 0,07

Azaz a fékezés valószínűsége nagyobb, mint a nem fékezésé. Ha a mesterséges ágens emberhez hasonlóan akar viselkedni, akkor fékezni fog, hiszen az emberről gyűjtött adatokat veszi alapul.

A számításokban a gyakran nulla közeli kis valószínűségek összeszorzása alulcsordulást okozhat a számábrázolás véges precizitása miatt, ezért a valószínűségek szorzata helyett a valószínűségek logaritmusainak összegét szokták számítani.

A Döntési fa tanulása a hatékony döntéshozáshoz szükséges szerkezetű fagráf felépítését jelenti a különböző döntési esetek ismeretében. A megkonstruált fa esetében a megtanult szabályoknak megfelelő döntések meghozatala a legkevesebb lépésben valósul meg. Ezt a tanuló, azaz fa-konstruáló algoritmus azáltal éri el, hogy a korábbi döntési, választási pontokhoz rendeli a legnagyobb információtartalmú döntéseket. A következőkben a szerző által kidolgozott példán keresztül megismerhetjük az algoritmus működését. Tételezzük fel, hogy a játékágens az emberjátékos viselkedése alapján a következő megfigyeléseket tette az erőnlétE, erőnlétJ, fegyverE, fegyverJ attribútumok konkrét értékei függvényében arra vonatkozóan, hogy az emberjátékos inkább támad, vagy védekezik:

A tanítóminták táblázatában E jelöli az emberjátékost, J pedig a játékágenst. Bár a tapasztalat felírható egyetlen összetett logikai kifejezés formájában is, a Döntési fa attól hatékonyabb döntést eredményez. A támadás feltétele így fogalmazható meg:

if ((erőnlétE = jó ÉS erőnlétJ = gyenge ÉS fegyverE = hibátlan ÉS fegyverJ=hibátlan) VAGY (erőnlétE = jó ÉS erőnlétJ = közepes ÉS fegyverE = hibátlan ÉS fegyverJ=sérült) VAGY (erőnlétE = jó ÉS erőnlétJ = közepes ÉS fegyverE = hibátlan ÉS fegyverJ=hibátlan) VAGY (erőnlétE = közepes ÉS erőnlétJ = gyenge ÉS fegyverE = hibátlan ÉS fegyverJ=hibátlan) VAGY (erőnlétE = gyenge ÉS erőnlétJ = gyenge ÉS fegyverE = hibátlan ÉS fegyverJ=sérült)) then (TámadE? = igen)

Hasonlóan adható meg, hogy mikor nem támad az emberjátékos.

A példában az attribútumok értékeinek függvényében adódó támadás, vagy nem támadás választása a feladat, azaz osztályozás. Az alkalmazott módszer az ID3 (Inductive Decision Tree Learning Algorithm) nevet viseli, algoritmusa a következő:

  1. A legtöbb információt szolgáltató attribútum választása

  2. A választott attribútummal egy gráfcsomópont képezése, majd értékeinek megfelelő elágazások berajzolása

  3. Az értékeknek megfelelő tanítópéldáknak a levelekhez adása

  4. Az ily módon adódott levelek megvizsgálása:

    • ha a csatolt tanítóminták a levélen azonos tevékenységet kaptak, akkor ennek az értéknek a levélhez rendelése és leállás ezen az ágon

    • egyébként az 1-4 lépés ismétlése a redukált táblázattal.

A legtöbb információt szolgáltató attribútumot információelméleti módszerrel, Shannon informatikai entrópia fogalmának felhasználásával határozzuk meg. Eszerint az I eset bekövetkezésének ’híre’ az eset bekövetkezésének P(I) valószínűségétől függően az

E(I) = -P(I)∙log2P(I)

’hírértékkel’, entrópiával bír.

Az összes lehetséges esetből, hírből álló S = {A, B, ..., I, ...,N} készlet összentrópiája:

E(S) = -Σ P(I)∙log2P(I)

Ha mindig biztosan ugyanaz az eset következik be, az E(S) entrópia nulla, mivel a biztos eset valószínűsége 1, a többié nulla, és akkor maximális, ha a bekövetkezhető esetek egyforma P(I) = 1/n valószínűséggel adódhatnak: E(S) = -Σ(1/n)∙log2(1/n) = -log2(1/n)∙Σ(1/n) =-log2(1/n)∙1 = log2((1/n)-1) = log2n. (Ahol n = |S| a készlet számossága, azaz a készlet elemeinek száma.)

Pl. A fenti táblázatban szereplő támadE kétféle esettel, kimenetellel teljesülhet: igen, vagy nem. A 13 soros táblázatban az igen-ek aránya 14 féle lehet, amint az ábra mutatja:

Kedvező entrópia 5/13 értéknél

Látható, hogy a konkrét tanítóminták esetén az entrópia a 13-ból 5 igen esettel közel van a maximális 1 értékhez:

E(támadE) = -P(támadE=igen)∙log2P(támadE=igen) - P(támadE=nem)∙log2P(támadE=nem) = -(5/13)∙log2(5/13) -(8/13)∙log2(8/13) = 0,530 + 0,431 = 0,961

Attribútumválasztás

A döntési fa adott ágán még fel nem használt attribútumok közül válasszuk azt, amelyik a leginkább csökkenti az entrópiát, a bizonytalanságot, azaz a legnagyobb információnyereséggel jár. A G információnyereség egy adott attr attribútum esetén, ha az attribútumnak m féle értéke lehet és ezek közül a j-edik érték esetén idbattr,j jelöli az igen döntések darabszámát és ndbattr,j jelöli a nem döntések darabszámát:

G(attr) = E(támadE) - Σ(idbattr,j + ndbattr,j) / (idb + ndb)∙E(támadEattr,j)

A szummázást az attr attribútum esetében j= 1..m esetére kell végezni.

A fa gyökerénél a négy attribútum (erőnlétE, erőnlétJ, fegyverE, fegyverJ) közül kell a legnagyobb nyereséget adót kiválasztani. Nézzük meg részletesen a nyereség értékét az attr= erőnlétE esetén:

G(erőnlétE) = E(támadE) - ((idberőnlétE,jó + ndberőnlétE,jó) / (idb + ndb)∙E(támadEerőnlétE,jó) + (idberőnlétE,közepes + ndberőnlétE,közepes) / (idb + ndb)∙E(támadEerőnlétE,közepes) + (idberőnlétE,gyenge + ndberőnlétE,gyenge)/(idb+ndb)∙E(támadEerőnlétE,gyenge)) = 0,961 - ((3+0)/(5+8)∙0 + (1+4)/(5+8)∙0,722 + (1+4)/(5+8)∙0,722) = 0,406

Ahol pl. E(támadEerőnlétE,közepes) = -(1/5)∙log2(1/5) -(4/5)∙log2(4/5) = 0,722

Hasonló számítással

G(erőnlétJ) = 0,192

G(fegyverE) = 0,496

G(fegyverJ) = 0,000

Azaz a fegyverE szerint hozva meg első szinten a döntést, nyerjük a legtöbb információt, ezt az attribútumot vesszük gyökér csomópontnak.

Ez az attribútum olyan erős, hogy a ’sérült’ értéke esetén nem is kell további attribútumokat vizsgálni, mert azok értékétől függetlenül nem érdemes támadni.

A másik ágon viszont nem ilyen egyértelmű a helyzet, emiatt az algoritmust folytatni kell, de csak azokkal a tanítóminta sorokkal, ahol a fergyverE=hibátlan érték szerepel, hiszen ezen az ágon vagyunk.

És mivel a fegyverE attribútum már nem vesz részt a további döntések megalapozásában, az oszlopát is törölhetjük:

A fentekhez hasonlóan adódó információnyereség értékek:

G(erőnlétE) = 0,292

G(erőnlétJ) = 0,292

G(fegyverJ) = 0,006

Az erőnlétE és az erőnlétJ egyforma információnyereséggel jár, és mindkettőnél egy ágon (erőnlétE=jó: igen; erőnlétJ=gyenge: igen) végső döntéshez jutunk. Válasszuk az erőnlétJ attribútumot következő csomópontként, mert ennél csak egy ágon kell továbbmennünk!

Az erőnlétJ=közepes sorokra redukált tanítóminta táblázat:

Az információnyereség értékek:

G(erőnlétE) = 1

G(fegyverJ) = 0

Az erőnlétE attribútumot választjuk csomópontként:

Az ágakat berajzolva és a döntési értékeket hozzájuk rendelve látható, hogy a nagy információnyereség mind a három attribútumérték esetén egyértelmű döntést eredményez.

Mivel ez a döntési fa azt mutatja, hogy az emberjátékos mikor támad, a gép számára alkalmas fát az E és J cseréjével, azaz a játékosnak az ember szemszögébe helyezésével kapunk.

Amennyiben az attribútumok folytonos értékekkel bírnak, célszerűen választott intervallumokat vezethetünk be, ’egy kalap alá véve’ ilymódon az intervallumba eső értékeket.

A Megerősítő tanulásról (Millington és Funge, 2009), (Sutton és Barto, 1998) és (Stefán, 1999) alapján adunk egy tömör összefoglalást, a hangsúlyt a játékágens tanuló működésére helyezve. A megerősítő tanulás a felügyelt és a felügyelet nélküli tanuló módszerek között elhelyezkedő, a tapasztalatra építő, különösen dinamikusan változó állapotterekben zajló folyamatok optimálására alkalmazható algoritmus. A felügyelt rendszerek esetén a környezet instruktív visszajelzésekkel korrigálja a tanulórendszer belső struktúráját, illetve paramétereit. Ez azt jelenti, hogy a módosítás iránya a rendszeren kívülről befelé haladó; azaz a környezet megmondja, a belső állapottól kvázi függetlenül, hogy melyek a rendszer ’helyes’, ’megkívánt’ kimeneti jellemzői. A rendszer módosítása pedig éppen az előbbi állapotok elérése felé irányul. Koncepciójában különbözik ettől az a megoldás, amikor a tanulás belülről jövő. Ez azt jelenti, hogy a rendszer maga úgy van felépítve, hogy ’felfedezi’, ’feltérképezi’ környezetét. Más kifejezéssel élve cselekvéseket, akciókat hajt végre, amelyek hatással vannak a környezetre, és aminek következtében a környezet visszajelzést ad, hogy a választott akciókat a környezet hogyan jutalmazta. A visszacsatolt érték, a megerősítő-jel, egy skaláris szám, melynek értéktartománya rendszerint problémafüggő. Általában egy nagy pozitív szám a környezet akcióra adott ’jutalmát’, míg a nagy negatív szám ’büntetését’ szimbolizálja. – írja (Stefán, 1999).

A tanuló rendszer és a környezete közötti hatásokat szemlélteti az alábbi ábra:

A játék ágens és a környezet viszonya

A módszert előszeretettel alkalmazzák mesterséges intelligencia alapú tanuló eljárásként a számítógépi játékokban, a játékágens alkalmazkodó, tanuló képességének megvalósítására. A játékágens teljes környezetének ismeretét feltételező dinamikus programozási eljárások, a környezettel szemben ilyen elvárást nem támasztó Monte Carlo módszerek mellett a Q-tanulás algoritmus az a tanulóalgoritmus, melyet a játékprogramozók leginkább alkalmaznak. Az algoritmus előnyei között említhető, hogy egyszerű implementálni, széles körben tesztelték nem játék célú alkalmazásokban is és tuningolható mélyebb elméleti megértés nélkül is.

A probléma a következő: azt szeretnénk, ha a játékágens egyre jobban működne, egyre jobb akciókat választana céljai elérésére a játék előrehaladása során. Hogy a játék későbbi szakaszában mi fog jó választásnak, akciónak bizonyulni, a program tervezője által előre nehezen elképzelhető. Függhet az emberjátékos tevékenységétől, illetve a játékban előforduló véletlen mintázatoktól, melyekre nem lehet felkészülni. Emiatt a játékágens számára szeretnénk lehetővé tenni, hogy szabadon választhasson a lehetséges akciók közül a játék bármely szituációjában és megtanulja, hogy az egyes helyzetekben melyik a legjobb választás. Bár sok szituációban a választott akció jósága azonnal megítélhető, azonban vannak olyan helyzetek, amikor ez csak később derül ki, valamilyen szignifikáns történés révén. Ezen esetekre a játékágensnek meg kellene tudni tanulni azokat a megelőző cselekvéseket is, amelyek elvezettek a szignifikáns eredményhez.

A Q-tanulás algoritmus

A Q-tanulást a minőségi információról (quality values, Q-values) nevezték el, melyet a játékban előforduló állapotokról és az állapotokban kivitelezhető akciókról tárol.

Ez az algoritmus a probléma speciális reprezentációjára támaszkodik. Letárolja, aktualizálja a releváns információkat, amint általa megtehető új akciókat derít fel. Nézzük meg ezt a reprezentációt először!

A játék-világ reprezentációja a Q-tanulás algoritmusban egy állapotgéppel történik. A játék algoritmus minden időpillanatban valamilyen állapotban van. Egy ilyen állapotnak minden vonatkozó részletet tárolnia kell a játékágens környezetéről és belső állapotáról.

Azaz, ha az ágens egészsége fontos a tanulás szempontjából, és az ágens két azonos szituációban találja magát, melyben csak az egészsége tér el, akkor azokat különböző állapotoknak kell tekintenie. Semmi nem tanulható meg, ha nincs bevéve az állapot jellemzői közé.

A játékban az állapotok számtalan jellemzővel bírhatnak: hely, ellenség közelsége, egészség szintje, és így tovább. A Q-tanulás algoritmusa nem igényli, hogy az állapot jellemzőit értsük. Az algoritmus szempontjából ezek egyszerűen egy egész számban jelennek meg: az állapot számban.

A játékalgoritmusnak viszont képesnek kell lennie az aktuális állapotot egy állapotszámra lefordítva megadni, hogy a tanuló algoritmus azt használhassa. Szerencsére a fordított irányú leképezésre nincs szükség, nem kell soha az állapotszám alapján konkrét játékjellemzőkről nyilatkozni.

A Q-tanulást modell-mentes algoritmusnak mondjuk, mert nem próbál felépíteni egy modellt a világ működéséről. Mindent egyszerűen állapotokként kezel. A nem modell-mentes algoritmusok megpróbálják a meglátogatott állapotokból rekonstruálni, mi történik a játékban. A modell-mentes algoritmusokat, mint amilyen a Q-tanulás is, sokkal könnyebb implementálni.

Az algoritmusnak minden egyes állapot esetére meg kell tudnia a rendelkezésre álló akciókat. Sok játék esetében minden akció alkalmazható bármely állapotban, a komplexebb játékokban azonban a választható akciók készlete függhet az ágens pillanatnyi helyétől (pl. meghúz egy kart), attól, hogy birtokában van-e bizonyos dolog (pl. egy kulcs az ajtó kinyitásához) vagy attól, hogy egyéb akciókat megfelelően kivitelezett-e megelőzően (pl. átment-e a kinyitott szobán?).

Azután, hogy az ágens kivitelezett egy akciót a konkrét állapotban, a megerősítő függvénynek visszacsatolást, visszajelzést kell arról adnia. A visszacsatolás pozitív, vagy negatív, sőt gyakran nulla, ha nincs tiszta információ arról, milyen jó volt a végrehajtott akció. Nincs korlát a megerősítő függvény által visszaadott értékekre, de általánosan elfogadott, hogy a [-1, +1] tartományba esnek.

Nem elvárás a megerősítő értékkel szemben, hogy mindig ugyanolyan érték legyen egy bizonyos állapotban kivitelezett akció esetén. Lehetséges eltérő környezeti információ, melyet nem használtunk az algoritmus állapotának létrehozásakor. Amint előbb láttuk, az algoritmus nem tudja megtanulni a hasznosítását olyan információnak, amelyet nem vettünk figyelembe az állapot jellemzői között, de tolerálni fogja a hatásait és meg fogja tanulni az általános sikerességét az akciónak, inkább, mint a sikerre való hatását egyetlen próbálkozás alapján.

Egy akció kivitelezése után az ágens valószínűleg egy új állapotba kerül. Ugyanazon akció kivitelezése egy pontosan ugyanolyan állapotban eltérő állapotokra is vezethet. Más játékágensek és az emberjátékos szintén kihathat az új állapotra. Pl. egy térbeli lövöldözős (FPS, First Personal Shooter) játékban a játékágens egy erőnlét-frissítő csomagot keres, és nem kíván ütközetbe bocsátkozni, ezért egy oszlop mögé rejtőzik az ellenség elől, mely a szoba kijáratát éppen elállja. Az ágens aktuális állapota: 1.szobában, rejtőzködik, ellenség_közel, halálveszély. Az ágens az „elbújás” akciót választja a rejtőzködés folytatására. Az ellenség ottmarad, emiatt az „elbújás” akció visszavezet ugyanahhoz az állapothoz. Azaz az ágens az „elbújás” akciót ismétli. Amikor az ellenség elmegy, a megváltozott helyzetben az „elbújás” akció már más állapotra vezet: 1.szobában, rejtőzködik, ellenség_nincs, halálveszély_nincs.

A Q-tanulás (és a legtöbb más megerősítő algoritmus) egyik kiemelkedő jellemzője, hogy ilyesfajta bizonytalanságot képesek kezelni.

Ez a négy összetevő – kiinduló állapot, alkalmazott akció, megerősítő érték, bekövetkezett állapot – alkotja a tapasztalati négyest, melyet (s, a, r, s’) alakba szoktak írni.

Az algoritmus minden egyes, a játékban kipróbált állapothoz és akcióhoz tárol egy értéket. A Q-érték azt mutatja, milyen jónak érzi azt az akciót választani, ha abban az állapotban van.

A tapasztalati négyes két részből áll. Az első két elem (az állapot és az akció, state, action) szolgál egy tárolt Q-érték kikeresésére. A második két elem (a megerősítő érték, jutalom és az új állapot, reward, state’) használatos a Q-érték javítására, frissítésére, attól függően, hogy milyen jó volt az akció és milyen jó lesz majd az új állapotban.

A frissítés a Q-tanulási szabály alapján megy végbe:

Q(s,a) = (1-α)Q(s,a)+α(r+γmax(Q(s’,a’)),

ahol 0≤α≤1 a tanulási együttható, 0≤γ≤1 pedig a diszkont faktor, elhanyagolási tényező, a távolabbi megerősítő értékek, jutalmak hatásának csökkentésére, mivel azok kevésbé fontosak. Mindkettő az algoritmus paramétere.

Hogy működik ez a szabály?

A Q-tanulás algoritmus két összetevő lineáris kombinációja, az arányokat az α tanulási paraméter értéke határozza meg. A Q(s,a) első komponens egyszerűen az adott állapothoz és akcióhoz tartozó aktuális Q-érték. Az (1-α) tényezővel megtartva bizonyos ennek részét, azt fejezzük ki, hogy soha nem dobunk el teljesen korábban megszerzett információt. A második komponens két tagból áll. Az r érték az új megerősítés, jutalom a tapasztalati négyesből. Ha a megerősítő szabály a

Q(s,a) = (1-α)Q(s,a)+αr

lenne, akkor a régi Q-értéket kombinálná az akcióra kapott r jutalommal.

A második összetevő második tagja, γmax(Q(s’,a’) az új állapotot nézi a tapasztalati négyesből. Veszi az abból az állapotból megléphető összes akciót és a legmagasabb megfelelő Q-értéket választja. Ez segíti figyelembe venni egy későbbi akció sikerességét (azaz a Q-értékét) a korábbi akciónál: ha a következő állapot egy jó állapot, akkor az lehetőséget kap a nagyszerűségének a megosztására.

A diszkont faktor, elhanyagolási tényező szabályozza, hogy mennyire függjön a kurrens állapot és akció Q-értéke annak az állapotnak a Q-értékétől, amelyhez vezet. Nagy érték nagy figyelmet szentel a jó állapotoknak, nagyon kis érték pedig csak azokat az állapotokat fogja figyelembe venni, melyek közel vannak a sikerhez. Egytől nagyobb érték állandóan növő Q-értékeket eredményezne és a tanuló algoritmus soha nem konvergálna a legjobb megoldáshoz. Valós alkalmazásban megfigyelhető a diszkont faktor hatása, amint a tanulás halad előre, a magas Q-értékek fokozatosan terjesztik a hatásukat visszafelé, az állapothoz vezető akciók lánca mentén, végül az akciók láncán található értékek növekvő Q-érték sorozattal fognak elvezetni a magas Q-értékű állapothoz.

Összefoglalva, a Q-érték egy kombinációja az aktuális értéknek és az új értéknek, mely új érték egyesíti az akció megerősítésének hatását és annak az állapotnak a jóságát, amelyikhez az akció vezet.

A következőkben a megerősítő tanulás fontos összetevőjét, a felderítési fázist fogjuk megvizsgálni. Az eddigiekben megismertük a megerősítő függvényt, a tanulási szabályt és az algoritmus belső szerkezetét. Tudjuk, hogyan végezzük a tanulást a tapasztalati négyes alapján, és hogyan generáljuk ezt a négyest az állapotokból és akciókból. A megerősítéses tanuló rendszerek egy felderítési stratégiát is igényelnek: egy választási iránymutatást arra, hogy az egyes állapotokban melyik akciót alkalmazzák. Ezt gyakran egyszerűen csak stratégiának (policy) nevezik.

A felderítési stratégia nem szorosan vett része a Q-tanulás algoritmusnak. Ámbár a következőkben vázolt stratégia nagyon gyakran használatos a Q-tanulásban, léteznek mások is saját jó és rossz tulajdonságaikkal. Egy játékban egy erőteljes alternatíva lehet az emberjátékos akcióinak figyelembevétele és a tapasztalati négyesnek az ő játékán alapuló képzése.

Az Q-tanulás alap felderítő stratégiája részben véletlenszerű. Az esetek nagy részében az algoritmus az aktuális állapot legnagyobb Q-értékű akcióját fogja választani. A maradékában véletlenszerűen fog választani. A véletlen akciók aránya egy ρ paraméterrel szabályozható.

Fontos kérdés az algoritmus konvergenciája. Ha a probléma állandó és a megerősítő értékek (jutalmak) következetesek (ami gyakran nem teljesül, ha a játékbeli véletlen eseményekre támaszkodnak), akkor a Q-értékek konvergálni fognak. További futtatása a tanuló algoritmusnak nem fog megváltoztatni egyetlen Q-értéket sem. Ekkor az algoritmus a problémát teljesen megtanulta. Nagyon kis játékok esetén ez elérhető pár ezer iterációval, de valós feladatoknál hatalmas iterációs számok adódhatnak. A Q-tanulás egy gyakorlati alkalmazásában nem lehet elérni elfogadható idő alatt a konvergenciát, emiatt a Q-értékek konvergálódásuk előtt felhasználásra kerülnek. Általános dolog az, hogy már a tanulás befejeződése előtt a részlegesen megtanult értékek hatása alatt zajlik a cselekvés.

Az algoritmus konvergenciájára, a tanulás gyorsaságára és minőségére nagy mértéken kihatnak az algoritmus hangolását lehetővé tevő paraméterek. Az α tanulási együttható azt szabályozza, hogy milyen hatása legyen az aktuális visszacsatolási értéknek a tárolt Q-értékre. Nulla érték mellett nem történne tanulás, a Q-értékek változatlanok maradnának. A másik véglet, az 1 érték nem venne figyelembe semmilyen előzetes tapasztalatot.

Tapasztalatok szerint a 0,3 érték egy érzékeny kezdést nyújtó érték, de tuningolást igényel a tanulás folyamán. Általában az állapotátmenetek nagyfokú véletlensége (pl. ha egy akció választásával elért jutalom-, vagy végállapot mindig drámaian különböző) alacsonyabb tanulási együtthatót igényel. Másrészről, ha csak kevesebb iteráció lehetséges, akkor nagyobb értékre van szükség.

A tanulási együttható csökkenő tuningolása szokásos a folyamat előrehaladtával, pl. 0,7-ről 0,1-re.

A γ diszkont faktor az állapotnak a rákövetkező állapottól való függését fejezi ki. Nulla érték esetén csak az akcióra kapott jutalom befolyásolná az állapotot. Az egyes érték a kivitelezett akcióra kapott jutalmat ugyanolyan fontossággal venné figyelembe, mint azon állapot jóságát, amelybe vezet.

Nagyobb értékek hosszabb akcióláncolatok kialakulását támogatják, de hosszabb tanulást is jelentenek. Egy javasolható induló érték a 0,75. Ez, ha a jutalomérték 1, 0,05-nyi részben fog beleszólni a tíz lépéssel korábbi akció Q-értékébe.

A felderítés véletlenszerűségét szabályozó ρ paraméter határozza meg, milyen gyakran választ az algoritmus véletlenül akciót a legjobb helyett. Az érték [0, 1] között változik. Nulla érték a korábbi tudás felhasználását jelenti, megerősítve amit már tud. Az egyes érték tiszta felderítő stratégiát eredményez: mindig új dolgokat fog kipróbálni, soha nem támaszkodva a már megszerzett tudására. Online játékokban a korábbi tudás révén hamarabb mutathat intelligensnek tűnő viselkedést, míg offline játékokban inkább a minél alaposabb tanuláson van a hangsúly. Ez utóbbihoz bevált a 0,2 kezdőérték.

A kalandozás hosszát, azaz a kapcsolódó akciósorozattal megtett iterációszámot a ν paraméter szabályozza. Nulla érték azt jelenti, az algoritmus mindig az előző iterációban elért állapotot használja a következő iteráció startállapotaként. Ez azzal az előnnyel jár, hogy az algoritmus áttekint olyan akciósorozatokat, melyek végül is sikerhez vezethetnek. Hátránya, hogy az algoritmus egy viszonylag kevés elemű állapothalmazba ragadhat, amiből nincs kijutás, vagy csak alacsony Q-értékű állapotokon keresztül, amelyeket éppen emiatt nem választ. Az egyes érték azt jelenti, hogy minden iteráció egy véletlen állapotból indul. Ha minden akció és állapot egyformán valószínű, akkor ez az optimális stratégia: ez fedi le a legszélesebb tartományt és akcióhalmazt a legrövidebb idő alatt. A valóságban azonban egyes állapotok és akciók sokkal gyakoribbak. Egyes állapotok vonzáspontként működnek, melyekhez nagyszámú különböző akciósorozat vezet. Ezeket az állapotokat a többi előtt célszerű feltárni és lehetővé tenni az algoritmus számára olyan akciósorozatok feltárását, melyek ilyen állapotban végződnek. Sok feltárási stratégia ezen paraméter nélkül működik. Ezek mindig az akciók egy láncolata mentén haladnak. Online játékokban, az algoritmus által használt állapot közvetlenül a játék állapota által meghatározott, azaz lehetetlen egy új véletlen állapotba mozogni. Ilyen esetekben kötelező a nulla paraméterérték. Tapasztalat szerint ahol kevés iteráció lehetséges, a 0,1 érték megfelelő. Ez átlagosan kilenc akcióból álló láncot hoz létre.

A megerősítő érték, azaz jutalom kulcsfontosságú az algoritmus helyes működésében. Tipikusan a jutalmat két ok miatt használjuk: a cél elérésére és hogy végrehajtsunk pár más előnyös tevékenységet. Hasonlóan, a negatív érték, a büntetés szolgál a játék elvesztésének kiváltására, vagy néhány nem kívánatos akció elvégzésére. Mindenképpen a cél elérése egy nagyon előnyös akció, és az ágensnek a saját halálát nemkívánatosnak kellene éreznie. A legtöbb irodalom feltételezi, hogy a feladatnak van megoldása és a célállapot elérése egy jól definiált tevékenység. A játékokban nem ez a helyzet. Lehetséges sok eltérő megoldás, különböző minőséggel, vagy lehetséges, hogy egyáltalán nincs megoldás, csak száz, vagy ezer különféle akció, melyek előnyösek, vagy problematikusak. Egy egyetlen megoldással rendelkező játékban adhatunk egy nagy jutalmat (pl. 1) az akciónak, mely a célhoz vezet és semmit a többi akció esetén. Elegendő iteráció után kapunk egy, a célhoz vezető Q-érték sorozatot, mely az állapotok hálózatán bármely külső állapotból a jutalomcsúcshoz vezet kiegyenlített, monoton növekvő jutalomértékeken keresztül, hasonlóan egy hegymászó kereséshez.

Amennyiben azonban további jutalmakat adunk egyes állapotokba vezető akciókhoz, az egy csúcsos hegymodell helyett több lokális csúccsal rendelkező jóságeloszlás is adódhat, amelyen egyes állapotokból indulva az akciósorozatok nem visznek el a kívánt célállapotba, hanem lokális csúcsokra vezetnek.

A helyzet csak romolhat többszörös megoldást tartalmazó állapotterek vagy sok jutalommal is ellátott állapot esetén. Ámbár a jutalmak gyorsítják a tanulást, az gyakran válik sikertelenné. Megoldást adhat egy finomabb kiegyensúlyozás. Nem célállapot helyeken nagyon kis jutalmak adása segíthet, de nem mindig ad ez sem tökéletes megoldást. Célszerű egyetlen céllal rendelkezőre egyszerűsíteni az állapotteret és más állapotokban nem alkalmazni jutalmazást. Ha a tanulás túl hosszú, megpróbálkozhatunk kis jutalmak adásával is.

A gyakorlati tapasztalatok előhozták a kombinatorikus robbanás gondját, mind a memória, mind az idő esetében. A helyszínek * karakterek * életképességi_szintek * fegyverszintek szorzata egy komolyabb játék esetén hamar csillagászati értékké válik.

Emiatt célszerű ahol csak lehet, összevonásokat, egyszerűsítéseket alkalmazni. Gyakorlati tapasztalatok az offline tanulás korlátait 100000 állapot, 10 akció/állapot, 5 000 000 iteráció értékben húzzák meg, Online játékok esetében ezek töredéke, pl. 100 állapot, tűnik reálisnak.

A legsikeresebb alkalmazások a táblás játékok terén adódtak, de jó lehet az ellenfél akcióinak ismeretében taktika tanulására, egy karakter kifejlesztésére (egyszerűen megadva neki a célt és az akciói halmazát), szereplő, vagy jármű mozgásának korlátozott szabályozására, többjátékos környezetben a kölcsönhatások megtanulására, hogy meghatározzuk hogyan és mikor alkalmazunk egy speciális viselkedést (pontos ugrás, vagy tüzelés megtanulása), és további hasonló valósidejű alkalmazásokhoz. Megtanulható és utánozható egy játékos játékstílusa.

Esettanulmány: Védekező pozíciók elfoglalásának megtanulása

A szituáció: három játékágens katona véd egy katonai bejáratot az emberjátékos ellen. Cél az emberjátékos behatolásának megakadályozása. Eszközök mindkét félnél a rejtőzködés, lövés, mozgás. Az állapottér reprezentáció: védő pozíciók, vagy nincs pozíció, ha éppen mozog, vagy halott (15+1+1) és két láthatósági lehetőség (az emberjátékos látható, vagy sem), azaz 34 állapot katonánként, összesen közel 40 000 állapot. Az akciók: minden állapotban, ha nincs katona mozgásban, akkor valamelyik mozoghat – egyszerűsítés, hogy egyszerre csak egy -, ily módon 56 lehetséges akció, és nem lehet akció, ha bármelyik katona mozog. Jutalmazás: ha az emberjátékost kilőtték (a katonák lövik, ha látják), büntetés, ha bármely katona meghalt, vagy az emberjátékos bejutott. Vegyük észre, hogy nem reprezentáljuk az ember pozícióját, ha látszik. Bár igen nagy jelentősége van, hol tartózkodik az ember, a büntetés, amikor az ember behatol, azt jelenti, a stratégiának meg kellene tanulnia, hogy a bejárathoz közelebb lenni kockázatosabb.

Az megerősítő tanulás algoritmust futtatva egy egyszerű játékos viselkedést modellezünk: véletlen utak a bejárathoz, és ez alapján állapotok generálása.

Grafika nélkül egy eseménysorozat gyorsan számítható. Paraméterek: α= 0,3, γ= 0,7, ρ= 0,3, ν=0,0. Mivel a modellállapot egy aktív játékállapothoz kötött a ν értéke nulla lesz. Mindig ugyanabból az állapotból indítjuk újra az algoritmust, amikor az ember meghalt, vagy bejutott. Kb. 20 000 iteráció után észrevehető taktikák jelennek meg: a katonák fedezéket keresnek; kezdetben a bejárattól távolabb helyezkednek el, de visszarohannak, ha a játékos feltűnik.

Mesterséges neurális hálók

A mesterséges neurális hálók az emberi idegrendszer modellezésének igényével születtek. Széleskörű alkalmazásuk kiterjed a számítógépi játékokra is. Egyik lehetséges alkalmazásuk a döntési képesség megtanulása és alkalmazása játékágensekben. A neurális hálók tudománya igen kiterjedt. A bekezdésben hivatkozunk a számtalan, magyarul is megjelent szakkönyvre. A neurális hálózatokban alkalmazott alapelvek felfrissítése után egy multilayer, többrétegű Perceptron elvű kereskedelmi alkalmazással kivitelezett neurális háló alapú amőbajáték alkalmazás bemutatásával szemléltetjük a lehetőségek egy szeletét.

A mesterséges neurális hálózatok három fő összetevője a

  • mesterséges neuron

  • a hálózat topológiája és a

  • tanulási-működési algoritmus.

A biológiai neuront modellező mesterséges neuron a (Lawrence, 1993) bemutató műve alapján rajzolt ábra szerinti oj (j= 1..m) inputot fogadó bemenetekből, a bemeneteken a szinaptikus kapcsolatok erősségét, gerjesztő/gátló jellegét modellező wi,j (i=1..n, j=1..m) súlyokból, a neti gerjesztést számító belső skalárszorzóból, a gerjesztésből a belső aktivációs potenciált számító aktivációs függvényből, mely gyakran egy 1 értékű szorzó, azaz elmarad és a minden-vagy-semmi elvű kisülést modellező átviteli függvényből áll. Az aktivációs függvény modellezheti a gerjesztés időbeni lecsengését, de gyakran elmarad.

Mesterséges neuron

Az átviteli függvény a küszöb aktiválást elérő neuron tüzelését modellezi, az egyszerű lépcsős függvénnyel, vagy ferdeátmenetes, hibavisszaterjesztésre is alkalmas függvényekkel, mint pl. a gyakori szigmoid függvény. Az alábbi ábra θi = 0 aktivációs küszöbbel, vízszintes eltolás nélkül mutatja a függvényeket.

Átviteli függvény típusok

A szigmoid függvény a k meredekséget szabályozó szorzóval és a θi küszöbértékkel:

A további részletek megismerhetők pl. (Horváth, 1995; Horváth, 2007; Smith, 2003, Haykin, 2009) írásaiból.

A hálózat topológiája alapvetően előrecsatolt és hátracsatolt lehet. Az előrecsatolt hálózaton a bemenet hatása egyetlen ciklusban átterjed a kimenetre. A visszacsatolt hálókban a jelek előre-hátra áramlanak, amíg egy időben már nem változó állapot be nem áll. Ez, a gyakran nem konvergens és emiatt nem használható folyamat időigényesebb és összetettebb számítással jár, lásd pl. (Haykin, 2009). A mi példánkban többrétegű, multilayer Perceptront alkalmazunk, amely használatakor előrecsatolt hálóként működik, az ábráról leolvasható módon:

Előrecsatolt neurális háló

A jelek a csak elosztó szerepű ’neuronokat’ tartalmazó input réteg felől az output réteg felé áramlanak.

A topológia mellett a tanulási algoritmus az, ami alapvetően megkülönbözteti a sokféle neurális hálót. A többrétegű Perceptron hálók hiba-visszaterjesztéses, Backpropagation módszerrel tanulnak, felügyelt módon, aminek a lényege hogy az adott számú input és output mintapárból álló tanító adathalmaz soron következő input mintáját a háló bemenetére ráadva, a nem tökéletes wij súlyok miatt a kimeneten nem pontosan a mintapár elvárt output értékének megfelelő kimenet adódik. Az eltérés vezérli a háló súlyainak kismértékű olyan változtatását, hogy legközelebb a kimenet már egy kissé jobban közelítse az elvárt kimenetet. A háló súlyainak ilyen vezérelt megváltoztatása a kimenet oldali súlyokon kezdve, a bemenet oldali súlyok felé, a hibának tekintett eltérés hatását visszafelé terjesztve történik. A mintafájl mintapárjait több iterációs ciklusban bemutatva a hálónak, a háló wij súlyai és θi küszöbértéke olyan irányba változnak kis mértékben, hogy a hiba nullához tartson. A feladat matematikailag a wij dimenziók többváltozós terében a mintapárok összességére adódó hiba legkisebb értékét eredményező pont, azaz súlyértékek megtalálását igényli, mely pl. gradiens módszerrel elérhető konvergens feladatok esetén.

A következőkben egy többrétegű Perceptron háló segítségével működő amőbázó (GoMoku) játék kialakítását mutatjuk be.

Neuronháló alapú Amőba játék-alkalmazás

Az amőba játék játszására készült neurális háló alkalmazások tudományos publikációkban is megjelentek (Freisleben, 1992, 1995; Freisleben & Luttermann, 1996).

A következőkben a szerző oktatási célú saját megoldását mutatjuk be.

A feladat: offline betanítással létrehozott neurális háló alkalmazása amőba játék programban. Az amőbaprogramban a felek célja nyerés elérése azáltal, hogy a saját jeléből ötöt közvetlenül egymás mellé helyez a rácsos játékmező rácspontjain vízszintes, függőleges, vagy átlós irányban. Az ábra a játékot mutatja, egy utolsóként lerakott X jellel nyerő ötöst adó szóbajöhető ágakkal, kiemelve ezen ágak közül a baloldali vízszintes ágat. Ez a csillag alakzat a későbbiekben kiemelt szerepet játszik a neurális háló betanításában.

Kiértékelő csillag alakzat

Az alábbi videón a betanítóminták generálását követhetjük: video lejátszás

A program a következő fő részekből áll:

  • A játékteret megjelenítő és az emberjátékos lépéseit bevevő, valamint mindkét játékos lépéseit megjelenítő modul, benne a nyerés észlelésével és kijelzésével

  • A gépi játékos, a programágens állásfelmérő és döntéshozó tevékenységét realizáló modul.

A program C nyelven íródik, mivel a rendelkezésre álló Brainmaker™ neuronháló modellező program csatolt függvénykönyvtára is C nyelvű függvényeket nyújt. A C nyelvű beágyazó programkörnyezet az előző első pontban adott feladatokat látja el a következő részletezésben:

  1. Betölti az offline betanításban létrehozott súlymátrixot és neuronháló paramétereket a többrétegű Perceptron háló konkretizálásához

  2. Megjelenít egy 20x20-as játékmezőt

  3. Lehetővé teszi az emberjátékos számára a kurzor pozicionálását és a jelének (O) a lerakását

  4. Nyeréstesztet végez, nyerés esetén vége: Nyert az emberjátékos.

  5. Az emberjátékos lépése után meghatározza a gép lépését, ehhez egy ciklusban a játékmező minden egyes üres rácspontjára elvégzi a következőket:

    • leteszi a saját X tesztjelét, és egy csillag alakzatban megnézi, milyen jelek találhatók a teszthely környezetében. Ebből a csillag alakzatból a középső tesztjelet kihagyva, az ágakat beforgatva egy 4x8-as mátrixot képez. (Erre a lépésre amiatt van szükség, mert a Brainmaker csak téglalap alakú ’kép’-inputot fogad.) A mátrixot bemutatja a neuronhálónak, mely visszaad egy számértéket, ami arányos azzal, mennyire lenne jó támadó lépés X számára, ha az adott helyre lépne.

    • A tesztjelet kicseréli az emberjátékos O jelére, majd megismétli az előző lépéseket, ezáltal kap egy olyan számértéket, mely azt mutatja, mennyire lenne jó lépés az ember számára, ha az adott helyre lépne. Mivel a gép lép, ez számára azt jelenti, mennyit rontana az ember lehetőségein, ha a számára kedvező helyre belépve azt a lehetőségét az embernek elrontaná. Mivel mind a támadást, mind a védekezést egyaránt nézi, ezért a két értéket együtt kezeli. Az egyszerű összegzés helyett a saját lépés értékét egy egynél kevéssel nagyobb szorzóval szorozva veszi, és így összegez, hogy egyforma helyzetben inkább támadjon, mint védekezzen.

    Ha jobb érték adódott a vizsgált helyre, mint a korábbiak legjobbja, akkor azt tárolja el eddigi legjobbként.

  6. A ciklus lefutása után előáll az a játékmező, amelyre a támadást és védekezést egyaránt érvényesítő összegzett számérték a legnagyobb volt. Ide lép a gép.

  7. Nyeréstesztet végez, nyerés esetén vége: Nyert a gép.

  8. Ismétli a 3. ponttól.

Az alkalmazásban kulcsszerep jut a többrétegű Perceptron hálónak a gép lépésének meghatározásában, ezért nézzük meg általánosan, hogyan jutunk el a háló esetében a betanítási feladat megfogalmazásától a háló hasznosításáig! Az ábra a felügyelt tanítással működő neurális hálók betanításának tipikus lépéseit mutatja.

Perceptron hálók betanítási folyamata

A betanítási feladat a jelen esetben: 4x8-as, X, O és üres mezőkből álló mátrixképből és a kép által leképezett amőbaállás jóságát X (illetve a másik betanításban O) számára megadó számértékből álló mintapárokból álló mintafájl betanítása a hálónak.

A betanításhoz szükséges információ egy mintapár esetén a 4x8-as mátrix és a 0..65535 értéktartományba beleférő jósági érték. A háló kimenetén elvárt jósági értéket nem egyetlen neuron 0-1 tartományára, hanem 16 darab neuronra fogjuk leképezni. Az egyes kimeneti neuronok a jósági érték bináris értékének bitjeit fogják ábrázolni, így a kimeneteken adódó kisebb hiba nem lesz annyira zavaró. Ismeretes, hogy a mesterséges neurális hálók nem tökéletesen pontos kimeneteket adnak, ezért előnyös ez a szétosztott kimenet. Ennél egy 0.3-as kimenő értéket 0-nak, egy 0.75-öset 1-nek fogunk venni.

Tehát a háló 4x8= 32 inputtal és 16 output neuronnal fog rendelkezni. Az egy alkalmazott rejtett rétegbeli neuronok számának meghatározására csak ökölszabályok léteznek, így azt módszeres próbálgatással fogjuk meghatározni. Az egyszerűség kedvéért azt a darabszámot részesítjük előnyben, amellyel a háló gyorsabban betanulja a mintafájlt. Ez a próbák során 384-re adódott.

Komolyabb probléma a betanításhoz a mintapárok összegyűjtése. A betanításhoz ténylegesen lejátszott játszmák lépéseit és azok jósági értékét fogjuk felhasználni. A mintapár input oldalát egy üres mezőre letett X, vagy O tesztjelre, mint középpontra illesztett csillag alakzat téglalap alakra transzformált alakja fogja adni, de ki fogja megbízhatóan megmondani nagyszámú állásra, hogy az mennyire előnyös a tesztjel lerakója számára? Éppen bízhatnánk ezt a feladatot emberekre is, de az értékek nem lennének eléggé megbízhatóak. Másrészt nehéz olyan embert találni, aki a sok érték megadását vállalná. Ezért az adott helyre lerakott tesztjel jóságát számítógéppel fogjuk kiértékeltetni. Erre a célra egy elég erősen játszó heurisztikus elvű amőbázó programot módosítottunk úgy, hogy gép gép elleni játékban generálja az input mintázatokat és mentse le hozzájuk a jósági értékeket is. A programmal a több száz mintát és azok jósági értékét tartalmazó betanítófájl előállítása gyors és egyszerű. A program lehetővé teszi, hogy válasszunk a játék „sűrűjéből”, vagy az üres területeken található mezők teszteléséből adódó mintapárok mentése között, hogy a betanított neurális hálónak legyen képe, ismerete a játék szempontjából nem érdekes üres területek mezőinek alacsony jósági értékéről is.

A betanítófájl összeállításakor kihasználtuk a Brainmaker neurális háló betanító program azon jellemzőjét, hogy a .def betanítófájl fejrésze tartalmazza a neurális háló szerkezeti jellemzőit és a mintapárok külön láncolható .fct kiterjesztésű fájlokban adhatók meg. A .def állományt mutatja az ábra:

A betanítófájl fejrésze

Látható, hogy a mintapárokat a facts kulcsszó vezeti be, és egyetlen mintapár után a láncolt .fct fájl nevének megadása található. A láncolt fájl kezdete alább látható. A fájlban több ezer mintapár is lehet. A minták ismétlődése nem okoz gondot.

Tényfájl részlet

A neurális háló betanítása a Brainmaker™ programmal történik, melynek a fenti definíciós fájlt megadva és a tanítást elvégezve az alábbi kép fogad:

A betanító program

Az ábráról több minden leolvasható: Az utolsó minta input része két O jelet tartalmazott, a hozzá tartozó elvárt bináris jósági érték: 0000000001011000, azaz 88. A lerakott tesztjel szintén O volt. A neuronháló által számítottkimeneti értékek 0.1 tűrésen belüliek, a betanítás megadott tűrése (Tolerance) ugyanis ennyi volt. A betanítás után a háló az összes mintapár inputjához ilyen hibahatáron belül számítja a kimenetet. Soha nem látott mintákra azonban nagyobb hibával rendelkező kimenetet is ad. Látható még, hogy egy kis, 251 mintapárt tartalmazó fájlt 67-szer mutatott be a hálónak, míg az a 0.1-es tűrésen belül betanulta azokat (Fact, Run).

A súlymátrix lementése

A betanult súlyokat a Print/Weight Matrices to File ... menüponttal menthetjük egy .mtx kiterjesztésű fájlba.

A beágyazó C programban a Brainmaker szoftvercsomagban található runtime könyvtár programjai közül a súlyfájl-betöltő és a neuronháló futtató függvényekre van szükség. Az elkészült program egy 5-7 éves gyerek szintjén játszik, bár néha megcsillantja a tehetségét, de a nyerő helyzetek megakadályozásában még nem erős. A működését a következő animáción követhetjük:

Neurális háló alapú amőbajáték

video lejátszás

Virtuális robotok

A virtuális robotokat az olcsóság, a költségmegtakarítás igénye hozta létre. Hasonlóan a jól ismert szimulációs programokhoz, a fizikailag megtestesülő robotokkal szerezhető tapasztalatok egy jelentős része virtuálisan, 3D grafikával, fizikai modellezéssel rendelkező szoftverágensekkel is megszerezhető. A virtuális robotok másik családja a fizikai valóságában létező robot szimulálására szolgál, jóval olcsóbbá téve pl. a mozgástervezést, méretek változatainak kipróbálását, a tömeges elérhetőség révén megsokszorozva a kutatásba bekapcsolódni képes kutatók számát. A virtuális robotok virtuális környezetben működnek, a VR, Virtual reality, virtuális valóság részeként.

A gyakori alkalmazási területek közé tartozik a telerobotika veszélyes környezetekben végzett tevékenységek követésére, valós eszközökkel nehezen modellezhető nagyméretű és ellenkezőleg, mikro méretekben. Nagyon gyakori alkalmazásuk a genetikus evolúciókutatás modellezésében, a virtuális élet résztvevőiként. Egyik alkalmazásuk a SimuroSot robotfoci esete, amikor is csak a képernyőn zajlik a labdarúgás. Másik nagyon elterjedt alkalmazásuk a játékprogramok karaktereiként való használat, ahol a játék által leképezett virtuális, akár irreális, meseszerű világban tevékenykednek. Virtuális karakterek szolgálnak beszélgető robotokként az esetek túlnyomó többségében, ahol a kognitív képességek megjelenítése nem igényli az anyagi megvalósítást.

Képet kaphatunk egy virtuális környezet és abban tevékenykedő mobil robot építésének lehetőségeiről a Virtual Robotics Lab szoftver demója alapján, melyből egy képet láthatunk alább. A teljes demó itt tekinthető meg.

A programrendszer kifejezetten oktatási célra készült, tanári verziója is létezik.

Egy Virtual Robotics Lab alkalmazás

A tanulás szerepe az önfejlesztésben

Tanulás nélkül a gépi intelligencia nem érheti el célját, az emberi intelligenciával összemérhető, Turing tesztet kiállni képes szintet. Amennyiben az ágens csak a beleprogramozott tudással bír, soha nem múlhatja felül a létrehozóit. A másik jelentős indok, ami miatt a tanulás kiemelt szereppel bír, az az, hogy a kellő színvonalú tudás összegyűjtése, formalizálása, bevitele a robotba és tesztelése nem embernek való feladat, gyakorlatilag kivitelezhetetlen. A megoldást az ágens tanulóképessége nyújtja. Amennyiben az ágens a külvilágból szerzett ismeretekből tanulni képes, azokat átstrukturálva képes a világ körbevevő részének leképezésére, azokon végzett kognitív műveletekkel általánosításra, fogalomalkotásra, szabályok megtanulására képes, akkor önmaga biztosíthatja a saját fejlődését, így meghaladhatja a létrehozóinak a kognitív képességeit. Tehát az ágensnek nem ismereteket, hanem tanulóképességet kell programoznunk.

Tanulás multi-ágens környezetben

A 2.10 pont ismertette a multi-ágens robotrendszerek fogalmát. A multi-ágens rendszerek működése speciális előkészületet feltételez. Russell és Norvig (2000) szerint egy ilyen mechanizmusban a konfliktusok elkerülése érdekében az ágensek közös, multi-ágens tervet (MAP) készítenek. A terv az összes ágens valamennyi jövőbeli cselekedetét illetve interakcióit tartalmazza. Végrehajtásával párhuzamosan azonban az ágensek folyamatosan módosítanak rajta. Centralizált tervezés esetén létezik egy koordinátor ágens, ami minden részleges és lokális tervet megkap a többiektől. Ezeket analizálja inkonzisztenciák és konfliktusok után kutatva. Az esetlegesen módosított lokális tervekből ez az ágens készíti el a multi-ágens tervet. A koordinátor szerep ágensekhez rendelése dinamikusan is történhet. Az elosztott multi-ágens tervezés alapgondolata az, hogy minden ágens rendelkezik elképzeléssel, modellel a többi ágens terveit illetően. E modellek és persze saját terveik felépítése és karbantartása érdekében az ágensek folyamatosan kommunikálnak egymással egészen az esetleges konfliktusok megszűnéséig. Mivel a multi-ágens tervezés esetén nagy mennyiségű információt kell feldolgozni, plusz ezeknek el is kell jutniuk az ágensekhez, ezért lassú.

A következőkben a multi-ágens robotrendszerek népszerű fajtáját, a robotfocizást vizsgáljuk meg közelebbről. Az alábbi ábrán a 2010-es isztambuli versenyről láthatunk képeket, különféle robotkategóriákban.

Robotfoci mérkőzések

Egy izgalmas részletet mutat a következő film: video lejátszás

A robot foci versenyeit Amerikában a RoboCUP keretében, míg Európában és a Távol-Keleten a FIRA (Federation of International Robot-soccer Association), a Nemzetközi Robotfoci Szövetség által koordináltan rendezik. A Szövetség a világméretű összeméretésekre több kategóriát szabványosított. Ezek a Szövetség honlapja (FIRA, 2011) szerinti fő kategóriák a következőkben kerülnek bemutatásra.

Robotfoci kategóriák

HuroSot – (Humanoid Robot World Cup Soccer Tournament, vagy rövidebben Humanoid Robot Soccer Tournament) Humanoid robotok: kétlábú, max. 150cm magas, max. 30kg tömegű távirányítású, vagy autonóm vezérlésű emberszerű robotok. 340-430cm x 250-350cm viszonylag szabadon választható játékmező. Lásd pl.: http://www.youtube.com/watch?v=4wMSiKHPKX4

HuroSot mérkőzés

AMiRESot – (AMiRE Soccer Tournament) AMiRE-robotok, Csapatonként 1 robot, fedélzeti látórendszerrel, teljes autonomitással. Sárga teniszlabda, 130cmx90cm-es játéktér.

AMiRESot robot és pálya

NaroSot – (Nano-robot Soccer Tournament) A csapatok egy kapusból és négy mezőnyjátékosból állnak. Mind a két csapatnak saját központi számítógépe van, mely a pálya közepe felett elhelyezett kamera képe alapján észleli a résztvevőket és a labdát és koordinálja a saját csapat játékosait. A robotok tetején a csapatok megkülönböztetésére és a robotok orientációjának meghatározására alkalmas színezés, mintázat van. A robotok legfeljebb 4cmx4cmx5.5cm-esek lehetnek, kivéve az antennát, mely magasabb lehet. A labda egy narancs színű pingponglabda. A játéktér 130cmx90cm. Lásd pl.: http://www.youtube.com/watch?v=1JJsBFiXGl0

NaroSot robot és pálya

AndroSot – (Android Soccer Tournament) Távirányított, max. 0.6kg, max. 50cm magas robotok, 220cm x 180cm-es játéktér.

AndroSot mérkőzés

RoboSot – (Robot Soccer Tournament) A csapatok 1-3 robotból állhatnak, egyikük lehet kapus. A robotok távirányítottak, vagy autonómok egyaránt lehetnek, távirányítás esetén a központi számítógép a robotok fedélzeti kamerájának, azaz a szemeiknek az információját dolgozhatja fel. A robotok legfeljebb 20cm x 20cm alapterületűek lehetnek, tetszőleges magassággal. A labda egy sárga és világoszöld színekkel rendelkező teniszlabda, a pálya 260cm x 220cm-es.

RoboSot robot

SimuroSot – (Simulated Robot Soccer Tournament) Szimulált robot futball, csak a számítógép képernyőjén zajlik. A számítógépen futó szerver program nyújtja a játékteret, robotok megjelenítését, eredménytáblát, stb., míg a két kliens program a játékstratégiákat. Öt öt ellen, vagy tizenegy tizenegy ellen játszik a csapatokban.

SimuroSot képernyő

MiroSot – (Micro Robot Soccer Tournament), a NaroSot nagyobb méretű megfelelője, háromfős csapatok, melyből egy kapus lehet, 7,5cm x 7.5cm x 7.5cm maximális robotméret, melybe az antenna nem számít bele, narancsszínű golflabda, 400cm x 200cm, vagy 220cm x 180cm pályaméret jellemzi.

MiroSot robot

A következőkben egy, az előző két kategória ötvözeteként felfogható alkalmazást mutatunk be (Tóth P. 2010) alapján, mely a MiroSot szabályrendszerével valósít meg egy robotfoci szimulációt.

Egy virtuális robotfoci alkalmazás

Millington és Funge (2005) szerint a legtöbb mesterséges intelligenciát használó játék általános modellje 3 részből áll:

  • Stratégia

  • Döntéshozatal

  • Mozgás

MI alapú játékok modellje

A játék a (játék)világban zajlik. Az innen származó hatások, információk bekerülnek az ágens team ismeretei közé – érzékel -, majd a csoport mesterséges intelligenciája stratégiát dolgoz ki a reagálásra. Ezt az egyes ágensek felhasználják a döntéshozó algoritmusaik segítségével a pillanatnyi információk birtokában a következő lépés meghatározására, majd a mozgásgeneráló algoritmusaik generálják a mozgásokat. Végül a mozgások animálása a megfelelő fizikai törvények betartása mellett lezajlik a játékvilágban.

Egyszerűbb játékoknál egyes összetevők elmaradhatnak, pl. a fizika 2D-s animációknál, vagy a stratégia ügyességi szimulációs játékoknál, egyszereplős játékokban. A megcélzott MiroSot robotfoci szimulációban elmarad a fizikai modellezés.

Stratégia

Ebben a kategóriában MI algoritmusok vannak, amelyek nem csak egyetlen robotot irányítanak, hanem a csapat egészének a viselkedésére hatással vannak. Minden robotnak a csapatban saját döntéshozó és mozgási algoritmusa van, de általában a saját döntéshozó algoritmusukra hatással van a csoportstratégia.

Döntéshozatal

A döntéshozatal tartalmazza a megoldási algoritmust arra vonatkozólag, hogy egy robot mit fog tenni a következő lépésben. Általánosságban egy játékban többféle karakter is szerepelhet. A nagyon eltérő karakterek nagyon különböző viselkedéssel rendelkezhetnek, így választhatnak végrehajtási formát, amelyek például a következők lehetnek: támadás, egy helyben állás, rejtőzködés, felderítés, járőrözés, védekezés, stb. A döntéshozó rendszernek meg kell oldania, hogy melyik ezen viselkedések legmegfelelőbbike. A választott viselkedést ezután végre lehet hajtani felhasználva a mozgást és esetleg az animációs technológiát. Egy karakternek elég egyszerű szabályai lehetnek a lépés kiválasztásra. A robotfoci játékban a mezőnyjátékos, a kapus és a labda viselkedik szereplőként, melyeknek az őket érő hatásokra reagálniuk kell, megfelelő döntések meghozása formájában.

Mozgás

A mozgás modul olyan intelligens algoritmusokra hivatkozik, amelyek valami fajta mozgást generálnak egy bizonyos döntés hatására. A mozgási algoritmusok sokkal összetettebbek lehetnek, mint az egyszerű önvezérlések. A robotoknak, vagy ágenseknek szükségük lehet arra, hogy kikerüljék az akadályokat az úton, vagy akár arra is, hogy például átküzdjék magukat a szobák egy sorozatán. Vannak játékok ahol sok akciót közvetlenül animációval hajtanak végre (pl.: Amikor mászási akciót akarunk, akkor lejátszódik egy mászás animáció). A robotfoci játékban ez a komponens van jelen a legerősebben, hiszen a döntéseknek összetett, célirányos mozgásokat kell eredményezniük.

A fenti ábrával ismertetett, mesterséges intelligencia alapú játékalgoritmusok mellett a játékokban általánosságban még igen sokféle, mesterséges intelligenciát nem igénylő algoritmus, működés van jelen. Ezek közül az animációs és az újabb játékokban megjelenő fizikai modellezést az ábra is jelzi, mint igen komoly matematikát és kódot igénylő részeket. Hasonlóan kódigényes rész a felhasználói interfész. Mindezek programozói munkaigénye általában meghaladja a mesterséges intelligenciát képviselő rész igényét. Robotfoci alkalmazásunk ebből a szempontból kivételnek tekinthető, mivel nem igényel jelentősebb felhasználói beavatkozás kezelést és a kimenetben csak nagyon egyszerű helyváltoztató mozgások animációja fog szerepelni.

A realizálást ágens alapon végezve hangsúlyozzuk, hogy az alkalmazás autonóm robotokból fog állni, melyek információt kapnak a játék mindenkori állásáról, előre meghatározzák, hogy milyen akciókat hajtsanak végre az információk alapján és végrehajtják azokat. Ez egy alulról felfelé építkező modell. Kezdésként kidolgozzuk, hogy hogyan viselkedjenek az ágensek és az implementálás során az MI-nek támogatnia kell azt. Az egész játék átfogó viselkedése egyszerűen csak annak a függvénye, hogy hogyan viselkedik az egyéni robotjátékos együttműködve a többiekkel.

Döntési Fa

Mint már korábban láttuk, a döntési fa gyors, egyszerű implementálni és könnyű megérteni. Sok mindenre használható, az animációktól elkezdve a komplett stratégián át az MI taktikáig. A döntési fát lehet tanítani is és a tanulási fa még nagyobb mozgásteret enged a programozónak. Minden választás a robotjátékos tudásanyagán alapul. Mivel a döntési fákat gyakran használjuk, mint egyszerű és gyors döntési mechanizmusokat, ezért az ágensek általában közvetlenül hivatkoznak a globális játékállásra, mintsem hogy ábrázolják azt (értelmezzék, hogy mit tudnak személy szerint). A fa minden levele egy rögzített akció. Mikor a döntési algoritmus megérkezik egy akcióhoz, akkor azt azonnal végrehajtja. A legtöbb falevél egyszerű döntésekből áll, általában csak két lehetséges válasszal.

A következőkben a részletezést a (Tóth P., 2010) irodalom felhasználásával, a szerző engedélyével végezzük.

A program által használt döntési fa

Minden játékosnak, kivéve a kapusokat, két döntési fájuk van. Az egyik akkor lép életbe, ha az ágensnál van a labda, a másik akkor, ha nem nála van a labda, hanem az ellenfélnél.

Döntési fa 1

Alapvetően a döntési fa két részre osztható. Az egyik az, amikor a játékos a kapu közelében van, a másik az, amikor még nincs a kapu közelében. Mind két részben vannak azonos részek, amelyek a következők. Ha az ágenst támadják, akkor megnézi, hogy tud-e passzolni. Ha tud, akkor elindítja a passzolási akciót a ’Passzolas()’ metódus meghívásával, ami a társához juttatja a labdát. Ha nem tud passzolni, akkor felszabadít és az ellenfél leghátsó játékosának a háta mögé rúgja a labdát. Erre mindkét csapatnak külön metódusa van. Az eltérő részek pedig a következők. Ha senki nem támadja a játékost és a kapu közelébe jutott, egy bizonyos területen belülre, akkor ellövi a labdát (erre szintén különböző metódusokat használ a két csapat). Ha viszont még nincs a kapu közelében, akkor annak irányába tovább viszi a labdát.

Döntési fa 2

Az előzőhöz hasonlóan ez is két részből áll. Az egyik rész az, hogy az ellenfél támadójánál van a labda, a másik az, hogy az ellenfél védőjénél van a labda. Ezeken belül az egyes részek azonosak. Ha tudom közvetlenül támadni, akkor megtámadom az ellenfelet és megpróbálom mögé rúgni a labdát, ha nem akkor megyek segíteni a kapusnak.

A döntési fákba és azon belül is a legtöbb metódusba csak úgy lehet belépni, ha a csapattárs és az ellenfél se nem passzol, se nem próbál felszabadítani, se nem lő.

A Szinkronizációs osztály

A választott Java nyelv lehetővé teszi a programok több szálon történő végrehajtását. Erre amiatt van szükségünk, hogy a résztvevők autonóm viselkedését biztosíthassuk. A Java szálakat a Java Virtual Machine (VM) folyamata által az operációs rendszer szintjén létrehozott szálak valósítják meg. A Java szálakhoz prioritást rendelhetünk, amelyet a Java továbbít az operációs rendszer ütemezőjének. Az operációs rendszer és a hardver lehetőségeitől függően a szálak párhuzamosan kerülnek végrehajtásra. A Java VM-ben (Benkő – Tóth, 2007) szerint kétféle szál létezhet:

  • démon (daemon) és

  • nem-démon (non-daemon) szál.

Kezdetben egy nem-démon szál jön létre, amely elkezdi végrehajtani a megadott osztály induló metódusát. A Java VM akkor áll le, ha az utolsó nem-démon szál futása is befejeződött. A démon szálak arra valók, hogy a háttérben szolgáltatásokat, illetve egyéb tevékenységeket valósíthassunk meg anélkül, hogy ez a tevékenység a Java VM leállását megakadályozná.

Tehát a Java-ban a java.lang.Thread osztály segítségével több szálon futó alkalmazásokat fejleszthetünk. A szálakat a Thread osztály és leszármazottainak példányai valósítják meg. A Thread példány elindításakor a példány run() metódusát hajtja végre egy önálló szálon.

Szálat kétféleképpen hozhatunk létre:

  • A Thread osztályból leszármaztatunk egy új osztályt, melyben a run() metódust felüldefiniáljuk,

  • vagy egy a Runnable interfészt megvalósító osztály egy példányát adjuk át a Thread osztály konstruktorának.

A Runnable interfész egyetlen run() metódust tartalmaz, használatára általában akkor van szükség, ha a run() metódust tartalmazó osztály nem származhat a Thread osztályból.

Többszálú programozás esetén szükség van a szálak szinkronizálására amennyiben azok közös adatokon dolgoznak. A szinkronizálásnak több célja is lehet:

  • kölcsönös kizárás (mutual exclusion), szemafor (semaphore), kritikus szakasz (cricital section),

  • randevú (randezvous), az egyik szál felfüggeszti futását, amíg a másik be nem fejeződik,

  • várakozás egy másik szálon történő valamely esemény bekövetkeztére (wait()),

  • stb.

A szinkronizált működéshez szükséges metódusokat synchronized módosítóval kell ellátni, valamint az Object osztályból örökölt notify() metódussal kell „felébreszteni” az épp „alvó” szálat.

Ütközések kezelése

Első Megoldás

Ezt a megoldást szokták általában használni a versenyen induló csapatok. (Mihaletzky, 2009) szerint

 

A labda és a játékosok közötti ütközések vizsgálata 3 fő részre osztható.

  • Az elsődleges vizsgálat során egy PtInRect nevű függvény segítségével vizsgáljuk a labda pontjait (Point), hogy vajon belül vannak-e valamelyik játékos (Rectangle) területén. Külön-külön kerül kiértékelésre a vízszintes és a függőleges irányú ütközés a labdával, és amennyiben teljesül valamelyik ütközési feltétel, akkor az adott logikai változó ’true’ értéket vesz fel, így a program további futása során lekezeljük az irányváltásokat. Viszont amikor két egymást követő időpillanatban ugyanazon ütközési feltétel teljesül, a labda állandó irányváltása miatt beragad a játékosba, és annak felületén rezegve végigfut. Ennek kiküszöbölésére egy 2*6 elemű tömb segítségével nyilvántartjuk minden robot esetében az egymást közvetlenül követő ütközések logikai értékeit, így ha két egymást követő ciklusban kétszer kerülne sor irányváltásra ugyanazon robot és a labda között, akkor ’false’ értékűre állítjuk az ütközés logikai változót és a labda zavartalanul haladhat tovább pályáján. A tömb sorai a robotokat modellezik, míg a két oszlop érték két egymást követő időpillanat során bekövetkező ütközések logikai értékeit tartja nyílván. Minden ciklusban az első oszlopérték áttöltésre kerül a második oszlopérték helyére. Miközben az első helyére az aktuális ütközési feltételnek megfelelő érték töltődik be újra, egy egyszerű összehasonlítással vizsgálható, hogy azonos értékeket tartalmaz-e a két oszlop.

  • Ez egy másodlagos vizsgálatot jelent. Ennek ellenére a tesztelési tapasztalatok alapján szükségessé vált még egy harmadik vizsgálat elvégzése, ami az előző kettő után esetlegesen bekövetkező pontatlanságokat orvosolja.

  • Képzeletben minden robotot négy részre darabolunk úgy, hogy függőlegesen is, és vízszintesen is egy oldalfelező vonallal kettévágjuk a játékost. Ezután minden negyedben azt vizsgáljuk, vajon a labda középpontja beleesik-e valamely robotszeletbe. Ha igen, akkor könnyen belátható, hogy az ütközés még nem teljesült az előző vizsgálatok során, így attól függően, hogy mely negyedben található a labda centruma, a szükséges irány- és előjelváltásokat elvégezzük a labda tekintetében. Ez a harmadik módszer egy erőteljes irányváltást eredményez, amely során a robot nagy sebességgel elrúgja magától a labdát.

    A robotok közötti ütközések lekezelése ugyanazt a technikát követi, mint ahogy azt a labda-robot ütközések előbbi vizsgálata során láttuk. A két eljárás között annyi eltérés van csupán, hogy itt a pont szerepét az egyes robotok sarkai jelentik, és ezeket a pontokat vizsgáljuk, hogy vajon bent vannak-e valamelyik játékos területén. Ezt a feltételvizsgálatot is a PtInRect függvény segítségével végezzük.

 
 --Mihaletzky, 2009

Második Megoldás

Az általunk használt megoldás a következő: Egy logikai változó beállítását végezzük el egy metódus segítségével, ami ellenőrzi, hogy a labda elérte-e a játékost. Az ellenőrzés megvalósítását a következő programrészlet végzi.

public void ellenorzes() {
 bumm = false;
 if (labda[0]+2 > (kocka[0]))                        //balról vizsgál
  if (labda[0] < (kocka[0]+kocka[2]+2))        //jobbról vizsgál
   if (labda[1]+2 > (kocka[1]))                      //felülről vizsgál
    if (labda[1] < (kocka[1]+kocka[3]+2))      //alulról vizsgál
	bumm = true;
}

							

A metódusban mindig a labda helyzetét viszonyítom a játékos helyzetéhez: x és y koordinátáihoz. Az ellenőrzés megtörténte után, ha a logikai változó a ’true’ értéket veszi fel, jelzi, hogy a labda hozzáütközött az objektumhoz. Ezt a fajta ellenőrzést mind a kapusnál, mind a kapunál elvégezzük, így két külön akció történik akkor, ha a kapus kivédte a lövést, vagy ha gól született.

Követés

A védőnek, támadónak és kapusnak mindig követniük kell a labda mozgását. A védőnek és a kapusnak azért, hogy elé állva megakadályozzák, hogy az ellenfél gólt szerezzen, a támadónak pedig azért, hogy gólt tudjon szerezni. Mindhárom szereplő azonosan követi a labdát, bár a kapusnak van némi megkötése.

A példaprogramról készült következő kép az egyik szál által kezelt, labdát követő játékost mutatja, aki csak bizonyos területen tartózkodhat, míg a másik szál által kezelt játékos egy másik területen belül mozoghat csak. A labda szintén egy külön szálat képvisel, ezen három szál szinkronizálva működik. Az ábrán látható, hogy amíg a védő játékos a saját térfelén belül szabadon követi a labdát, addig az ellenfél térfelére jutott labdát a védő csak vertikálisan követi, mert nem léphet át az ellenfél játékos térfelére.

A saját térfelén a játékos követi a labdát, az ellenfél védőjátékosa a saját térfelén marad

Attól függően, hogy milyen szerepet tölt be az ágens a programban, a védő és a támadó is csak adott területen belül mozoghat és ezt a területet nem hagyhatja el.

A főprogram folyamatábrája

Az alábbi ábrák tartalmazzák a focipálya alaprajzát és rajta a játékosokat elhelyezkedve attól függően, hogy melyik csapat kezd. A fociban csapatonként három robot vesz részt.

  • Támadó,

  • Védő,

  • Kapus.

Mindhárom gondolkodásáról és mozgásáról külön szál gondoskodik. A játék elején a főprogramban elindítjuk az egyes játékosok szálait és a labda szálát. Ezen felül ugyancsak ekkor töltjük be a játéktér háttérképét, a játékosok, a labda és a gól képét. A főprogramban íratjuk ki még a játék állását és gondoskodunk a gól kijelzéséről. Minden egyes gól után a játékosok újból középkezdést végeznek.

Alapfelállások

A támadási mechanizmus

Alapvetően mind a támadó mind a védekező robot tud támadni, bár csak a támadó robot kerül a kapu közelébe. Mihelyst egy meghatározott területen belül találja magát az éppen támadó ágens, elindítja a saját csapatának megfelelő lövési metódust. Az adott metódust csak akkor lehet elindítani, hogy ha a csapattársa (aki nem a kapus) és a másik két ellenfél (az ellenfél támadó és védő játékosa) semmilyen más metódust nem hajt végre. A metódus egy akciót bonyolít le, ahol a támadó kapura lövi a labdát, amit a kapus vagy kivéd, vagy esetleg nem tud kivédeni. A lövés befejezésével ha a kapus kivédte a labdát és még nem passzolta le a hozzá legközelebbi játékosnak, úgy a támadó megpróbálhatja megtámadni a kapust és így még egyszer esélye nyílhat gólt lőni.

A kapu védésének mechanizmusa, az ellenfelek közötti kapcsolatok és a gól

A kapusok feladata nyilvánvaló: megakadályozni, hogy az ellenfél gólt szerezzen. Csak a kapu keretein belül mozoghatnak és csak akkor tehetik azt, ha a labda egy bizonyos területen belülre érkezik. A kapu külön objektum a kapus háta mögött. Létezik a kapufa fogalma is, ha a kapu szélét el is találja a labda, akkor sem gól. A kapus nem jöhet ki a kapujából, csakis az y tengely mentén mozoghat. Ha a labda elhagyta a veszélyzónát, a kapus visszaáll középre. Ha a kapus kivédte a labdát, akkor a hozzá legközelebb álló csapattársának próbálja passzolni. Ha nem passzol időben, akkor az ellenfél megtámadhatja.

Mindig két játékos – a két csapat egy-egy játékosa – mozog a leggyorsabban a labda irányába, a másik kettő csak kisebb sebességgel követi a labdát. Azért, hogy mindegyik játékos látható legyen a képernyőn, a játékosok nem fedhetik le egymást teljesen, mindig van látható különbség közöttük. Van egy metódus, ami arra hivatott, hogy színesebbé tegye a játékot. Ez a metódus a ’JobbvsBal()’, ami azt eredményezi, hogy a játékosok, ha túl közel kerülnek egymáshoz, akkor csatáznak, ami hatására az egyik játékos arrébb löki a másikat.

Annak érdekében, hogy ne számoljon a program egyetlen kapuérintésnél több gólt a kelleténél, késleltetés van két gól között, ami minimum 2 másodperc. Ha valamelyik csapat gólt kapott, a két csapat állását jelző szöveg alá kiíródik a „Góóóóóól!!!” felirat piros betűkkel és 2 másodpercig marad a képernyőn, majd eltűnik. Ezután újbóli középkezdés jön.

A gól kiírása

A fenti ábrán látható az előzőekben leírt kiírás a kapott gól után. A középkezdést mindig az a csapat kezdi, amelyik kapta a gólt és így kezdődhet előröl a játék.

A labda mozgásirányításának szála

A labda saját magától nem mozog. Ebben a szálban ellenőrizzük, hogy nekiütközik-e valaminek, szabályozzuk az ütközés hatását, itt számoljuk a gólokat, aktualizáljuk a mérkőzés állását, valamint ezen a helyen található több metódus:

  • Passzolás

  • A jobb csapat felszabadítási metódusa

  • A bal csapat felszabadítási metódusa

  • A jobb csapat lövési metódusa

  • A bal csapat lövési metódusa

Passzolás

Ebben a metódusban megadhatjuk paraméterként, hogy melyik játékosnak szeretnénk passzolni a labdát. Az akció úgy zajlik le, hogy addig növeljük, vagy csökkentjük a labda x és y koordinátáit, ameddig el nem ér a passz az adott emberhez.

A felszabadítási metódus

A védekező csapat azt figyeli ilyenkor, hogy az ellenfél csapat támadója és védője közül melyik helyezkedik el a saját kapujához a legközelebb és annak háta mögé rúgja a labdát.

A lövési metódus

Ha az ágens egy bizonyos területen belülre ér és lehetősége van rá, tehát senki nem áll az útjába, akkor elindul a lövési mechanizmus. Ez a metódus megpróbálja a labdát a kapu egy adott pontjára lőni azt és ezáltal gólt szerezni. A lövés addig tart, amíg vagy gól nem születik, vagy a kapus ki nem védi a labdát.

Közös információk

A játékosoknak vannak közös információik, amiket a környezetükből nyernek ki, és amik alapján befolyásolni tudják azt. Ezen részt tartalmazza a „Kozos” osztály. Ebben az osztályban többféle metódus szerepel.

  • ’Tavolsag()’: ebben a metódusban a metódus paramétereiben megadott játékos és a labda távolságának kiszámítása történik, amivel a metódus visszatér.

  • ’JobbMehet()’: a programrészlet kiszámítja mind a jobbtámadó, mind pedig a jobbvédő távolságát és ez alapján dől el, hogy ki van közelebb a labdához.

  • ’BalMehet()’: ennél a résznél értelemszerűen a baltámadó és balvédő távolságának kiszámítása jön létre és az előzőhöz hasonlóan a döntés is megszületik.

  • ’JobbvsBal()’: ezen metódusban az kerül kiküszöbölésre, hogy a két közvetlenül egymás ellen focizó játékos lefedje egymást és így valamelyik játékos ne látszódjon a képernyőn. Ha a védő és a támadó csatázik egymással, akkor mindig a védő pozíciója változik. Ha viszont a két védő, vagy a két támadó harcol, akkor random szám generálásával dől el, hogy melyik pozíciója változzon. A pozíció mindig ugyan abba az irányba tolódik el, így van, amikor előnyre tesz szert az adott játékos, van amikor pedig hátrányra.

  • ’Kinelvan()’: itt számoljuk ki, hogy melyik játékos van közelebb a labdához, a játékos és a labda, valamint a többi játékos és a labda távolságának kiszámításával, illetve a játékos és a labda távolságának egy adott értéken belüli egyezőségével.

A működő játékot itt nézhetjük meg:

Multi ágens robot foci program

video lejátszás

Kérdések a fejezet anyagához

  • Miért fontos a tanulás az emberszerű robotok esetében?

  • Mit értünk túltanulás alatt?

  • Ismertesse a döntési fa tanulás lépéseit!

  • Vázolja a mesterséges intelligencia alapú multiágens játékok fő részeit!

Felhasznált és ajánlott irodalom

1. Artificial Neural Networks (2010) http://en.wikibooks.org/wiki/Artificial_Neural_Networks#Table_of_Contents, Elérés: 2010.12.21.

2. Benkő Tiborné – Tóth Bertalan (2007) Együtt könnyebb a programozás. Java. ComputerBooks 2007

3. California Scientific (2008) BrainMaker Neural Network Software, http://www.calsci.com/BrainIndex.html Elérés: 2008.04.07.

4. Dudás L. (2006) Mesterséges intelligencia elektronikus jegyzet, p578. http://ait.iit.uni-miskolc.hu/~dudas /oktatas/mesint, Elérés: 2010.12.20.

5. FIRA (2011) http://www.fira.net/

6. Freisleben, B., (1992) "Teaching a Neural Network to Play GO-MOKU," in I. Aleksander and J. Taylor, eds, Artificial Neural Networks 2, Proc. of ICANN-92, Brighton UK, vol. 2, pp. 1659-1662, Elsevier Science Publishers, 1992

7. Freisleben, B. (1995) "A Neural Network that Learns to Play Five-in-a-Row," Artificial Neural Networks and Expert Systems, New Zealand Conference, pp. 87, 2nd New Zealand Two-Stream International Conference on Artificial Neural Networks and Expert Systems (ANNES '95), Dunedin, New Zealand November 20-November 23. 1995. ISBN: 0-8186-7174-2

8. Freisleben, B.and Luttermann, H. (1996) Learning to play the game of Go-Moku: A neural network approach. Australian Journal of Intelligent Information Processing Systems, 3(2):52–60, 1996.

9. Haykin, S. (2009) Neural Networks and Learning Machines, Prentice Hall p.906 ISBN 0131471392 ebook: http://www.mediafire.com/?98j1oqt8sd4ny95 Elérés: 2010.12.21.

10. Hewitt, Carl (1985): The Challenge of Open Systems Byte Magazine. April 1985. (Reprinted in The foundation of artificial intelligence—a sourcebook Cambridge University Press. 1990

11. Horváth G. (ed.) (1995) Neurális Hálózatok és Műszaki Alkalmazásaik, Műegyetemi Kiadó, Budapest, p.314 ISBN 9789634205777

12. Horváth G. (ed.) (2007) Neurális Hálózatok, PANEM p. 448. ISBN 9789635454648

13. Lawrence, J. (1993) Introduction to Neural Networks, 5th edition, ISBN 1-883157-00-5

14. Millington, I. – Funge, J., (2009) Artificial intelligence for games, Second Edition, Morgan Kaufmann Publishers, USA, ISBN978-0-12-374731-0

15. Smith, L. (2003) An Introduction to Neural Networks http://www.cs.stir.ac.uk/~lss/NNIntro/InvSlides.html#what Elérés: 2010.12.21.

16. Stefán P. (1999): Megerősítő tanulási módszerek alkalmazása az informatikában Doktorandusz Fórum1999 Miskolc, http://members.iif.hu/stefan/PDF/dforum_1999.pdf, Elérés: 2010.12.20.

17. Sutton, R.S. – Barto, A.G., (1998): Reinforcement Learning: An Introduction, The MIT Press, Cambridge, Massachusetts, London, England http://www.cse.iitm.ac.in/~cs670/book/the-book.html Elérés: 2010.12.20.

18. Russell, S. J. – Norvig, P., (2000): Mesterséges Intelligencia Modern Megközelítésben. Budapest., PANEM-PRENTICE Hall, 2000.

19. Tóth P. (2010) Robotfocizás programozása szálkezeléssel és multi-ágens rendszerrel, Szakdolgozat, Miskolci Egyetem 2010.

20. Tzuu-Hseng Steve Li & Hernsoo HAHN (2010) AndroSot (Android Soccer Tournament) Laws of the Game 2010, http://big5.iware.com.tw/public/updata/B1AndroSotGameRulesApril052010.pdf Elérés: 2010.12.20.

6. fejezet - Összefoglalás, jövőbetekintés

A könyv áttekintő képet kívánt adni a mesterséges intelligencia humanoid robotokat érintő témaköreiről. A témakörök jellegéből következően több téma ismeretanyaga általánosabban is használható, mint pl. a raj-intelligencia alapú optimalizálás, vagy a gépi látás módszerei. A könyv címéhez hűen több konkrét alkalmazást is bemutatott a kapcsolódó mesterséges intelligencia területek elméleti ismereteinek megvilágítására.

A fejlődés, amelynek progresszivitása megkérdőjelezhetetlen, minden területet érint. A robotok mozgásképességének, motorikus lehetőségeiknek perspektívája jól szemléltethető a Big Dog robotkutya eredményeivel. Aki még nem látta, nézze meg itt: http://www.youtube.com/watch?v=W1czBcnX1Ww

Big Dog robotkutya fejlett mozgásképességekkel

A gépkutya az emberek többségét túlszárnyaló járóképességgel rendelkezik, ami mutatja a jövőbeni humanoid robotok fizikális képességeit. A Big Dog a Boston Dynamics fejlesztési eredménye.

A robotok, és különösen a humanoid robotok fejlődésük elején állnak. Az elkövetkező időben a gépi intelligencia társadalmi hatású kutatási és alkalmazási terület lesz. A fejlődés általánosságban is, de a mesterséges intelligencia területén különösen szembetűnő. Az embert legyőző játékgépek, sakkszámítógépek elsőként adtak példát arra, hogy az emberi mentális képességek túlszárnyalhatók mesterséges eszközökkel. A kérdés úgy merül fel, tud-e az ember önmagán olyan hatékony és gyors változtatásokat végezni, amely felveheti a versenyt a gépi intelligencia fejlődésével. Erre még nem ismert a válasz, de a biológiai rendszerek stabilitása sötét jövőt sejtet.

A szerző a

A természetes evolúciót felváltja a mesterséges evolúció.

mondásával összegezte kialakult véleményét a kérdéssel kapcsolatban.

A kérdések középpontjában természetszerűleg az ember legtöbbre tartott képességének, az intelligenciájának modellezése áll. A nem is olyan távolinak jósolt jövőbe való tekintést Raymond Kurzweil: The Coming Merging of Mind and Machine (A Tudat és a Gép Közelgő Egyesülése) c. cikke alapján végezzük el. A szerző futurisztikusnak tűnő gondolatait érvekkel, számításokkal próbálja alátámasztani.

Kurzweil szerint a gépi intelligencia a század első felében meg fogja haladni az emberét. Negyed századon belül a gépek birtokolni fogják a teljes emberi intellektust, emóciókat és szakértelmet, a zenétől kezdve egyéb kreatív képességeken át a fizikális képességekig. Érzésekről fognak bizonyságot tenni és nagyon meggyőzőek lesznek, amikor hozzánk szólnak. 2020 táján egy ezer dolláros PC legalább az emberi agy képességének megfelelő teljesítménnyel fog rendelkezni. 2029-re az intelligenciát leképező szoftver nagymértékben finomodni fog és az átlagos személyi számítógép ezer emberi agy teljesítményét fogja nyújtani. Ha egyszer a számítógépek elérik az emberi intelligencia szintet, szükségszerűen túlhaladnak rajta. Például, ha én franciául tanulok, nem tudom készen lementeni a megtanultakat mások számára. Ez az emberi agy működésével magyarázható. Azonban a nembiológiai kreációk számára rendelkezésre fog állni ez a képesség és könnyen meg fogják tudni osztani a tudásukat további millió gépi intelligenciával. A nembiológiai egyedek nem csak a saját kollektív tudásukkal fognak rendelkezni, hanem birtokolni fogják az emberekét is. Amint ez megtörténik, nem lesz továbbá éles különbség az ember és a gép között.

A neurális implantátumok eddigi eredményei alapján várható, hogy 2020 táján ezek növelni fogják az érzékelési képességeinket, a memóriánkat és fokozzák gondolkodási képességeinket. 2030 körül, ahelyett, hogy felhívnánk a barátunkat telefonon, képesek leszünk résztvenni egy virtuális mozambiki túrán, mely nagyon magával ragadónak fog tűnni. Bármilyen élményt képesek leszünk megtapasztalni – üzleti, társasági, szexuális – valakivel, aki valós, vagy szimulált, beleértve a fizikai közelséget is.

Az előrejelzések hiteléül fel kell ismerni, hogy az információs technológia exponenciálisan fejlődik. Egy exponenciális folyamat lassan indul, de nagyon felgyorsul.

A technológiai fejlődés is, a biológiaihoz hasonlóan, lassan indult, de napjainkra elért a meredeken emelkedő fázisához. Elődeinknek évezredekbe tellett felismerni azt, hogy a mindkét oldalán megélezett kő hasznos lehet. A technikatörténetből jól ismert fejlődés egyre gyorsabb, és napjaink meghatározó jelenségének, az Internetnek a kifejlődéséhez elegendő volt 20 év. Tíz évvel ezelőtt még alig volt, aki keresőgépet használt volna.

A számítástechnika is hasonló növekedési görbét mutat. Az elmúlt pár évtized jellemző alakulását a Moore törvény kellően pontosan előrejelezte.

Processzorok tranzisztorokkal kifejezett összetettségének időbeni növekedése logaritmikus léptékkel ábrázolva

2019-re ez a technológiai lehetőség kimerül, azonban már itt vannak az új technológiák, melyek biztosítják az exponenciális fejlődés folytatódását. Sokrétegű csipek, sokmagos processzorok, nanocsöves áramkörök, optikai számítás, kristály- és molekuláris számítás.

Kilencven évig tartott, amíg egy ezer dolláros számítógép elérte az egy millió másodpercenkénti utasítás végrehajtási sebességet. Ma naponta ennyivel nő a kapacitásuk.

Az agy már felmért részének számítási teljesítményéből kiindulva mondhatjuk, hogy 2020-ra egy 1000 dolláros PC az emberi agy teljesítményével lesz összemérhető. 2055-re egy 1000 dolláros gép a teljes födi lakosság agyi teljesítményével lesz összemérhető.

Mindez a számítási teljesítményre értendő, amely szükséges, de nem elégséges az emberrel összemérhető intelligenciaszint eléréséhez a gépek által. Nagyon nagy a jelentősége az intelligencia szoftverének is. Egy ilyen szoftvert nem könnyű elkészíteni, bár jó útnak tűnik a mesterséges neurális hálók és a genetikus algoritmusok révén a természet lemásolása. Az elképzelésekben az emberi agy lemásolása szerepel, ehhez azonban azt fel kell tárni, be kell ’szkennelni’. Erre már vannak kezdetleges lehetőségek, pl. a mágneses rezonancián alapuló leképezés. A növekvő felbontások megteremthetik a lehetőségét a finom idegi szerkezetek feltárásának. Bizonyos eredmények várhatók a nanorobotoktól is, melyekkel belülről szerezhetünk információt. Az agy neurális finomságú feltárásában vannak részeredmények, mint pl. az agyi hangfeldolgozás korai fázisának felderítése.

Az agyi szerkezet feltárása mellett egy érdekes lehetőség az agy ’beszkennelése’ abból a célból, hogy lementsük a tartalmát.

Az eddig eltelt hatalmas idő jó volt arra, hogy kifejlődjön az emberi intelligencia és megalkossa a következő generációt ( a gépi intelligenciát). A következő időszak a robotoké, hogy kifejlesszék az őket leváltó generációt.

Ez a jövő a robotoké. De felmerül a kérdés: jövő ez számunkra, emberek számára?

Mindenesetre büszkeséggel tölthet el bennünket a tudat, hogy egy igen izgalmas időszakban élünk: a szingularitás, az emberi agy meghaladása lehetséges éveiben.