**Neuroevolúcia (NE)** je technika umelej inteligencie, ktorá využíva evolučné algoritmy na generovanie umelých neurónových sietí, parametrov, topológie a pravidiel. Inšpiruje sa vývojom biologických nervových systémov v prírode. V porovnaní s inými metódami učenia neurónovej siete je neuroevolúcia veľmi všeobecná. Umožňuje učenie bez explicitných cieľov, s malou spätnou väzbou a s ľubovoľnými neurónovými modelmi a sieťovými štruktúrami. Neuroevolúcia je efektívny prístup k riešeniu problémov spätnoväzobného učenia, čo môže byť v kontraste s konvenčnými technikami hlbokého učenia využívajúce klesajúci gradient na neurónovej sieti s pevnou topológiou. Najbežnejšie je aplikovaná v evolučnej robotike, v hraní hier a v umelom živote. Hlavnou výhodou je, že neuroevolúcia sa dá aplikovať viac zo široka ako riadené učebné algoritmy, ktoré vyžadujú osnovu správnych párov vstup-výstup. Neuroevolúcia naopak vyžaduje iba mieru výkonu siete v úlohe. Napríklad, výsledok hry (či hráč vyhral alebo prehral) môže byť ľahko meraný bez poskytnutia príkladov požadovaných stratégií.

Prehľad
-------

Neuroevolučný prístup k umelej inteligencii je motivovaný vývojom biologických nervových systémov. Neuroevolúcia aplikuje abstrakcie prirodzenej evolúcie (tzv. evolučné algoritmy) na konštrukciu abstrakcií biologických neurónových sietí (tzv. umelých neurónových sietí). Celkový cieľ je vyvinúť komplexné umelé neurónové siete schopné inteligentného správania. Výsledkom je, že na neuroevolúciu sa dá pozerať ako na prostriedok skúmania vývoja inteligencie v prírode ako aj na praktickú metódu navrhovania umelých neurónových sietí na vykonávanie požadovaných úloh.

Podobne ako pri prirodzenom výbere v prírode, ktorý je poháňaný iba spätnou väzbou z reprodukčného úspechu, neuroevolúcia sa riadi určitou mierou celkového výkonu. Zatiaľ čo najbežnejšie algoritmy umelého učenia neurónovej siete fungujú prostredníctvom kontrolovaného učenia a teda závisia od označeného korpusu párov vstup-výstup, hlavnou výhodou neuroevolúcie je to, že umožňuje učenie aj keď nie sú k dispozícii korpusy, iba na základe malej spätnej väzby. Napríklad, pri hraní hier, riadení vozidla, či v robotike nie sú v každom časovom okamihu vždy známe optimálne činnosti, je možné len pozorovať ako dobre fungovala postupnosť krokov, napr. čo má za následok výhru alebo prehru v hre. Neuroevolúcia umožňuje nájsť neurónovú sieť, ktorá optimalizuje správanie dané iba malou spätnou väzbou, bez priamych informácií o tom, čo presne by mala robiť.

Naviac, neuroevolúcia sa zovšeobecňuje na širokú škálu sieťových architektúr a neurónových modelov. Jej uplatnenie vyžaduje iba to, aby sa výkonnosť sietí mohla hodnotiť v priebehu času a aby sa správanie sietí mohlo meniť v priebehu evolúcie. Zatiaľ čo sa väčšina metód neurónového učenia zameriava iba na modifikáciu silných stránok neurónových spojení (napr. na váhu ich prepojení), neuroevolúcia môže dodatočne optimalizovať ďalšie parametre ako napríklad štruktúru siete (napr. pridávanie neurónov alebo spojení), typ výpočtu vykonávaného jednotlivými neurónmi a aj pravidlá učenia, ktoré upravujú sieť počas hodnotenia. Je zaujímavé, že integrácia takýchto pravidiel celoživotného vzdelávania (napr. Hebbská alebo neuromodulovaná plasticita) umožňuje vyvinutým neurónovým sieťam učiť sa zo skúseností. Týmto spôsobom môže neuroevolúcia uľahčiť skúmanie biologickej adaptácie na viacerých časových mierkach.

Najbežnejšie aplikácie sú v spätnoväzobnom učení, evolučnej robotike a umelom živote. Vzorové aplikácie zahŕňajú vývoj správania v stolných hrách a videohrách, kontrolu pohyblivých robotov a skúmanie vývoja biologicky relevantného správania.

