176
SZABADKAI MŰSZAKI SZAKFŐISKOLA SZABADKA Póth Miklós MESTERSÉGES INTELLIGENCIA - JEGYZET - Keresőalgoritmusok Kétszemélyes játékok Genetikus algoritmusok

Mesterséges Inteligencia Jegyzet

Embed Size (px)

DESCRIPTION

Mesterséges Inteligencia Jegyzet

Citation preview

VISOKA TEHNIKA KOLA

SZABADKAI MSZAKI SZAKFISKOLASZABADKAPth MiklsMESTERSGES INTELLIGENCIA

- JEGYZET -KeresalgoritmusokKtszemlyes jtkokGenetikus algoritmusokNeurlis hlzatokSzabadka, 2012.

ElszEz a jegyzet elsdlegesen a Szabadkai Mszaki Szakfiskola harmadves informatikus hallgatinak rdott akik a Mestersges Intelligencia tantrgyat hallgatjk. Mivel a Mestersges Intelligencia a Szabadkai Mszaki Szakfiskoln csak nhny vvel ezeltt indult, mg nem ltezik semmilyen oktatsi segdlet amely a dikoknak megknnyten a tananyag elsajttst. Ez egyben a legfontosabb ok amirt a jegyzet rdott. A jegyzetet termszetesen msok is hasznlhatjk akiket rdekel a Mestersges Intelligencia szakterlet.A jegyzetnek 4 f rsze van:1. Keresalgoritmusok,

2. Ktszemlyes jtkok,

3. Genetikus algoritmusok s

4. Neurlis hlzatok.

A feldolgozott tmk kzl a legtbb figyelem a neurlis hlzatoknak lett szentelve, gyhogy ez a terlet lett legrszletesebben feldolgozva.

Minden fejezet elejn az adott szakmai terlet elmleti alapjai vannak megadva, utna kvekteznek a kidolgozott pldk,vgl pedig az nll gyakorlsra sznt pldk kvetkeznek. Az sszes plda MATLAB programcsomagban van kidolgozva.Sajnos a jegyzet rsa sorn elkerlhetetlenek a hibk amelyeket a szerz tbbszri olvass utn sem vesz szre. A szerz hls lesz mindenkinek aki az esetleges hibkra rmutat.Szabadka, 2012 decembereTARTALOM1. Keress alkalmazsa a problmamegoldsnl4

2. Egy plda a keressre21

3. Genetikus algoritmusok29

4. Neurlis hlzatok33

5. Plda neurlis hlzatra43

6. Perceptrontantsi szablyok48

7. Egy plda a perceptrontantsra71

8. Logikai mveletek vgzse neurlis hlzatokkal769. Hibavisszaterjeszts algoritmus (backpropagation) 8510. Tbbrteg neurlis hl betantsa

hibavisszaterjeszts mdszerrel95

11. Kohonen-fle (versenyz) hlzatok99

12. Neurlis hlzatok MATLAB krnyezetben106

Fggelk 1. Neurlis hlzatok tervezse MATLAB-ban112

Fggelk 2. Keress116

Fggelk 3. Loklis keress121

Fggelk 4. Ktszemlyes jtkok124

Fggelk 5. Genetikus algoritmusok127

Felhasznlt irodalom1301. Keress alkalmazsa a problmamegoldsnlEnnek a fejezetnek a clja a heurisztikus keresmdszerek megismerse s alkalmazsa a mestersges intelligencia problminak megoldsban. Bemutatsra kerlnek a tervezs alapelvei, valamint a ktszemlyes jtkok. Ennek a fejezetnek a kvetkez cljai vannak:

klnfle keresalgoritmusok jellemzse, s annak bemutatsa, hogy milyen mdon lehet egy keresft bejrni ezeknek az algoritmusoknak a segiitsgvel, egyszer feladatok megfogalmazsa keressknt,

az egyes algoritmusok elnyeinek, htrnyainak s korltainak megismerse

az egyszer tervezs jellemzse,

a minimax algoritmussal val megismerkeds a ktszemlyes jtkoknl, s a mdszer javiitsa alfa-bta nyesssel.1.1. BevezetEbben a rszben ttekintjk a legfontosabb kerestechnikkat a mestersges intelligencia terletn. Az alaptlet mindig az, hogy ismerjk a lehetsges cselekvseket amelyek a megoldsok keresst szolgljk, de nem tudjuk, hogy melyik cselekvs ltal fogunk kzelebb kerlni a megoldshoz. Ekkor a a lehetsges opcik kztt keresnk amiig a megoldsig nem jutunk.Ez az ltalnos tlet minden tiipus pldnl alkalmazhat. Az esetek tbbsgben a feladatot vissza lehet vezetni egy olyan tkeressre amely a kezdllapotbl indul s a clllatpotban fejezdik.be. Az sszes cselekvs kzl azt keressk amely a clllapotig vezet.A fejezet az ltalnos technikk bemutatsval kezddik. Ezek legnagyobb rsze ltalnos algoritmusok amelyek gyakran jelentkeznek ms szmiitstechnikai terleteken is. Kln figyelmet fogunk szentelni a grfelmletnek, mert leggyakrabban ppen a grfokon fogjuk vgezni a keresst.A jobb rthetsg miatt az alapvet algoritmusokkal val ismerkedst egy trkp-tkeressen mutatjuk be. Ezutn bemutatjuk hogyan lehet ezeket a mdszereket alkalmazni egyszer keressi feladatoknl, s milyen specilis algoritmusok lteznek amelyeket a tervezsnl vagy a jtkelmletnl lehet hasznlni.1.2. KerestechnikkFelttelezzk, hogy egy vrosban egy utat keresnk amely elvezet minket a kiivnt clig. Ez az 1.1. brn van bemutatva.

A keress knnyiitshez a kvetkez megktseket vezetjk be: minden ton csak egyszer haladhatunk vgig, s ha vletlenl a parkhoz jutunk, onnan nincs visszat.

Felttelezzk hogy kezdetben a knyvtrnl llunk (kezdllapot), s az egyetemig szeretnnk eljutni (clllapot). Ebben az esetben az egyes helyek a feladat llapotai. Rgtn szrevehetjk, hogy az egyetlen t a krhz s az jsgrus mellett vezet, de felvetdik a krds hogy hogyan vgezznk szisztematikus keresst, klnskppen akkor ha az adottnl sszetettebb trkpnk van.

1.1. bra Egyszer keress: Az t felkutatsa a trkpenIlyen egyszer plda esetn, az sszes t szisztematikus s teljes keresst is elvgezhetnk. Szisztematikusan ellenrizhetjk az sszes egyni llapotot amelyben a kezdllapotbl juthatunk amiig meg nem talljuk a helyes tvonalat amely elvezet a clig. Az llapotok sszessge kpezi a keressi teret. Ha a keressi tr kicsi, hasznlhatunk arnylag egyszer keresalgoritmusokat amelyek az sszes utat ki fogjk prblni. Ezeket az algoritmusokat szisztematikus, informlatlan vagy vak kerestechnikknak nevezzk. Tipikus kpviseljk a mlysgi s a szlessgi keress. sszetettebb feladatok esetben a keressi tr tl nagy ahhoz hogy kimeriit keresst lehessen vgezni mert tl nagy a kivizsgland llapotok szma. Ekkor lehetetlen minden llapotot kivizsglni elfogadhat idn bell. Ilyen feladatok esetben heurisztikt (hasznos szablyt) kell alkalmazni: ezek a mdszerek becslik, hogy melyik t fog leggyorsabban a megoldshoz vezetni. A heurisztikkkal egy ksbbi fejezetben fogunk foglalkozni.1.3. Grfok s fkA most bemutatsra kerl kerestechnikk nagyon ltalnosak, s szinte minden feladat megoldsra alkalmazahtk. Szksgnk van egy absztrakt mdszerre mellyel a keresalgoritmusokat oly mdon reprezentlhatjuk, hogy ne legyen szksg j mdszer kidolgozsra minden j feladatnl. Erre szolglnak a grfok. Az 1.2. brrl ltszik hogy klnbz megnevezsek vannak a grfok s fk hasznlatnl. A grf csompontok, vagy ciimkzett csompontok halmazval rendelkezik melyeket gak (vonalak, lek) ktnek ssze. Az gak lehetnek irnyiitottak (nyilak) vagy nem irnyiitottak. Utd alatt azt a szomszdos csompontot rtjk amelyig az adott csompontbl egy gon keresztl juthatunk el. A grfban az t olyan csompontok sorozata amelyben a kezdeti s a vgs csompont gakkal van sszektve (pldul A-B-E). A hurok nlkli grfokban nincs hurok, illetve olyan t melynek kezd s vgs csompontja megegyezik.

Cmkzett grfIrnytott grf

Hurkos irnytott grf

Fa1.2. bra. Grfok s fkA fa olyan specilis grf melynl minden csompontig csak egy t vezet, s ltalban ltezik egy csompont melyet gykrnek neveznk, s a fa cscsn helyezkedik el. A fa gai mindig irnyiitottak (a nyilakat ki lehet hagyni ha egyrtelm, hogy frl van sz). A csompontok kztti viszonyok a csaldfa megnevezseibl erednek. Az A csompont a B s F csompontok szlje (B s F csompontok az A csompont utdja). B s F csompontok testvrek. Az A csompont az sszes tbbi csompont eldje, az sszes csompont pedig az A csompont utdja. Az utd nlkli csompontokat (pldul C vagy I) leveleknek nevezzk.Az 1.3. bra az 1.1. bra absztraktabb vltozata (a tovbbi szvegben keresfa nven fogunk r hivatkozni). A fa gykernek a k kezdllapotot fogjuk tekinteni, s ez lesz minden keress kezdeti csompontja. Ennek a csompontnak kt utdja van: i s h. A krhznak (h) kt utdja van, mivel innen kt t vezet a park (p) s az jsgrus () fel. Ezek a jellsek bevezetse utn, ahelyett hogy a knyvtrtl keresnnk az utat az egyetemig, azt mondhatjuk, hogy a k kezdeti csomponttl keressk az utat az e clcsompontig. Ugyanez a grf/fa reprezentci s megnevezs hasznlhat sok ms feladatnl is.1.4. Egyszer kerestechnikk: szlessgi s mlysgi keressA kt legegyszerbb kerestechnika a mlysgi s a szlessgi keress. Ezeket a technikkat legegyszerbben egy fa bejrsval lehet bemutatni.

A kt emliitett kerestechnika a fa csompontjait klnbz sorrendben jrja be, de vgl mind a kt mdszer a fnak az sszes csompontjt be fogja jrni. Az algoritmus mind a kt esetben egy olyan listt hasznl amely a mr megltogatott csompontokat tartalmazza, s amelyeket tovbbra is nyilvn kell tartani (mert az utdokat mg nem fejtettk ki).

1.3. bra. A problma reprezentcija keresfvalEzt a listt feladatok listjnak (agenda), vagy adatbzisnak nevezzk. Mi a tovbbiakban az adatbzis megnevezst fogjuk hasznlni.1.5. Szlessgi keressA szlessgi keressnl a csompontok ltogatsnak a sorrendje a kvetkez: elszr k, utna i, h, gy, p, , e, t. Elszr az 1 hosszsg utakat vizsgljuk, utna a 2 hosszsgakat, s iigy tovbb. Ez az 1.4. brn van bemutatva.

1.4. bra. Szlessgi keressA szlessgi keress adatbzisknt egy sorozatot hasznl. A sorozat egy specilis lista amelyben az j csompontokat mindig a lista vgre adjuk hozz, miig a csompontokat csak a lista elejrl trlhetjk. Kezdetben a lista csak a kezdeti llapotot tartalmazza (pldul [k]). A keress minden lpsben eltvoliitjuk a sorozat els elemt, utdjait pedig a lista vgre adjuk hozz. Ezt az eljrst addig ismteljk amiig az els elem lesz a clllapot, vagy a sorozat ki nem rl. Ha a sorozat els eleme a clllapot, az algoritmus sikeres volt, s lell. Ellenkez esetben a keress sikertelen.A mi esetnkben, a keress a kvetkezkppen nz ki:

[k]

k-t kivesszk a sorozatbl s meghatrozzuk az utdait. Ezek az i s h csompontok. Ezeket a csompontokat a sorozat vgre helyezzk, miutn a sorozatnak a kvetkez alakja lesz: [i, h]

A kvetkez lpsben a i-t vesszk ki a listbl, s utdait a lista vgre helyezzk: [h, gy]

h-nak kt utdja van, ezek a park (p) s az jsgrus (). Ezek is a lista vgre kerlnek: [gy, p, ]

A gyrnak (gy) nincs utdja (a gyrnl zskutca van), gyhogy amikor kitrljk a gy csompontot semmit se adunk hozz a lista vgre. Ugyanez a helyzet a p csomponttal is (park). Ezutn a listban csak az marad: []

Az csompontnak kt utdja van, ezeket a lista vghez adjuk (trljk az csompontot):[e, t]

Mivel a kiivnt clllapot az egyetem (e), s mivel e a lista elejn van, az algoritmus alapjn tudjuk, hogy megtalltuk a megoldst.Az algoritmus pszeudokdjnak a kvetkez lpsei vannak:1. Kezdetben lista = [kezdllapot] s a van_megolds logikai vltoz= FALSE.

2. WHILE a lista nem res, s a van_megolds logikai vltoz= FALSE, DO:

a. A listbl eltvoltani az els csompontot (N).

b. Ha N a clllapot, akkor van_megolds = TRUE.

c. Megtallni az N csompont sszes utdjt, s a lista vgre helyezni ket.A leiirt algoritmus csak a van_megolds marker rtkt helyezi TRUE-ra abban az esetben ha megtallja a clllapotot. Az algoritmust arnylag egyszeren ki lehet bviiteni gy, hogy a megoldshoz vezet tvonalat is trolja (amennyiben az ltezik).1.6. Mlysgi keressA mlysgi keress a kvetkez szisztematikus keresalgoritmus amely a csompontok kzti tvonal keressre szolgl. Mlysgi keressnl addig haladunk egyre mlyebbre amiig zskutcba nem kerlnk. Ezutn visszalpnk, hogy az alternatiiv tvonalakat is kiprbljuk (ezrt hiivjk ezt az algoritmust mg visszalpses algoritmusnak is, backtrack). A mlysgi keress a csompontokat a kvetkez sorrendben fejti ki: elszr k, majd i, gy, h, p, , e, t. A sorrend az 1.5. brn van bemutatva.

1.5. bra. Mlysgi keressA keresalgoritmus nagyon hasonliit a szlessgi keresshez, az egyetlen klnbsg abban van, hogy nem listt hanem vermet hasznlunk, ezrt a csompontok hozzadsa s trlse csak a veremtr elejn lehetsges.

