Evolūcijas algoritms videospēlēs pārspēj dziļās mācīšanās iekārtas

Ar neironu tīkliem un padziļinātām mācīšanās metodēm ir viegli iedomāties, ka datorzinātņu pasaule sastāv no maz kā cita. Galu galā neironu tīkli ir sākuši pārspēt cilvēkus tādos uzdevumos kā objektu un seju atpazīšana un spēlēs, piemēram, šahs, Go un dažādas arkādes videospēles.





Šo tīklu pamatā ir cilvēka smadzeņu darbības veids. Nekam nevar būt lielāks potenciāls par to, vai ne?

Ne īsti. Pilnīgi cita veida skaitļošana var būt ievērojami jaudīgāka nekā neironu tīkli un dziļa mācīšanās. Šī tehnika ir balstīta uz procesu, kas radīja cilvēka smadzenes — evolūciju. Citiem vārdiem sakot, iteratīvu izmaiņu un atlases secība, kas radīja vissarežģītākās un spējīgākās cilvēcei zināmās mašīnas — aci, spārnu, smadzenes un tā tālāk. Evolūcijas spēks ir brīnums.

Tāpēc datorzinātnieki jau sen ir mēģinājuši izmantot tā iespējas. Tā sauktā evolucionārā skaitļošana 30 gadu laikā, kopš tā pirmo reizi tika izmantota traktoru rūpnīcas ražošanas līniju optimizēšanai, ir panākusi dažus ievērojamus varoņdarbus.



Taču pēdējos gados šai datorzinātņu jomai ir nācies spēlēt otro vijoli pēc dziļās apmācības mašīnām un to milzīgajiem panākumiem.

Šodien izskatās, ka tabulas mainīsies, pateicoties Denisa Vilsona un dažu kolēģu darbam Tulūzas Universitātē Francijā. Šie puiši ir parādījuši, kā evolucionārā skaitļošana var līdzināties padziļināto mācību iekārtu veiktspējai simbolisks uzdevums, kas viņus pirmo reizi pamudināja slavu 2013. gadā — spēja arkādes videospēlēs pārspēt cilvēkus piemēram, Pong, Breakout un Space Invaders. Darbs liecina, ka evolucionārajai skaitļošanai vajadzētu būt tikpat plaši izplatītai kā tās uz dziļām mācībām balstītajām attiecībām.

Evolūcijas skaitļošana darbojas pavisam savādāk nekā neironu tīkli. Mērķis ir izveidot datora kodu, kas atrisina konkrētu problēmu, izmantojot pieeju, kas ir nedaudz pretrunīga.



Parastais veids, kā izveidot kodu, ir rakstīt to no pirmajiem principiem, paturot prātā konkrētu mērķi.

Evolūcijas skaitļošanā tiek izmantota cita pieeja. Tas sākas ar pilnīgi nejauši ģenerētu kodu. Un ne tikai viena tā versija, bet daudzas versijas, dažreiz simtiem tūkstošu nejauši saliktu koda daļu.

Katrs no šiem kodiem tiek pārbaudīts, lai redzētu, vai tas sasniedz vajadzīgo mērķi. Un, protams, viss kods ir šausmīgs, jo tas ir nejauši ģenerēts.



Bet tikai nejaušības dēļ daži koda fragmenti ir nedaudz labāki par citiem. Pēc tam šie fragmenti tiek reproducēti jaunās paaudzes kodā, kas ietver vairāk labāku kodu kopiju.

Tomēr nākamā paaudze nevar būt identiska kopija pirmajai. Tā vietā tam kaut kādā veidā ir jāmainās. Šīs izmaiņas var ietvert divu terminu maiņu kodā — sava veida punktu mutāciju. Vai arī tie var ietvert divus kodus, kas tiek pārgriezti uz pusēm un apmainīti uz pusēm, piemēram, seksuāla rekombinācija.

Katra jaunā paaudze tiek pārbaudīta, lai redzētu, cik labi tā darbojas. Labākās koda daļas tiek reproducētas citā paaudzē utt.



Tādā veidā kods attīstās. Laika gaitā tas kļūst labāks, un pēc daudzām paaudzēm, ja apstākļi ir piemēroti, tas var kļūt labāks, nekā jebkurš cilvēka kodētājs spēj izstrādāt.

Datorzinātnieki ir veiksmīgi pielietojuši evolucionāras pieejas problēmām, sākot no robotu projektēšanas un beidzot ar gaisa kuģu daļu būvniecību.

Bet tas ir izkritis no labās milzīgās intereses par dziļu mācīšanos. Tāpēc svarīgs jautājums ir par to, vai tas atbilst dziļās apmācības iekārtu veiktspējai. Lai to noskaidrotu, Vilsons un līdzi izmantoja pieeju, lai izstrādātu kodu, kas varētu kontrolēt arkādes datorspēles, kas datētas ar 1980. un 1990. gadiem.

Šīs spēles ir pieejamas datu bāzē ar nosaukumu Arcade Learning Environment, ko arvien vairāk izmanto, lai pārbaudītu dažāda veida algoritmu mācīšanās uzvedību. Datu bāze sastāv no 61 Atari spēles, piemēram, Pong, Space Invaders, Breakout un Kung Fu Master.