Základný algoritmus
-------------------

V neuroevolúcii sa typicky vyvíja populácia genetického kódovania neurónových sietí s cieľom nájsť sieť, ktorá rieši danú úlohu. Väčšina metód sa riadi obvyklou generačnou a testovacou slučkou evolučných algoritmov. Každé kódovanie v populácii (genotyp) sa vyberie postupne a dekóduje sa do zodpovedajúcej neurónovej siete (fenotyp). Táto sieť sa potom použije v úlohe a meria sa jej výkon v priebehu času, čím sa získa vhodná hodnota pre zodpovedajúci genotyp. Po vyhodnotení všetkých členov populácie sa genetické operátory použijú na vytvorenie ďalšej generácie populácie. Tie kódovania, ktoré sú najvhodnejšie sa zmutujú a vzájomne sa prekrížia. Výsledný potomok následne nahradí genotypy s najnižšou vhodnosťou v populácii. Tento proces preto predstavuje inteligentné paralelné hľadanie lepších genotypov a pokračuje až kým sa nenájde dostatočne vhodná sieť.

Existuje niekoľko metód pre vývoj neurónových sietí v závislosti od toho ako sú siete kódované. Najpriamejšie kódovanie, niekedy nazývané konvenčná neuroevolúcia (*po angl. conventional neuroevolution - CNE*), sa vytvára zreťazením číselných hodnôt pre sieťové váhy. Toto kódovanie umožňuje vývoju optimalizovať váhy architektúry pevnej neurónovej siete, čo je prístup, ktorý sa ľahko implementuje a je praktický v mnohých doménach. Avšak, prístup CNE môže konvergovať do falošného lokálneho optima, vyžaduje, aby si experimentátori vybrali vhodne veľkú a štrukturovanú topológiu siete a zle škáluje zložitejšie problémy, pretože počet parametrov, ktoré sa vyvíjajú rastie lineárne alebo kvadraticky s veľkosťou siete.

Na zmiernenie týchto problémov boli navrhnuté sofistikovanejšie kódovania. Jeden z prístupov je zvážiť vývoj na úrovni komponentov riešenia namiesto úplných riešení. To znamená, že namiesto populácie kompletných neurónových sietí sa vyvinula populácia sieťových fragmentov, neurónov alebo váh spojov. Každý jednotlivec je hodnotený ako súčasť úplnej siete a jeho vhodnosť odráža ako dobre spolupracuje s ostatnými jednotlivcami na konkrétnych riešeniach. Týmto spôsobom je zložitý problém pri hľadaní siete riešení rozdelený do niekoľkých menších problémov.

Ďalším prístupom je rozvíjať topológiu siete pridaním váh. Výber vhodných topológií je pre experimentátorov zložitý, ale môže mať veľký vplyv na výsledky experimentu. Navyše, vyvíjajúce sa topológie môžu dosahovať lepšiu výkonnosť ako vyvíjajúce sa váhy. Jedným potenciálne výhodným prístupom je začať s vývojom jednoduchých riešení a postupne ich komplikovať. Takýto proces prebieha v biológii a vo všeobecnosti predstavuje účinný prístup v strojovom učení.

Všetky vyššie uvedené metódy mapujú genetické kódovanie priamo pre príslušnú neurónovú sieť. Každá časť kódovania zodpovedá jednej časti siete a naopak. Nepriame kódovanie však špecifikuje proces, prostredníctvom ktorého je sieť budovaná ako napríklad delenie buniek, priestorové vkladanie alebo generovanie prostredníctvom rozširovania gramatických pravidiel. Takéto kódovanie môže byť vysoko kompaktné (veľké množstvo pripojení môže byť kódovaných s niekoľkými parametrami) a môže tiež využívať modulárne riešenia. Modularita znamená, že rovnaké štruktúry sa môžu opakovať s malými modifikáciami, ako sa často vyskytuje v biológii. Priblíženie neuroevolúcie úrovni biologickej komplexnosti (napr. miliónom alebo miliardám neurónov) pravdepodobne závisí od vývoja sofistikovanejších nepriamych kódovaní a preto sú dôležité pre budúci výskum.

Priame a nepriame kódovanie
---------------------------