Mind a szlessgi, mind a mlysgi keress nagyon egyszer algoritmusok, s meg fogjk tallni a megoldst ha az ltezik (s ha a keresfa vges). Egyes esetekben az egyik, egyes esetekben a msik mdszer tallja meg hatkonyabban a megoldst. Az algoritmus kivlasztsnl tbb kritriumot kell figyelembe venni: Ha a legrvidebbb tvonalat keressk, lehet hogy a szlessgi keress jobb opci mert elszr a rvidebb tvonalakat tallja meg. Ha a legfontosabb kritrium, hogy minl kevesebb memrit hasznljunk, a mlysgi keresst kell hasznlni mert jelentsen kevesebb memrit foglal.

Ha a megoldsig a legrvidebb idn bell szeretnnk eljutni, akkor nem egyszer kivlasztani a megfelel keresmdszert. Lehet hogy a mlysgi keress gyorsabb lesz, de csak abban az esetben ha sok olyan t van amely a clig vezet, s ezek kzl mindegyik arnylag hossz. A szlessgi keres akkor gyorsabb ha ltezik rvid t a clig, a kerestr pedig mly s nagy (a tbbi t hossz, s sok llapot van).A mlysgi s a szlessgi keressnek is szmtalan vltozata van melyeket az adott helyzetekben alkalmazhatunk. Pldul meghatrozhatunk egy mlysgkorltot, s ha ezt a mlysget elrjk, a keresst visszafel folytatjuk.1.7. Heurisztikus keressEddig kt olyan keresalgoritmussal ismerkedtnk meg melyet az egsz kerestr felkutatsra hasznlhatunk. Legtbb esetben azonban nem alkalmas az egsz keresteret felkutatni. (pldul ha a kerestr tl nagy). Kpzeljk el, hogy Londonban az sszes utat felkutatjuk 300 kilomteres krzetben ahhoz hogy megtalljuk az utat az ismersnkig aki Manchesterben lakik. Abban az esetben amikor a kerestr tl nagy, egy olyan fggvnyt hozunk ltre amely fel fogja becslni hogy melyek az alkalmasabb utak s csompontok. gy kezdetben azokat a csompontokat fejtennk ki amelyek a fggvny szemszgbl alkalmasabbak, azok a csompontok viszont amelyek rosszabbnak tnnek, csak ksbb kerlnnek kifejtsre. Azokat a keresalgoritmusokat amelyek ilyen kirtkel fggvnyeket hasznlnak, heurisztikus keresalgoritmusoknak nevezzk.A heurisztikus kerestechnikk alaptlete az, hogy az sszes tvonal kiprblsa helyett, csak azokra koncentrlunk amelyek nagy valsziinsggel elvezetnek bennnket a clig. ltalnos esetben nem lehetnk biztosan abban, hogy kzelebb kerltnk-e a clhoz, lehet hogy a clig egy kompliklt kerlt vezet. A heurisztika abban segiit, hogy j becslseket vgezznk.A heurisztikus keresalgoritmusok alkalmazshoz szksgnk van egy kirtkel fggvnyre amely a csompontokat annak alapjn fogja becsni, hogy milyen messzinek tnnek a clllapottl. Ez csupn egy becsls, de ez a becsls nagyon hasznos lehet. Ha pldul kt vros kztt keressk az utat, kirtkel fggvnyknt az aktulis vros s a cl kztti lgvonalban mrt tvolsgot hasznlhatjuk. Ily mdon, elbb azokat az utakat trjuk fel amelyek ltszlag korbban a clig vezetnek, csak ksbb kerlnek kifejtsre azok a csompontok amelyek tvolodnak a cltl. De lehet hogy ez a stratgia nem vlik be, mert megtrtnhet, hogy nem ltezik kzvetlen t az aktulis vros s a cl kztt, s elszr el kell tvolodni a cltl ahhoz, hogy az igazi utat megtalljuk. Nagyszm heurisztikus keresalgoritmus ltezik. Ebben a fejezetben hrom algoritmust fogunk rszletesen feldolgozni: a hegymsz algoritmust, elszr a legjobbat (best first), s az A* algoritmust. Felttelezzk, hogy a keresst keresfa segiitsgvel fogjuk vgezni (nem keresgrfban, teht nincsenek hurkok).1.8. Hegymsz algoritmusEnnek az algoritmusnak az alaptlete, hogy minden kvetkez lpsben kzeeledjnk a legjobb utd fel (de csak abban az esetben ha az utd jobb az aktulis llapotnl). Amint az 1.1. brn lttuk, ha az a feladatunk, hogy eljussunk a krhztl a templomig, s mehetnk az jsgrus s a park fel is, akkor az algoritmus alapjn az jsgrus fel kell haladnunk mert az jsgrus kzelebb van a templomhoz mint a krhz vagy a park. Az algoritmusnak a kvetkez menete van:1. Kezdetben az aktulis llapot = kezdllapot.2. WHILE az aktulis llapot KLNBZIK a clllapottl, VAGY amiig az aktulis llapot vltozik, a kvetkezt DO:

Hatrozd meg az aktulis llapot utdait, s a kirtkel fggvny alapjn minden utdhoz rendelj egy megfelel rtket. Ha valamelyik utdhoz olyan rtk van hozzrendelve amelyik jobb az aktulis llapotnl, akkor az j aktulis llapot az az utd lesz, amelyik a legnagyobb rtket kapta. szrevehetjk, hogy az algoritmus nem fogja kiprblni az sszes csompontot s tvonalat, iigy a kifejtsre vr csompontokat nem gyjti egy listba, hanem csak az aktulis csompontot jegyzi meg. Ha a kerestrben hurkok is vannak, a hegymsz algoritmus biztosan nem fog beakadni.A hegymsz algoritmus akkor fog befejezdni ha az aktulis csompontnak nem lesz magnl jobb utdja. Ez a korltozs srn jelents gondot okoz. Felttelezzk, hogy a trkpen a knyvtrtl az egyetemig szeretnnk eljutni, kirtkel fggvnyknt pedig a lgvonalban mrt tvolsgot hasznljuk. Ekkor kezdetben az aktulis llapot a knyvtr volna, utna a krhz kvetkezne, majd vgl a park (mivel ez az t az egyetemhez kzelebb visz bennnket mint az jsgrushoz vezet t). Itt viszont zskutcba jutunk, s biztosan nem fogjuk megtallni azt a csompontot amelyik mg kzelebb hozna bennnket az egyetemhez. Ebben a konkrt esetben az algoritmus kudarccal vgzdik. Ugyanez trtnne abban az esetben is ha az 1.6. brn a knyvtrtl a parkig prblnnk eljutni. Ebben az esetben az iskolig jutottunk volna, de itt knytelenek lennnk megllni mert nincs olyan csoompont amelyik a parkhoz kzeliitene.

1.6. bra. A hegymszalgoritmus korltjt szemlltet trkpA fent leiirt problma a kerestrben megjelen loklis makszimumok miatt jelentkezik. A loklis makszimumok olyan pontok amelyek jobbak a sajt szomszdaitl, de mgsem a feladat megoldsai. Ha kis mrtkben megvltoztatjuk az algoritmust, a loklis makszimumok problmjt rszben ki lehet kszblni. Az egyik lehetsges megolds, hogy engedlyeznk egy meghatrozott szm lpst visszafel, vagyis megjegyezzk az utat amelyen visszalphetnk ha az aktulis tvonal tvesnek bizonyul (backtracking). A msik mdszer, hogy enyhiitnk azon a szablyon mely szerint csak olyan csompontok fel haladhatunk amelyek jobbak az aktulisnl: lehet hogy a kvetkez csompont jobb lesz az aktulisnl. A felsorolt algoritmusok kzl egyik sem tkletes. Az ltalnos hegymszalgoritmust a feladatoknak csak egy szk osztlyra lehet hasznlni ahol preciiz kirtkelfggvnynk van (amely felbecsli a cltl val tvolsgot).1.9. Legjobbat elszr tiipus keress (best first search)

A legjobbat elszr tiipus keress rszben a hegymsz algoritusra hasonliit, mert ennl a mdszernl is kirtkel fggvnyt hasznlunk, s minden lpsben a legjobb rtk csompont fel haladunk. Ennek ellenre, ez a keresalgoritmus sokkal alaposabb mert az sszes tvonalat kiprblhatja. Az algoritmus azoknak a csompontoknak a listjt hasznlja amelyeket mg ki kell vizsglni (akrcsak a szlessgi s a mlysgi keressnl), de ezekkel az algoritmusokkal ellenttben ahol a csompontokat vagy a lista elejre/vgre adhatjuk hozz, s a lista vgrl trlhetjk, a legjobbat elszr minden lpsben a legjobb csompontot vlasztja a listrl (ez a legnagyobb rtk csompont). A legjobb csompont kivlasztsa utn kirtkeljk az utdjait (szmrtket rendelk hozzjuk), s az adott csompontokat hozzadjuk az adatbzishoz. Az algoritmusnak a kvetkez menete van:1. Kezdetben adatbzis = [kezdllapot]

2. WHILE adatbzis nem res DO

a. Az adatbzisbl vlaszd ki a legjobb csompontot.

b. Ha a kivlasztott csompont a clcsompont, akkor a keress befejezdtt.c. Ellenkez esetben, megkeressk a kivlasztott csompont utdait. Minden utd-csomponthoz a kirtkel fggvny alapjn rtket rendelnk, s a leosztlyozott csompontokat visszahelyezzk az adatbzisba.Felttelezzk, hogy a keresst az 1.7. brn bemutatott keresfn vgezzk. Az egyes csompontokbl indul gak az adott csompontok utdjaihoz vezetnek. Minden csompont sajt ciimkvel rendelkezik (pldul B:5), ami a csompont nevt (B), s az adott csomponttl a clig becslt tkltsget (5) jelli.

1.7. bra. Legjobbat elszr tiipus keress (best first)

Felttelezzk, hogy G a clcsompont. Ha ebben a keresfban szlessgi keresst vgeznnk, a csompontokat a kvetkez sorrendben kellene kifekteni: A, B, C, D, E, F, G. Mlysgi keress esetn a sorrend A, B, D, E, G volna. Egyik esetben sem vettk figyelembe a csompontok rtkt. Egyszer hegymsz algoritmussal sose tallnnk meg a megoldst (az algoritmus beragadna a C loklis makszimumba). A legjobbat elszr tiipus keress esetn a csompontok kifejtsnek sorrendje: A, C, B, E, G. Gyakorlsknt ellenrizhetjk, hogy az algoritmus valban ilyen sorrendben kezeli a csompontokat.Ha megfelel kirtkelfggvnyt vlasztunk, akkor a legjobbat elszr tiipus keress jelentsen cskkenti a kivizsglt csompontok szmt. Lehet hogy nem fogjuk megtallni a legjobb megoldst (preciizen fogalmazva, nem biztos, hogy az els megtallt megolds lesz a legjobb), de ha ltezik megolds akkor az algoritmus azt biztosan meg is fogja tallni, s j eslynk van arra is, hogy a megoldst gyorsan megtalljuk. Ha a kirtkel fggvny nem megfelel, akkor nincs semmilyen elnynk az egyszerbb algoritmusokkal szemben (mlysgi- s szlessgi keress). Ha a kirtkel fggvny tlsgosan ignyes (a kirtkels tl hossz ideig tart), akkor a cskkentett szm kivizsglssal megsprolt id elveszhet a hosszadalmas kirtkels miatt.1.10. A* algoritmusAz elz fejezetben megismert legjobbat elszr algoritmus ugyan hasznos lehet, de a kvetkez kifejtsre kerl csompont meghatrozsnl nem hasznlja azt az adatot hogy mekkora utat tettnk meg az adott csompontig. Ezrt nem biztos, hogy a megtallt megolds j lesz. Az A* algoritmus a legjobbat elszr algoritmus egy vltozata, amely olyan megoldst prbl tallni ahol a teljes thossz kltsge minimlis (a kltsg fogalomnak ltalnos jelentse van, a trkp esetn tvolsgot is jellhet).Az A* algoritmusnl a kirtkel fggvny kt rszbl ll. Az els komponens azon az rtken alapszik amely a kezdeti csomponttl (a kezdllapotnak felel meg) az aktulis csompontig megtett tnak felel meg. A kirtkel fggvny msik komponense az tkltsget becsli az aktulis llapottl a clllapotig. A kt komponens sszege adja a kirtkel fggvny rtkt. A kirtkel fggvny egyes komponenseit slyozni is lehet. A kirtkel fggvny a teljes tkltsget becsli a kezdcsomponttl a clcsompontig amely az aktulis csomponton keresztl vezet. Ha g-vel jelljk az tkltsget a kezdeti csomponttl az aktulis csompontig, h-val pedig a becslt tkltsget az adott csomponttl a clcsompontig, akkor a teljes becslt kltsg:f = g + hAz A* algoritmus elvben nem klnbzik az egyszer legjobbat elszr algoritmustl, csak sszetettebb kirtkel fggvnyt hasznl. (A legjobb csompontnak lesz a legkisebb rtke). Ahhoz, hogy rzkeljk hogy mit nyertnk az A* algoritmussal, nzzk meg az 1.8. brt, ahol az egyes utdokig vezet gak az egyes tvonalak kltsgt jelentik az adott szltl, miig a csompontok mellett szerepl rtkek a clig becslt kltsget jellik.

1.8. bra. A* keressHa az elszr legjobbat algoritmust hasznltuk volna, a csompontok kifejtsnek sorrendje a kvetkez volna: A, B, D, E, F. Ha a clllapot F, akkor egy nem tl j megoldst tallunk. Ennek a megoldsnak a kltsge 13 (2+4+3+4). Ha A* algoritmust hasznlunk, akkor az algoritmus a csompontokat a kvetkez sorrendben fejti ki: A, B, C, G, F, s a clig vezet kltsg minimlis (7). Az A* algoritmus garantlja, hogy a legrvidebb utat fogja megtallni ha a h nem becsli tl az tkltsget az aktulis csomponttl a clig. 1.11. Problmamegolds keressselEddig nhny keresalgoritmussal ismerkedtnk meg, de mg nem tudjuk hogyan hasznljuk ket konkrt problmamegolds esetn. A kerestechnikkat ltalban olyan cselekvssorozatok meghatrozsra hasznljuk amelyek a kezdllapottl a clllapotig vezetnek. Cselekvs alatt rthetnk mozgst (ha pldul az A vrosbl szeretnnk a B vrosba eljutni, vagy ha egy trgyat szeretnnk az asztalra tenni), de ennl sokkal absztraktabb dolgokra is vonatkozhat mint pldul ttelbizonyiitsi lpsek.

