» »

Nevronske mreže

Nevronske mreže

Senitel ::

Zadnje čase se nekaj igram z nevronskimi mrežami in mi povzročajo nekaj sivih las...
Torej: Poskušam naredit ene pametne mačke, ki bi nekako lovile pametne miši. V osnovi imam pač za miš/mačko nevronsko mrežo z večimi skritimi nivoji nevronov, ki jo napolnim z random vrednostmi. Ker je ena taka miš/mačka še vedno preveč neumna naredim populacijo 100 miši/mačk in potem za vsako potezo izmed tistih 100 rešitev izberem tisto, ki se najbolj približa miši (za mačko), oziroma najbolj oddali od mačke in stene (za miš). To mi dela kar super.
Sedaj bi pa rad to populacijo nekako izboljšal - naredil nove generacije (genetski algoritmi). Tukaj se pa začnejo problemi...
Izmed populacije 100 miši/mačk izberem 20 najboljših, ki jih potem randomly skombiniram v 80 novih miši/mačk. Najboljše miši/mačke so tiste, ki so največkrat (v igri) dale dobro rešitev. Če naredim novo generacijo po koncu igre, mi začnejo v 4-5 generacijah tako miši kot mačke tako bluziti, da ni ničemur podobno (ali rišejo perfektne kroge, ali pa se vztrajno zaletavajo v stene). Tudi če z mačko "ciljam" povsem statično miš, so bo po 4-5 generacijah začela zabijat v steno (pa čeprav ima osnovna generacija 100% ulov)...
Ima kdo kakšno idejo?

Thomas? :D

Thomas ::

Jest bi reku, da maš šurka! Težko reči kje, vendar tile EA algoritmi znajo biti tako smotani, da (vsaj navidez) delajo ob marsikakem bugu. Ne vsakem - jasno - ampak marsikakem.

To se potem pozna kot (daleč) suboptimalno delovanje.

V glavnem, če bi naredu korektno implementacijo tega, kar si tukaj napisal - ma da dela!

Lahko se ti recimo zgodi to, da promoviraš mačko, ki lovi same neumne miši. Prilagodi se nanje - in ko jih ni (več), zna samo še bluziti.

Vedno je rešitev ta, da narediš zadevo čimbolj podobno realnemu stanju v naravi. Mačke morajo umret, če nič ne ujamejo. Obvezno moraš opaziti izmenične bume populacij.

To, da se držiš biologije povzroči, da razna "dogovorna hranjenja" odpadejo.

Samo, jest bi najprej pogledal detalje. Mogoče je, da maš samo neumnega šurka v kodi - in ne v konceptu.

Je pa strogi Darwinistični koncept najbolj zanesljivo pravilen.

:)
Man muss immer generalisieren - Carl Jacobi

buba švabe ::

Tvoj GA se mi zdi malo sumljiv. Algoritem, ki zanesljivo deluje je naslednji:

1. narediš populacijo 100-200 naključno generiranih posameznikov (lahko tudi več ali manj)
2. vzameš nekaj najboljših (npr. 5) in jih vstaviš v novo generacijo (elitizem)
3. generiraš nove posameznike tako, da križaš posameznike iz stare populacije in jih vstavljaš v novo; pri tem ne jemlješ za križanje samo najboljših ampak vse, samo da daješ boljšim prednost pri "razmnoževanju"; to ponavljaš dokler nimaš celotne nove populacije
4. malenkostno mutiraš nekaj novih posameznikov
5. ponavljaš korake 2-4 do nezavesti

Važno je, da imaš elitizem, da za križanje daš možnost vsem posameznikom, da boljšim daš ustrezno več možnosti in da imaš dovolj velik odstotek mutacij, pa bo stvar ziher delovala.

Btw, da zadeva res deluje rabi algoritem delat vsaj par sto generacij pa vse parametre moraš prav nastavit...
če hočeš razumet rekurzijo, moraš najprej razumet rekurzijo

Thomas ::

Bubin algoritem dela. To je res gotovo.

:)
Man muss immer generalisieren - Carl Jacobi


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Domače branje: Christopher Steiner: Automate This (2012) (strani: 1 2 )

Oddelek: Novice / Domače branje
7215065 (11847) jype
»

Letošnje miši - že mački obupujejo (strani: 1 2 3 )

Oddelek: Loža
12223628 (17681) zuz3k
»

Sosedov lajajoči pes (strani: 1 2 )

Oddelek: Loža
7112248 (10803) VidKo
»

kako deluje naprava proti komarjem?

Oddelek: Elektrotehnika in elektronika
148844 (8474) Poldy
»

VB Cat&Mouse A.I. Challenge

Oddelek: Programiranje
71102 (848) Thomas

Več podobnih tem