Evolučné algoritmy pracujú na populácii genotypov (označovaných aj ako genómy). V neuroevolúcii je genotyp mapovaný na fenotyp neurónovej siete, ktorý je hodnotený na nejakej úlohe, aby sa odvodila jeho fitness. 

V schémach *priameho* kódovania genotyp priamo mapuje fenotyp. To znamená, že každý neurón a spojenie v neurónovej sieti je priamo a explicitne špecifikované v genotype. Naopak, v schémach *nepriameho* kódovania genotyp nepriamo špecifikuje ako by sa mala táto sieť generovať.

*Nepriame* kódovanie sa často používa na dosiahnutie niekoľkých cieľov:

* modularita a ďalšie zákonitosti,
* kompresia fenotypu na menší genotyp, čím sa poskytne menší priestor na vyhľadávanie,
* mapovanie vyhľadávacieho priestoru (genómu) do problémovej domény.

### Taxonómia embryogénnych systémov pre nepriame kódovanie

Nepriame kódovanie, ktoré využíva umelé embryogenézy (tiež známe ako umelý vývoj), bolo kategorizované podľa *gramatického prístupu a podľa prístupu bunkovej chémie*. Prvý prístup vyvíja súbory pravidiel vo forme gramatických systémov prepisovania. Druhý prístup sa pokúša napodobniť ako sa v biológii objavujú fyzikálne štruktúry prostredníctvom génovej expresie. Systémy nepriameho kódovania často využívajú aspekty oboch prístupov.

Stanley a Miikkulainen navrhujú taxonómiu pre embryogénne systémy, ktorá má odrážať ich základné vlastnosti. Taxonómia identifikuje päť súvislých rozmerov, pozdĺž ktorých je možné umiestniť akýkoľvek embryogénny systém:

* Osud buniek (neurónov): konečná charakteristika a úloha bunky v rozvinutom fenotype. Táto dimenzia počíta počet metód použitých na určenie osudu bunky.
* Zameranie: metóda, ktorou sú spojenia nasmerované zo zdrojových buniek na cieľové bunky. Toto sa pohybuje od špecifického zamerania (zdroj a cieľ sú explicitne identifikované) po relatívne zameranie (na základe vzájomných umiestnení buniek).
* Heterochrónia: načasovanie a usporiadanie udalostí počas embryogenézy. Počíta počet mechanizmov na zmenu načasovania udalostí.
* Kanalizácia: ako tolerantný je genóm k mutáciám (krehkosť). Rozsah od vyžadovania presných genotypových pokynov po vysokú toleranciu nepresnej mutácie.
* Zložitosť: schopnosť systému (vrátane vývojového algoritmu a mapovania genotypu na fenotyp) umožniť komplexifikáciu genómu (a teda fenotypu) v čase. Rozsah od povolenia genómov iba s pevnou veľkosťou po povolenie genómov s veľmi premenlivou dĺžkou.

Aplikácie
---------

Neuroevolučné metódy majú silu najmä v kontinuálnych doménach spätnoväzobného učenia a v tých, ktoré majú čiastočne pozorovateľné stavy. Tieto domény zahŕňajú veľa reálnych aplikácií spätnoväzobného učenia, najzreteľnejšou aplikáciou je adaptívne nelineárne riadenie fyzických zariadení. Vyvinuli sa napríklad regulátory založené na neurónovej siete na pohon mobilných robotov, automobilov a dokonca aj rakiet. Riadiaci prístup sa rozšíril o optimalizáciu systémov ako sú chemické procesy, výrobné systémy a počítačové systémy. Zásadným obmedzením súčasných prístupov je však to, že riadiace jednotky sa zvyčajne musia vyvinúť v simulácii a potom preniesť do skutočného systému. Evolúcia je zvyčajne najsilnejšia ako metóda off-line vzdelávania, kde je možné skúmať potenciálne riešenia súbežne.