Ebben a fejezetben bemutatjuk, hogy milyen egyszer kerestechnikkat hasznlunk klnfle feladatok megoldsra, s miknt reprezentlhatjuk a cselekvseket. Azutn bemutatjuk hogyan lehet az elvet kibviiteni sszetettebb tervezsi problmkra. Vgl meg fogunk ismerkedni a ktszemlyes jtkokkal ahol a kerestrben ellensges (sajt cllal rendelkez) gens is van.Az eddig megismert mdszereknl, a kerestrben minden csompont a feladat egyik llapotnak formlis leiirsa. Egy ktszemllyes jtknl pldul, ez egy tblallsnak felel meg. Az aktulis csompontok utdai azok az llapotok lehetnek melyet az adott llapotbl egy cselekvssel rhetnk el (pldul a jtk egy lpse). A keresteret mg llapottrnek is nevezzk mivel az sszes elrhet llapotot tartalmazza.1.12. llapottri kerestechnikkAz egyszer llapottri kerestechnikkat (a kerestr minden csompontja a feladat egy llapott kpviseli) olyan pldkban hasznljuk amelyek az intelligeniatesztekre hasonliitanak. Erre egy plda a kancs-feladat lehet:Adott kt kancs: egy 4 literes s egy 3 literes. Az egyik kancsn sincs jells. Adott mg egy csap melyen keresztl tlthetjk a kancskat. A feladat a 4 literes kancsba pontosan 2 litert tlteni.

A feladott problmra elszr azt kell eldnteni hogy fogjuk reprezentlni a problma egyes llapotait (pldul mennyi viiz van a kancskban), mi lesz a kezdeti llapot s a vgllapot, s hogyan fogjuk reprezentlni a vgrehajthat cselekvseket.

1.Megtltjk a 4 literes kancst.{X, Y} {4, Y}

2.Megtltjk a 3 literes kancst.{X, Y} {X, 3}

3.A 4 literes kancst kiriitjk a 3 literesbe. {X, Y} {0, X+Y} {ha X+Y3}

4.A 3 literes kancst kiriitjk a 4 literesbe. {X, Y} {X+Y, 0} {ha X+Y4}

5.Feltltjk a 4 literes kancst a 3 literesbl.{X, Y} {4, X+Y4} {ha X+Y>4}

6.Feltltjk a 3 literes kancst a 4 literesbl.{X, Y} {X+Y3, 3} {ha X+Y>3}

7.Kiriitjk a 3 literes kancst.{X, Y} {X, 0}

8.Kiriitjk a 4 literes kancst.{X, Y} {0, Y}

1.9. bra. A kancs-feladat lehetsges cselekvseiEnnek a logikai jtknak az alapja egy egyszer megoldstr ahol az egyes llapotokat egy szmprral reprezentlunk amelyik azt fejezi ki, hogy mennyi viiz van a kancskban (pldul a {4, 3} szmpr azt fejezi ki, hogy a ngy literes kancsban 4 liter, a 3 literes kancsban pedig 3 liter viiz van). A kezdllapot {0, 0}, a clllapot pedig {2, P}, P rtke akrmennyi lehet. Csupn nhny lehetsges cselekvs ltezik (pldul megtltjk a 4 literes kancst), s ezeket 8 szabllyal jellemezhetjk melyek azt fogjk megmutatni hogyan vltozik a problma llapota az egyes cselekvsek vgrehajtsnak eredmnyknt. A cselekvsek az 1.9. brn vannak felsorolva.

Pldul az {X, Y} {X, 0} cselekvs azt jelli, hogy olyan llapotbl indulunk amelyben a nagyobb kancsban X liter viiz van, a kisebb kancsban pedig Y liter viiz, a cselekvs utn a nagyobb kancs tartalma nem vltozott, a 3 literes kancst pedig kiriitettk. Ha az opertornak felttele is van (pldul X+Y3, a cselekvst csak akkor hajthatjuk vgre ha a felttel ki van elgiitve). A keress sorn csak azokat a cselekvseket fogjuk figyelembe venni amelyek megvltoztatjk az aktulis llapotot.Ilyen feladatok megoldsnl a cselekvsek kzl csak azokat vesszk figyelembe amelyek hasznosak a feladatmegolds szempontjbl. A megoldshoz biztos nem jutnnk el hamarbb ha egy tetszleges viizmennyisget kintennk mert utna nem tudnnk hogy melyik llapotban vagyunk. A programoz legnehezebb feladata a feladat reprezentcijnak a meghatrozsa, illetve az algoritmus kivlasztsa.

Most a mr korbban megismert kerestechnikkat fogjuk alkalmazni. Ebben az esetben az utd fogalma kevsb vilgos mint a trkp-keressnl. Az sszes cselekvst le kell ellenriznnk, s ki kell vlasztanunk azokat amelyek az adott llapotbl vgrehajthatk. A keresfa egyes csompontjai egy-egy llapotot reprezentlnak (pldul {2, 3}).Mindez vilgosabb lesz ha elkezdjk megoldani a feladatot. Mlysgi keresst fogunk alkalmazni, az adatbzisban a kezdllapottl a vgllapotig a teljes tvonalat fogjuk rizni. Ez a megolds jobb mintha csak az aktulis llapotot riznnk. A keress folyamn minden lpsben a hurkokat is ellenrizni fogjuk. Abban az esetben ha olyan llapotba kerlnk amelyben mr voltunk, azt az utat nem fogjuk tovbb fejteni. Termszetesen a mlysgi keressen kiivl ms technikkat is lehet alkalmazni.

Kezdetben mind a kt kancs res, iigy a kezdllapot {0, 0}, az adatbzis pedig [[{0, 0}]]. A szgletes zrjelek szksgesek, mivel a {0, 0} az aktulis llapot, az tvonal amely tartalmazza ezt az llapotot [{0, 0}], az adatbzis pedig [[{0, 0}]] (azokank az tvonalaknak a listja amelyekbl a clllapotba lehet jutni).A clllapot {2, P}, a P rtke akrmennyi lehet. A keresst gy kezdjk, hogy az adatbzisbl kivesszk az els tvonalat s megkeressk a lehetsges bviitseket. Az tvonal bviitse olyan tvonal melynek kezdete megegyezik az eredeti tvonalval, de a vgn hozz van adva mg egy csompont amely az tvonal utols csompontjnak az utda (successor). Tbb lehetsges tvonal ltezhet.A kezdllapotbl kt lehetsges cselekvst hajthatunk vgre. Vagy a 4 literes, vagy a 3 literes kancst fogjuk megtlteni. A kezdllapot lehetsges utdai a {4, 0} s {0, 3} llapotok. Ezutn az adatbzisnak a kvetkez alakja van:

adatbzis = [[{0, 0}, {4, 0}], [{0, 0}, {0, 3}]]A {4, 0} llapotbl a keresst a 2, 6 s 8 cselekvsekkel folytathatjuk (tblzat). Az j lehetsges llapotok {4, 3}, {1, 3} s {0, 0}. szrevehetjk, hogy a {0, 0} llapot egy megismtelt llapot, ennek az llapotnak a kivlasztsval hurok keletkezne. Ezrta {0, 0} llapotot nem vesszk figyelembe. Ezutn az adatbzisnak a kvetkez alakja van:

adatbzis = [[{0, 0}, {4, 0}, {4, 3}],

[{0, 0}, {4, 0}, {1, 3}], [{0, 0}, {0, 3}]].

Ezutn a {4, 3} llapotbl a 7. s a 8. cselekvssel folytathatjuk (tblzat). A 7. cselekvs visszavinne bennnket a {4, 0} llapotba, ezrt ezt az tvonalat nem fejtjk tovbb. A 8. cselekvs a {0, 3} llapotba vezet, az adatbzis els eleme a [{0, 0}, {4, 0}, {4, 3}, {0, 3}] tvonal lesz. A {0, 3} llapotbl a {3, 0}, {4, 3}, {0, 0} llapotok egyikbe folytathatjuk utunkat. Ezek kzl csak a {3, 0} j, iigy az adatbzisnak a kvetkez alakja lesz:adatbzis = [[{0, 0}, {4, 0}, {4, 3}, {0, 3}, {3, 0}],

[{0, 0}, {4, 0}, {1, 3}], [{0, 0}, {0, 3}]].

A {3, 0} llapotbl a {0, 3}, {0, 0} vagy {3, 3} llapotok fel folytathatjuk utunkat, ezek kzl csak egy j llapotunk van, ez a {3, 3}.

adatbzis = [[{0, 0}, {4, 0}, {4, 3}, {0, 3}, {3, 0}, {3, 3}],

[{0, 0}, {4, 0}, {1, 3}], [{0, 0}, {0, 3}]].

A {3, 3} llapotbl csak az 5. cselekvs az amelyik nem megismtelt llapotba vezet ({4, 2}). Ebben a lpsben a kisebb kancsban a kiivnt viizmennyisg van, de a feladat felttele szerint a kt liter viiz a nagyobb kancsban kell hogy legyen. A {4, 2} llapotbl az egyetlen cselekvs a 8., amely a {0, 2} llapotba vezet (kintjk a vizet a nagyobb kancsbl). A 4. (egyetlen lehetsges) cselekvssel a clllapotba rnk (a nagyobb kancsban kt liter viiz van). A megolds keresfja az 1.10. brn van bemutatva. Az gak melletti szmok a vgrehajtott cselekvst jelentik.

1.10. bra. A kancs-feladat keresfjaA keresfa alapjn a megoldst szavakkal is leiirhatjuk: megtltjk a 4 literes kancst, a 4 literesbl megtltjk a 3 literes kancst, kintjk a 3 literes kancs tartalmt, a 4 literesbl az 1 litert tntjk a 3 literesbe, megtltjk a 4 literes kancst, a 4 literesbl 2 literrel feltltjk a 3 literest, vgl pedig kintjk a 3 literes kancs tartalmt.Az adott algoritmus szisztematikus, de logikus kvetkeztetssel belthatjuk hogy nem a legrvidebb. Gyorsabb megolds lenne elbb a 3 literes kancst feltlteni ({0, 3} llapot), ezutn pedig folytatni ahogy az algoritmus elreltja.

Mivel kezdetben figyelmesen formalizltuk a problmt, s kizrtuk azokat a cselekvseket amelyek olyan llapotba vezettek amelyben mr voltunk, nem kellett tl sokat keresni. Ez az egyszer plda is elegend ahhoz, hogy megismerkedjnk a kerestechnika alkalmazsval. Meg kellett hatrozni hogyan reprezentljunk egy llapotot, meg kellett hatrozni hogy melyek a lehetsges cselekvsek, s szisztematikusan le kellett ellenrizni az sszes lehetsges cselekvst ahhoz hogy megtalljuk a clig vezet utat.

A kancs-feladat esetben nem volt szksg heurisztikus keress alkalmazsra a kerestr annyira kicsi, hogy nem okoz gondot rvid id alatt az sszes llapotot kivizsglni. Erre a feladatra nagyon nehz volna megfelel kirtkel fggvnyt tallni. Ha a feladat clja hogy a kancsban kt liter viiz legyen, mennyire volnnk kzel a megoldshoz ha a kancsban 1 vagy 3 liter viiz lenne? Sok feladatra jellemz ez a tulajdonsg, hogy egy jobb llapotbl elbb egy rosszabb llapotba kell visszatrtnnk ha a megoldsig szeretnnk rni. A problmamegoldsnl a heurisztikus keress gyakran hasznos, de mg jobb ha a kerestr cskkentse miatt figyelmesen formalizljuk a feladatot, ekkor az egyszr technikk is sikeresen elvezetnek a megoldshoz.1.13. Bonyolultsgi problmkAz eddig megismert kerestechnikkat nagyszm feladat megoldshoz hasznlhatjuk. Viszont, a mindennapi problmk megoldsnl gyakran nehzsgekbe fogunk tkzni. Az egyik f nehzsg a feladat sszetettsge. Szisztematikus keress esetn (szlessgi s mlysgi keress) nagyszm csompontot kell kivizsglni amiig a megoldsig jutunk. Pldul, ha minden csompontnak n utdja van, s ha a megolds d mlysgi szinten van, szlessgi keress esetn nd csompontot kell kivizsglni. Ha n=20 s d=6, sszesen 60 milli (!) csompontot kell kivizsglni. Megtrtnhet, hogy a mlysgi keresssel tbb szerencsnk volna, s korbban jutunk el a megoldsig. Ha viszont a megolds az els mlysgi szinten van, a mlysgi keress tbb csompont kivizsglst ignyelheti mint a szlessgi keress. A heurisztikus kerestechnikk hasznosak lehetnek, de csak abban az esetben ha j kirtkel fggvnyt tallunk.A szisztematikus keressnl fontos fogalom az elgazsi tnyez. Az elgazsi tnyez egy csompont tlagos szm utdjt fejezi ki a kerestrben. Ha hatkony keresst szeretnnk, trdnnk kell azzal, hogy az elgazsi tnyez minl kisebb legyen. Az elgazsi tnyez attl is fgg, hogy mennyire vagyunk kpesek jl formalizlni a problmt. llapottri keress kzben az emberi intelligencia segiitsgvel is cskkenthetjk az elgazsi tnyezt, ami annyit jelent, hogy nem vizsgljuk azokat a csompontokat amelyek nem a cl fel vezetnek. Az elgazsi tnyezt gy is cskkenthetjk ha helyesen vlasztjuk ki a keressi irnyt (a kezdllapottl a cl fel, vagy a cltl a kezdllapot fel keresnk). Ha egyiket a felsorolt mdszerek kzl sem lehet alkalmazni, kombinatorikus robbanssal talljuk magunkat szemben. Tl sok csompontot kell kivizsglnunk, s minl mlyebben keresnk, a helyzet annl rosszabb lesz. Ez a f ok amirt sszetett feladatoknl az ltalnos kerestechnikk nem vezetnek megoldsra.1.14. JtkokEbben a fejezetben a kerestechnikk alkalmazst ismertetjk ktszemlyes jtkok esetben. A jtkot mindig kt szemly jtsza, s mind a kt jtkos tisztban van a jtk llapotval. Sok ismert jtk tatozik ebbe az osztlyba sakk, dmajtk, go (kt jtkos jtszik, s mind a kett ltja a helyzetet a tbln).A jtkok jelentsen klnbznek azoktl a feladatoktl melyekkel eddig foglalkoztunk, mert a kerestrben ellenfl is van aki prblja meghisiitani terveinket. Annak ellenre, hogy mind a kt jtkos kidolgozhat egy nyersi stratgit, az ellenfl olyan lpseket tesz amely gtolja a jtkos nyerst. Mind a kt jtkosnak szksge van egy stratgira amely nyer, fggetlenl az ellenfl lpseitl.

