Kezdőoldal » Számítástechnika » Programozás » Mesterséges neurális hálózatot...

Mesterséges neurális hálózatot, ami evolúcióval tanul, hogyan lehet létrehozni? Milyen programozási nyelvvel?

Figyelt kérdés
Voltam egy előadáson és ott saját szememmel láttam, hogy egy mesterséges neurális hálózat 20 perc alatt megtanult snake-ezni. Egyenlőre sokkal egyszerűbb feladatra szeretném programozni, max 4-5 inputtal.

2017. márc. 20. 16:47
1 2
 11/18 A kérdező kommentje:

Készítsek több virtuális "egyént" és azoknak a stratégiáit kombináljam, amiknek a leghatékonyabb volt az eredménye?

Milyen feladatot akarjanak megoldani az egyének?

2017. márc. 20. 18:19
 12/18 sharkxxx ***** válasza:

A legegyszerűbb, ha valami karakterekkel kapcsolatos felatatra fogod megírni az evolúciós algoritmust. Például, hogy az egyedek kifejlődjek arra, hogy kitaláljanak egy jelszót.

Igen, azoknak a stratégiáit kombináljad, amiknek a leghatékonyabb volt az eredménye?

A legfontosabb, hogy az egyedeket pontozni kell, hogy milyen közel vannak a helyes úthoz. Pl: Aki kitalált több betűt a jelszóból, az több pontot kap, mint az aki kevés betűt talált el a jelszóból.

Ha kell még segítség, akkor írhatol privátban is.

2017. márc. 20. 18:38
Hasznos számodra ez a válasz?
 13/18 anonim ***** válasza:

A gyakorlatban ugyis az lesz, hogy felhasznalsz egy mar letezo libraryt a te sajat egyedi problemad megoldasara. Ha a kulonbozo neuralis halokat akarod osszehasonlitani/jatszani veluk, akkor van ertelme csak leprogramozni egyet 0-rol. (esetleg ha valami teljesen uj helyen akarod hasznalni, pl. mikrokontrolleren, vagy celhardware-en)


Egyebkent egy neuralis halot kb. ennyi leprogramozni, ha vannak matrixmuveleteid:

https://www.youtube.com/watch?v=h3l4qz76JhQ

Szinten ezen a csatornan vannak egyszerubb evolucios algoritmusok is. De persze ennek a tanulas a celja, szoval Siraj probalja annyira leegyszerusiteni, amennyire csak lehet. (neha kicsit jobban sikerul, pl. kivagja belole a biast/tresholdot, amire a kommentekben is panaszkodtak)

2017. márc. 23. 22:35
Hasznos számodra ez a válasz?
 14/18 A kérdező kommentje:
Köszönöm szépen! Nagyon jó csatorna.
2017. márc. 24. 15:01
 15/18 A kérdező kommentje:
A súlyok értékét hogyan generáljam? Mik az alsó, felső határok?
2017. márc. 24. 15:03
 16/18 sharkxxx ***** válasza:

A súlyok kezdeti értékét mindegy hogy hogy generálod, csak működjön vele a tanulás, és minnél gyorsabban tanuljon, és minél pontosabban tanulja meg amit kell. Ezért érdemes kísérletezni külömböző kezdeti értékekkel.


Nekem például ezek a kezdeti értékek váltak be legjobban:


double Neuron::initRandomWeight(void)

{

// Initialize a weight to -0.1 or +0.1 randomly.

double w = 0.1;

if ((rand() % 2) == 0)

w = -w;

return w;

}


Itt van még egy másik példa is:


double Neuron::initRandomWeight(void)

{

// Initialize a weight to random values between -0.5 and +0.5

double d = 0.5;

double lo = -d;

double hi = +d;

return ((hi - lo) * (rand() / double(RAND_MAX))) + lo;

}

2017. márc. 25. 09:43
Hasznos számodra ez a válasz?
 17/18 A kérdező kommentje:
Ezt milyen nyelven írtad, mert nekem C-ben nem működött.
2017. márc. 26. 16:14
 18/18 Csxeba ***** válasza:
100%

Nekem van erre egy saját Python könyvtáram, csekkold le:

[link]


Amúgy két megközelítés van. A legegyszerűbb, ha a háló súlyait akarod evolválni. Ha van összesen 30 súly egy hálóban és van 100 egyed a populációban, akkor van egy 100x30-as mátrixod, ez a populáció, amit evolválsz. A fitnesze az egyes egyedeknek pl. az osztályozási pontosság vagy az átlagos négyzetes hiba (MSE).


Bonyolultabb, ha az architektúrát is akarod evolválni, tehát hogy hány rejtett réteg van meg azokban hány neuron. Ekkor valahogy kódolnod kell magát az architektúrát is. Ez tényleg bonyás, erre már vannak komoly algoritmusok, mint pl. a NEAT vagy a hyperNEAT.


Van mostanság egy vicces feljövő terület, csak érdekességként, amikor neurális hálók tanítanak neurális hálókat

2017. szept. 4. 22:16
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!