Uzdevums ir izveidot algoritmu, kas var spēlēt tādu spēli kā Pong, skatoties tikai uz ekrāna izvadi, tāpat kā cilvēki spēlē. Tāpēc algoritmam ir jāanalizē katra spēles pozīcija un pēc tam jāizlemj, kā pārvietoties, lai palielinātu rezultātu.

Vadības elementi visām spēlēm ir vienādi. Tie atbilst astoņiem virzieniem, kurus kontrolieris var pārvietot (augšup, lejup, pa kreisi un pa labi, kā arī četri virzieni pa diagonāli), pogas nospiešanai, tām pašām astoņām kustībām, kas apvienotas ar pogas nospiešanu un vispār nedarot neko. Ne visās spēlēs tiek izmantotas visas 18 iespējamās kombinācijas, un dažas izmanto tikai četras.

Vispirms ir jāizveido kods. Evolūcijas pieejai ir nepieciešams terminu vārdnīca, ko var savienot, veidojot datora kodu. Termini svārstās no vienkāršām darbībām, piemēram, ADD (x+y)/2, līdz sarežģītākām darbībām, piemēram, atgriež 1 elementa x vektoru, ja x ir skalārs.

Terminu izvēle, kas veido šo vārdu krājumu, ir svarīga, un Vilsons un līdzās izmanto kopu, kas jau ir definēta Dekarta ģenētiskajai programmēšanai (kā viņu paņēmienu sauc).

Process sākas, nejauši izveidojot kodu, kurā ir 40 termini. Tas ir programmas genoms. Pēc tam šis genoms tiek pārbaudīts, lai noskaidrotu, cik labi tas spēlē spēli, pamatojoties uz rezultātu. Atkarībā no tā, cik labi tas darbojas, genoms pēc tam tiek reproducēts ar mutācijām un vēlreiz pārbaudīts utt. Kopumā komanda šādā veidā pārbaudīja 10 000 genomu.

Rezultāti rada interesantu lasīšanu. Sākumā genomi ir briesmīgi spēlējot spēli. Bet laika gaitā tie kļūst labāki. Un pēc daudzām paaudzēm viņi spēlē labi, dažreiz labāk nekā cilvēki.

Daudzi genomi beidzot spēlēja pilnīgi jaunas spēļu stratēģijas, bieži vien sarežģītas. Bet viņi dažreiz atrada vienkāršus, kurus cilvēki nebija pamanījuši.

Piemēram, spēlējot Kung Fu Master, evolūcijas algoritms atklāja, ka visvērtīgākais uzbrukums bija pietupiens. Tupināšana ir drošāka, jo tā izvairās no pusi no lodēm, kas mērķētas uz spēlētāju, kā arī uzbrūk jebkam, kas atrodas tuvumā. Algoritma stratēģija bija atkārtoti izmantot šo manevru bez citām darbībām. Atskatoties, ir jēga izmantot tikai pieliekšanās perforatoru.

Tas pārsteidza pētījumā iesaistītos cilvēkus. Izmantojot šo stratēģiju ar roku, tika sasniegts labāks rezultāts, nekā spēlējot spēli parasti, un tagad autors šajā spēlē izmanto pietupienus, tikai uzbrūkot, saka Vilsons un citi.

Kopumā izstrādātais kods daudzas spēles spēlēja labi, pat pārspējot cilvēkus tādās spēlēs kā Kung Fu Master. Tikpat svarīgi ir tas, ka izstrādātais kods ir tikpat labs kā daudzas padziļinātas apmācības pieejas un pārspēj tos tādās spēlēs kā Asteroids, Defender un Kung Fu Master.

Tas arī rada rezultātu ātrāk. Lai gan programmas ir salīdzinoši mazas, daudzi kontrolieri ir konkurētspējīgi ar modernākajām metodēm Atari etalonu komplektam un prasa mazāku apmācības laiku, saka Vilsons un citi.

Attīstītajam kodam ir vēl viena priekšrocība. Tā kā tas ir mazs, ir viegli redzēt, kā tas darbojas. Turpretim padziļinātās mācīšanās paņēmienu plaši pazīstama problēma ir tā, ka dažreiz nav iespējams zināt, kāpēc viņi ir pieņēmuši konkrētus lēmumus, un tam var būt praktiskas un juridiskas sekas.

Kopumā šis ir interesants darbs, kam datorzinātniekiem, kuri koncentrējas tikai uz dziļu mācīšanos, vajadzētu ieteikt, ka viņiem, iespējams, trūkst kāda trika. Evolūcijas pieeja ir spēcīga alternatīva, ko var izmantot dažādās situācijās.

Patiešām, daži pētnieki ir sākuši to izmantot, lai izstrādātu labākas padziļinātas mācīšanās iekārtas. Kas varētu noiet greizi?

Atsauce: https://arxiv.org/abs/1806.05695 : Attīstās vienkāršas programmas Atari spēļu spēlēšanai

paslēpties