A jtkokat azok a feladatok kz sorolhatjuk amelyeket keresfa segiitsgvel oldhatunk meg. A 11.1. bra az amba jtk keressi fjnak egy rszt mutatja (a jtk mg iksz-oksz nven ismert). A jtkosok felvltva lpnek (elszr az 1. jtkos O, majd a 2. jtkos X).

1.11. bra. Az amba jtk keressi fjnak egy rszeAz 1.12. bra egy egyszer fiktiiv jtk teljes jtkfjt mutatja. Amint ltjuk, a gyzelemig mindssze kt lpsre van szksg. A jtk lehetsges llapotai AJ ciimkkkel vannak jellve. Felmerl a krds, hogy a jtkosok melyik stratgia szerint vlasszk ki a megfelel lpst? Mind a kt jtkos felttelezi (jogosan), hogy az ellenfl gyzni akar. Ha az els jtkos a B llapotot vlasztja, a msodik jtkos az F llapotba vezet lpssel fog vlaszolni (s nyerni). Ha az els jtkos a C lpst vlasztja, gyzni fog fggetlenl attl, hogy a msodik jtkos melyik lpst vlasztja. Vgl pedig, ha az els jtkos a D lpst vlasztja, a msodik jtkos akrmelyik lpse biztosiitja neki a gyzelmet. Az els jtkos szemszgbl nincs ktsg hogy a C lpst kell vlasztani, mert ez az egyetlen llapot amely biztosiitja neki a gyzelmet.

1.12. bra. Egy egyszer jtk keresfja1.15. Minimaksz eljrsTeljes jtkfban a kvetkez mdon tallhatjuk meg az els jtkos igazn j lpseit. Az els jtkos gyzelmt +10-zel jelljk, veresgt 10 -zel, a dntetlent pedig 0-val. Ezutn felfel haladva meghatrozzuk a feljebb ll csompontok rkt. Az 1.13. bra egy egyszer jtkft mutat amelyen az emliitett feljebb ll csompontok is meg vannak jellve. Az E,F, G s H csompontokban az els jtkos lp. a sajt llapott prblja makszimalizlni. Az E, F s H csompontokbl az els jtkos nyer helyzetbe kerlhet, ezrt ezek a csompontok a +10 rtket kapjk. A G llapotbl az els jtkos legjobb esetben dntetlent rhet el, ezrt ennek a csompontnak az rtke 0 lesz. Ezutn a B s C csompontokat figyeljk amikor a msodik jtkos lp. A msodik jtkos minimalizlni prblja az els jtkos nyeresgt. A B s C csompontokat minimalizl, az E, F, G s H csompontokat makszimalizl csompontokak nevezzk. B csompontban, a msodik jtkos akrmelyik lpsre az els jtkos fog nyerni. A B csompont rtke az E s F csompontok minimuma, de a msodik jtkos vesztre ez az rtk +10. A C csompont rtke 0, mert a msodik jtkos a G csompontra is lphet, s az els jtkost olyan llapotba knyszeriiteni amelybl nem gyzhet. Az eddig elmondottak alapjn, az els jtkos nyugodtan mondhatja, hogy szmra a legjobb lps ha a B csompontot vlasztja, mert biztos hogy gyzhet.

1.13. bra. Minimaksz eljrs keresfjaA kvetkez fggvny rendel rtkeket az egyes csompontokhoz:

hatrozd meg a csompont rtkt: ha a csompont levl-csompont, a csompont rtkvel kell visszatrni, ha a csompont makszimalizl, az utdok makszimlis rtkvel kell visszatrni, ha a csompont minimalizl, az utdok minimlis rtkvel kell visszatrni.Az sszes lps rtknek meghatrozsa utn, az els jtkos eldntheti, hogy melyik lpst fogja vlasztani. Ktszemlyes jtkok esetbnen ezt az eljrst minimaksz eljrsnak nevezzk.1.16. Alfa-bta nyessLtezik egy egyszer trkk mellyel jelentsen javiithat a minimaksz eljrs hatkonysga. A trkk arra az tletre tmaszkodik, hogy ha mr a szmiits feln kiderl, hogy egy adott gon nem jutunk el a megoldsig, akkor nincs szkg azt az gat tovbb fejteni.

Pldul ha a programozsi nyelvek utasiitsait vizsgljuk, s ha a HA A>5 VAGY B5), akkor felesleges kivizsglni, hogy a kifejezs msodik rsze igaz-e. Hasonlan, ha a HA A>5 S B= 1.0)

Z := (0.0 >= 1.0)

Z := hamisZ := 0

Ha X = 0 s Y = 1:

Z := (0.75 0.0 + 0.75 1.0 >= 1.0)

Z := (0.75 >= 1.0)

Z := hamisZ := 0

Ha X=1 s Y=0:

Z := (0.75 1.0 + 0.75 0.0 >= 1.0)

Z := (0.75 >= 1.0)

Z := hamisZ := 0

Ha X=1 s Y=1:

Z := (0.75 1.0 + 0.75 1.0 >= 1.0)

Z := (1.5 >= 1.0)

Z := igazZ := 1

Amint ltjuk, a Z kimenet csak abban az esetben lesz igaz ha mind a kt bemenet logikai egyes ami ppen az S logikai fggvnynek felelne meg, ezrt a Z:=(0.75X+0.75Y>=1.0) egyenlet az S logikai fggvnyt valstja meg. Ezt a fggvnyt mg tviteli fggvnynek is nevezzk (transfer function) mivel az X s Y bemeneteket kpezi le az Y kimenetre.Az adott egyenletben mind a kt bemenet 0.75-tel van beszorozva. A szorzk mg sly nven ismertek (weight) mert kzvetlen kihatsuk van a bemenetekre (minl nagyobbak, az adott bemenet slyosabb lesz). A mi pldnkban a bemeneteket 0.75-tel szoroztuk, ezutn pedig sszeadsra kerlt sor. A 0.75X+0.75Y kifejezst slyozott sszeg-nek nevezzk. Az elz pldban ahhoz hogy a Z kimenet rtke igaz legyen, a slyozott sszeg nagyobb kell hogy legyen mint 1.0. Az 1.0 rtket kszbnek nevezzk (threshold value). A kimenet brmely rtkre amely kisebb a kszbnl, Z rtke hamis lesz. A fenti pldban Z rtke lehetett igaz (1) vagy hamis (0). A neurlis hlk elmletben a Z kimenet aktv (1) vagy passzv (1).A Z:=(0.75X+0.75Y>=1.0) egyenletet a kvetkezkppen lehet tfogalmazni: A kimenet akkor aktv ha a bemenetek slyozott sszege nagyobb vagy egyenl a kszb rtknl. Ellenkez esetben a kimenet passzv.Mi fog trtnni abban az esetben ha a slyok rtkt 0.75-rl 1.5-re cserljk?

Z := (1.5 X+1.5 Y >= 1.0)

Ha X = 0 s Y = 0:

Z := (1.5 0.0 + 1.5 0.0 >= 1.0)

Z := (0.0 >= 1.0)

Z := hamisZ := 0

Ha X = 0 s Y = 1:

Z := (1.5 0.0 + 1.5 1.0 >= 1.0)

Z := (1.5 >= 1.0)

Z := igazZ := 1

Ha X = 1 s Y = 0:

Z := (1.5 1.0 + 1.5 0.0 >= 1.0)

Z := (1.5 >= 1.0)

Z := igazZ := 1

Ha X = 1 s Y = 1:

Z := (1.5 1.0 + 1.5 1.0 >= 1.0)

Z := (3.0 >= 1.0)

Z := igazZ := 1

Az eredmnyek a 8.3. s 8.4. tblzatokban vannak sszegezve.XYZ

000

011

101

111

8.3. tblzat. A VAGY logikai fggvny igazsgtblzataXYZ

001

010

100

110

8.4. tblzat. A NEMVAGY logikai fggvny igazsgtblzataAmint ltjuk, a Z:=(1.5X+1.5Y>=1.0) egyenlet a logikai VAGY fggvnyt valstja meg. Az S fggvnyrl a VAGY fggvnyre egyszeren gy vltottunk t, hogy a slyok rtkt 0.75-rl 1.5-re nveltk.A 8.4. tblzat a NEMVAGY logikai fggvny igazsgtblzatt mutatja.

A NEMVAGY fggvnyt a Z:=(1.5X+1.5Y= relcit a = 1.0)

Ha hozzadunk 2-t az egyenlet mind a kt oldalhoz, a kvetkezt kapjuk:

Z := (2.0 + (1.5) X + (1.5) Y >= 1.0)

Ezzel elrtk hogy a kszb rtke jra 1.0. A 2.0-t lland bemenetnek tekinthetjk melynek slya 1.0.

Z := (2.0 1.0 + (-1.5) X + (-1.5) Y >= 1.0)

Ezt a matematikai manipulcit a neuron termszete miatt vgeztk el. A termszetbeli neuronok akkor aktivldnak ha a slyozott sszeg nagyobb egy elre meghatrozott pozitv rtknl. Az lland bemenetre a C bett fogjuk hasznlni.

Z := (2.0 C + (-1.5) X + (-1.5) Y >= 1.0)

A slyt amely az lland bemenetet szorozza W0-val jelljk, az X s Y bemeneteket szorz slyokat pedig W1-gyel s W2-vel. A kszbt T-vel (threshold) jelljk. Ezutn a Z kimenetet a kvetkez egyenlet jellemzi:

Z := (W0 C + W1 X + W2 Y >= T)

Ezek a jellsek bevezetse utn, a neurlis hl a 8.2. brn lthat alakot kapja.

8.2. bra lland bemenettel is rendelkez neurlis hlA zrjelben lev neurlis egyenlet egy egyenes egyenlete. Az Y kifejezsvel a kvetkezt kapjuk:

Y >= (-W1/W2) X + (-W0/W2) C + T/W2

Y >= M X + K

ahol az egyenes meredeksgt M jelli (-W1/W2), K pedig azt a pontot jelli ahol az egyenes az Y tengelyt metszi: (-W0/W2)C+T/W2.

Az S fggvny egyenletnek a kvetkez alakja van:

Z := (Y >= -1.0 X + 1.33)

Ezt az egyenletet grafikusan a 8.3. bra mutatja. Mivel egyenltlensgrl van sz, Z akkor lesz igaz ha Y nagyobb mint X+1.33 (az egyenesnek a bekarikzott 1-est tartalmaz oldala).

8.3. bra Logikai S fggvnyAz brrl jl ltszik hogy Z akkor igaz ha (X,Y)=(1,1), s hamis az sszes tbbi binris kombincira ((0,0), (0,1) i (1,0)).

Hasonl eredmnyt kapunk a VAGY logikai fggvnyre is (8.4. bra).

Z := (Y >= -1.0 X + 0.67)

8.4. bra Logikai VAGY fggvnyEbben az esetben Z csak a (0,0) kombincira hamis, de a (0,1), (1,0) i (1,1) kombincikra igaz ami vrhat is volt a VAGY fggvnytl.

A NEMVAGY fggvnynek a kvetkez alakja van:

Z := (Y = 1.0) AND (2.0 + (-0.75 X) + (-0.75) Y >= 1.0)

Z := (0.75(1.5X + 1.5Y >= 1.0) + 0.75(2.0 + (-0.75X) + (-0.75)Y >= 1.0)>=1.0)

Az olvasnak marad a feladat hogy megbizonyosodjon arrl, hogy mind a ngy lehetsges (X,Y) kombincira helyes XOR rtket kapunk.Neurlis hlzattal minden fggvnyt meg lehet valstani ha megfelel szm neuront hasznlunk megfelel slyokkal. ltalnos esetben, viszont, a slyok meghatrozsa nagyon sszetett feladat. Ha felttelezzk hogy a neurlis hl akrmelyik fggvnyt meg tudja valstani egy vgtelen halmazbl, arra a kvetkeztetsre jutunk hogy a helyes slyokat is egy vgtelen nagy halmazbl kell kivlasztani. ppen ezrt nagyon jelentsek a betant algoritmusok. A betants az a folyamat amely lpsrl lpsre lltja be a slyokat egszen addig amg a hl a kvnt fggvnyt valstja meg.Felttelezzk, hogy a neurlis hl mindssze egy neuronbl ll, s arra szeretnnk betantani hogy a logikai S fggvnyt vgezze. Felttelezzk azt is, hogy kezdetben nem tudjuk hogy a slyok helyes rtkei W1=0.75 s W2=0.75. Kezdetben a W1 s W2 slyokat 0.0-ra lltjuk, majd a tantalgoritmus segtsgvel addig vltoztatjuk ket amg fel nem veszik a megfelel rtket.

Egy betant algoritmusnak a kvetkez lpsei lehetnek:

Az (X,Y) bemeneteket tetszlegesen vlasztjuk a (0,0), (0,1), (1,0), (1,1) halmazbl. A kivlasztott (X,Y) rtkekre kiszmtjuk a Z kimenetet. Ha a Z kimenet tl alacsony, azokat a slyokat kell nvelni amelyek 1-es bemenetekre vannak ktve. Ha a Z kimenet tl magas, azokat a slyokat kell cskkenteni amelyek 1-es bemenetekre vannak ktve. A folyamatot addig folytatjuk mg az sszes bemeneti kombincira nem kapjuk meg a kimenet kvnt rtkt.A betantsi pldt egy logikai S fggvnyen fogjuk bemutatni. Kezdetben az sszes sly 0.0-ra lesz lltva. A neurlis egyenlet:

Z := (W1 X + W2 Y >= T), T = 1.0

Az igazsgtblzatoknak a kvetkez alakjuk van:

Kvnt S logikai fggvnyLoop 1

W1=W2=0Loop 2

W1=W2=0.375Loop 3W1=W2=0.75

XYZXYZXYZXYZ

000000000000

010010010010

100100100100

111110110111

8.7. tblzat. Az S logikai fggvny betantsaAmint ltjuk, a slyokat minden lpsben 0.375-tel nveltk amg az (X,Y)=(1,1) bemeneti kombincira nem kaptuk meg a kvnt 1-es kimenetet. A msik 3 bemeneti kombincira - (0,0), (0,1) s (1,0) a Z kimenet mindig helyes volt, gyhogy nem is volt szksg betantsra.