Po druhé, neuroevolúcia sa ukázala ako užitočná pri navrhovaní hráčov pre stolné hry ako sú dáma, šach a othello. Zaujímavé je, že rovnaký prístup funguje pri vytváraní postáv v umelých prostrediach ako sú hry a virtuálna realita. Postavy, ktoré nie sú hráčmi v súčasných videohrách sú zvyčajne skriptované a obmedzené, neuroevolúcia sa môže použiť na vývoj komplexných správaní a dokonca ich prispôsobiť v reálnom čase. Neuroevolúcia tak môže uľahčiť nové druhy videohier ako napríklad hry, v ktorých hráči trénujú tím agentov AI. Podobne artefakty ako napríklad zbrane, môžu byť skonštruované pomocou vyvíjajúcich sa neurónových sietí, čím sa umožnia hry, v ktorých hráči spoločne tvoria nový obsah v hre, ktorý by inak musel byť výslovne navrhnutý ľudskými odborníkmi.

Po tretie, vývoj neurónových sietí je prirodzeným nástrojom problémov v umelom živote a stále viac sa používa na skúmanie problémov, ktoré je ťažké odhaliť tradičnými technikami v evolučnej biológii. Zatiaľ čo konkrétny výber tlakov vedúci ku kľúčovým evolučným prechodom v prírode je prechodný a zanecháva málo priamych dôkazov, v kontrolovaných experimentoch sa môže uplatniť neuroevolúcia, aby sa zistilo, aké podmienky sú potrebné na vývoj určitého správania. Preto je možné navrhnúť experimenty s neuroevolúciou o tom, ako sa môže v reakcii na tlak životného prostredia objaviť správanie ako je hľadanie potravy, prenasledovanie a vyhýbanie sa, poľovníctvo a pasenie, spolupráca a dokonca komunikácia. Neuroevolúcia sa tiež môže použiť na skúmanie abstraktnejších vývojových tendencií ako vývoj modularity alebo ako biologický vývoj interaguje s vývojom. Okrem toho môže analýza vyvíjajúcich sa nervových obvodov a pochopenie ich fungovania viesť k nahliadnutiu do biologických sietí.

Záver
-----

Neuroevolúcia je biologicky inšpirovaná metóda pre vytvorenie umelej inteligencie. Výzvy otvoreného výskumu zahŕňajú vytváranie účinných a škálovateľných nepriamych kódovaní, porozumenie a syntézu evolučných tlakov vedúcich k vysokej úrovni inteligencie a škálovanie neuroevolúcie s cieľom vyvinúť kognitívne správanie ako je multimodálne správanie, komunikácia a celoživotné vzdelávanie. Splnenie týchto výziev môže priniesť praktické prístupy k vyvíjajúcim sa inteligentným ovládačom robotov a ovládačom videohier, ako aj nahliadnuť do biologických neurónových sietí a vývoja samotnej inteligencie.

Referencie
----------

