Az elkövetkezőkben több, a neurális hálózatokkal foglalkozó bejegyzés is várható, mert a fejembe vettem, hogy megismerkedem velük egy picit közelebbről. Elsődlegesen a neurális hálózatok alapjaival és software-s implementálásával akarok foglalkozni. Előrevezetném, hogy a témának vannak mélységei és (főleg matematikai) bonyolultságai. A legjobb kalauz, amit találtam hozzá Ben Kenrose An Introduction to Neural Networks (1996) című könyve. Kiemelném, hogy a cikkek, amiket írni akarok nem saját gondolatok gyűjteménye, hanem egy kivonat, jegyzet a könyvből.
Kiemelném még a Neural Networks at your Fingertips oldalt, ahol ANSI C-ben megvalósított neurális hálozatokat szimuláló programokat tett közzé Karsten Kutza. Sajnos a kommentezés szegényes (nincs), de rendezett a forráskód így könnyen követhető.
Jelölések: a jegyzetekben konzekvensen a könyv által megkötött jelöléseket fogom használni.
Bevezetés, alapfogalmak:
A neurális hálózatok alapelemei a neuronok. Ezek az emberi agyban megtalálható neuronok rendkívül leegyszerűsített modelljei. Ezek végzik az adat feldolgozását. Alapvetően három típusukat különböztetjük meg: bemeneti, rejtett (közbenső) és kimeneti neuront. A bemeneti neuronok feladata az információ fogadása a külvilág felől, itt nem történik feldolgozás. A közbenső és a kimeneti neuronok általában (az alap modell szerint) a bemeneti jeleiket adott súlyok alapján összegzik. Ez a súlyozás dönti el, hogy két neuron kapcsolatban áll-e és ha igen, akkor az mennyire szoros.
Bias: egy plusz bemenete a feldolgozó neuornoknak, amely mindig +1.
A kapcsolatot a következő képlet jellemzi:
, ahol teta a bias, wjk a j-ik neurontól a k-nak adott jele és yj a j-ik neuron kimenete.
Aktiváció és kimenet: a bemenetek súlyozott összegzése megadja a neuron aktuális aktivációs szintjét, amelyből egy függvénnyel kiszámítjuk a kimeneti jelet. A függvény lehet egy erősen hátoroló (kétértékű) például az sgn() függvény, lehet lineáris vagy fél-lineáris, vagy lehet finoman határoló. Finoman határoló függvények a sigmoid függvények. Ezek S alakúak. A legalapvetőbb sigmoid függvény a
Megjegyzendő, hogy léteznek olyan neuoronok is, amelyek kimenetét nem determinisztikus módon határozza meg a bemenetek állapota, hanem egy stochastikus függvény alapján a magas kimeneti érték valószínűségét határozzuk meg.
Hálózat típusok:
Előrecsatolt hálózatok: a hálózat több rétegből is állhat, de nem nem tartalmazhatnak visszacsatolást. A visszacsatolás az, amikor a neuronok kimenete a vele azonos rétegen belül van egy neuron bemenetére kötve, vagy egy (az adatfolyam iránya szempontjából) előrébb levő rétegben levő neuron bemenetére van kötve.
Visszacsatolt neurális hálózatok: tartalmaznak visszacsatolást.
A hálózatok tanítása:
A tanítás lehet direkt és relaxációs. Több módszer is létezik. Egyik mód az, hogy a súlyokat explicit módon a kívánt kimenetnek megfelelően állítjuk be, a priori (abból, ami volt) tudás felhasználásával. Másik mód az, hogy a renszert mintákkal tápláljuk és az maga állítja be a súlyokat adott szabályok alapján.
Így létezik:
- Felügyelt tanulás vagy Asszociatív tanulás. Be és kimeneti párokkal tanítjuk.
- Felügyelet nélküli tanulás vagy Önrendszerező tanulás. A rendszernek mintákat mutatunk amiből magának kell, hogy kialakítsa a döntést. Nincs a priori ismerethalmaz.
A delta-szabály, másnéven a Widrow-Hoff szabály figyelembe veszi a felügyelő által kívánt kimenet érétket is:ahol dk a kívánt kimeneti érték. A delta-szabályról a későbbiekben bővebben is lesz szó.
Bias, ofszet, küszöb értékek: jelentésük megegyezik és mindegyik egy konstans bemenetet jelent. Bár az utolsó kettőt néha az aktivációs függvényhez sorolják. Gyakorlatilag egy állandóan +1 bemenet az összes (nem bemeneti) neuronon.
Rétegek száma: előrecsatolt rendszerekben a bemeneti réteg nem végez feldolgozást, így azt nem számítjuk bele a rétegek számába. Így egy renszer bemeneti, rejtett és kimeneti réteggel két rétebű rendszernek számít.
Reprezentáció és a tanulás: a magas reprezentációs készsége egy rendszernek csak azt mutatja meg, hogy milyen pontossággal képes megközelíteni egy adott függvényt, ismerve, hogy az optimális súlyozás mellett is lesz kimeneti hiba. A második kérdés, ismerve, hogy minden rendszerben létezik optimális súlyozás, az, hogylétezik-e olyan módszer, amellyel ( iteratív módon) el lehet érni az optimális állapotot?
Nincsenek megjegyzések:
Megjegyzés küldése