9. Hibavisszaterjeszts algoritmus (backpropagation)Az elmlt nhny vtizedben tbbszz tpus neurlis hlzatot javasoltak. Mivel a neurlis hlkat tbb szakterlet tudsai kutattk (szmtstechnika, elektronika, biolgia, pszicholgia), a neurlis hlzatoknak sok klnfle neve van. A szakirodalomban a kvetkez nevek jelennek meg: Mestersges neurlis hlzatok (Artificial Neural Network ANN), Konnekcis modell, Tbbrteg perceptron (Multi Layer Perceptron MLP) s Prhuzamosan elosztott processzor (Parallel Distributed Processing PDP).

Mgis, a klnbz elnevezsek s szmos tpusok ellenre, kevs klasszikus szleskren alkalmazott hlzat van. Ezek a Hibavisszaterjesztses hlzat (Backpropagation network), a Hopfield hlzat, Versenyz hlzat (Competitive Network), s a Spiky neuronokat alkalmaz hlzat.AlgoritmusA hibavisszaterjesztses hlzatot egy alapvet neurlis hlzatnak tekintik. A hibavisszaterjeszts nem a hl tpusra vonatkozik, hanem a betantsi mdszerre. Az alkalmazott hlzat ltalban igen egyszer szerkezet ahogy azt a 9.1. bra mutatja. Ezeket a hlkat Feed Forward hlknak, vagy Multi Layer Perceptron-nak nevezzk. A hlzat ugyanolyan elvek alapjn mkdik mint az eddig megismert hlzatok. Most meg fogunk ismerkedni a hibavisszaterjesztssel.

9.1. bra Egy egyszer neurlis hlA neurlis hl amely a hibavisszeterjesztsi mdszert alkalmazza a hlt pldk alapjn tantja. Kzljk az algoritmussal hogy az adott bemenetre milyen kimenetet vrunk, az algoritmus pedig addig vltoztatja a slyokat amg a kvnt kimenetet meg nem kapjuk. A hibavisszaterjeszts algoritmus idelis az egyszer alakfelismersre (Pattern Recognition) s trkpezsre (Mapping Tasks). Amint mr emltettk, a betantshoz pldkra van szksgnk amelyek arra fognak rmutatni hogy az egyes bemenetekre mit vrunk a hl kimenetn (Target). Egy ilyen plda a 9.2. brn van bemutatva.

9.2. bra Mintahalmaz a neurlis hl betantsraAmennyiben a neurlis hl bemenetre az els mintt vezetjk, azt szeretnnk hogy a kimenet 0 s 1 legyen ahogy azt a 9.3. bra mutatja. A fekete pikszel 1-gyel, a fehr pikszel 0-val van jellve. A bemenetet s a neki megfelel kimenetet betantsi pr-nak nevezzk.

9.3. bra. Betantsi pr alkalmazsa a neurlis hlraHa egyszer elvgezzk a neurlis hl betantst, az helyes kimenetet fog adni akrmelyik bemeneti mintra. Most meg fogunk ismerkedni a betantsi mdszerrel.

Kezdetben a hlzatot gy inicializljuk, hogy az sszes sly rtkt egy kis pozitv rtkre lltjuk (pldul -1 s +1 kz). A kvetkez lpsben a bemenetre egy mintt vezetnk, s kiszmtjuk a kimenetet (ezt a lpst mg elreterjesztsnek is hvjuk forward pass). Mivel az sszes slyt vletlenl hatroztuk meg, a kimenet valsznleg tves lesz. Ekkor a Kvnt kimenet Aktulis kimenet (Mit szeretnnk Mi van) kplet alapjn kiszmtjuk az sszes neuron hibjt. Ezek a hibk arra szolglnak hogy oly mdon vltoztassuk meg a slyokat, hogy a hiba cskkenjen. Ms szval, minden neuron kimenete kzeledni fog a kvnt kimenethez (ezt a lpst visszaterjesztsnek nevezzk reverse pass). A lert folyamatot addig ismteljk mg a hiba minimlis nem lesz.Az algoritmust egy pldn fogjuk demonstrlni. Vizsgljunk egy kapcsolatot a neuron kimeneti s rejtett rtegei kztt, 9.4. bra.

9.4. bra. Egy sly betantsa Backpropagation algoritmussalVizsgljuk az A (rejtett rteg) s B (kimeneti rteg) neuronok kztti sszekttetst melynek slya WAB. Az brn van mg egy kts (A s C kztt) melyre ksbb fogunk visszatrni. Az algoritmusnak a kvetkez menete van:1. A mintkat elszr a bemenetre vezetjk s kiszmtjuk a kimenetet jusson esznkbe hogy a kapott kimenet rtke akrmennyi lehet mert inicializlskor vletlen szmokat vlasztottunk.2. A kvetkez lpsben meghatrozzuk a B neuron hibjt. A hibt a (Mit szeretnnk Mi van) kplet alapjn szmoljuk, illetve:

Az tag azrt szksges az egyenletben mert szigmoidlis fggvnyeket hasznltunk ha olyan neuront hasznltunk volna amelynek egyszer kszbe van, a kifejezst hasznltuk volna.

3. Megvltoztatjuk a slyokat. Legyen az j betantott sly , a rgi inicilis sly pedig .

Jegyezzk meg, hogy az A neuron kimenett hasznljuk, nem pedig a B neuront. Hasonlkppen mdostjuk az sszes slyt a kimeneti rtegben.4. Kiszmtjuk a rejtett rteg neuronjainak a hibit (Errors). A kimeneti rteggel ellenttben, ezeket a hibkat nem szmolhatjuk ki kzvetlenl (mert nem ismerjk a clt (Targret)), ezrt a hibt visszaterjesztjk (Back Propagate) a kimeneti rtegtl (innen kapta az algoritmus a nevt). A visszaterjesztst gy vgezzk, hogy a kimeneti neuronok hibit htrafel terjesztjk a slyokon keresztl hogy megkapjuk a rejtett neuronok hibit. Pldul, ha az A neuron ssze van ktve a B s C neuronokkal (9.4. bra), a B s C neuronok hibi alapjn ki lehet szmtani az A neuron hibjt.

Akrcsak az elz esetben, az tag a szigmoidlis aktivcis fggvnyek miatt van jelen.5. Miutn kiszmoltuk a rejtett rteg neuronjainak hibit, a 3. lpssel folytatjuk, s ezzel megvltoztatjuk a rejtett rteg slyait. Ennek a folyamatnak az ismtlsvel akrhny rteg neurlis hlt betanthatunk.A bemutatott algoritmus jobb megrtshez, az sszes szmtst egy konkrt neurlis hln fogjuk bemutatni. A hlnak kt bemenete, 3 kimenete s 2 kimeneti neuronja van, ahogy ez a 9.5. brn van bemutatva. Az jraszmtott slyoknak jellse van, mg a rgi slyok -vel vannak jellve.

9.5. bra. A hibavisszaterjeszts bemutatsra szolgl neurlis hl1. A kimeneti neuronok hibi

2. Mdosiitjuk a kimeneti rteg slyait

3. Kiszmiitjuk a rejtett rteg hibit (visszaterjeszts)

4. Megvltoztatjuk a rejtett rteg slyait

Az llandnak (betaniitsi lland) a nominlis rtke 1. Ezt az llandt szksg esetn a betaniits gyorsiitsra vagy lassiitsra hasznljuk.A teljes folyamat illusztrlshoz egy konkrt pldt is ki fogunk dolgozni.

1. pldaVizsgljuk a kvetkez egyszer neurlis hlzatot:

Felttelezzk hogy az sszes neuronnak szigmoidlis aktivcis fggvnye van.

. Az gak slyai: w1=0.3, w2=0.9, w3=0.1, w4=0.8, w5=0.4, w6=0.6.

(i) Vgezzk el a bemeneti jelek teresztst a hlzaton (feed forward).

(ii) Vgezzk el egyszer a jel visszaterjesztst (betaniits), (target = 0.5).

(iii) Vgezznk el mg egy teresztst s a kapott erdmny alapjn vonjuk le a kvetkeztetst.Megolds:(i) A bemeneti jel teresztseA fels neuron bemenete = (0.35x0.1)+(0.9x0.8)=0.755. Kimenet=0.68.

Az als neuron bemenete = (0.9x0.6)+(0.35x0.4)=0.68. Kimenet=0.6637.

A kimeneti neuron bemenete = (0.3x0.68)+(0.9x0.6637)=0.80133. Kimenet=0.69.

Az abszolt hiba: Kiivnt rtk Aktulis rtk = 0.5-0.69=-0.19.(ii) A jel visszaterjesztseA kimeneti neuron hibja:

.

A kimeneti rteg j slyai:

.

.

A rejtett rteg hibi:

A rejtett rteg j slyai:

A slyok jraszmiitsa utn a kvetkez llapotunk van:A fels neuron bemenete = (0.35x0.09916)+(0.9x0.7978)=0.752726. Kimenet=0.67977.

Az als neuron bemenete = (0.9x0.5928)+(0.35x0.3972)=0.67254. Kimenet=0.66207.

A kimeneti neuron bemenete = (0.272392x0.67977)+(0.87305x0.66207)=0.763. Kimenet=0.682.

(iii) KvetkeztetsA slyok jraszmiitsa utn az abszolt hiba

Kiivnt rtk Aktulis rtk = 0.5-0.682=-0.182.

Amint ltjuk, a hiba lecskkent.2. pldaVizsgljuk a kvetkez neurlis hlzatot:

Felttelezzk hogy az sszes neuronnak szigmoidlis aktivcis fggvnye van.

. Az gak slyai: w1=0.2, w2=0.1, w3=0.1, w4=0.5, w5=0.3, w6=0.2.

(i) Vgezzk el a bemeneti jelek teresztsta hlzaton (feed forward).

(ii) Vgezzk el egyszer a jel visszaterjesztst (betaniits) (target = 1, betaniitsi lland=1).

(iii) Vgezznk el mg egy teresztst s a kapott eredmny alapjn vonjuk le a kvetkeztetst.Megolds:(i) A bemeneti jel teresztseA fels neuron bemenete = (0.1x0.1)+(0.7x0.5)=0.36. Kimenet=0.589.

Az als neuron bemenete = (0.1x0.3)+(0.7x0.2)=0.17. Kimenet=0.5424.

A kimeneti neuron bemenete = (0.2x0.589)+(0.1x0.5424)=0.17204. Kimenet=0.5429.

Az abszolt hiba: Kiivnt rtk Aktulis rtk = 1-0.5429=0.4571.(ii) A jel visszaterjesztseA kimeneti neuron hibja: .

A kimeneti rteg j slyai:

.

.

A rejtett rteg hibi:

A rejtett rteg j slyai:

A slyok jraszmiitsa utn a kvetkez llapotunk van:

A fels neuron bemenete = (0.3x0.1007326)+(0.7x0.505128)=0.3838. Kimenet=0.5948.

Az als neuron bemenete = (0.7x0.20318)+(0.1x0.3004547)=0.17227. Kimenet=0.5429.

A kimeneti neuron bemenete = (0.2668x0.5948)+(0.16152x0.5429)=0.24638. Kimenet=0.56128.

(iii) KvetkeztetsA slyok mdosiitsa utn az abszolt hiba

Kiivnt rtk Aktulis rtk = 1-0.56128=0.43872.Amint ltjuk, a hiba cskkent.Az algoritmus vgrehajtsaMost miutn rszletesen megismerkedtnk az algoritmussal, megvizsgljuk hogyan mkdne egy nagy adatmennyisget ignyl algoritmus a gyakorlatban. Felttelezzk, hogy egy hlzatot arra szeretnnk megtaniitani, hogy felismerje az bc els ngy betjt 5x7 nagysg rcson. A felismerni kiivnt karakterek a 9.6. brn vannak bemutatva.

9.6. bra. Az bc els ngy betjeA hlzat helyes betaniitsi mdja a kvetkez: az els bett a hl bemenetre vezetjk, s EGYSZER mdosiitjuk a hl SSZES slyt. A kvetkez lpsben a msodik bett vezetjk a hl bemenetre, s ugyangy mdosiitjuk a hl slyait. Ezutn a harmadik bet kvetkezik, s iigy tovbb. Ha vgeztnk mind a ngy betvel, a betaniitst ellrl kezdjk egszen addig amiig a hiba nem cskken egy alacsony rtkre (ez akkor trtnik meg ha a neurlis hl az sszes bett helyesen felismerte). Az algoritmus mkdst a 9.7. bra mutatja.

9.7. bra. Az algoritmus helyes vgrehajtsaA betaniits folyamatnl kezdknl az egyik leggyakoribb hiba, hogy elszr az els bett vezetik a hl bemenetre, s az algoritmust addig ismtlik amiig a hiba le nem cskken, utna a msodik bet kerl sorra, s iigy tovbb. Ha ilyen mdon jrunk el, a neurlis hl elszr megtanulja felismerni az els bett, de mikzben megtanulja felismerni a msodikat, el fogja felejteni felismerni az elst. Vgl a neurlis hl csak azt a bett ismeri fel amelyiket utoljra tanult meg felismerni.

A betaniits lelliitsaFelmerl a krds hogy mikor kell lellni a neurlis hl taniitsval? A betaniitst akkor hagyhatjuk abba ha a hl megtanulta felismerni az sszes bett, de a gyakorlatban megkveteljk, hogy a hiba elbb egy alacsony rtkre cskkenjen. Ez biztosiitani fogja az sszes bet sikeres felismerst. A hl hibjt az egyes neuronok hibinak sszeadsval becslhetjk fel. Ez a 9.8. brn van bemutatva.

9.8. bra. A hl hibjaMs szval, a hl folytatja az sszes minta ciklikus betaniitst miig a hiba egy elre meghatrozott alacsony rtkre nem cskken, ezutn a betaniits lell. Gondoskodni kell arrl, hogy a hiba kiszmiitsakor az sszes egyni neuron hibja pozitiiv legyen. Ez azrt fontos, hogy a hibk sszeaddjanak (a 0.5 rtk hiba ugyanannyira rossz mint a +0.5 hiba).Ha a neurlis hlt egyszer betaniitjuk, nemcsak a tkletes mintkat kell hogy felismerje, hanem a srlt s zajos mintkat is. Valjban, ha a taniitsi kszlethez szndkosan adunk zajos mintt (pl. egyet az tbl), javiithatunk a hl kpessgein. A hlzat taniitsra gyszintn pozitiiv kihatssal lehet ha a mintkat vletlen sorrendben vezetjk a bemenetre.Ltezik azonban jobb mdszer is a betaniits lellsi kritriumnak meghatrozsra, az pedig a validcis halmaz (Validation Set) hasznlata. Ekkor cskken a hl tltaniitsnak (Overtraining) veszlye (ha a hl tl preciiz, cskkennek a kpessgei). Ez azt jelenti, hogy ltezik mg egy mintahalmaz amelyek az eredeti halmaz zajos verzija (nem lettek hasznlva a betaniitsnl). A hl minden betaniitsa utn a validcis halmazt hasznlljuk a hiba kiszmiitsra. A hl taniitsa akkor fejezdik be ha a hiba egy kis rtkre cskken. A 9.9. bra szemllteti ezt az tletet.