1. ↑  Stanley, Kenneth O. (2017-07-13). "Neuroevolution: A different kind of deep learning". *O'Reilly Media*. Retrieved 2017-09-04.
2. 1 2  Risi, Sebastian; Stanley, Kenneth O. (2012). "An Enhanced Hypercube-Based Encoding for Evolving the Placement, Density and Connectivity of Neurons". *Artificial Life*. 18 (4): 331–363. doi:10.1162/ARTL\_a\_00071. PMID 22938563.
3. ↑  Schaffer, J. David; Whitley, Darrell and Eshelman, Larry J. (1992). Combinations of genetic algorithms and neural networks. In: *COGANN-92*, pp. 1-37.
4. 1 2 3  Yao, Xin (1999). Evolving artificial neural networks. *Proceedings of the IEEE* 87:9: 1423-1447. doi:10.1109/5.784219.
5. ↑  Moriarty, David E. and Miikkulainen, Risto (1995). Discovering complex Othello strategies through evolutionary neural networks. *Connection Science* 7(3): 195-210. doi:10.1080/09540099550039228.
6. ↑  Potter, Mitchell A. and De Jong, Kenneth A. (2000). Cooperative coevolution: An architecture for evolving coadapted subcomponents. *Evolutionary Computation* 8(1): 1-29. doi:10.1162/106365600568086.
7. ↑  Angeline, Peter J. and Saunders, Gregory M. (1994). An evolutionary algorithm that constructs recurrent neural networks. *IEEE Transactions on Neural Networks* 5: 54-65. doi:10.1109/72.265960.
8. 1 2  Kassahun, Yohannes; Sommer, Gerald; Edgington, Mark; Metzen, Jan Hendrik; Kirchner, Frank (2007), "Common genetic encoding for both direct and indirect encodings of networks", *Genetic and Evolutionary Computation Conference*, ACM Press, pp. 1029–1036, CiteSeerX 10.1.1.159.705
9. ↑  Gauci, Stanley (2007), "Generating Large-Scale Neural Networks Through Discovering Geometric Regularities", *Genetic and Evolutionary Computation Conference*, New York, NY: ACM
10. ↑  Gruau, Frédéric; I, L'universite Claude Bernard-lyon; Doctorat, Of A. Diplome De; Demongeot, M. Jacques; Cosnard, Examinators M. Michel; Mazoyer, M. Jacques; Peretto, M. Pierre; Whitley, M. Darell (1994). *Neural Network Synthesis Using Cellular Encoding And The Genetic Algorithm*. CiteSeerX 10.1.1.29.5939.
11. ↑  Clune, J.; Stanley, Kenneth O.; Pennock, R. T.; Ofria, C. (June 2011). "On the Performance of Indirect Encoding Across the Continuum of Regularity". *IEEE Transactions on Evolutionary Computation*. 15 (3): 346–367. CiteSeerX 10.1.1.375.6731.
12. 1 2  Stanley, Kenneth O.; Miikkulainen, Risto (2003). "A Taxonomy for Artificial Embryogeny". *Artificial Life*. **9** (2): 93–130. doi:10.1162/106454603322221487. PMID 12906725.
13. 1 2  Beer, Randall D. and Gallagher, John C. (1992). Evolving dynamical neural networks for adaptive behavior. *Adaptive Behavior* 1(1): 91-122. doi:10.1177/105971239200100105.
14. ↑  Lipson, Hod and Pollack, Jordan B. (2000). Automatic design and manufacture of robotic lifeforms. *Nature* 406: 974-978.
15. ↑  Gomez, Faustino; Berger, Doug and Miikkulainen, Risto (2001). A neuroevolution method for dynamic resource allocation on a chip multiprocessor. In: *2001 International Joint Conference on Neural Networks*, pp. 2355-2361. IEEE.
16. ↑  Conradie, Alex E.; Miikkulainen, Risto and Aldrich, Christiaan (2002). Adaptive control using neural swarming. In: *Proceedings of the Genetic and Evolutionary Computation Conference.*
17. ↑  Fogel, David B. (2001). Blondie24: Playing at the Edge of AI. Morgan Kaufmann, San Francisco, CA.
18. ↑  Lucas, Simon M. (2005). Evolving a neural network location evaluator to play Ms. Pacman. In: *IEEE Symposium on Computational Intelligence and Games*, pp. 203-210.
19. 1 2  Togelius, Julian; Yannakakis, Georgios N.; Stanley, Kenneth O. and Browne, Cameron (2011). Search-based procedural content generation: A taxonomy and survey. *IEEE Transactions on Computational Intelligence and AI in Games* 3(3): 172-186. doi:10.1109/tciaig.2011.2148116.
20. ↑  Fogel, David B.; Hays, Timothy J.; Hahn, Sarah L. and Quon, James (2004). A self-learning evolutionary chess program. *Proceedings of the IEEE* 92(12): 1947-1954. doi:10.1109/jproc.2004.837633.
21. ↑  Werner, Gregory M. and Dyer, Michael G. (1990). Evolution of communication in artificial organisms. In: *Artificial Life II*, pp. 549-587.
22. ↑  Cangelosi, Angelo and Parisi, Domenico (1998). The emergence of a 'language' in an evolving population of neural networks. *Connection Science* 10(2): 83-97. doi:10.1080/095400998116512.
23. ↑  Kashtan, Nadav and Alon, Uri (2005). Spontaneous evolution of modularity and network motifs. *Proceedings of the National Academy of Sciences* 102(39): 13773-13778. doi:10.1073/pnas.0503610102.
24. ↑  Aharonov-Barki, Ranit; Beker, Tuvik and Ruppin, Eytan (2001). Emergence of memory-driven command neurons in evolved artificial agents. *Neural Computation* 13(3): 691-716. doi:10.1162/089976601300014529.
25. ↑  Keinan, Alon; Sandbank, Ben; Hilgetag, Claus C.; Meilijson, Isaac and Ruppin, Eytan (2006). Axiomatic scalable neurocontroller analysis via the Shapley value. *Artificial Life* 12(3): 333-352. doi:10.1162/artl.2006.12.3.333.