9.9. bra. Validcis halmaz hasznlataAmikor a neurlis hl teljesen be van taniitva, a validcis halmaz hibja minimlisra cskken. Ha a neurlis hl tl van taniitva (tl preciiz), a validcis halmaz hibja nvekedni kezd. Ha tltaniitsra kerl sor, a hl nem lesz kpes a zajos adatok korrekt felismersre.A hibavisszaterjeszts algoritmus hinyossgaiA hibavisszaterjeszts algoritmusnak vannak hinyossgai is. A legismertebb hinyossg a loklis minimum. Ez azrt trtnik mert az algoritmus llandan cserli a slyokat hogy a hiba minl kisebb legyen. De nha a hibnak muszj nvekedni ahhoz, hogy ksbb mg jobban le tudjon cskkenni. Ez a 9.10. brn van illusztrlva. Ilyen esetben az algoritmus be fog ragadni (mert nem haladhat hegynek felfel), s a hiba nem fog tovbb cskkeni.

9.10. bra. Loklis minimumokEnnek a problmnak az orvosolsra nhny mdszer ltezik. Egy egyszer megolds az volna, hogy reszetljuk a slyokat s jrakezdjk a betaniitst. Egy msik lehetsges megolds, hogy a slyvltoztatsnak lendletet adjunk. Ez annyit jelentene, hogy a hiba az adott iterciban nem csak a pillanatnyi hibtl fgg, hanem a korbbi vltozssktl is. Pldul:

A konstans < 1.

A hibavisszaterjesztsnl vannak kevsb kifejezett problmk is. Azok akkor jelentkeznek ha a hl nagysga nvekszik, de a problmk nagy rszt ki lehet kszblni a slyok jrainicializlsval. Meg kell jegyeni, hogy az elmlt nhny vben a standard algoritmusnak sok varicija szletett amelyek a loklis minimum problmjt sikeresen kikszblik.

A hl nagysgaA neurlis hl tervezsekor egy logikus felmerl krds az, hogy mekkora hlt vlasszunk. A leggyakrabban hasznlt hlzatoknak ltalban egy bemeneti rtegk (input layer), egy rejtett rtegk (hidden layer), s egy kimeneti rtegk (output layer) van. A bemeneti rteg neuronjainak szmt a feldolgozni kiivnt minta tiipusa hatrozza meg. Pldul, a 9.2. brn bemutatott hlnak ngy bemenete kell hogy legyen mert a minta 4 pikszelt tartalmaz. Hasonlan, a kimeneti neuronok szmt a felismerni kiivnt mintk szma hatrozza meg. A 9.2. brn bemutatott hlzatra kt kimeneti neuron szksges. Ezutn mg meg kell hatrozni a rejtett neuronok szmt. Nem ltezik pontos szably arra, hogy a rejtett rteg mennyi neuront kell hogy tartalmazzon, s a neurlis hl korrektul fog mkdni ha a rejtett neuronok szma elfogadhat keretek kztt mozog. A 9.5. brn bemutatott pldban, ahol 26 darab (az angol bc betinek szma) 5x7 nagysg rcsra vetiitett karaktereket szeretnnk felismerni (35 bemenet), a hl helyesen fog mkdni ha a rejtett rteg neuronjainak szma 6 s 22 kztt mozog. Ha a rejtett rtegben kevesebb mint 6 neuront hasznltunk volna, a hlnak nem volna elegend memrija az sszes minta memorizlsra, ha pedig tbb mint 22 neuront hasznltunk volna, a hl kpessgei cskkentek volna s kevsb lenne hatkony. Arra kvetkeztethetnk, hogy a rejtett rteg neuronjainak szmt kiisrleti ton kell meghatrozni gy, hogy a legjobb eredmnyt kapjuk.10. Tbbrteg neurlis hl betantsa hibavisszaterjeszts mdszerrel (backpropagation)Ebben a valamivel sszetettebb pldban a tbbrteg neurlis hlzat betantsval fogunk megismerkedni hibavisszaterjeszts mdszerrel (backpropagation). A mdszer bemutatsra egy hromrteg neurlis hlzatot fogunk hasznlni amelynek kt bemenete s egy kimenete van.

10.1.bra. Ktbemenet s egykimenet neurlis hlzatMinden neuron kt egysgbl ll (10.2. bra). Az els egysg sszeadja a slyok s a hozztartoz bemenetek szorzatt. A msodik egysg egy nemlineris tviteli fggvnyt valst meg, amelyet a neuron aktivcis fggvnynek neveznk. Az e jelli a bemenetek sszegt amely be van szorozva a megfelel sllyal, mg a neuron nemineris kimenete y=f(e). Az y egyben a neuron kimenete is.

10.2. bra. A kt rszbl ll neuron bemutatsa: sszead s nemlineris elemA neurlis hl betantshoz szksgnk van egy tantsi halmazra. A betant halmaz bemeneti jelekbl ll (x1 s x2), s minden bemeneti prhoz hozz van rendelve egy kvnt kimeneti z jel. A neurlis hlzat betantsa egy iteratv folyamat. Minden iterciban vltoznak az lekhez rendelt slyok. A mdostott slyokat a kvetkez algoritmus alapjn hatrozzuk meg: minden egyes betantsi lpsben a betantsi halmaz elemeit vgigterjesszk a hlzaton. Ez a lps utn minden rteg minden neuronjnak ismert a kimenete. A 10.3., 10.4. s 10.5. brk a jel terjedst mutatjk a hlzaton keresztl. A w(xm)n szimblumok a hlzat xm bemenete s az n-edik bemeneti neuron kzti slyt jellik. Az yn szimblumok az n-edik neuron kimenett jellik.

10.3. bra A jel terjedse a bemeneti rtegen keresztlA kvetkez lpsben a jel a rejtett rtegen keresztl terjed. A wmn szimblumok az m-edik neuron kimenete s a kvetkez rteg n-edik neuronja kzti slyt jellik.

10.4. bra. A jel terjedse a rejtett rtegen keresztlA jel vgl a kimeneti rtegen keresztl terjed.

10.5. bra. A jel terjedse a kimeneti rtegen keresztlA kvetkez lpsben a hlzat y kimeneti jelt sszahasonltjuk a kvnt kimenettel (target) amelyet az ismert betant halmazbl ismernk. A vals s a kvnt kimenetek kztti klnbsget a kimeneti neuron hibjnak nevezzk, s -val jelljk.

10.6. bra A kimeneti neuron hibjaA nem-kimeneti neuronok hibit lehetetlen kzvetlenl meghatrozni mivel kezdetben ezek az rtkek nem ismertek. A mltban, nagyon hossz ideig nem volt ismert mdszer a tbbrteg neuronok betantsra. Csak a mlt szzad nyolcvanas veiben fedeztk fel a hibavisszaterjesztses mdszert. Az alaptlet az hogy a hibajelet (amelyet minden betantsi lpsben kiszmolunk) visszaterjesszk a hlzaton keresztl egszen a bemeneti neuronokig.

10.7. bra. A hiba visszaterjesztseA hibavisszaterjeszts lpsben a wmn egytthatk rtkei azonosak az egytthatk rtkvel melyeket az elreterjesztskor hasznltunk. Mindssze a terjedsi irny vltozott (a jeleket a kimenettl a bemenet fel terjesszk). Ezt a technikt a hlzat sszes rtegre alkalmazzuk. Ha a visszaterjesztett hibk tbb neurontl rkeznek, ezeket a hibkat sszeadjuk. Ez a 10.8. brn van bemutatva.

10.8. bra. Tbb neuronbl rkez hibk visszaterjesztskor sszeaddnakMiutn minden neuronra kiszmtjuk a hibajelet, minden neuron slyt mdostjuk. A 10.9. brn lthat kpletekben a df(e)/de jelli az aktivcis fggvny els derivltjt (slyvltoztats utn).

10.9. bra A hiba visszaterjesztseAz tnyez befolysolja a betants gyorsasgt. Ennek a paramternek a meghatrozsra nhny technika ltezik. Az els mdszer, hogy a betantsi folyamatot nagy rtkkel kezdjk, a slyok mdostsa kzben pedig a tnyezt fokozatosan cskkentjk. A msik, sszetettebb mdszer a neurlis hl betantst az paramter kis rtkvel kezdi. A folyamat sorn, miutn a hiba cskkent, az paramtert nveljk, a betants vgn pedig ismt cskkentjk. Ha a betantst kis rtkkel kezdjk, meghatrozhatjuk a slyok eljelt is.11. Kohonen-fle (versenyz) hlzatokEbben a fejezetben egy msfajta neurlis hlzattal fogunk megismerkedni, ez pedig a Versenyz hl. Msnven Kohonen hlzatoknak, Csak a gyztes arat hlnak (Winner Takes All), vagy nszervez hlnak (Self Oragnizing map) hiijk ket. Ezeket a hlkat mintk felismersre hasznljk klnfle adatokban. A mdszer akkor is hasznlhat ha a programoz nem ismeri a mintk termszett. Ezeknek a hlzatoknak a mkdst legjobban egy pldn keresztl lehet illusztrlni.Alapvet mveletekFelttelezzk, hogy egy hrom neuronbl ll hlzatunk van (11.1. bra).

11.1. bra. Hrom neuronbl ll hlzatEgyelre nem foglalkozunk a slyok rtkvel, csak annyit mondunk hogy kezdetben vletlen rtkekre vannak lltva.

A kvetkez lpsben egy mintt hozunk a bemenetre s meghatrozzuk a kimenetet. Az egyik neuronnak nagyobb kimeneti rtke lesz mint a tbbinek. Arra a neuronra azt mondjuk hogy gyztt, a gyztes kimenetet 1-re lltjuk, a tbbit pedig nullra. A kvetkez lpsben csak annak a neuronnak a slyait tantjuk amelyik gyztt, gyhogy ha mg egyszer ugyanaz a minta rkezik a bemenetre, a neuron mg flnyesebben fog gyzni.Pldul, ha a 3-as neuron gyztt, csak azokat a slyokat fogjuk betantani amelyek a 11.2. brn vastag vonallal vannak jellve.

11.2. bra A gyztes neuron slyait tantjuk beA tantkplet nagyon egyszer:

A W+ az j (betantitt) sly, W az inicilis (kezd) sly, az pedig a betantsi tnyez (egy szm 0 s 1 kztt amely szablyozza a betants gyorsasgt).Abban az esetben ha a bemenetre egy msik, ez elstl klnbz mintt vezetnnk, egy msik neuronnak volna a legnagyobb a kimenete (gyztes), s annak a neuronnak a slyai lennnek betantva. Ily mdon a neurlis hl sajt magt szervezi a klnbz mintk felismersre (klnbz mintkra klnbzek a gyztes neuronok).

Egy ilyen hlnak a tulajdonsgai jelentsen klnbznek a hibavisszaterjesztses hlzattl. A felhasznl nem tudja szablyozni se azt, hogy melyik neuronnak a kimeneti rtke lesz a legnagyobb, se azt hogy melyik neuronok vannak betantva. Ezrt az ilyen tpus tantst felgyelet nlkli tantsnak nevezzk. Ennek ellenre a hl az adatokban kpes megtallni a mintkat mg akkor is ha a felhasznl nem tudja hogy azok ott vannak.Rszletesen a mveletekrlMost rszletesebben meg fogunk ismerkedni a hlzat mkdsi elvvel. A 11.1. brn lthat hlzatnak kt bemenete van. Ezeket a bemeneteket vektorknt brzolhatjuk, 11.3. bra.

11.3. bra. A bemenetek vektorknt brzolvaPitagorasz ttele alapjn Az L vektor hossza . Minden neuron kt slya szintn vektorral brzolhat. brzoljuk a 11.4. brn a harmadik (gyztes) neuron slyvektort.

11.4. bra. A bemeneti vektor s a slyvektor egyttes brzolsaAmikor az egyes neuronok slyait szmiitjuk , mi valban a bemenetek s a slyok kztti skalris szorzatot szmiitjuk. Egyszerbben fogalmazva, a bemeneti vektor s a slyvvektor kzti klnbsget szmiitjuk. Minl kisebb ez a klnbsg, annl nagyobb lesz a kimeneti rtk.Ha az adatok elfeldolgozsakor a slyok s bemenetek hosszt 1-re normalizljuk, csak a vektorok kzti szgeltrst kell lemrnnk. Ez a 11.5. brn van bemutatva.

11.5. bra. A vektorok kzti szgeltrsAhhoz hogy a vektorok hosszt 1-re lltsuk, minden vektort el kell osztani a sajt hosszval (normalizci).

A gyztes neuron az melynek slyvektora a legkzelebb ll a bemenethez. A 11.5. brn ez a 3. neuron. A betants eredmnyeknt a slyvektor mg kzelebb kell hogy kerljn a bemenethez, hogy hasonl bemenet esetn ez a neuron mg flnyesebben nyerjen. Ez a 11.6. brn van bemutatva.

11.6. bra A vektorok betants utnAz eddigi elmletet egy pldn fogjuk illusztrlni.

PldaAdott egy neurlis hl vletlen slyrtkekkel, 11.7. bra.

11.7. bra. Neurlis hl vletlen slyrtkekkelA 11.8 brn a slyvektorok pillanatnyi llsa van bemutatva.

11.8. bra. A slyvektorok kezdeti llsaA kvetkez feladat belltani, hogy az sszes slyvektor hossza 1 legyen. Ezt gy rjk el, hogy elszr kiszmtjuk a hosszukat, utna pedig a komponenseket elosztjuk a megfelel sllyal:Az 1. neuron slyvektornak hossza::

A 2. neuron slyvektornak hossza:

A 3. neuron slyvektornak hossza:

A vektorok komponenseit elosztjuk a hosszukkal:

Neuron 1:

1. sly = 0.1/0.906 = 0.11

2. sly = 0.9/0.906 = 0.99

Neuron 2:

1. sly = (-0.5)/0.5831 = -0.86

2. sly = 0.3/0.5831 = 0.51Neuron 3:

1. sly = (-0.9)/1.273 = -0.71

2. sly = (-0.9)/1.273 = -0.71Az eredeti slyokat lecserljk az jonan kapott rtkekkel:

11.9. bra A slyok rtke jraszmts utnA normalizlt slyokat a 11.10. bra mutatja.

11.10. bra. A slyvektorok hossza s helyzete jraszmts utnAmint ltjuk, az sszes vektor azonos hosszsg.

A hlzat bemenetre a kvetkez rtkeket vezetjk: Input 1 = 0.8, Input 2 = 0.5. Akrcsak a slyokat, a bemeneteket is 1-re normalizljuk.

A bemeneti vektor hossza =

j Input 1 = 0.8/0.9434 = 0.85

j Input 2 = 0.5/0.9434 = 0.53

A kapott rtkek a 11.11. brn lthatak.

11.11. bra Az j bemeneti vektorAmint ltjuk, az Input az 1. neuron slyaihoz ll legkzelebb, ezrt vrhatlag ez a neuron fog gyzni. A hlzat kimenetnek meghatrozsval ellenrizzk hogy jl feltteleztnk-e.

11.12. bra. Normalizlt bemenetek alkalmazsa a hlzatraMivel csak a legnagyobb kimenettel rendelkez neuron rdekel bennnket, nincs szksg a szigmoidlis vagy ms aktivcis fggvnyt hasznlni.

Output 1 = (0.85 x 0.11) + (0.53 x 0.99) = 0.6182

Output 2 = (0.85 x (-0.86)) + (0.53 x 0.51) = 0.4607Output 3 = (0.85 x (-0.71)) + (0.53 x (-0.71)) = 0.9798A fels egyenletek alapjn ltjuk hogy valban a Neuron 1 nyert. A kvetkez lpsben ennek a neuronnak a slyait fogjuk betantani tantsi tnyezvel.

Most ki kell szmtanunk az j slyvektor hosszt (a betantsi kplet nem rzi meg az egysgnyi hosszsgot).Hossz =

Mivel az j hossz klnbzik 1-tl, ismt normalizlni kell:

1. sly = 0.554/0.903 = 0.61

2. sly = 0.714/0.903 = 0.79

Most jrarajzoljuk az brt, hogy meglssuk mi trtnt.

11.13. bra. A hl betants utnAmint ltjuk, a slyvektor kzelebb kerlt a bemenethez.

12. Neurlis hlzatok MATLAB krnyezetbenEbben a fejezetben a MATLAB programcsomag Neural Network Toolbox-val fogunk megismerkedni. Ez a Toolbox lehetv teszi a neurlis hlzatok konfigurlst, betaniitst s tesztelst, de ezenkiivl ms szmos lehetsget is nyjt.

Elszr a perceptronnal fogunk megismerkedni. A perceptron olyan neurlis hl mely csupn egy rteg neuronbl ll, s ha a bemenetre egy vektort vezetnk, a slyok betaniithatk gy, hogy a kiivnt kimenetet adjk. A kutatk a perccptronnak nagy figyelmet szenteltek, mert a taniits elvei ltalnosiithatk nagyobb hlzatokra is. A perceptronok klnsen alkalmasak egyszer mintk feelismersre. Azokat a feladatokat amelyeket kpesek megoldani, a perceptronok gyors s megbiizhat mdon oldjk meg. A perceptron mkdsi elvnek megrtse megknnyiiti az sszetettebb neurlis hlk mkdsnek megrtst.Matlab-ban a perceptront a newp paranccsal lehet ltrehozni. A hlzatokat az init, sim s train utasiitsokkal inicializlhatjuk.A neuron modelljeA hardlim aktivcis fggvnyt hasznl neuron a 12.1. brn van bemutatva.

12.1. bra. Perceptron: a bemeneti vektor elemeinek szma RMinden bemenetet a megfelel sllyal szorozzuk, a beszorzott bemenetek sszege pedig a hardlim aktivcis fggvny bemenetre kerl. Az aktivcis fggvny bemenethez hozzjrulhat mg a b llland bemenet is. A hardlim tviteli fggvny a 12.2. brn van bemutatva.

12.2. bra. Hardlim tviteli fggvny (ang. Hard-limit)

A perceptron kimenetn akkor jelenik meg 1 ha a bemeneti sszeg nagyobb vagy egyenl nullnl. Ellenkez esetben a kimenet 0. A hardlim fggvny lehetv teszi, hogy a perceptron a bemeneti vektorokat kt osztlyba sorolja. A kimenet akkor lesz 0 ha a hl n bemenete kisebb mint 0, s akkor lesz 1 ha n nagyobb mint 0. A 12.3. brn egy olyan neurlis hl van bemutatva melynek slyai , , az lland bemenet , a kimeneten pedig hardlim fggvny van.

12.3. bra. Kt rszre felosztott trA terleteket az L dntshatr vonala hatrozza meg: L: Wp+b=0. Ez a vonal merleges a W slymtrikszra, s annyival van elmozdulva az origtl amennyi az lland b bemenet (biasz). A felhasznl a slyok s a biasz kivlasztsval dnt arrl, hogy milyen mdon fogja felosztani a teret. A biasz nlkli hardlim tviteli fggvnnyel rendelkez neuronok a teret mindig olyan vonallal fogjk felosztani amely tartalmazza az origt.A neuron mkdst demonstrl program a 12.4. brn van bemutatva. A programot a nnd4db parancs gpelsvel hiivhatjuk.

12.4. bra. A perceptron mkdst demonstrl programA program engedlyezi a vonal mozgatst, valamint j fekete s fehr pontok hozzadst klnfle feladatok szerkesztshez.

A perceptron architektrjaA perceptron hlzat 1 rteg S darab perceptronbl ll amelyek slyokkal vannak sszektve az R bemenettel, amint a 12.5. brn lthat. Akrcsak eddig, az i s j indekszek a sszekttets erssgt jellik a j bemenet s az i neuron bemenete kztt. A bemeneti elemek szma R, S pedig a rteg neuronjainak szma.

12.5. bra. A perceptron neurlis hlzat architektrjaA perceptron betaniitsi szably csak az egyrteg neurlis hlt kpes betaniitani, ezrt csak az egyrteg hlkat fogjuk vizsglni.

A perceptron ltrehozsa (newp)Egy perceptront a newp fggvnnyel hozunk ltre

>> net=newp(P,T)

A bemeneti paramterek:

A P mtriksz dimenzija R x Q (Q bemeneti vektor, mindegyiknek R eleme van).

A T mtriksz dimenzija S x Q (Q clvektor, mindegyiknek S eleme van).ltalban hardlim fggvnyt hasznlunk, iigy ez az alaprtelmezett fggvny.A most kvetkez programkd egy olyan perceptron neurlis hlt hoz ltre melynek egy bemeneti vektora van (0 s 2), s egy kimeneti neuronja melynek vagy 0, vagy 1 kimeneti rtke van.

>> P = [0 2];

>> T = [0 1];

>> net = newp(P,T);Grafikai kezelfellet (GUI)A grafikai kezelfellet gy van tervezve, hogy egyszer s falhasznl-orientlt legyen. A grafikai krnyezetet egy olyan pldn keresztl fogjuk megismerni amely a logikai S mveletet fogja vgezni. A bemeneti vektor p=[0 0 1 1; 0 1 0 1], a kiivnt kimenetek pedig t=[0 0 0 1]. A hlnak az ANDNet nevet fogjuk adni. Miutn ltrehoztuk, a hlzatot be fogjuk taniitani a kiivnt fggvny vgrehajtsra. A grafikai fellet hiivsra az nntool parancsot kell a parancsablakba gpelni. Ekkor a 12.6.a. brn bemutatott ablak fog megjelenni.

a)b)12.6. bra. a) A grafikai ablak kinzete, b) A bemeneti adatok beviteleElszr a hlzat bemeneteinek p rtkeit kell definilni: [0 0 1 1; 0 1 0 1]. A hlnak ktelem bemenete van, valamint ngy ktelem taniitvektora. Eezeknek az adatoknak a definilsra a New gombra kell kattintani, ekkor a Create Network or Data ablak fog megjelenni. A Data flecskt kell kivlasztani. A nevet (Name) p-re kell lliitani, az rtket (Value) pedig [0 0 1 1; 0 1 0 1]. Gondoskodni kell arrl, hogy az adattiipus (Data Type) a bemenetekre legyen lliitva (Inputs). Ez a 12.6.b. brn van bemutatva. A bevitel utn a Create gombra kell kattintani, ezutn az OK-re. Ekkor a Network/Data Manager ablakban p fog megjelenni bemenetknt. A kvetkez lpsben ltrehozzuk a kiivnt kimeneteket (Target). Most a nevet t betre lliitjuk, az rtket pedig [0 0 0 1]-re. Az adattiipusok (Data Type) kzl a Target-et kell vlasztani. Utna a Create-re, majd az OK-re kell kattintani. A Network/Data Manager ablakban p jelenik meg mint bemenet, t pedig mint a kiivnt kimenet.A kvetkez lpsben egy j ANDNet nev neurlis hlt fogunk ltrehozni. A Network flecskt kell kivlasztani, s a nvhez (Name) ANDNet-et iirni. A hlzat tiipust (Network Type) Perceptron-ra kell lliitani. Ebben a pldban a hardlim tviteli fggvnyt (Transfer Function) fogjuk hasznlni. A taniitsi fggvnynek (Learning Function) a learnp fggvnyt vlasztjuk. Ezutn a Create Network or Data ablaknak a 12.7.a. brn bemutatott kinzete van. Ha meg szeretnnk tekinteni a hlzatot, a View-ra kell kattintani. Ekkor ltjuk hogy a hlzatnak kt bemenete van, hardlim tviteli fggvnye, s egy kimenete. Az j hlzatot a Create, majd az OK gombra kattintva hozzuk ltre.

a)b)

12.7. bra. a) A Create Network or Data ablak kinzete, b) A hl kinzeteA perceptron betaniitsaA perceptron betaniitshoz klikkelssel megjelljk az ANDNet-et, ezutn pedig az Open-re kell kattintani. Ekkor egy j Network: ANDNet ablak nyiilik. Ha a View-ra kattintunk, ismt lthatjuk a hlzatot. Az Initialize flecskre kattintva leellenrizhetjk az inicilis rtkeket. Ezutn a Train flecskre kell kattintani. A bemeneteket s a kimeneteket a Training Info flecske alatt adjuk meg gy, hogy p-t vlasztjuk a bemenetek listjrl, t-t pedig a kimenetek listjrl. A Network: ANDNet ablaknak a 12.8. brn bemutatott kinzete kell hogy legyen.

12.8. bra. A hl betaniitsaszrevehet, hogy Training Results Outputs and Errors meznek mr ANDNet eltagja van. Emiatt ksbb knnyen felismerhetv vlnak amikor a munkaterletre ekszportljuk ket. A hl betaniitsa a Train Network gombbal trtnik. Ekkor a kvetkez betaniitsi eredmnyek jelennek meg.

12.9. bra. A hl betaniitsnak eredmnyeA hiba 6 betaniitsi ciklus utn cskkent nullra. A p bemenet hasznlatval s a hl szimullsval meggyzdhetnk arrl, hogy a hl valban nem hibzik. A hlt gy szimullhatjuk, ha a Network: ANDNet ablakban a Simulate flecskre kattintunk. Az Inputs lehull listrl bemenetnek a p-t kell vlasztani, a kimenetet pedig ANDNetoutputsSim-mel kell jellni, hogy megklnbztessk a betaniit jelek kimenettl. Elszr a Simulate Network-re kell kattintani, utna pedig az OK-re. Ha most megvizsgljuk a Network/Data Manager-t, j vltozt vesznk szre a kimeneten: ANDNetoutputsSim. Ha dupln kattintunk r, egy Data: ANDNet_outputsSim [0 0 0 1] rtk ablak jelenik meg. Ebbl arra kvetkeztetnk, hogy a neurlis hl valban az AND logikai mveletet vgzi.Fggelk 1. Neurlis hlzatok tervezse MATLAB-banAz nnd parancs begpelsvel a MATLAB parancssorba egy olyan alkalmazs nylik amellyel knny s szemlltet mdon lehet neurlis hlzatot tervezni. Az ablak kinzett az F.1.1. bra mutatja.

F.1.1. bra. Neurlis hlzatok tervezsre szolgl alkalmazsHa lenyomjuk a Table of contents gombot, vlaszthatunk a tervezni kvnt hlzatok fajtjbl. A 2-5 gombra kattintva a kvetkez ablak nylik (F.1.2. bra).

F.1.2. bra. 2-5 fejezetekA lehull menk egyiknek kivlasztsval megismerkedhetnk a neurlis hlk klnfle fajtival. A Chapter 2 demos One-input Neuron fejezettel kezdjk, ekkor az F.1.3. brn lthat ablak jelenik meg.

F.1.3. bra. Egybemenet neuronAz F.1.3. brn lthat ablakot kzvetlenl is ki lehetett volna nyitni a nnd2n1 parancs gpelsvel a MATLAB parancsablakba. Ebben az ablakban lehetsges cserlni a w slyt, a b biasz-t, s a neuron tviteli fggvnyt az F lehull menbl val vlasztssal. A kvetkez tviteli fggvnyek kzl lehet vlasztani: Hardllim, Hardlims, Purelin, Satlin, Satlins, Logsig s Tansig.

A kvetkez plda a Chapter 2 demos Two-input Neuron. Ez a kt neuront tartalmaz hlzat az F.1.4. brn van bemutatva. Ezt az ablakot az nnd2n2 parancs gpelsvel is ki lehetett volna nyitni.

F.1.4. bra. Ktbemenet s egykimenet neuronEnnl a hlzatnl mind a kt slyt s a biasz-t lehet vltoztatni, az tviteli fggvnyeket pedig az F lehull menbl lehet vlasztani.

Az almkat s narancsokat szortiroz pldval akkor ismerkedhetnk meg ha a Chapter 3 demos Perceptron classification- vlasztjuk. Ekkor az F.1.5. brn lthat ablak fog kinylni,

F.1.5. bra. Almkat s narancsokat szortroz pldaHa lenyomjuk a Go gombot, a gymlcs a futszalagra rkezik, a rendszer analizlja, s a kapott tulajdonsgok alapjn (sly, alak, teksztra) az egyik vagy a msik ldba kerl. A piros s srga pontok jellik a gymlcsfajtk prototpust.A kvetkez plda a Chapter 4 demos Decision boundaries. Ez az ablak az F.1.6. brn van bemutatava.

F.1.6. bra. DntshatrokEbben a pldban a felhasznl hatrozza meg, hogy melyik helyen lesznek a mintk (fekete s fehr krcskk), hny darab lesz az egyik s msik fajtbl, s grafikailag meghatrozza az egyenest amely a hatrt jelli az egyes mintk kztt. Minden hatrvonal konfigurci esetben az ablakban megjelennek a slyok s a biasz rtke. A slyvektor mindig ortogonlis a vlasztvonalra.Az utols pldt a Chapter 4 demos Perceptron rule menbl hvjuk, ez a plda a neuronok betantst szemllteti (F.1.7. bra).

F.1.7. bra. Neuronok betantsaA felhasznl dnt arrl hogy hasznl-e biasz-t vagy nem. Az ablak bal oldaln hrom nyomgomb van. A fels Learn gomb egyszer alkalmazza a perceptron betantsi szablyt. A kzps Train gomb a perceptron betantsi szablyt alkalmazza makszimum 5-szr (vagy kevesebbszer ha korbban megtallja a helyes megoldst). Az als Random gomb a slyoknak s a biasz-nak vletlen rtkeket ad.Fggelk 2. Keress1. feladatHrom hittrt s hrom ebmerev tkelse a folyn.Az F.2.1. brn a foly bal oldaln 3 hittrt s 3 emberev van brzolva. A feladat mindenkit tjuttatni a foly tloldalra. Egy csnak ll rendelkezskre amely makszimum kt szemlyt szllthat. Ha brmely pillanatban a foly akrmelyik oldaln tbb emberev marad mint hittrt, az emberevk fel fogjk falni a hittrtket.

F.2.1. bra. Hrom hittrt s hrom emberev problmjaMegolds.

A megoldst mlysgi keress segtsgvel fogjuk bemutatni (Depth First Search). A keresfa az F.2.2. brn van bemutatva.

F.2.2. bra. Hrom hittrt s hrom emberev tkelse a folyn mlysgi keressselKvetkezik a teljes MATLAB-ban rt .m fjl a 3 hittrt s 3 emberev tkelsre a folyn.% Ez a program 3 hitterito es 3 emberevo atkeleset valositja meg a folyon.

% Egy csonak all rendelkeyesukre amely makszimum ket szemelyt szallithat.

% Az atkeles akkor fejezodik be ha mindenki atjut a folyo tuloldalara.

% Egy pillanatban se maradhat tobb emberevo mint hitterito a folyo

% akarmelyik partjan mert az emberevok meg fogjak enni a hitteritoket.

% A reprezentacio a kovetkezo:

% [a, b, c, d, e]% a emberevok szama a bal parton% b hitteritok szama a bal parton% c emberevok szama a jobb parton% d hitteritok szama a jobb parton% e - csonak (0: bal part, 1: jobb part)% kezdoallapot: [3 3 0 0 0], 3 hitterito es 3 emberevo a bal parton, csonak % a bal parton% A keresest melyseg szerint vegezzuk (DFS)

clearclcstart_state=[3 3 0 0 0]; goal_state=[0 0 3 3 1]; % 3 sv, 3 lj% start_state=[4 4 0 0 0]; goal_state=[0 0 4 4 1];OpenList = [];ClosedList = [];OpenList = start_state;while numel(OpenList)~=0 temp=OpenList(1,:); OpenList(1,:)=[]; if temp==goal_state ClosedList=[ClosedList; temp]; final_solution=get_path(ClosedList); return end [possible_moves]=find_moves(temp);% csak azokat a sorokat tartjuk meg amelyek nem szerepelnek sem az

% OpenList-ben, sem a ClosedList-ben good_rows=find_good_rows(possible_moves,ClosedList); ClosedList=[ClosedList; temp];% OpenList(1,:)=[]; OpenList=[good_rows; OpenList];end function [possible_moves] = find_moves(x)% Ez a fuggveny keresi a lehetseges lepeseket a folyoatkelesnel all_moves = []; a=x(1); b=x(2); c=x(3); d=x(4); e=x(5); if e==0 all_moves(1,:)=[a-1 b c+1 d 1]; all_moves(2,:)=[a-2 b c+2 d 1]; all_moves(3,:)=[a b-1 c d+1 1]; all_moves(4,:)=[a b-2 c d+2 1]; all_moves(5,:)=[a-1 b-1 c+1 d+1 1]; elseif e==1 all_moves(1,:)=[a+1 b c-1 d 0]; all_moves(2,:)=[a+2 b c-2 d 0]; all_moves(3,:)=[a b+1 c d-1 0]; all_moves(4,:)=[a b+2 c d-2 0]; all_moves(5,:)=[a+1 b+1 c-1 d-1 0]; end possible_moves=[]; j=1; for i=1:5 temp=all_moves(i,:); if (temp(1)>=0 && temp(2)>=0 && temp(3)>=0 && temp(4)>=0) if temp(2)~=0 && temp(2)>=temp(1) && temp(4)~=0 && temp(4)>=(temp(3)) possible_moves(j,:)=temp; j=j+1; end if (temp(2)==0 && temp(4)>=temp(3)) possible_moves(j,:)=temp; j=j+1; end if (temp(4)==0 && temp(2)>=temp(1)) possible_moves(j,:)=temp(:); j=j+1; end end endendfunction good_rows = find_good_rows(possible_moves,ClosedList)% Ez a fuggveny a matriksz azon sorait valasztja ki amelyek nincsenek a % ClosedList-en

% temp=possible_moves; % ideiglenesen itt taroljuk a lehetseges sorokat s1=size(possible_moves);

s1=s1(1); s2=size(ClosedList); s2=s2(1); indexes=[]; for i=1:s1 temp1=possible_moves(i,:); for j=1:s2 temp2=ClosedList(j,:); if isequal(temp1,temp2)==1 indexes=[indexes i]; end end end clear i j% for i=1:length(indexes)% possible_moves(indexes(i),:)=[];% end possible_moves([indexes],:)=[]; good_rows=possible_moves;endfunction final_solution = get_path(ClosedList)% Ez a fuggveny talalja meg az utat a vegso csomoponttol a fa gyokereig.

% A fa kifejtese soran azok a csomopontok is ki lesznek fejtve amelyek % nincsenek a vegso megoldas utvonalan. s=size(ClosedList); s=s(1); indexes=[]; for i=1:s-1 if ClosedList(i,5)==ClosedList(i+1,5) indexes=[indexes i]; end end ClosedList([indexes],:)=[]; final_solution=ClosedList;end

Az F.2.1. tblzat mutatja az inicializcit s a megoldskeress els hrom lpst a megrt algoritmus alapjn.Inicializcistart_state = [3 3 0 0 0]

goal_state = [0 0 3 3 1]

i. OpenList =

ClosedList =

ii. OpenList = [3 3 0 0 0]

iii. OpenList =

1. lps

2. lps

3. lps

F.2.1. tblzat. A megoldskeress els hrom lpseEzt az eljrst addig kell folytatni amg el nem jutunk a vgllapotba. A feladatot szlessgi keresssel is meg lehet oldani. Az olvasnak javasoljuk hogy nllan oldja meg a pldt szlessgi keresssel.

2. feladatA farkas, a nyl s a kposzta tkelse a folyn. A foly egyik partjn vannak a farkas, a nyl s a kposzta. A csnakosnak az a feladata, hogy mindegyikket tjuttassa a foly msik oldalra. A csnakos mellett a csnakban mg egy valaki vagy valami tartzkodhat (farkas, nyl, kposzta). Abban az esetben ha a foly brmely oldaln felgyelet nlkl maradnak a farkas s a nyl, a farkas fel fogja falni a nyulat. Ha a foly brmely oldaln felgylet nlkl maradnak a nyl s a kposzta, a nyl meg fogja enni a kposztt.A feladatot mlysgi s szlessgi keresssel kell megoldani.

Az F.2.3. bra a mlysgi keresst mutatja be.

F.2.3. bra. A farkas, nyl s kposzta tkelse a folyn: mlysgi keresfaFggelk 3. Loklis keressFeladat.8-kirlyn problma. A sakktblra 8 kirlynt kell felrakni gy, hogy azok ne tmadjk egymst.

Megolds.Ennek a feladatnak a megoldsa nem egyrtelm. Ebben a feladatban meg fogunk elgedni az els megoldssal. A feladat megoldsnak a menete a kvetkez: Minden oszlopba egy vletlen helyre egy kirlynt helyeznk, s minden lpsben egy kirlynt mozdtunk el gy (oszlopon bell), hogy a lps utn a lehet legkevesebb tmads legyen a kirlynk kztt. A clllapotot akkor rjk el, ha a tmadsok szma 0.Az F.3.1. brn egy vletlenl kivlasztott lehetsges kezdllapot van bemutatva. Erre az llapotra a kirlynk kzti tmadsok szma 17. Az brn be van mutatva az sszes lehetsges lps, s hogy mennyi tmads lenne a lps utn. Az F.3.1. brn a legkisebb szm 12, teht ez az els lps utn a minimlis tmadsok szma. Mivel tbb mez rtke is 12, tbbflekppen is eljuthatunk a legjobb kvetkez lpsig. Ilyenkor a kvetkez lpst vletlenl vlasztjuk a legjobb lpsek kzl.

F.3.1. bra. Egy lehetsges kezdllapot s a kvetkez lps minsgeA teljes MATLAB programkd kvetkezik a 8-kirlyn feladat megoldsra.

% Ez a program a 8-kiralyno feladatot oldja meg lokalis keresessel.

% A program a kovetkezo allapotnak mindig a legkisebb tamadasok szamaval

% rendelkezo lepest valasztja.

% A tamadasok szama a kovetkezo lepesben nem muszaj hogy kisebb legyen a

% tamadasok szamanal az elozo lepesben.

clearclcA=zeros(8);r=randperm(8);for i=1:8 A(r(i),i)=1;endshow_the_solution(A)clear i[u v]=find(A);num_att=100*A;q=find_attacks(A);clear u v rcurrent_num_att=q;while q~=0 for i=1:8 temp1=1:8; f=find(A(:,i)~=0); temp1(f)=[]; for j=1:7 temp2=temp1(j); AA=A; AA(f,i)=0; AA(temp2,i)=1; num_att(temp2,i)=find_attacks(AA); end end [x y z]=find_minimums(num_att); s=numel(x); s=randperm(s); s=s(1); x=x(s); y=y(s); p=find(A(:,y)==1); A(p,y)=0; A(x,y)=1; show_the_solution(A) pause(0.1) [u v]=find(A); q=find_attacks(A); current_num_att=[current_num_att z];endfunction number_off_attacks = find_attacks(A)% This function finds the number of attacks between 8 queens% vectors a and b contain the positions of the queens [a b]=find(A); number_off_attacks = 0; for i=1:7 p1=a(i); q1=b(i); for j=i+1:8 p2=a(j); q2=b(j); if ((p1==p2) || (q1==q2) || (abs(p1-p2)==abs(q1-q2))) number_off_attacks=number_off_attacks+1; end end endendfunction [x y z] = find_minimums(AA) z=min(min(AA)); [x y]=find(AA==z);endfunction show_the_solution(result) imshow(1-result,'InitialMagnification','fit') hold on u=[0 9]; for i=0.5:1:8.5 v=[i i]; line(u,v,'color','k') end v=[0 9]; for i=0.5:1:8.5 u=[i i]; line(u,v,'color','k') endendFggelk 4. Ktszemlyes jtkokFeladat.rjunk MATLAB programot amelyik nllan jtsza a Nim logikai jtkot egy felhasznl ellen.Megolds.A programkd rsa eltt elmagyarzzuk a Nim jtk szablyait s hogy milyen a nyer stratgia. A gyufaszlak hrom halmazba vannak csoportostva. Kt jtkos felvltva vesz el tetszleges szm gyufaszlat az egyik halmazbl. A gyztes az a jtkos aki utolsnak vesz el gyuft vagy gyufkat. A jtk egy lehetsges llapott az F.4.1. bra szemllteti.

F.4.1. bra. A jtk egy lehetsges llapotaA jtknak kt llapota van:1. Nyer: Ha a jtkosnak van olyan lpse amellyel nyerhet az ellenfl lpstl fggetlenl.2. Veszt: Ha a jtkosnak nincs nyer stratgija.Nyer stratgia:

0 0 1 1 = 3

0 1 0 1 = 5

1 0 0 0 = 8

1 1 1 0

XORllts: azok a veszt llapotok amelyben a XOR fggvny rtke nulla.Az adott llapotra a soron kvetkez jtkosnak nyer stratgija van (mivel a XOR fggvny oszloponknti rtke klnbzik nulltl, lehet gy elvenni gyuft gy, hogy a lps utn a XOR fggvny rtke nulla legyen). A jtkos nyer lpse ha kt gyuft vesz el a harmadik halmazbl. Akkor a kvetkez llapot alakul ki

0 0 1 1 = 3

0 1 0 1 = 5

0 1 1 0 = 60 0 0 0

XORMivel a XOR fggvny rtke 0, a msodik jtkos akrmelyik halmazbl vesz el gyuft, meg fogja vltoztatni a XOR fggvny rtkt, s a XOR fggvny klnbzni fog nulltl. Ekkor az els jtkosnak ismt nyer stratgija van. Viszont ha az els jtkos hibzik, a msodik jtkoshoz kerlhet a kezdemnyezs, s a jtk tovbbi rszben neki lesz nyer stratgija.

A Nim jtk MATLAB programkdja kvetkezik.% This program is a NIM game.

clear

clc

x=input('Computer or human determines the number of beans (c/h)? ','s');

if x=='c'

r=randperm(7);

p1=r(1); p2=r(2); p3=r(3);

elseif x=='h'

p1=input('First pyle: ');

p2=input('Second pyle: ');

p3=input('Third pyle: ');

end

p=[p1 p2 p3];

disp(' ')

disp('Computer is Player 1, human is Player 2.')

disp(' ')

% p1=2; p2=3; p3=1;

% p1=1; p2=0; p3=0;

% p=[p1 p2 p3];

% ws = winning strategy

ws=bitxor(bitxor(p1,p2),p3);

if ws==0

disp('Player 2 has winning strategy.')

disp(' ')

elseif ws~=0

disp('Player 1 has winning strategy.')

disp(' ')

end

fprintf('Pyle 1 %i beans. \n',p1)

fprintf('Pyle 2 %i beans. \n',p2)

fprintf('Pyle 3 %i beans. \n',p3)

disp(' ')

while sum(p)~=0

disp('Player 1 to play.')

% waitforbuttonpress

[p,which_pyle]=computer_play(p);

fprintf('Computer took from Pyle %i. \n',which_pyle)

disp(' ')

fprintf('Pyle 1 %i beans. \n',p(1))

fprintf('Pyle 2 %i beans. \n',p(2))

fprintf('Pyle 3 %i beans. \n',p(3))

disp(' ')

if sum(p)==0

disp('Player 1 is the winner.')

break

end

disp('Player 2 to play.')

x1=input('From which pyle you want to take? ');

x2=input('How many